blob: 44da831c852c6e8e3863d6896502e0ea5e620fb7 [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Fred Drake9bd44622003-07-30 17:39:48 +00004m4_define(PYTHON_VERSION, 2.4)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwise981a4e2002-11-11 13:26:51 +000053define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000054
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000055# Arguments passed to configure.
56AC_SUBST(CONFIG_ARGS)
57CONFIG_ARGS="$ac_configure_args"
58
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000059dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000060AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000061 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
62[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000063 case $enableval in
64 yes)
65 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000066 esac
67 case $enableval in
68 no)
69 PYTHONFRAMEWORK=
70 PYTHONFRAMEWORKDIR=no-framework
71 PYTHONFRAMEWORKPREFIX=
72 PYTHONFRAMEWORKINSTALLDIR=
73 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 ;;
75 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000076 PYTHONFRAMEWORK=Python
77 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000079 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
80 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000081 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 ],[
83 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000084 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 PYTHONFRAMEWORKPREFIX=
86 PYTHONFRAMEWORKINSTALLDIR=
87 enable_framework=
88])
89AC_SUBST(PYTHONFRAMEWORK)
90AC_SUBST(PYTHONFRAMEWORKDIR)
91AC_SUBST(PYTHONFRAMEWORKPREFIX)
92AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000093
Jack Jansenb6e9cad2001-08-15 01:26:28 +000094##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000095## AC_HELP_STRING(--with-dyld,
96## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000097##
Guido van Rossumb418f891996-07-30 18:06:02 +000098# Set name for machine-dependent library files
99AC_SUBST(MACHDEP)
100AC_MSG_CHECKING(MACHDEP)
101if test -z "$MACHDEP"
102then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000103 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000104 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
105 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000106 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000107 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000108 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000109 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_md_system=`echo $ac_sys_system |
111 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
112 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000113 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000114 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000115
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000116 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000117 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000118 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000119 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000120 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000121 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000122 esac
123fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000124
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000125# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
126# disable features if it is defined, without any means to access these
127# features as extensions. For these systems, we skip the definition of
128# _XOPEN_SOURCE. Before adding a system to the list to gain access to
129# some feature, make sure there is no alternative way to access this
130# feature. Also, when using wildcards, make sure you have verified the
131# need for not defining _XOPEN_SOURCE on all systems matching the
132# wildcard, and that the wildcard does not include future systems
133# (which may remove their limitations).
134dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
135case $ac_sys_system/$ac_sys_release in
136 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
137 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Lö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öwisfc9b75f2003-08-09 09:06:52 +0000511 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000512 ;;
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)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000516 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000517 INSTSONAME="$LDLIBRARY".$SOVERSION
518 ;;
519 hp*|HP*)
520 LDLIBRARY='libpython$(VERSION).sl'
521 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000522 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000523 ;;
524 OSF*)
525 LDLIBRARY='libpython$(VERSION).so'
526 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000527 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000528 ;;
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
Jason Tishler30765592003-09-04 11:04:06 +0000542else # shared is disabled
543 case $ac_sys_system in
544 CYGWIN*)
545 BLDLIBRARY='$(LIBRARY)'
546 LDLIBRARY='libpython$(VERSION).dll.a'
547 ;;
548 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000549fi
550
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000551AC_MSG_RESULT($LDLIBRARY)
552
Guido van Rossum627b2d71993-12-24 10:39:16 +0000553AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000554AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000555AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000556
557case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000558bsdos*|hp*|HP*)
559 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000560 if test -z "$INSTALL"
561 then
562 INSTALL="${srcdir}/install-sh -c"
563 fi
564esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000565AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000566
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000567# Not every filesystem supports hard links
568AC_SUBST(LN)
569if test -z "$LN" ; then
570 case $ac_sys_system in
571 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000572 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000573 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000574 *) LN=ln;;
575 esac
576fi
577
Fred Drake9f715822001-07-11 06:27:00 +0000578# Check for --with-pydebug
579AC_MSG_CHECKING(for --with-pydebug)
580AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000581 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
582[
Fred Drake9f715822001-07-11 06:27:00 +0000583if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000584then
585 AC_DEFINE(Py_DEBUG, 1,
586 [Define if you want to build an interpreter with many run-time checks.])
587 AC_MSG_RESULT(yes);
588 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000589else AC_MSG_RESULT(no); Py_DEBUG='false'
590fi],
591[AC_MSG_RESULT(no)])
592
Skip Montanarodecc6a42003-01-01 20:07:49 +0000593# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
594# merged with this chunk of code?
595
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000596# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000597# ------------------------
598# (The following bit of code is complicated enough - please keep things
599# indented properly. Just pretend you're editing Python code. ;-)
600
601# There are two parallel sets of case statements below, one that checks to
602# see if OPT was set and one that does BASECFLAGS setting based upon
603# compiler and platform. BASECFLAGS tweaks need to be made even if the
604# user set OPT.
605
606# tweak OPT based on compiler and platform, only if the user didn't set
607# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000608AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000609if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000610then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000611 case $GCC in
612 yes)
613 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000614 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000615 if test "$Py_DEBUG" = 'true' ; then
616 # Optimization messes up debuggers, so turn it off for
617 # debug builds.
618 OPT="-g -Wall -Wstrict-prototypes"
619 else
620 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000621 fi
622 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000623 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000624 OPT="-O3 -Wall -Wstrict-prototypes"
625 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000626 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000627 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000628 SCO_SV*) OPT="$OPT -m486 -DSCO5"
629 ;;
630 esac
Fred Drake9f715822001-07-11 06:27:00 +0000631 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000632
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000633 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000634 OPT="-O"
635 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000636 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000637
638 # The current (beta) Monterey compiler dies with optimizations
639 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000640 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000641 Monterey*)
642 OPT=""
643 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000644 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000645
Guido van Rossum4e8af441994-08-19 15:33:54 +0000646fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000647
Skip Montanarodecc6a42003-01-01 20:07:49 +0000648AC_SUBST(BASECFLAGS)
649# tweak BASECFLAGS based on compiler and platform
650case $GCC in
651yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000652 # Python violates C99 rules, by casting between incompatible
653 # pointer types. GCC may generate bad code as a result of that,
654 # so use -fno-strict-aliasing if supported.
655 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
656 ac_save_cc="$CC"
657 CC="$CC -fno-strict-aliasing"
658 AC_TRY_RUN([int main() { return 0; }],
659 ac_cv_no_strict_aliasing_ok=yes,
660 ac_cv_no_strict_aliasing_ok=no,
661 ac_cv_no_strict_aliasing_ok=no)
662 CC="$ac_save_cc"
663 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
664 if test $ac_cv_no_strict_aliasing_ok = yes
665 then
666 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
667 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000668 case $ac_sys_system in
669 SCO_SV*)
670 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
671 ;;
672 # is there any other compiler on Darwin besides gcc?
673 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000674 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000675 ;;
676 esac
677 ;;
678
679*)
680 case $ac_sys_system in
681 OpenUNIX*|UnixWare*)
682 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
683 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000684 OSF*)
685 BASECFLAGS="$BASECFLAGS -ieee -std"
686 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000687 SCO_SV*)
688 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
689 ;;
690 esac
691 ;;
692esac
693
Fred Drakee1ceaa02001-12-04 20:55:47 +0000694if test "$Py_DEBUG" = 'true'; then
695 :
696else
697 OPT="-DNDEBUG $OPT"
698fi
699
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000700if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000701then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000702 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000703fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000704
Guido van Rossum91922671997-10-09 20:24:13 +0000705AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
706AC_CACHE_VAL(ac_cv_opt_olimit_ok,
707[ac_save_cc="$CC"
708CC="$CC -OPT:Olimit=0"
709AC_TRY_RUN([int main() { return 0; }],
710 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000711 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000712 ac_cv_opt_olimit_ok=no)
713CC="$ac_save_cc"])
714AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000715if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000716 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000717 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
718 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
719 # environment?
720 Darwin*)
721 ;;
722 *)
723 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
724 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000725 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000726else
727 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
728 AC_CACHE_VAL(ac_cv_olimit_ok,
729 [ac_save_cc="$CC"
730 CC="$CC -Olimit 1500"
731 AC_TRY_RUN([int main() { return 0; }],
732 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000733 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000734 ac_cv_olimit_ok=no)
735 CC="$ac_save_cc"])
736 AC_MSG_RESULT($ac_cv_olimit_ok)
737 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000738 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000739 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000740fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000741
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000742# On some compilers, pthreads are available without further options
743# (e.g. MacOS X). On some of these systems, the compiler will not
744# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
745# So we have to see first whether pthreads are available without
746# options before we can check whether -Kpthread improves anything.
747AC_MSG_CHECKING(whether pthreads are available without options)
748AC_CACHE_VAL(ac_cv_pthread_is_default,
749[AC_TRY_RUN([
750#include <pthread.h>
751
752void* routine(void* p){return NULL;}
753
754int main(){
755 pthread_t p;
756 if(pthread_create(&p,NULL,routine,NULL)!=0)
757 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000758 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000759 return 0;
760}
761],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000762[
763 ac_cv_pthread_is_default=yes
764 ac_cv_kthread=no
765 ac_cv_pthread=no
766],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000767 ac_cv_pthread_is_default=no,
768 ac_cv_pthread_is_default=no)
769])
770AC_MSG_RESULT($ac_cv_pthread_is_default)
771
772
773if test $ac_cv_pthread_is_default = yes
774then
775 ac_cv_kpthread=no
776else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000777# -Kpthread, if available, provides the right #defines
778# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000779# Some compilers won't report that they do not support -Kpthread,
780# so we need to run a program to see whether it really made the
781# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000782AC_MSG_CHECKING(whether $CC accepts -Kpthread)
783AC_CACHE_VAL(ac_cv_kpthread,
784[ac_save_cc="$CC"
785CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000786AC_TRY_RUN([
787#include <pthread.h>
788
789void* routine(void* p){return NULL;}
790
791int main(){
792 pthread_t p;
793 if(pthread_create(&p,NULL,routine,NULL)!=0)
794 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000795 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000796 return 0;
797}
798],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000799 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000800 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000801 ac_cv_kpthread=no)
802CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000803AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000804fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000805
Skip Montanarod8d39a02003-07-10 20:44:10 +0000806if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000807then
808# -Kthread, if available, provides the right #defines
809# and linker options to make pthread_create available
810# Some compilers won't report that they do not support -Kthread,
811# so we need to run a program to see whether it really made the
812# function available.
813AC_MSG_CHECKING(whether $CC accepts -Kthread)
814AC_CACHE_VAL(ac_cv_kthread,
815[ac_save_cc="$CC"
816CC="$CC -Kthread"
817AC_TRY_RUN([
818#include <pthread.h>
819
820void* routine(void* p){return NULL;}
821
822int main(){
823 pthread_t p;
824 if(pthread_create(&p,NULL,routine,NULL)!=0)
825 return 1;
826 (void)pthread_detach(p);
827 return 0;
828}
829],
830 ac_cv_kthread=yes,
831 ac_cv_kthread=no,
832 ac_cv_kthread=no)
833CC="$ac_save_cc"])
834AC_MSG_RESULT($ac_cv_kthread)
835fi
836
Skip Montanarod8d39a02003-07-10 20:44:10 +0000837if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000838then
839# -pthread, if available, provides the right #defines
840# and linker options to make pthread_create available
841# Some compilers won't report that they do not support -pthread,
842# so we need to run a program to see whether it really made the
843# function available.
844AC_MSG_CHECKING(whether $CC accepts -pthread)
845AC_CACHE_VAL(ac_cv_thread,
846[ac_save_cc="$CC"
847CC="$CC -pthread"
848AC_TRY_RUN([
849#include <pthread.h>
850
851void* routine(void* p){return NULL;}
852
853int main(){
854 pthread_t p;
855 if(pthread_create(&p,NULL,routine,NULL)!=0)
856 return 1;
857 (void)pthread_detach(p);
858 return 0;
859}
860],
861 ac_cv_pthread=yes,
862 ac_cv_pthread=no,
863 ac_cv_pthread=no)
864CC="$ac_save_cc"])
865AC_MSG_RESULT($ac_cv_pthread)
866fi
867
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000868# If we have set a CC compiler flag for thread support then
869# check if it works for CXX, too.
870ac_cv_cxx_thread=no
871if test ! -z "$CXX"
872then
873AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
874ac_save_cxx="$CXX"
875
876if test "$ac_cv_kpthread" = "yes"
877then
878 CXX="$CXX -Kpthread"
879 ac_cv_cxx_thread=yes
880elif test "$ac_cv_kthread" = "yes"
881then
882 CXX="$CXX -Kthread"
883 ac_cv_cxx_thread=yes
884elif test "$ac_cv_pthread" = "yes"
885then
886 CXX="$CXX -pthread"
887 ac_cv_cxx_thread=yes
888fi
889
890if test $ac_cv_cxx_thread = yes
891then
892 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
893 $CXX -c conftest.$ac_ext 2>&5
894 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
895 && test -s conftest$ac_exeext && ./conftest$ac_exeext
896 then
897 ac_cv_cxx_thread=yes
898 else
899 ac_cv_cxx_thread=no
900 CXX="$ac_save_cxx"
901 fi
902 rm -fr conftest*
903else
904 CXX="$ac_save_cxx"
905fi
906fi
907AC_MSG_RESULT($ac_cv_cxx_thread)
908
Fred Drakece81d592000-07-09 14:39:29 +0000909dnl # check for ANSI or K&R ("traditional") preprocessor
910dnl AC_MSG_CHECKING(for C preprocessor type)
911dnl AC_TRY_COMPILE([
912dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
913dnl int foo;
914dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
915dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
916dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000917
Guido van Rossum627b2d71993-12-24 10:39:16 +0000918# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000919AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000920AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
921libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000922signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
923unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000924sys/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 +0000925sys/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 +0000926sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000927sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000928AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000929AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000930
931# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000932was_it_defined=no
933AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000934AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
935 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
936])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000937AC_MSG_RESULT($was_it_defined)
938
Neal Norwitz11690112002-07-30 01:08:28 +0000939# Check whether using makedev requires defining _OSF_SOURCE
940AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000941AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000942 [ makedev(0, 0) ],
943 ac_cv_has_makedev=yes,
944 ac_cv_has_makedev=no)
945if test "$ac_cv_has_makedev" = "no"; then
946 # we didn't link, try if _OSF_SOURCE will allow us to link
947 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000948#define _OSF_SOURCE 1
949#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000950 ],
951 [ makedev(0, 0) ],
952 ac_cv_has_makedev=yes,
953 ac_cv_has_makedev=no)
954 if test "$ac_cv_has_makedev" = "yes"; then
955 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
956 fi
957fi
958AC_MSG_RESULT($ac_cv_has_makedev)
959if test "$ac_cv_has_makedev" = "yes"; then
960 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
961fi
962
Martin v. Löwis399a6892002-10-04 10:22:02 +0000963# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
964# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
965# defined, but the compiler does not support pragma redefine_extname,
966# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
967# structures (such as rlimit64) without declaring them. As a
968# work-around, disable LFS on such configurations
969
970use_lfs=yes
971AC_MSG_CHECKING(Solaris LFS bug)
972AC_TRY_COMPILE([
973#define _LARGEFILE_SOURCE 1
974#define _FILE_OFFSET_BITS 64
975#include <sys/resource.h>
976],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
977AC_MSG_RESULT($sol_lfs_bug)
978if test "$sol_lfs_bug" = "yes"; then
979 use_lfs=no
980fi
981
982if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000983# Two defines needed to enable largefile support on various platforms
984# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000985AC_DEFINE(_LARGEFILE_SOURCE, 1,
986[This must be defined on some systems to enable large file support.])
987AC_DEFINE(_FILE_OFFSET_BITS, 64,
988[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000989fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000990
Guido van Rossum300fda71996-08-19 21:58:16 +0000991# Add some code to confdefs.h so that the test for off_t works on SCO
992cat >> confdefs.h <<\EOF
993#if defined(SCO_DS)
994#undef _OFF_T
995#endif
996EOF
997
Guido van Rossumef2255b2000-03-10 22:30:29 +0000998# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000999AC_TYPE_MODE_T
1000AC_TYPE_OFF_T
1001AC_TYPE_PID_T
1002AC_TYPE_SIGNAL
1003AC_TYPE_SIZE_T
1004AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001005
Guido van Rossumef2255b2000-03-10 22:30:29 +00001006# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +00001007AC_CHECK_SIZEOF(int, 4)
1008AC_CHECK_SIZEOF(long, 4)
1009AC_CHECK_SIZEOF(void *, 4)
1010AC_CHECK_SIZEOF(char, 1)
1011AC_CHECK_SIZEOF(short, 2)
1012AC_CHECK_SIZEOF(float, 4)
1013AC_CHECK_SIZEOF(double, 8)
1014AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001015
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001016AC_MSG_CHECKING(for long long support)
1017have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001018AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1019 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1020 have_long_long=yes
1021])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001022AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001023if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001024AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001025fi
1026
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001027AC_MSG_CHECKING(for uintptr_t support)
1028have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001029AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1030 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1031 have_uintptr_t=yes
1032])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001033AC_MSG_RESULT($have_uintptr_t)
1034if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001035AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001036fi
1037
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001038# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1039AC_MSG_CHECKING(size of off_t)
1040AC_CACHE_VAL(ac_cv_sizeof_off_t,
1041[AC_TRY_RUN([#include <stdio.h>
1042#include <sys/types.h>
1043main()
1044{
1045 FILE *f=fopen("conftestval", "w");
1046 if (!f) exit(1);
1047 fprintf(f, "%d\n", sizeof(off_t));
1048 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001049}],
1050ac_cv_sizeof_off_t=`cat conftestval`,
1051ac_cv_sizeof_off_t=0,
1052ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001053])
1054AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001055AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1056[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001057
1058AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001059if test "$have_long_long" = yes -a \
1060 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1061 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001062 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1063 [Defined to enable large file support when an off_t is bigger than a long
1064 and long long is available and at least as big as an off_t. You may need
1065 to add some flags for configuration and compilation to enable this mode.
1066 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001067 AC_MSG_RESULT(yes)
1068else
1069 AC_MSG_RESULT(no)
1070fi
1071
Fred Drakea3f6e912000-06-29 20:44:47 +00001072# AC_CHECK_SIZEOF() doesn't include <time.h>.
1073AC_MSG_CHECKING(size of time_t)
1074AC_CACHE_VAL(ac_cv_sizeof_time_t,
1075[AC_TRY_RUN([#include <stdio.h>
1076#include <time.h>
1077main()
1078{
1079 FILE *f=fopen("conftestval", "w");
1080 if (!f) exit(1);
1081 fprintf(f, "%d\n", sizeof(time_t));
1082 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001083}],
1084ac_cv_sizeof_time_t=`cat conftestval`,
1085ac_cv_sizeof_time_t=0,
1086ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001087])
1088AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001089AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1090[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001091
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001092
Trent Mick635f6fb2000-08-23 21:33:05 +00001093# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001094ac_save_cc="$CC"
1095if test "$ac_cv_kpthread" = "yes"
1096then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001097elif test "$ac_cv_kthread" = "yes"
1098then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001099elif test "$ac_cv_pthread" = "yes"
1100then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001101fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001102AC_MSG_CHECKING(for pthread_t)
1103have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001104AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001105AC_MSG_RESULT($have_pthread_t)
1106if test "$have_pthread_t" = yes ; then
1107 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1108 AC_MSG_CHECKING(size of pthread_t)
1109 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1110 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001111#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001112 main()
1113 {
1114 FILE *f=fopen("conftestval", "w");
1115 if (!f) exit(1);
1116 fprintf(f, "%d\n", sizeof(pthread_t));
1117 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001118 }],
1119 ac_cv_sizeof_pthread_t=`cat conftestval`,
1120 ac_cv_sizeof_pthread_t=0,
1121 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001122 ])
1123 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001124 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1125 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001126fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001127CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001128
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001129AC_MSG_CHECKING(for --enable-toolbox-glue)
1130AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001131 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001132
1133if test -z "$enable_toolbox_glue"
1134then
1135 case $ac_sys_system/$ac_sys_release in
1136 Darwin/*)
1137 enable_toolbox_glue="yes";;
1138 *)
1139 enable_toolbox_glue="no";;
1140 esac
1141fi
1142case "$enable_toolbox_glue" in
1143yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001144 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001145 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001146 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001147 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1148 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001149 ;;
1150*)
1151 extra_frameworks=""
1152 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001153 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001154 ;;
1155esac
1156AC_MSG_RESULT($enable_toolbox_glue)
1157
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001158AC_SUBST(LIBTOOL_CRUFT)
1159case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001160 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001161 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001162 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001163 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansena3891ea2001-09-07 14:25:12 +00001164 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001165 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001166 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001167 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001168 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001169 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001170esac
1171
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001172AC_MSG_CHECKING(for --enable-framework)
1173if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001174then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001175 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001176 # -F. is needed to allow linking to the framework while
1177 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001178 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001179 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1180 [Define if you want to produce an OpenStep/Rhapsody framework
1181 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001182 AC_MSG_RESULT(yes)
1183else
1184 AC_MSG_RESULT(no)
1185fi
1186
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001187AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001188case $ac_sys_system/$ac_sys_release in
1189 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001190 AC_DEFINE(WITH_DYLD, 1,
1191 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1192 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1193 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001194 AC_MSG_RESULT(always on for Darwin)
1195 ;;
1196 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001197 AC_MSG_RESULT(no)
1198 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001199esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001200
Guido van Rossumac405f61994-09-12 10:56:06 +00001201# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001202AC_SUBST(SO)
1203AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001204AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001205AC_SUBST(CCSHARED)
1206AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001207# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001208# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001209AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001210if test -z "$SO"
1211then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001212 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001213 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001214 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001215 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001216 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001217else
1218 # this might also be a termcap variable, see #610332
1219 echo
1220 echo '====================================================================='
1221 echo '+ +'
1222 echo '+ WARNING: You have set SO in your environment. +'
1223 echo '+ Do you really mean to change the extension for shared libraries? +'
1224 echo '+ Continuing in 10 seconds to let you to ponder. +'
1225 echo '+ +'
1226 echo '====================================================================='
1227 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001228fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001229AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001230# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001231# -- "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 +00001232# (Shared libraries in this instance are shared modules to be loaded into
1233# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001234AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001235if test -z "$LDSHARED"
1236then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001237 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001238 AIX*)
1239 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001240 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001241 ;;
1242 BeOS*)
1243 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001244 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001245 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001246 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001247 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001248 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001249 SunOS/5*)
1250 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001251 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001252 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001253 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001254 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001255 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001256 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001257 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001258 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1259 if test "$enable_framework" ; then
1260 # Link against the framework. All externals should be defined.
1261 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1262 else
1263 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001264 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001265 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001266 Darwin/*)
1267 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1268 if test "$enable_framework" ; then
1269 # Link against the framework. All externals should be defined.
1270 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1271 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001272 # No framework, use the Python app as bundle-loader
1273 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001274 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001275 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001276 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001277 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001278 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001279 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001280 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001281 then
1282 LDSHARED="cc -shared ${LDFLAGS}"
1283 else
1284 LDSHARED="ld -Bshareable ${LDFLAGS}"
1285 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001286 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001287 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001288 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001289 then LDSHARED='$(CC) -shared'
1290 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001291 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001292 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001293 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001294 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001295 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001296 *) LDSHARED="ld";;
1297 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001298fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001299AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001300BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001301# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001302# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001303AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001304if test -z "$CCSHARED"
1305then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001306 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001307 SunOS*) if test "$GCC" = yes;
1308 then CCSHARED="-fPIC";
1309 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001310 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001311 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001312 else CCSHARED="+z";
1313 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001314 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001315 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001316 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001317 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001318 if test "$GCC" = "yes"
1319 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001320 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001321 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001322 SCO_SV*)
1323 if test "$GCC" = "yes"
1324 then CCSHARED="-fPIC"
1325 else CCSHARED="-Kpic -belf"
1326 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001327 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001328 IRIX*/6*) case $CC in
1329 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001330 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001331 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001332 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001333 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001334fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001335AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001336# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001337# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001338AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001339if test -z "$LINKFORSHARED"
1340then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001341 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001342 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001343 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001344 LINKFORSHARED="-Wl,-E -Wl,+s";;
1345# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001346 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001347 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001348 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001349 Darwin/*)
1350 # -u __dummy makes the linker aware of the objc runtime
1351 # in System.framework; otherwise, __objcInit (referenced in
1352 # crt1.o) gets erroneously defined as common, which breaks dynamic
1353 # loading of any modules which reference it in System.framework.
1354 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1355 # not used by the core itself but which needs to be in the core so
1356 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001357 # -prebind is no longer used, because it actually seems to give a
1358 # slowdown in stead of a speedup, maybe due to the large number of
1359 # dynamic loads Python does.
1360 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 if test "$enable_framework"
1362 then
1363 LINKFORSHARED="$LINKFORSHARED -framework Python"
1364 fi
1365 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001366 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001367 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001368 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001369 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001370 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1371 then
1372 LINKFORSHARED="-Wl,--export-dynamic"
1373 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001374 SunOS/5*) case $CC in
1375 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001376 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001377 then
1378 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001379 fi;;
1380 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001381 CYGWIN*)
1382 if test $enable_shared = "no"
1383 then
1384 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1385 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001386 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001387fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001388AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001389
Neil Schemenauer61c51152001-01-26 16:18:16 +00001390AC_SUBST(CFLAGSFORSHARED)
1391AC_MSG_CHECKING(CFLAGSFORSHARED)
1392if test ! "$LIBRARY" = "$LDLIBRARY"
1393then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001394 case $ac_sys_system in
1395 CYGWIN*)
1396 # Cygwin needs CCSHARED when building extension DLLs
1397 # but not when building the interpreter DLL.
1398 CFLAGSFORSHARED='';;
1399 *)
1400 CFLAGSFORSHARED='$(CCSHARED)'
1401 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001402fi
1403AC_MSG_RESULT($CFLAGSFORSHARED)
1404
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001405# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1406# library (with --enable-shared).
1407# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001408# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1409# if it is not required, since it creates a dependency of the shared library
1410# to LIBS. This, in turn, means that applications linking the shared libpython
1411# don't need to link LIBS explicitly. The default should be only changed
1412# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001413AC_SUBST(SHLIBS)
1414AC_MSG_CHECKING(SHLIBS)
1415case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001416 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001417 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001418esac
1419AC_MSG_RESULT($SHLIBS)
1420
1421
Guido van Rossum627b2d71993-12-24 10:39:16 +00001422# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001423AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1424AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001425AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1426 # posix4 on Solaris 2.6
1427 # pthread (first!) on Linux
Martin v. Löwis19d17342003-06-14 21:03:05 +00001428# check if we need libintl for locale functions
1429AC_CHECK_LIB(intl, textdomain,
1430 AC_DEFINE(WITH_LIBINTL, 1,
1431 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001432
1433# checks for system dependent C++ extensions support
1434case "$ac_sys_system" in
1435 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1436 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1437 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001438 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1439 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1440 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001441 AC_MSG_RESULT(yes)],
1442 [AC_MSG_RESULT(no)]);;
1443 *) ;;
1444esac
1445
Guido van Rossum70c7f481998-03-26 18:44:10 +00001446# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001447# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001448# BeOS' sockets are stashed in libnet.
1449case "$ac_sys_system" in
1450IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001451*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001452AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001453AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001454;;
1455esac
1456case "$ac_sys_system" in
1457BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001458AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1459;;
1460esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001461
Guido van Rossumc5a39031996-07-31 17:35:03 +00001462AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001463AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001464 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1465[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001466AC_MSG_RESULT($withval)
1467LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001468],
1469[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001470
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001471# Determine if signalmodule should be used.
1472AC_SUBST(USE_SIGNAL_MODULE)
1473AC_SUBST(SIGNAL_OBJS)
1474AC_MSG_CHECKING(for --with-signal-module)
1475AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001476 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001477
1478if test -z "$with_signal_module"
1479then with_signal_module="yes"
1480fi
1481AC_MSG_RESULT($with_signal_module)
1482
1483if test "${with_signal_module}" = "yes"; then
1484 USE_SIGNAL_MODULE=""
1485 SIGNAL_OBJS=""
1486else
1487 USE_SIGNAL_MODULE="#"
1488 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1489fi
1490
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001491# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001492AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001493USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001494
Guido van Rossum54d93d41997-01-22 20:51:58 +00001495AC_MSG_CHECKING(for --with-dec-threads)
1496AC_SUBST(LDLAST)
1497AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001498 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1499[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001500AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001501LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001502if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001503 with_thread="$withval";
1504fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001505[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001506
Martin v. Löwis11437992002-04-12 09:54:03 +00001507# Templates for things AC_DEFINEd more than once.
1508# For a single AC_DEFINE, no template is needed.
1509AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1510AH_TEMPLATE(_REENTRANT,
1511 [Define to force use of thread-safe errno, h_errno, and other functions])
1512AH_TEMPLATE(WITH_THREAD,
1513 [Define if you want to compile in rudimentary thread support])
1514
Guido van Rossum54d93d41997-01-22 20:51:58 +00001515AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001516dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001517AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001518 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001519
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001520# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001521dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001522AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001523 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1524 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001525
1526if test -z "$with_threads"
1527then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001528fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001529AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001530
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001531AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001532if test "$with_threads" = "no"
1533then
1534 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001535elif test "$ac_cv_pthread_is_default" = yes
1536then
1537 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001538 # Defining _REENTRANT on system with POSIX threads should not hurt.
1539 AC_DEFINE(_REENTRANT)
1540 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001541 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001542elif test "$ac_cv_kpthread" = "yes"
1543then
1544 CC="$CC -Kpthread"
1545 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001546 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001547 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001548elif test "$ac_cv_kthread" = "yes"
1549then
1550 CC="$CC -Kthread"
1551 AC_DEFINE(WITH_THREAD)
1552 posix_threads=yes
1553 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001554elif test "$ac_cv_pthread" = "yes"
1555then
1556 CC="$CC -pthread"
1557 AC_DEFINE(WITH_THREAD)
1558 posix_threads=yes
1559 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001560else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001561 if test ! -z "$with_threads" -a -d "$with_threads"
1562 then LDFLAGS="$LDFLAGS -L$with_threads"
1563 fi
1564 if test ! -z "$withval" -a -d "$withval"
1565 then LDFLAGS="$LDFLAGS -L$withval"
1566 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001567
1568 # According to the POSIX spec, a pthreads implementation must
1569 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1570 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1571 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001572 [
1573#include <unistd.h>
1574#ifdef _POSIX_THREADS
1575yes
1576#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001577 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1578 AC_MSG_RESULT($unistd_defines_pthreads)
1579
Martin v. Löwis130fb172001-07-19 11:00:41 +00001580 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001581 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1582 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001583 AC_DEFINE(HURD_C_THREADS, 1,
1584 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001585 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001586 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001587 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1588 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001589 AC_DEFINE(MACH_C_THREADS, 1,
1590 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001591 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001592 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001593 AC_ARG_WITH([pth],
1594 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1595 [AC_MSG_RESULT($withval)
1596 AC_DEFINE([WITH_THREAD])
1597 AC_DEFINE([HAVE_PTH], 1,
1598 [Define if you have GNU PTH threads.])
1599 LIBS="-lpth $LIBS"
1600 THREADOBJ="Python/thread.o"],
1601 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001602
1603 # Just looking for pthread_create in libpthread is not enough:
1604 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1605 # So we really have to include pthread.h, and then link.
1606 _libs=$LIBS
1607 LIBS="$LIBS -lpthread"
1608 AC_MSG_CHECKING([for pthread_create in -lpthread])
1609 AC_TRY_LINK([#include <pthread.h>
1610
1611void * start_routine (void *arg) { exit (0); }], [
1612pthread_create (NULL, NULL, start_routine, NULL)], [
1613 AC_MSG_RESULT(yes)
1614 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001615 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001616 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001617 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001618 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001619 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001620 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001621 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1622 AC_DEFINE(ATHEOS_THREADS, 1,
1623 [Define this if you have AtheOS threads.])
1624 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001625 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001626 AC_DEFINE(BEOS_THREADS, 1,
1627 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001628 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001629 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001630 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001631 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001632 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001633 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001634 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001635 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001636 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001637 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001638 echo Systems with __d6_pthread_create are not supported anymore.
1639 echo See README
1640 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001641 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001642 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001643 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001644 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001645 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001646 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001647 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001648 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001649 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001650 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001651 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001652 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001653 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001654
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001655 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1656 LIBS="$LIBS -lmpc"
1657 THREADOBJ="Python/thread.o"
1658 USE_THREAD_MODULE=""])
1659
1660 if test "$posix_threads" != "yes"; then
1661 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1662 LIBS="$LIBS -lthread"
1663 THREADOBJ="Python/thread.o"
1664 USE_THREAD_MODULE=""])
1665 fi
1666
1667 if test "$USE_THREAD_MODULE" != "#"
1668 then
1669 # If the above checks didn't disable threads, (at least) OSF1
1670 # needs this '-threads' argument during linking.
1671 case $ac_sys_system in
1672 OSF1) LDLAST=-threads;;
1673 esac
1674 fi
1675fi
1676
1677if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001678 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001679 AC_DEFINE(_POSIX_THREADS, 1,
1680 [Define if you have POSIX threads,
1681 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001682 fi
1683
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001684 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1685 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001686 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1687 Defined for Solaris 2.6 bug in pthread header.)
1688 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001689 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001690 Define if the Posix semaphores do not work on your system)
1691 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001692 esac
1693
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001694 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1695 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1696 [AC_TRY_RUN([#include <pthread.h>
1697 void *foo(void *parm) {
1698 return NULL;
1699 }
1700 main() {
1701 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001702 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001703 if (pthread_attr_init(&attr)) exit(-1);
1704 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001705 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001706 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001707 }],
1708 ac_cv_pthread_system_supported=yes,
1709 ac_cv_pthread_system_supported=no,
1710 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001711 ])
1712 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1713 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001714 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001715 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001716 AC_CHECK_FUNCS(pthread_sigmask,
1717 [case $ac_sys_system in
1718 CYGWIN*)
1719 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1720 [Define if pthread_sigmask() does not work on your system.])
1721 ;;
1722 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001723fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001724
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001725
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001726# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001727AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001728AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001729AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001730[ --enable-ipv6 Enable ipv6 (with ipv4) support
1731 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001732[ case "$enableval" in
1733 no)
1734 AC_MSG_RESULT(no)
1735 ipv6=no
1736 ;;
1737 *) AC_MSG_RESULT(yes)
1738 AC_DEFINE(ENABLE_IPV6)
1739 ipv6=yes
1740 ;;
1741 esac ],
1742
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001743[
1744dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001745 AC_TRY_RUN([ /* AF_INET6 available check */
1746#include <sys/types.h>
1747#include <sys/socket.h>
1748main()
1749{
1750 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1751 exit(1);
1752 else
1753 exit(0);
1754}
1755],
1756 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001757 ipv6=yes,
1758 AC_MSG_RESULT(no)
1759 ipv6=no,
1760 AC_MSG_RESULT(no)
1761 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001762)
1763
1764if test "$ipv6" = "yes"; then
1765 AC_MSG_CHECKING(if RFC2553 API is available)
1766 AC_TRY_COMPILE([#include <sys/types.h>
1767#include <netinet/in.h>],
1768 [struct sockaddr_in6 x;
1769x.sin6_scope_id;],
1770 AC_MSG_RESULT(yes)
1771 ipv6=yes,
1772 AC_MSG_RESULT(no, IPv6 disabled)
1773 ipv6=no)
1774fi
1775
1776if test "$ipv6" = "yes"; then
1777 AC_DEFINE(ENABLE_IPV6)
1778fi
1779])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001780
1781ipv6type=unknown
1782ipv6lib=none
1783ipv6trylibc=no
1784
1785if test "$ipv6" = "yes"; then
1786 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001787 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1788 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001789 case $i in
1790 inria)
1791 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001792 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001793#include <netinet/in.h>
1794#ifdef IPV6_INRIA_VERSION
1795yes
1796#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001797 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001798 ;;
1799 kame)
1800 dnl http://www.kame.net/
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 <netinet/in.h>
1803#ifdef __KAME__
1804yes
1805#endif],
1806 [ipv6type=$i;
1807 ipv6lib=inet6
1808 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001809 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001810 ;;
1811 linux-glibc)
1812 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001813 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001814#include <features.h>
1815#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1816yes
1817#endif],
1818 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001819 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001820 ;;
1821 linux-inet6)
1822 dnl http://www.v6.linux.or.jp/
1823 if test -d /usr/inet6; then
1824 ipv6type=$i
1825 ipv6lib=inet6
1826 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001827 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001828 fi
1829 ;;
1830 solaris)
1831 if test -f /etc/netconfig; then
1832 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1833 ipv6type=$i
1834 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001835 fi
1836 fi
1837 ;;
1838 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001839 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001840#include <sys/param.h>
1841#ifdef _TOSHIBA_INET6
1842yes
1843#endif],
1844 [ipv6type=$i;
1845 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001846 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001847 ;;
1848 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001849 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001850#include </usr/local/v6/include/sys/v6config.h>
1851#ifdef __V6D__
1852yes
1853#endif],
1854 [ipv6type=$i;
1855 ipv6lib=v6;
1856 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001857 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001858 ;;
1859 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001860 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001861#include <sys/param.h>
1862#ifdef _ZETA_MINAMI_INET6
1863yes
1864#endif],
1865 [ipv6type=$i;
1866 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001867 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001868 ;;
1869 esac
1870 if test "$ipv6type" != "unknown"; then
1871 break
1872 fi
1873 done
1874 AC_MSG_RESULT($ipv6type)
1875fi
1876
1877if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1878 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1879 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1880 echo "using lib$ipv6lib"
1881 else
1882 if test $ipv6trylibc = "yes"; then
1883 echo "using libc"
1884 else
1885 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1886 echo "You need to fetch lib$ipv6lib.a from appropriate"
1887 echo 'ipv6 kit and compile beforehand.'
1888 exit 1
1889 fi
1890 fi
1891fi
1892
Jack Jansen7b8c7542002-04-14 20:12:41 +00001893# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001894AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001895AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001896 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001897
1898if test -z "$with_universal_newlines"
1899then with_universal_newlines="yes"
1900fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001901if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001902then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001903 echo --without-universal-newlines is unsupported, see README
1904 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001905else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001906 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1907 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001908fi
1909AC_MSG_RESULT($with_universal_newlines)
1910
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001911# Check for --with-doc-strings
1912AC_MSG_CHECKING(for --with-doc-strings)
1913AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001914 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001915
1916if test -z "$with_doc_strings"
1917then with_doc_strings="yes"
1918fi
1919if test "$with_doc_strings" != "no"
1920then
1921 AC_DEFINE(WITH_DOC_STRINGS, 1,
1922 [Define if you want documentation strings in extension modules])
1923fi
1924AC_MSG_RESULT($with_doc_strings)
1925
Neil Schemenauera35c6882001-02-27 04:45:05 +00001926# Check for Python-specific malloc support
1927AC_MSG_CHECKING(for --with-pymalloc)
1928AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001929 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001930
1931if test -z "$with_pymalloc"
1932then with_pymalloc="yes"
1933fi
1934if test "$with_pymalloc" != "no"
1935then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001936 AC_DEFINE(WITH_PYMALLOC, 1,
1937 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001938fi
1939AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001940
Barry Warsawef82cd72000-06-30 16:21:01 +00001941# Check for --with-wctype-functions
1942AC_MSG_CHECKING(for --with-wctype-functions)
1943AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001944 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1945[
Barry Warsawef82cd72000-06-30 16:21:01 +00001946if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001947then
1948 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1949 [Define if you want wctype.h functions to be used instead of the
1950 one supplied by Python itself. (see Include/unicodectype.h).])
1951 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001952else AC_MSG_RESULT(no)
1953fi],
1954[AC_MSG_RESULT(no)])
1955
Guido van Rossum68242b51996-05-28 22:53:03 +00001956# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001957AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001958DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001959
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001960AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001961AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001962 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1963[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001964AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001965echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001966exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001967AC_DEFINE(WITH_SGI_DL, 1,
1968 [Define if you want to use SGI (IRIX 4) dynamic linking.
1969 This requires the "dl" library by Jack Jansen,
1970 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1971 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1972 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001973DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001974dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001975if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001976then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001977else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001978fi
1979DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001980LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001981
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001982AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001983AC_ARG_WITH(dl-dld,
1984 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1985[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001986AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001987echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001988exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001989AC_DEFINE(WITH_DL_DLD, 1,
1990 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1991 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1992 Sequent Symmetry (Dynix), and Atari ST.
1993 This requires the 'dl-dld' library,
1994 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1995 as well as the 'GNU dld' library,
1996 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1997 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1998 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001999DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002000dldir=`echo "$withval" | sed 's/,.*//'`
2001dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00002002if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00002003then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002004else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002005fi
2006DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002007LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00002008
Guido van Rossume97ee181999-12-20 21:27:22 +00002009# the dlopen() function means we might want to use dynload_shlib.o. some
2010# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002011AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002012
2013# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2014# loading of modules.
2015AC_SUBST(DYNLOADFILE)
2016AC_MSG_CHECKING(DYNLOADFILE)
2017if test -z "$DYNLOADFILE"
2018then
2019 case $ac_sys_system/$ac_sys_release in
2020 AIX*) DYNLOADFILE="dynload_aix.o";;
2021 BeOS*) DYNLOADFILE="dynload_beos.o";;
2022 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002023 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002024 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002025 *)
2026 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2027 # out any dynamic loading
2028 if test "$ac_cv_func_dlopen" = yes
2029 then DYNLOADFILE="dynload_shlib.o"
2030 else DYNLOADFILE="dynload_stub.o"
2031 fi
2032 ;;
2033 esac
2034fi
2035AC_MSG_RESULT($DYNLOADFILE)
2036if test "$DYNLOADFILE" != "dynload_stub.o"
2037then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002038 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2039 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002040fi
2041
Jack Jansenc49e5b72001-06-19 15:00:23 +00002042# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2043
2044AC_SUBST(MACHDEP_OBJS)
2045AC_MSG_CHECKING(MACHDEP_OBJS)
2046if test -z "$MACHDEP_OBJS"
2047then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002048 MACHDEP_OBJS=$extra_machdep_objs
2049else
2050 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002051fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002052AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002053
Guido van Rossum627b2d71993-12-24 10:39:16 +00002054# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00002055AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002056 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002057 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
2058 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002059 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002060 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002061 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002062 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002063 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002064 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002065 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002066 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002067
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002068# For some functions, having a definition is not sufficient, since
2069# we want to take their address.
2070AC_MSG_CHECKING(for chroot)
2071AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2072 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2073 AC_MSG_RESULT(yes),
2074 AC_MSG_RESULT(no)
2075)
2076AC_MSG_CHECKING(for link)
2077AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2078 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2079 AC_MSG_RESULT(yes),
2080 AC_MSG_RESULT(no)
2081)
2082AC_MSG_CHECKING(for symlink)
2083AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2084 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2085 AC_MSG_RESULT(yes),
2086 AC_MSG_RESULT(no)
2087)
2088
Martin v. Löwisd5843682002-11-21 20:41:28 +00002089# On some systems (eg. FreeBSD 5), we would find a definition of the
2090# functions ctermid_r, setgroups in the library, but no prototype
2091# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2092# address to avoid compiler warnings and potential miscompilations
2093# because of the missing prototypes.
2094
2095AC_MSG_CHECKING(for ctermid_r)
2096AC_TRY_COMPILE([
2097#include "confdefs.h"
2098#include <stdio.h>
2099], void* p = ctermid_r,
2100 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2101 AC_MSG_RESULT(yes),
2102 AC_MSG_RESULT(no)
2103)
2104
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002105AC_MSG_CHECKING(for flock)
2106AC_TRY_COMPILE([
2107#include "confdefs.h"
2108#include <sys/file.h>
2109], void* p = flock,
2110 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2111 AC_MSG_RESULT(yes),
2112 AC_MSG_RESULT(no)
2113)
2114
2115AC_MSG_CHECKING(for getpagesize)
2116AC_TRY_COMPILE([
2117#include "confdefs.h"
2118#include <unistd.h>
2119], void* p = getpagesize,
2120 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2121 AC_MSG_RESULT(yes),
2122 AC_MSG_RESULT(no)
2123)
2124
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002125dnl check for true
2126AC_CHECK_PROGS(TRUE, true, /bin/true)
2127
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002128dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2129dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002130AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002131 AC_CHECK_LIB(resolv, inet_aton)
2132)
2133
Martin v. Löwise9416172003-05-03 10:12:45 +00002134AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002135AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002136#include "confdefs.h"
2137#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002138], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002139 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2140 AC_MSG_RESULT(yes),
2141 AC_MSG_RESULT(no)
2142)
2143
2144AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002145AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002146#include "confdefs.h"
2147#include <sys/socket.h>
2148#include <netinet/in.h>
2149#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002150], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002151 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2152 AC_MSG_RESULT(yes),
2153 AC_MSG_RESULT(no)
2154)
2155
2156AC_MSG_CHECKING(for inet_pton)
2157AC_TRY_COMPILE([
2158#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002159#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002160#include <sys/socket.h>
2161#include <netinet/in.h>
2162#include <arpa/inet.h>
2163], void* p = inet_pton,
2164 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2165 AC_MSG_RESULT(yes),
2166 AC_MSG_RESULT(no)
2167)
2168
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002169# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002170AC_MSG_CHECKING(for setgroups)
2171AC_TRY_COMPILE([
2172#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002173#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002174#ifdef HAVE_GRP_H
2175#include <grp.h>
2176#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002177],
2178void* p = setgroups,
2179 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2180 AC_MSG_RESULT(yes),
2181 AC_MSG_RESULT(no)
2182)
2183
Fred Drake8cef4cf2000-06-28 16:40:38 +00002184# check for openpty and forkpty
2185
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002186AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2187AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002188
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002189# check for long file support functions
2190AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2191
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002192AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002193AC_CHECK_FUNCS(getpgrp,
2194 AC_TRY_COMPILE([#include <unistd.h>],
2195 [getpgrp(0);],
2196 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2197 [Define if getpgrp() must be called as getpgrp(0).])
2198 )
2199)
Jack Jansen150753c2003-03-29 22:07:47 +00002200AC_CHECK_FUNCS(setpgrp,
2201 AC_TRY_COMPILE([#include <unistd.h>],
2202 [setpgrp(0,0);],
2203 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2204 [Define if setpgrp() must be called as setpgrp(0, 0).])
2205 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002206)
2207AC_CHECK_FUNCS(gettimeofday,
2208 AC_TRY_COMPILE([#include <sys/time.h>],
2209 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2210 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2211 [Define if gettimeofday() does not have second (timezone) argument
2212 This is the case on Motorola V4 (R40V4.2)])
2213 )
2214)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002215
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002216AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002217AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002218#if defined(MAJOR_IN_MKDEV)
2219#include <sys/mkdev.h>
2220#elif defined(MAJOR_IN_SYSMACROS)
2221#include <sys/sysmacros.h>
2222#else
2223#include <sys/types.h>
2224#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002225],[
2226 makedev(major(0),minor(0));
2227],[
2228 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2229 [Define to 1 if you have the device macros.])
2230 AC_MSG_RESULT(yes)
2231],[
2232 AC_MSG_RESULT(no)
2233])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002234
2235# On OSF/1 V5.1, getaddrinfo is available, but a define
2236# for [no]getaddrinfo in netdb.h.
2237AC_MSG_CHECKING(for getaddrinfo)
2238AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002239#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002240#include <sys/socket.h>
2241#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002242#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002243],[
2244getaddrinfo(NULL, NULL, NULL, NULL);
2245], [
2246AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002247AC_MSG_CHECKING(getaddrinfo bug)
2248AC_TRY_RUN([
2249#include <sys/types.h>
2250#include <netdb.h>
2251#include <string.h>
2252#include <sys/socket.h>
2253#include <netinet/in.h>
2254
2255main()
2256{
2257 int passive, gaierr, inet4 = 0, inet6 = 0;
2258 struct addrinfo hints, *ai, *aitop;
2259 char straddr[INET6_ADDRSTRLEN], strport[16];
2260
2261 for (passive = 0; passive <= 1; passive++) {
2262 memset(&hints, 0, sizeof(hints));
2263 hints.ai_family = AF_UNSPEC;
2264 hints.ai_flags = passive ? AI_PASSIVE : 0;
2265 hints.ai_socktype = SOCK_STREAM;
2266 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2267 (void)gai_strerror(gaierr);
2268 goto bad;
2269 }
2270 for (ai = aitop; ai; ai = ai->ai_next) {
2271 if (ai->ai_addr == NULL ||
2272 ai->ai_addrlen == 0 ||
2273 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2274 straddr, sizeof(straddr), strport, sizeof(strport),
2275 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2276 goto bad;
2277 }
2278 switch (ai->ai_family) {
2279 case AF_INET:
2280 if (strcmp(strport, "54321") != 0) {
2281 goto bad;
2282 }
2283 if (passive) {
2284 if (strcmp(straddr, "0.0.0.0") != 0) {
2285 goto bad;
2286 }
2287 } else {
2288 if (strcmp(straddr, "127.0.0.1") != 0) {
2289 goto bad;
2290 }
2291 }
2292 inet4++;
2293 break;
2294 case AF_INET6:
2295 if (strcmp(strport, "54321") != 0) {
2296 goto bad;
2297 }
2298 if (passive) {
2299 if (strcmp(straddr, "::") != 0) {
2300 goto bad;
2301 }
2302 } else {
2303 if (strcmp(straddr, "::1") != 0) {
2304 goto bad;
2305 }
2306 }
2307 inet6++;
2308 break;
2309 case AF_UNSPEC:
2310 goto bad;
2311 break;
2312 default:
2313 /* another family support? */
2314 break;
2315 }
2316 }
2317 }
2318
2319 if (!(inet4 == 0 || inet4 == 2))
2320 goto bad;
2321 if (!(inet6 == 0 || inet6 == 2))
2322 goto bad;
2323
2324 if (aitop)
2325 freeaddrinfo(aitop);
2326 exit(0);
2327
2328 bad:
2329 if (aitop)
2330 freeaddrinfo(aitop);
2331 exit(1);
2332}
2333],
2334AC_MSG_RESULT(good)
2335buggygetaddrinfo=no,
2336AC_MSG_RESULT(buggy)
2337buggygetaddrinfo=yes,
2338AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002339buggygetaddrinfo=yes)], [
2340AC_MSG_RESULT(no)
2341buggygetaddrinfo=yes
2342])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002343
2344if test "$buggygetaddrinfo" = "yes"; then
2345 if test "$ipv6" = "yes"; then
2346 echo 'Fatal: You must get working getaddrinfo() function.'
2347 echo ' or you can specify "--disable-ipv6"'.
2348 exit 1
2349 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002350else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002351 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002352fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002353AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002354
Guido van Rossum627b2d71993-12-24 10:39:16 +00002355# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002356AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002357AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002358AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002359AC_CHECK_MEMBERS([struct stat.st_rdev])
2360AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002361AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002362
2363AC_MSG_CHECKING(for time.h that defines altzone)
2364AC_CACHE_VAL(ac_cv_header_time_altzone,
2365[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2366 ac_cv_header_time_altzone=yes,
2367 ac_cv_header_time_altzone=no)])
2368AC_MSG_RESULT($ac_cv_header_time_altzone)
2369if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002370 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002371fi
2372
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002373was_it_defined=no
2374AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002375AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002376#include <sys/types.h>
2377#include <sys/select.h>
2378#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002379], [;], [
2380 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2381 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2382 (which you can't on SCO ODT 3.0).])
2383 was_it_defined=yes
2384])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002385AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002386
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002387AC_MSG_CHECKING(for addrinfo)
2388AC_CACHE_VAL(ac_cv_struct_addrinfo,
2389AC_TRY_COMPILE([
2390# include <netdb.h>],
2391 [struct addrinfo a],
2392 ac_cv_struct_addrinfo=yes,
2393 ac_cv_struct_addrinfo=no))
2394AC_MSG_RESULT($ac_cv_struct_addrinfo)
2395if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002396 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002397fi
2398
2399AC_MSG_CHECKING(for sockaddr_storage)
2400AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2401AC_TRY_COMPILE([
2402# include <sys/types.h>
2403# include <sys/socket.h>],
2404 [struct sockaddr_storage s],
2405 ac_cv_struct_sockaddr_storage=yes,
2406 ac_cv_struct_sockaddr_storage=no))
2407AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2408if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002409 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002410fi
2411
Guido van Rossum627b2d71993-12-24 10:39:16 +00002412# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002413
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002414AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002415AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002416
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002417works=no
2418AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002419AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2420 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2421)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002422AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002423
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002424works=no
2425AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002426AC_TRY_COMPILE([], [signed char c;], works=yes,
2427 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2428)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002429AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002430
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002431have_prototypes=no
2432AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002433AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2434 AC_DEFINE(HAVE_PROTOTYPES, 1,
2435 [Define if your compiler supports function prototype])
2436 have_prototypes=yes
2437])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002438AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002439
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002440works=no
2441AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002442AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002443#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002444int foo(int x, ...) {
2445 va_list va;
2446 va_start(va, x);
2447 va_arg(va, int);
2448 va_arg(va, char *);
2449 va_arg(va, double);
2450 return 0;
2451}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002452], [return foo(10, "", 3.14);], [
2453 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2454 [Define if your compiler supports variable length function prototypes
2455 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2456 works=yes
2457])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002458AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002459
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002460if test "$have_prototypes" = yes; then
2461bad_prototypes=no
2462AC_MSG_CHECKING(for bad exec* prototypes)
2463AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002464 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2465 [Define if your <unistd.h> contains bad prototypes for exec*()
2466 (as it does on SGI IRIX 4.x)])
2467 bad_prototypes=yes
2468)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002469AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002470fi
2471
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002472# check if sockaddr has sa_len member
2473AC_MSG_CHECKING(if sockaddr has sa_len member)
2474AC_TRY_COMPILE([#include <sys/types.h>
2475#include <sys/socket.h>],
2476[struct sockaddr x;
2477x.sa_len = 0;],
2478 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002479 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002480 AC_MSG_RESULT(no))
2481
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002482va_list_is_array=no
2483AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002484AC_TRY_COMPILE([
2485#ifdef HAVE_STDARG_PROTOTYPES
2486#include <stdarg.h>
2487#else
2488#include <varargs.h>
2489#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002490], [va_list list1, list2; list1 = list2;], , [
2491 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2492 va_list_is_array=yes
2493])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002494AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002495
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002496# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002497AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2498 [Define this if you have some version of gethostbyname_r()])
2499
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002500AC_CHECK_FUNC(gethostbyname_r, [
2501 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2502 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2503 OLD_CFLAGS=$CFLAGS
2504 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2505 AC_TRY_COMPILE([
2506# include <netdb.h>
2507 ], [
2508 char *name;
2509 struct hostent *he, *res;
2510 char buffer[2048];
2511 int buflen = 2048;
2512 int h_errnop;
2513
2514 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2515 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002516 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002517 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2518 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002519 AC_MSG_RESULT(yes)
2520 ], [
2521 AC_MSG_RESULT(no)
2522 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2523 AC_TRY_COMPILE([
2524# include <netdb.h>
2525 ], [
2526 char *name;
2527 struct hostent *he;
2528 char buffer[2048];
2529 int buflen = 2048;
2530 int h_errnop;
2531
2532 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2533 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002534 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002535 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2536 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002537 AC_MSG_RESULT(yes)
2538 ], [
2539 AC_MSG_RESULT(no)
2540 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2541 AC_TRY_COMPILE([
2542# include <netdb.h>
2543 ], [
2544 char *name;
2545 struct hostent *he;
2546 struct hostent_data data;
2547
2548 (void) gethostbyname_r(name, he, &data);
2549 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002550 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002551 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2552 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002553 AC_MSG_RESULT(yes)
2554 ], [
2555 AC_MSG_RESULT(no)
2556 ])
2557 ])
2558 ])
2559 CFLAGS=$OLD_CFLAGS
2560], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002561 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002562])
2563AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2564AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2565AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002566AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002567AC_SUBST(HAVE_GETHOSTBYNAME)
2568
Guido van Rossum627b2d71993-12-24 10:39:16 +00002569# checks for system services
2570# (none yet)
2571
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002572# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002573AC_CHECK_FUNC(__fpu_control,
2574 [],
2575 [AC_CHECK_LIB(ieee, __fpu_control)
2576])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002577
Guido van Rossum93274221997-05-09 02:42:00 +00002578# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002579AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002580AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002581 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2582[
Guido van Rossum93274221997-05-09 02:42:00 +00002583if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002584then
2585 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2586 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2587 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002588else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002589fi],
2590[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002591
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002592# check for --with-libm=...
2593AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002594case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002595Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002596BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002597*) LIBM=-lm
2598esac
Guido van Rossum93274221997-05-09 02:42:00 +00002599AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002600AC_ARG_WITH(libm,
2601 AC_HELP_STRING(--with-libm=STRING, math library),
2602[
Guido van Rossum93274221997-05-09 02:42:00 +00002603if test "$withval" = no
2604then LIBM=
2605 AC_MSG_RESULT(force LIBM empty)
2606elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002607then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002608 AC_MSG_RESULT(set LIBM="$withval")
2609else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002610fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002611[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002612
2613# check for --with-libc=...
2614AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002615AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002616AC_ARG_WITH(libc,
2617 AC_HELP_STRING(--with-libc=STRING, C library),
2618[
Guido van Rossum93274221997-05-09 02:42:00 +00002619if test "$withval" = no
2620then LIBC=
2621 AC_MSG_RESULT(force LIBC empty)
2622elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002623then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002624 AC_MSG_RESULT(set LIBC="$withval")
2625else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002626fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002627[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002628
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002629# check for hypot() in math library
2630LIBS_SAVE=$LIBS
2631LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002632AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002633LIBS=$LIBS_SAVE
2634
Guido van Rossumef2255b2000-03-10 22:30:29 +00002635# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002636AC_CHECK_HEADER(wchar.h, [
2637 AC_DEFINE(HAVE_WCHAR_H, 1,
2638 [Define if the compiler provides a wchar.h header file.])
2639 wchar_h="yes"
2640],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002641wchar_h="no"
2642)
2643
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002644# determine wchar_t size
2645if test "$wchar_h" = yes
2646then
Guido van Rossum67b26592001-10-20 14:21:45 +00002647 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002648fi
2649
2650AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002651dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002652AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002653 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2654 [],
2655 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002656
2657if test $enable_unicode = yes
2658then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002659 # Without any arguments, Py_UNICODE defaults to two-byte mode
2660 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002661fi
2662
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002663AH_TEMPLATE(Py_UNICODE_SIZE,
2664 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002665case "$enable_unicode" in
2666ucs2) unicode_size="2"
2667 AC_DEFINE(Py_UNICODE_SIZE,2)
2668 ;;
2669ucs4) unicode_size="4"
2670 AC_DEFINE(Py_UNICODE_SIZE,4)
2671 ;;
2672esac
2673
Martin v. Löwis11437992002-04-12 09:54:03 +00002674AH_TEMPLATE(PY_UNICODE_TYPE,
2675 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002676
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002677AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002678if test "$enable_unicode" = "no"
2679then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002680 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002681 AC_MSG_RESULT(not used)
2682else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002683 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002684 AC_DEFINE(Py_USING_UNICODE, 1,
2685 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002686 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2687 then
2688 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002689 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2690 [Define if you have a useable wchar_t type defined in wchar.h; useable
2691 means wchar_t must be 16-bit unsigned type. (see
2692 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002693 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2694 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2695 then
2696 PY_UNICODE_TYPE="unsigned short"
2697 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2698 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2699 then
2700 PY_UNICODE_TYPE="unsigned long"
2701 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2702 else
2703 PY_UNICODE_TYPE="no type found"
2704 fi
2705 AC_MSG_RESULT($PY_UNICODE_TYPE)
2706fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002707
2708# check for endianness
2709AC_C_BIGENDIAN
2710
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002711# Check whether right shifting a negative integer extends the sign bit
2712# or fills with zeros (like the Cray J90, according to Tim Peters).
2713AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002714AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002715AC_TRY_RUN([
2716int main()
2717{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002718 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002719}
Guido van Rossum3065c942001-09-17 04:03:14 +00002720],
2721ac_cv_rshift_extends_sign=yes,
2722ac_cv_rshift_extends_sign=no,
2723ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002724AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2725if test "$ac_cv_rshift_extends_sign" = no
2726then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002727 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2728 [Define if i>>j for signed int i does not extend the sign bit
2729 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002730fi
2731
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002732# check for getc_unlocked and related locking functions
2733AC_MSG_CHECKING(for getc_unlocked() and friends)
2734AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2735AC_TRY_LINK([#include <stdio.h>],[
2736 FILE *f = fopen("/dev/null", "r");
2737 flockfile(f);
2738 getc_unlocked(f);
2739 funlockfile(f);
2740], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2741AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2742if test "$ac_cv_have_getc_unlocked" = yes
2743then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002744 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2745 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002746fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002747
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002748# check for readline 2.2
2749AC_TRY_CPP([#include <readline/readline.h>],
2750have_readline=yes, have_readline=no)
2751if test $have_readline = yes
2752then
2753 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2754 [readline/readline.h],
2755 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2756 [Define if you have readline 2.2]), )
2757fi
2758
Martin v. Löwis0daad592001-09-30 21:09:59 +00002759# check for readline 4.0
2760AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002761 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2762 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002763
Guido van Rossum353ae582001-07-10 16:45:32 +00002764# check for readline 4.2
2765AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002766 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2767 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002768
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002769AC_MSG_CHECKING(for broken nice())
2770AC_CACHE_VAL(ac_cv_broken_nice, [
2771AC_TRY_RUN([
2772int main()
2773{
2774 int val1 = nice(1);
2775 if (val1 != -1 && val1 == nice(2))
2776 exit(0);
2777 exit(1);
2778}
Guido van Rossum3065c942001-09-17 04:03:14 +00002779],
2780ac_cv_broken_nice=yes,
2781ac_cv_broken_nice=no,
2782ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002783AC_MSG_RESULT($ac_cv_broken_nice)
2784if test "$ac_cv_broken_nice" = yes
2785then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002786 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2787 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002788fi
2789
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002790# tzset(3) exists and works like we expect it to
2791AC_MSG_CHECKING(for working tzset())
2792AC_CACHE_VAL(ac_cv_working_tzset, [
2793AC_TRY_RUN([
2794#include <stdlib.h>
2795#include <time.h>
2796int main()
2797{
2798 int gmt_hour;
2799 int eastern_hour;
2800 time_t now;
2801 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002802 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002803 tzset();
2804 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002805 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002806 tzset();
2807 eastern_hour = localtime(&now)->tm_hour;
2808 if (eastern_hour == gmt_hour)
2809 exit(1);
2810 exit(0);
2811}
2812],
2813ac_cv_working_tzset=yes,
2814ac_cv_working_tzset=no,
2815ac_cv_working_tzset=no)])
2816AC_MSG_RESULT($ac_cv_working_tzset)
2817if test "$ac_cv_working_tzset" = yes
2818then
2819 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2820 [Define if tzset() actually switches the local timezone in a meaningful way.])
2821fi
2822
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002823# Look for subsecond timestamps in struct stat
2824AC_MSG_CHECKING(for tv_nsec in struct stat)
2825AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2826AC_TRY_COMPILE([#include <sys/stat.h>], [
2827struct stat st;
2828st.st_mtim.tv_nsec = 1;
2829],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002830ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002831ac_cv_stat_tv_nsec=no,
2832ac_cv_stat_tv_nsec=no))
2833AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2834if test "$ac_cv_stat_tv_nsec" = yes
2835then
2836 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2837 [Define if you have struct stat.st_mtim.tv_nsec])
2838fi
2839
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002840# On HP/UX 11.0, mvwdelch is a block with a return statement
2841AC_MSG_CHECKING(whether mvwdelch is an expression)
2842AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2843AC_TRY_COMPILE([#include <curses.h>], [
2844 int rtn;
2845 rtn = mvwdelch(0,0,0);
2846], ac_cv_mvwdelch_is_expression=yes,
2847 ac_cv_mvwdelch_is_expression=no,
2848 ac_cv_mvwdelch_is_expression=yes))
2849AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2850
2851if test "$ac_cv_mvwdelch_is_expression" = yes
2852then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002853 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2854 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002855fi
2856
2857AC_MSG_CHECKING(whether WINDOW has _flags)
2858AC_CACHE_VAL(ac_cv_window_has_flags,
2859AC_TRY_COMPILE([#include <curses.h>], [
2860 WINDOW *w;
2861 w->_flags = 0;
2862], ac_cv_window_has_flags=yes,
2863 ac_cv_window_has_flags=no,
2864 ac_cv_window_has_flags=no))
2865AC_MSG_RESULT($ac_cv_window_has_flags)
2866
2867
2868if test "$ac_cv_window_has_flags" = yes
2869then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002870 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2871 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002872fi
2873
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002874AC_MSG_CHECKING(for /dev/ptmx)
2875
2876if test -e /dev/ptmx
2877then
2878 AC_MSG_RESULT(yes)
2879 AC_DEFINE(HAVE_DEV_PTMX, 1,
2880 [Define if we have /dev/ptmx.])
2881else
2882 AC_MSG_RESULT(no)
2883fi
2884
Neal Norwitz865400f2003-03-21 01:42:58 +00002885AC_MSG_CHECKING(for /dev/ptc)
2886
2887if test -e /dev/ptc
2888then
2889 AC_MSG_RESULT(yes)
2890 AC_DEFINE(HAVE_DEV_PTC, 1,
2891 [Define if we have /dev/ptc.])
2892else
2893 AC_MSG_RESULT(no)
2894fi
2895
Martin v. Löwis01c04012002-11-11 14:58:44 +00002896AC_CHECK_TYPE(socklen_t,,
2897 AC_DEFINE(socklen_t,int,
2898 Define to `int' if <sys/socket.h> does not define.),[
2899#ifdef HAVE_SYS_TYPES_H
2900#include <sys/types.h>
2901#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002902#ifdef HAVE_SYS_SOCKET_H
2903#include <sys/socket.h>
2904#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002905])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002906
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002907AC_SUBST(THREADHEADERS)
2908
2909for h in `(cd $srcdir;echo Python/thread_*.h)`
2910do
2911 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2912done
2913
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002914AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002915SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002916AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002917for dir in $SRCDIRS; do
2918 if test ! -d $dir; then
2919 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002920 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002921done
2922AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002923
Guido van Rossum627b2d71993-12-24 10:39:16 +00002924# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002925AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2926AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002927
2928echo "creating Setup"
2929if test ! -f Modules/Setup
2930then
2931 cp $srcdir/Modules/Setup.dist Modules/Setup
2932fi
2933
2934echo "creating Setup.local"
2935if test ! -f Modules/Setup.local
2936then
2937 echo "# Edit this file for local setup changes" >Modules/Setup.local
2938fi
2939
2940echo "creating Makefile"
2941$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2942 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002943 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002944mv config.c Modules