blob: f73d1ceac1094c705eeb046ce896cb884e792eed [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Fred Drake9bd44622003-07-30 17:39:48 +00004m4_define(PYTHON_VERSION, 2.4)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwise981a4e2002-11-11 13:26:51 +000053define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000054
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000055# Arguments passed to configure.
56AC_SUBST(CONFIG_ARGS)
57CONFIG_ARGS="$ac_configure_args"
58
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000059dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000060AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000061 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
62[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000063 case $enableval in
64 yes)
65 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000066 esac
67 case $enableval in
68 no)
69 PYTHONFRAMEWORK=
70 PYTHONFRAMEWORKDIR=no-framework
71 PYTHONFRAMEWORKPREFIX=
72 PYTHONFRAMEWORKINSTALLDIR=
73 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 ;;
75 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000076 PYTHONFRAMEWORK=Python
77 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000079 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
80 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000081 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 ],[
83 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000084 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 PYTHONFRAMEWORKPREFIX=
86 PYTHONFRAMEWORKINSTALLDIR=
87 enable_framework=
88])
89AC_SUBST(PYTHONFRAMEWORK)
90AC_SUBST(PYTHONFRAMEWORKDIR)
91AC_SUBST(PYTHONFRAMEWORKPREFIX)
92AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000093
Jack Jansenb6e9cad2001-08-15 01:26:28 +000094##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000095## AC_HELP_STRING(--with-dyld,
96## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000097##
Guido van Rossumb418f891996-07-30 18:06:02 +000098# Set name for machine-dependent library files
99AC_SUBST(MACHDEP)
100AC_MSG_CHECKING(MACHDEP)
101if test -z "$MACHDEP"
102then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000103 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000104 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
105 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000106 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000107 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000108 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000109 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_md_system=`echo $ac_sys_system |
111 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
112 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000113 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000114 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000115
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000116 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000117 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000118 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000119 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000120 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000121 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000122 esac
123fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000124
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000125# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
126# disable features if it is defined, without any means to access these
127# features as extensions. For these systems, we skip the definition of
128# _XOPEN_SOURCE. Before adding a system to the list to gain access to
129# some feature, make sure there is no alternative way to access this
130# feature. Also, when using wildcards, make sure you have verified the
131# need for not defining _XOPEN_SOURCE on all systems matching the
132# wildcard, and that the wildcard does not include future systems
133# (which may remove their limitations).
134dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
135case $ac_sys_system/$ac_sys_release in
136 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
137 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000138 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
139 OpenBSD/2.* | OpenBSD/3.@<:@01234@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000140 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000141 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
142 # of union __?sigval. Reported by Stuart Bishop.
143 SunOS/5.6)
144 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000145 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
146 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000147 # Reconfirmed for 7.1.4 by Martin v. Loewis.
148 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 define_xopen_source=no;;
150 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000151 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000152 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000153 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000154 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
155 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
156 # this is fixed in 10.3, which identifies itself as Darwin/7.*
157 # This should hopefully be fixed in FreeBSD 4.9
158 FreeBSD/4.8* | Darwin/6* )
159 define_xopen_source=no;;
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000160 # On AIX 4, mbstate_t is defined only when _XOPEN_SOURCE == 500 but used in
161 # wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined or
162 # has another value. By not (re)defining it, the defaults come in place.
163 AIX/4)
164 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000165esac
166
167if test $define_xopen_source = yes
168then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000169 AC_DEFINE(_XOPEN_SOURCE, 600,
170 Define to the level of X/Open that your system supports)
171
172 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
173 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
174 # several APIs are not declared. Since this is also needed in some
175 # cases for HP-UX, we define it globally.
176
177 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
178 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
179
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000180fi
181
Guido van Rossum91922671997-10-09 20:24:13 +0000182#
183# SGI compilers allow the specification of the both the ABI and the
184# ISA on the command line. Depending on the values of these switches,
185# different and often incompatable code will be generated.
186#
187# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
188# thus supply support for various ABI/ISA combinations. The MACHDEP
189# variable is also adjusted.
190#
191AC_SUBST(SGI_ABI)
192if test ! -z "$SGI_ABI"
193then
194 CC="cc $SGI_ABI"
195 LDFLAGS="$SGI_ABI $LDFLAGS"
196 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
197fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000198AC_MSG_RESULT($MACHDEP)
199
Jack Jansen83f898c2002-12-30 22:23:40 +0000200# And add extra plat-mac for darwin
201AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000202AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000203AC_MSG_CHECKING(EXTRAPLATDIR)
204if test -z "$EXTRAPLATDIR"
205then
206 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000207 darwin)
208 EXTRAPLATDIR="\$(PLATMACDIRS)"
209 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
210 ;;
211 *)
212 EXTRAPLATDIR=""
213 EXTRAMACHDEPPATH=""
214 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000215 esac
216fi
217AC_MSG_RESULT($EXTRAPLATDIR)
218
Jack Jansen6b08a402004-06-03 12:41:45 +0000219# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
220# it may influence the way we can build extensions, so distutils
221# needs to check it
222AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
223CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
224
Guido van Rossum627b2d71993-12-24 10:39:16 +0000225# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000226
227# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
228# for debug/optimization stuff. BASECFLAGS is for flags that are required
229# just to get things to compile and link. Users are free to override OPT
230# when running configure or make. The build should not break if they do.
231# BASECFLAGS should generally not be messed with, however.
232
233# XXX shouldn't some/most/all of this code be merged with the stuff later
234# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000235AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000236AC_ARG_WITH(gcc,
237 AC_HELP_STRING(--without-gcc,never use gcc),
238[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000239 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000240 no) CC=cc
241 without_gcc=yes;;
242 yes) CC=gcc
243 without_gcc=no;;
244 *) CC=$withval
245 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000246 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000248 AIX*) CC=cc_r
249 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000250 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000251 case $BE_HOST_CPU in
252 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000253 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000254 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000255 BASECFLAGS="$BASECFLAGS -export pragma"
256 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000257 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000258 ;;
259 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000260 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000261 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000262 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000263 ;;
264 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000265 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000266 ;;
267 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000268 AR="\$(srcdir)/Modules/ar_beos"
269 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000270 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000271 Monterey*)
272 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000273 without_gcc=;;
274 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000275 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000276AC_MSG_RESULT($without_gcc)
277
Guido van Rossum27552902001-01-23 01:52:26 +0000278AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000279AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000280MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000281AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000282AC_ARG_WITH(cxx,
283 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
284[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000285 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000286 case $withval in
287 no) CXX=
288 with_cxx=no;;
289 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000290 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000291 with_cxx=$withval;;
292 esac], [
293 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000294 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000295])
296AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000297
Michael W. Hudson54241132001-12-07 15:38:26 +0000298if test "$with_cxx" = "yes"
299then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000300 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000301fi
302
Martin v. Löwis537970f2000-12-13 17:37:02 +0000303dnl The following fragment works similar to AC_PROG_CXX.
304dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000305dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000306dnl Finally, it does not test whether CXX is g++.
307
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000308dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
309ifdef([AC_PROG_CXX_WORKS],[],
310 [AC_DEFUN([AC_PROG_CXX_WORKS],
311 [AC_LANG_PUSH(C++)dnl
312 _AC_COMPILER_EXEEXT
313 AC_LANG_POP()
314 ]
315)])
316
Martin v. Löwis537970f2000-12-13 17:37:02 +0000317if test "$check_cxx" = "yes"
318then
319 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
320 if test "$CXX" = "notfound"
321 then
322 CXX=
323 else
324 AC_PROG_CXX_WORKS
325 fi
326fi
327
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000328# If the user switches compilers, we can't believe the cache
329if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
330then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000331 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
332(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000333fi
334
Guido van Rossum627b2d71993-12-24 10:39:16 +0000335AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000336
337# checks for UNIX variants that set C preprocessor variables
338AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000339
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000340# Check for unsupported systems
341case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000342Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000343 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
344 echo See README for details.
345 exit 1;;
346esac
347
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000348AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000349AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000350AC_ARG_WITH(suffix,
351 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
352[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000353 case $withval in
354 no) EXEEXT=;;
355 yes) EXEEXT=.exe;;
356 *) EXEEXT=$withval;;
357 esac])
358AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000359
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000360# Test whether we're running on a non-case-sensitive system, in which
361# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000362AC_SUBST(BUILDEXEEXT)
363AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000364if test ! -d CaseSensitiveTestDir; then
365mkdir CaseSensitiveTestDir
366fi
367
368if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000369then
Jack Jansen1999ef42001-12-06 21:47:20 +0000370 AC_MSG_RESULT(yes)
371 BUILDEXEEXT=.exe
372else
373 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000374 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000375fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000376rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000377
Guido van Rossumdd997f71998-10-07 19:58:26 +0000378case $MACHDEP in
379bsdos*)
380 case $CC in
381 gcc) CC="$CC -D_HAVE_BSDI";;
382 esac;;
383esac
384
Guido van Rossum84561611997-08-21 00:08:11 +0000385case $ac_sys_system in
386hp*|HP*)
387 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000388 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000389 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000390Monterey*)
391 case $CC in
392 cc) CC="$CC -Wl,-Bexport";;
393 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000394SunOS*)
395 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000396 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000397 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000398esac
399
Martin v. Löwise8964d42001-03-06 12:09:07 +0000400
Neil Schemenauer61c51152001-01-26 16:18:16 +0000401AC_SUBST(LIBRARY)
402AC_MSG_CHECKING(LIBRARY)
403if test -z "$LIBRARY"
404then
405 LIBRARY='libpython$(VERSION).a'
406fi
407AC_MSG_RESULT($LIBRARY)
408
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000409# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000410# name of the library into which to insert object files). BLDLIBRARY is also
411# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
412# is blank as the main program is not linked directly against LDLIBRARY.
413# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
414# systems without shared libraries, LDLIBRARY is the same as LIBRARY
415# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
416# DLLLIBRARY is the shared (i.e., DLL) library.
417#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000418# RUNSHARED is used to run shared python without installed libraries
419#
420# INSTSONAME is the name of the shared library that will be use to install
421# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000422AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000423AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000424AC_SUBST(BLDLIBRARY)
425AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000426AC_SUBST(INSTSONAME)
427AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000428LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000429BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000430INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000431DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000432LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000433RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000434
Guido van Rossumfb842551997-08-06 23:42:07 +0000435# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000436# If CXX is set, and if it is needed to link a main function that was
437# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
438# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000439# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000440# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000441AC_SUBST(LINKCC)
442AC_MSG_CHECKING(LINKCC)
443if test -z "$LINKCC"
444then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000445 if test -z "$CXX"; then
446 LINKCC="\$(PURIFY) \$(CC)"
447 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000448 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000449 $CXX -c conftest.$ac_ext 2>&5
450 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
451 && test -s conftest$ac_exeext && ./conftest$ac_exeext
452 then
453 LINKCC="\$(PURIFY) \$(CC)"
454 else
455 LINKCC="\$(PURIFY) \$(CXX)"
456 fi
457 rm -fr conftest*
458 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000459 case $ac_sys_system in
460 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000461 exp_extra="\"\""
462 if test $ac_sys_release -ge 5 -o \
463 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
464 exp_extra="."
465 fi
466 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000467 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000468 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000469 esac
470fi
471AC_MSG_RESULT($LINKCC)
472
Martin v. Löwis1142de32002-03-29 16:28:31 +0000473AC_MSG_CHECKING(for --enable-shared)
474AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000475 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000476
Martin v. Löwis1142de32002-03-29 16:28:31 +0000477if test -z "$enable_shared"
478then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000479 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000480 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000481 enable_shared="yes";;
482 *)
483 enable_shared="no";;
484 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000485fi
486AC_MSG_RESULT($enable_shared)
487
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000488AC_MSG_CHECKING(for --enable-profiling)
489AC_ARG_ENABLE(profiling,
490 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
491[ac_save_cc="$CC"
492 CC="$CC -pg"
493 AC_TRY_RUN([int main() { return 0; }],
494 ac_enable_profiling="yes",
495 ac_enable_profiling="no",
496 ac_enable_profiling="no")
497 CC="$ac_save_cc"])
498AC_MSG_RESULT($ac_enable_profiling)
499
500case "$ac_enable_profiling" in
501 "yes")
502 BASECFLAGS="-pg $BASECFLAGS"
503 LDFLAGS="-pg $LDFLAGS"
504 ;;
505esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000506
507AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000508
Guido van Rossumb8552162001-09-05 14:58:11 +0000509# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
510# library that we build, but we do not want to link against it (we
511# will find it with a -framework option). For this reason there is an
512# extra variable BLDLIBRARY against which Python and the extension
513# modules are linked, BLDLIBRARY. This is normally the same as
514# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000515if test "$enable_framework"
516then
517 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000518 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000519 BLDLIBRARY=''
520else
521 BLDLIBRARY='$(LDLIBRARY)'
522fi
523
Martin v. Löwis1142de32002-03-29 16:28:31 +0000524# Other platforms follow
525if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000526 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000527 case $ac_sys_system in
528 BeOS*)
529 LDLIBRARY='libpython$(VERSION).so'
530 ;;
531 CYGWIN*)
532 LDLIBRARY='libpython$(VERSION).dll.a'
533 DLLLIBRARY='libpython$(VERSION).dll'
534 ;;
535 SunOS*)
536 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000537 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000538 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000539 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000540 ;;
Martin v. Löwis96ce8052003-05-31 07:58:45 +0000541 Linux*|GNU*|NetBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000542 LDLIBRARY='libpython$(VERSION).so'
543 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000544 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000545 INSTSONAME="$LDLIBRARY".$SOVERSION
546 ;;
547 hp*|HP*)
548 LDLIBRARY='libpython$(VERSION).sl'
549 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000550 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000551 ;;
552 OSF*)
553 LDLIBRARY='libpython$(VERSION).so'
554 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000555 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000556 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000557 atheos*)
558 LDLIBRARY='libpython$(VERSION).so'
559 BLDLIBRARY='-L. -lpython$(VERSION)'
560 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
561 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000562 esac
Jason Tishler30765592003-09-04 11:04:06 +0000563else # shared is disabled
564 case $ac_sys_system in
565 CYGWIN*)
566 BLDLIBRARY='$(LIBRARY)'
567 LDLIBRARY='libpython$(VERSION).dll.a'
568 ;;
569 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000570fi
571
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000572AC_MSG_RESULT($LDLIBRARY)
573
Guido van Rossum627b2d71993-12-24 10:39:16 +0000574AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000575AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000576AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000577
578case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000579bsdos*|hp*|HP*)
580 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000581 if test -z "$INSTALL"
582 then
583 INSTALL="${srcdir}/install-sh -c"
584 fi
585esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000586AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000587
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000588# Not every filesystem supports hard links
589AC_SUBST(LN)
590if test -z "$LN" ; then
591 case $ac_sys_system in
592 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000593 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000594 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000595 *) LN=ln;;
596 esac
597fi
598
Fred Drake9f715822001-07-11 06:27:00 +0000599# Check for --with-pydebug
600AC_MSG_CHECKING(for --with-pydebug)
601AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000602 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
603[
Fred Drake9f715822001-07-11 06:27:00 +0000604if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000605then
606 AC_DEFINE(Py_DEBUG, 1,
607 [Define if you want to build an interpreter with many run-time checks.])
608 AC_MSG_RESULT(yes);
609 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000610else AC_MSG_RESULT(no); Py_DEBUG='false'
611fi],
612[AC_MSG_RESULT(no)])
613
Skip Montanarodecc6a42003-01-01 20:07:49 +0000614# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
615# merged with this chunk of code?
616
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000617# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000618# ------------------------
619# (The following bit of code is complicated enough - please keep things
620# indented properly. Just pretend you're editing Python code. ;-)
621
622# There are two parallel sets of case statements below, one that checks to
623# see if OPT was set and one that does BASECFLAGS setting based upon
624# compiler and platform. BASECFLAGS tweaks need to be made even if the
625# user set OPT.
626
627# tweak OPT based on compiler and platform, only if the user didn't set
628# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000629AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000630if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000631then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000632 case $GCC in
633 yes)
634 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000635 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000636 if test "$Py_DEBUG" = 'true' ; then
637 # Optimization messes up debuggers, so turn it off for
638 # debug builds.
639 OPT="-g -Wall -Wstrict-prototypes"
640 else
641 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000642 fi
643 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000644 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000645 OPT="-O3 -Wall -Wstrict-prototypes"
646 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000647 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000648 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000649 SCO_SV*) OPT="$OPT -m486 -DSCO5"
650 ;;
651 esac
Fred Drake9f715822001-07-11 06:27:00 +0000652 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000653
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000654 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000655 OPT="-O"
656 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000657 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000658
659 # The current (beta) Monterey compiler dies with optimizations
660 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000661 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000662 Monterey*)
663 OPT=""
664 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000665 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000666
Guido van Rossum4e8af441994-08-19 15:33:54 +0000667fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000668
Skip Montanarodecc6a42003-01-01 20:07:49 +0000669AC_SUBST(BASECFLAGS)
670# tweak BASECFLAGS based on compiler and platform
671case $GCC in
672yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000673 # Python violates C99 rules, by casting between incompatible
674 # pointer types. GCC may generate bad code as a result of that,
675 # so use -fno-strict-aliasing if supported.
676 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
677 ac_save_cc="$CC"
678 CC="$CC -fno-strict-aliasing"
679 AC_TRY_RUN([int main() { return 0; }],
680 ac_cv_no_strict_aliasing_ok=yes,
681 ac_cv_no_strict_aliasing_ok=no,
682 ac_cv_no_strict_aliasing_ok=no)
683 CC="$ac_save_cc"
684 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
685 if test $ac_cv_no_strict_aliasing_ok = yes
686 then
687 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
688 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000689 case $ac_sys_system in
690 SCO_SV*)
691 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
692 ;;
693 # is there any other compiler on Darwin besides gcc?
694 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000695 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000696 ;;
697 esac
698 ;;
699
700*)
701 case $ac_sys_system in
702 OpenUNIX*|UnixWare*)
703 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
704 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000705 OSF*)
706 BASECFLAGS="$BASECFLAGS -ieee -std"
707 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000708 SCO_SV*)
709 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
710 ;;
711 esac
712 ;;
713esac
714
Fred Drakee1ceaa02001-12-04 20:55:47 +0000715if test "$Py_DEBUG" = 'true'; then
716 :
717else
718 OPT="-DNDEBUG $OPT"
719fi
720
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000721if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000722then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000723 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000724fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000725
Guido van Rossum91922671997-10-09 20:24:13 +0000726AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
727AC_CACHE_VAL(ac_cv_opt_olimit_ok,
728[ac_save_cc="$CC"
729CC="$CC -OPT:Olimit=0"
730AC_TRY_RUN([int main() { return 0; }],
731 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000732 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000733 ac_cv_opt_olimit_ok=no)
734CC="$ac_save_cc"])
735AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000736if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000737 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000738 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
739 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
740 # environment?
741 Darwin*)
742 ;;
743 *)
744 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
745 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000746 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000747else
748 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
749 AC_CACHE_VAL(ac_cv_olimit_ok,
750 [ac_save_cc="$CC"
751 CC="$CC -Olimit 1500"
752 AC_TRY_RUN([int main() { return 0; }],
753 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000754 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000755 ac_cv_olimit_ok=no)
756 CC="$ac_save_cc"])
757 AC_MSG_RESULT($ac_cv_olimit_ok)
758 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000759 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000760 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000761fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000762
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000763# On some compilers, pthreads are available without further options
764# (e.g. MacOS X). On some of these systems, the compiler will not
765# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
766# So we have to see first whether pthreads are available without
767# options before we can check whether -Kpthread improves anything.
768AC_MSG_CHECKING(whether pthreads are available without options)
769AC_CACHE_VAL(ac_cv_pthread_is_default,
770[AC_TRY_RUN([
771#include <pthread.h>
772
773void* routine(void* p){return NULL;}
774
775int main(){
776 pthread_t p;
777 if(pthread_create(&p,NULL,routine,NULL)!=0)
778 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000779 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000780 return 0;
781}
782],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000783[
784 ac_cv_pthread_is_default=yes
785 ac_cv_kthread=no
786 ac_cv_pthread=no
787],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000788 ac_cv_pthread_is_default=no,
789 ac_cv_pthread_is_default=no)
790])
791AC_MSG_RESULT($ac_cv_pthread_is_default)
792
793
794if test $ac_cv_pthread_is_default = yes
795then
796 ac_cv_kpthread=no
797else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000798# -Kpthread, if available, provides the right #defines
799# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000800# Some compilers won't report that they do not support -Kpthread,
801# so we need to run a program to see whether it really made the
802# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000803AC_MSG_CHECKING(whether $CC accepts -Kpthread)
804AC_CACHE_VAL(ac_cv_kpthread,
805[ac_save_cc="$CC"
806CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000807AC_TRY_RUN([
808#include <pthread.h>
809
810void* routine(void* p){return NULL;}
811
812int main(){
813 pthread_t p;
814 if(pthread_create(&p,NULL,routine,NULL)!=0)
815 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000816 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000817 return 0;
818}
819],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000820 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000821 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000822 ac_cv_kpthread=no)
823CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000824AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000825fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000826
Skip Montanarod8d39a02003-07-10 20:44:10 +0000827if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000828then
829# -Kthread, if available, provides the right #defines
830# and linker options to make pthread_create available
831# Some compilers won't report that they do not support -Kthread,
832# so we need to run a program to see whether it really made the
833# function available.
834AC_MSG_CHECKING(whether $CC accepts -Kthread)
835AC_CACHE_VAL(ac_cv_kthread,
836[ac_save_cc="$CC"
837CC="$CC -Kthread"
838AC_TRY_RUN([
839#include <pthread.h>
840
841void* routine(void* p){return NULL;}
842
843int main(){
844 pthread_t p;
845 if(pthread_create(&p,NULL,routine,NULL)!=0)
846 return 1;
847 (void)pthread_detach(p);
848 return 0;
849}
850],
851 ac_cv_kthread=yes,
852 ac_cv_kthread=no,
853 ac_cv_kthread=no)
854CC="$ac_save_cc"])
855AC_MSG_RESULT($ac_cv_kthread)
856fi
857
Skip Montanarod8d39a02003-07-10 20:44:10 +0000858if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000859then
860# -pthread, if available, provides the right #defines
861# and linker options to make pthread_create available
862# Some compilers won't report that they do not support -pthread,
863# so we need to run a program to see whether it really made the
864# function available.
865AC_MSG_CHECKING(whether $CC accepts -pthread)
866AC_CACHE_VAL(ac_cv_thread,
867[ac_save_cc="$CC"
868CC="$CC -pthread"
869AC_TRY_RUN([
870#include <pthread.h>
871
872void* routine(void* p){return NULL;}
873
874int main(){
875 pthread_t p;
876 if(pthread_create(&p,NULL,routine,NULL)!=0)
877 return 1;
878 (void)pthread_detach(p);
879 return 0;
880}
881],
882 ac_cv_pthread=yes,
883 ac_cv_pthread=no,
884 ac_cv_pthread=no)
885CC="$ac_save_cc"])
886AC_MSG_RESULT($ac_cv_pthread)
887fi
888
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000889# If we have set a CC compiler flag for thread support then
890# check if it works for CXX, too.
891ac_cv_cxx_thread=no
892if test ! -z "$CXX"
893then
894AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
895ac_save_cxx="$CXX"
896
897if test "$ac_cv_kpthread" = "yes"
898then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000899 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000900 ac_cv_cxx_thread=yes
901elif test "$ac_cv_kthread" = "yes"
902then
903 CXX="$CXX -Kthread"
904 ac_cv_cxx_thread=yes
905elif test "$ac_cv_pthread" = "yes"
906then
907 CXX="$CXX -pthread"
908 ac_cv_cxx_thread=yes
909fi
910
911if test $ac_cv_cxx_thread = yes
912then
913 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
914 $CXX -c conftest.$ac_ext 2>&5
915 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
916 && test -s conftest$ac_exeext && ./conftest$ac_exeext
917 then
918 ac_cv_cxx_thread=yes
919 else
920 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000921 fi
922 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000923fi
924fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000925CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000926AC_MSG_RESULT($ac_cv_cxx_thread)
927
Fred Drakece81d592000-07-09 14:39:29 +0000928dnl # check for ANSI or K&R ("traditional") preprocessor
929dnl AC_MSG_CHECKING(for C preprocessor type)
930dnl AC_TRY_COMPILE([
931dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
932dnl int foo;
933dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
934dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
935dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000936
Guido van Rossum627b2d71993-12-24 10:39:16 +0000937# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000938AC_HEADER_STDC
Skip Montanaro7befb992004-02-10 16:50:21 +0000939AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h langinfo.h \
940libintl.h ncurses.h poll.h pthread.h \
941stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000942unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000943sys/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 +0000944sys/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 +0000945sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000946sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
947bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000948AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000949AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000950
951# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000952was_it_defined=no
953AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000954AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
955 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
956])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000957AC_MSG_RESULT($was_it_defined)
958
Neal Norwitz11690112002-07-30 01:08:28 +0000959# Check whether using makedev requires defining _OSF_SOURCE
960AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000961AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000962 [ makedev(0, 0) ],
963 ac_cv_has_makedev=yes,
964 ac_cv_has_makedev=no)
965if test "$ac_cv_has_makedev" = "no"; then
966 # we didn't link, try if _OSF_SOURCE will allow us to link
967 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000968#define _OSF_SOURCE 1
969#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000970 ],
971 [ makedev(0, 0) ],
972 ac_cv_has_makedev=yes,
973 ac_cv_has_makedev=no)
974 if test "$ac_cv_has_makedev" = "yes"; then
975 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
976 fi
977fi
978AC_MSG_RESULT($ac_cv_has_makedev)
979if test "$ac_cv_has_makedev" = "yes"; then
980 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
981fi
982
Martin v. Löwis399a6892002-10-04 10:22:02 +0000983# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
984# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
985# defined, but the compiler does not support pragma redefine_extname,
986# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
987# structures (such as rlimit64) without declaring them. As a
988# work-around, disable LFS on such configurations
989
990use_lfs=yes
991AC_MSG_CHECKING(Solaris LFS bug)
992AC_TRY_COMPILE([
993#define _LARGEFILE_SOURCE 1
994#define _FILE_OFFSET_BITS 64
995#include <sys/resource.h>
996],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
997AC_MSG_RESULT($sol_lfs_bug)
998if test "$sol_lfs_bug" = "yes"; then
999 use_lfs=no
1000fi
1001
1002if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001003# Two defines needed to enable largefile support on various platforms
1004# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001005AC_DEFINE(_LARGEFILE_SOURCE, 1,
1006[This must be defined on some systems to enable large file support.])
1007AC_DEFINE(_FILE_OFFSET_BITS, 64,
1008[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001009fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001010
Guido van Rossum300fda71996-08-19 21:58:16 +00001011# Add some code to confdefs.h so that the test for off_t works on SCO
1012cat >> confdefs.h <<\EOF
1013#if defined(SCO_DS)
1014#undef _OFF_T
1015#endif
1016EOF
1017
Guido van Rossumef2255b2000-03-10 22:30:29 +00001018# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001019AC_TYPE_MODE_T
1020AC_TYPE_OFF_T
1021AC_TYPE_PID_T
1022AC_TYPE_SIGNAL
1023AC_TYPE_SIZE_T
1024AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001025
Guido van Rossumef2255b2000-03-10 22:30:29 +00001026# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001027# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001028AC_CHECK_SIZEOF(int, 4)
1029AC_CHECK_SIZEOF(long, 4)
1030AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001031AC_CHECK_SIZEOF(short, 2)
1032AC_CHECK_SIZEOF(float, 4)
1033AC_CHECK_SIZEOF(double, 8)
1034AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001035
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001036AC_MSG_CHECKING(for long long support)
1037have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001038AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1039 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1040 have_long_long=yes
1041])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001042AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001043if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001044AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001045fi
1046
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001047AC_MSG_CHECKING(for uintptr_t support)
1048have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001049AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1050 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1051 have_uintptr_t=yes
1052])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001053AC_MSG_RESULT($have_uintptr_t)
1054if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001055AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001056fi
1057
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001058# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1059AC_MSG_CHECKING(size of off_t)
1060AC_CACHE_VAL(ac_cv_sizeof_off_t,
1061[AC_TRY_RUN([#include <stdio.h>
1062#include <sys/types.h>
1063main()
1064{
1065 FILE *f=fopen("conftestval", "w");
1066 if (!f) exit(1);
1067 fprintf(f, "%d\n", sizeof(off_t));
1068 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001069}],
1070ac_cv_sizeof_off_t=`cat conftestval`,
1071ac_cv_sizeof_off_t=0,
1072ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001073])
1074AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001075AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1076[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001077
1078AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001079if test "$have_long_long" = yes -a \
1080 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1081 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001082 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1083 [Defined to enable large file support when an off_t is bigger than a long
1084 and long long is available and at least as big as an off_t. You may need
1085 to add some flags for configuration and compilation to enable this mode.
1086 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001087 AC_MSG_RESULT(yes)
1088else
1089 AC_MSG_RESULT(no)
1090fi
1091
Fred Drakea3f6e912000-06-29 20:44:47 +00001092# AC_CHECK_SIZEOF() doesn't include <time.h>.
1093AC_MSG_CHECKING(size of time_t)
1094AC_CACHE_VAL(ac_cv_sizeof_time_t,
1095[AC_TRY_RUN([#include <stdio.h>
1096#include <time.h>
1097main()
1098{
1099 FILE *f=fopen("conftestval", "w");
1100 if (!f) exit(1);
1101 fprintf(f, "%d\n", sizeof(time_t));
1102 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001103}],
1104ac_cv_sizeof_time_t=`cat conftestval`,
1105ac_cv_sizeof_time_t=0,
1106ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001107])
1108AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001109AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1110[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001111
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001112
Trent Mick635f6fb2000-08-23 21:33:05 +00001113# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001114ac_save_cc="$CC"
1115if test "$ac_cv_kpthread" = "yes"
1116then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001117elif test "$ac_cv_kthread" = "yes"
1118then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001119elif test "$ac_cv_pthread" = "yes"
1120then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001121fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001122AC_MSG_CHECKING(for pthread_t)
1123have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001124AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001125AC_MSG_RESULT($have_pthread_t)
1126if test "$have_pthread_t" = yes ; then
1127 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1128 AC_MSG_CHECKING(size of pthread_t)
1129 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1130 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001131#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001132 main()
1133 {
1134 FILE *f=fopen("conftestval", "w");
1135 if (!f) exit(1);
1136 fprintf(f, "%d\n", sizeof(pthread_t));
1137 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001138 }],
1139 ac_cv_sizeof_pthread_t=`cat conftestval`,
1140 ac_cv_sizeof_pthread_t=0,
1141 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001142 ])
1143 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001144 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1145 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001146fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001147CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001148
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001149AC_MSG_CHECKING(for --enable-toolbox-glue)
1150AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001151 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001152
1153if test -z "$enable_toolbox_glue"
1154then
1155 case $ac_sys_system/$ac_sys_release in
1156 Darwin/*)
1157 enable_toolbox_glue="yes";;
1158 *)
1159 enable_toolbox_glue="no";;
1160 esac
1161fi
1162case "$enable_toolbox_glue" in
1163yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001164 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001165 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001166 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001167 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1168 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001169 ;;
1170*)
1171 extra_frameworks=""
1172 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001173 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001174 ;;
1175esac
1176AC_MSG_RESULT($enable_toolbox_glue)
1177
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001178AC_SUBST(LIBTOOL_CRUFT)
1179case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001180 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001181 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001182 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb36687a2004-07-16 08:43:47 +00001183 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001184 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001185 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001186 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001187 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb36687a2004-07-16 08:43:47 +00001188 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001189 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001190esac
1191
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001192AC_MSG_CHECKING(for --enable-framework)
1193if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001194then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001195 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001196 # -F. is needed to allow linking to the framework while
1197 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001198 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1199 [Define if you want to produce an OpenStep/Rhapsody framework
1200 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001201 AC_MSG_RESULT(yes)
1202else
1203 AC_MSG_RESULT(no)
1204fi
1205
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001206AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001207case $ac_sys_system/$ac_sys_release in
1208 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001209 AC_DEFINE(WITH_DYLD, 1,
1210 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1211 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1212 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001213 AC_MSG_RESULT(always on for Darwin)
1214 ;;
1215 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001216 AC_MSG_RESULT(no)
1217 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001218esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001219
Guido van Rossumac405f61994-09-12 10:56:06 +00001220# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001221AC_SUBST(SO)
1222AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001223AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001224AC_SUBST(CCSHARED)
1225AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001226# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001227# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001228AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001229if test -z "$SO"
1230then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001231 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001232 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001233 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001234 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001235 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001236else
1237 # this might also be a termcap variable, see #610332
1238 echo
1239 echo '====================================================================='
1240 echo '+ +'
1241 echo '+ WARNING: You have set SO in your environment. +'
1242 echo '+ Do you really mean to change the extension for shared libraries? +'
1243 echo '+ Continuing in 10 seconds to let you to ponder. +'
1244 echo '+ +'
1245 echo '====================================================================='
1246 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001247fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001248AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001249# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001250# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001251# (Shared libraries in this instance are shared modules to be loaded into
1252# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001253AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001254if test -z "$LDSHARED"
1255then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001256 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001257 AIX*)
1258 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001259 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001260 ;;
1261 BeOS*)
1262 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001263 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001264 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001265 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001266 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001267 SunOS/5*)
1268 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001269 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001270 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001271 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001272 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001273 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001274 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001275 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1276 if test "$enable_framework" ; then
1277 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001278 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1279 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001280 else
1281 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001282 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001283 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001284 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001285 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1286 if test "$enable_framework" ; then
1287 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001288 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1289 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001290 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001291 # No framework, use the Python app as bundle-loader
1292 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001293 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001294 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001295 Darwin/*)
1296 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1297 # This allows an extension to be used in any Python
1298 if test ${MACOSX_DEPLOYMENT_TARGET-10.1} '>' 10.2
1299 then
1300 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1301 BLDSHARED="$LDSHARED"
1302 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET
1303 else
1304 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1305 if test "$enable_framework" ; then
1306 # Link against the framework. All externals should be defined.
1307 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1308 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
1309 else
1310 # No framework, use the Python app as bundle-loader
1311 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1312 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1313 fi
1314 fi
1315 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001316 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001317 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001318 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001319 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001320 then
1321 LDSHARED="cc -shared ${LDFLAGS}"
1322 else
1323 LDSHARED="ld -Bshareable ${LDFLAGS}"
1324 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001325 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001326 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001327 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001328 then LDSHARED='$(CC) -shared'
1329 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001330 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001331 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001332 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001333 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001334 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001335 *) LDSHARED="ld";;
1336 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001337fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001338AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001339BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001340# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001341# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001342AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001343if test -z "$CCSHARED"
1344then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001345 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001346 SunOS*) if test "$GCC" = yes;
1347 then CCSHARED="-fPIC";
1348 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001349 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001350 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001351 else CCSHARED="+z";
1352 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001353 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001354 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001355 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001356 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001357 if test "$GCC" = "yes"
1358 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001359 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001360 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001361 SCO_SV*)
1362 if test "$GCC" = "yes"
1363 then CCSHARED="-fPIC"
1364 else CCSHARED="-Kpic -belf"
1365 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001366 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001367 IRIX*/6*) case $CC in
1368 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001369 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001370 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001371 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001372 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001373fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001374AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001375# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001376# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001377AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001378if test -z "$LINKFORSHARED"
1379then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001380 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001381 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001382 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001383 LINKFORSHARED="-Wl,-E -Wl,+s";;
1384# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001385 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001386 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001387 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001388 Darwin/*)
1389 # -u __dummy makes the linker aware of the objc runtime
1390 # in System.framework; otherwise, __objcInit (referenced in
1391 # crt1.o) gets erroneously defined as common, which breaks dynamic
1392 # loading of any modules which reference it in System.framework.
1393 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1394 # not used by the core itself but which needs to be in the core so
1395 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001396 # -prebind is no longer used, because it actually seems to give a
1397 # slowdown in stead of a speedup, maybe due to the large number of
1398 # dynamic loads Python does.
1399 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001400 if test "$enable_framework"
1401 then
Jack Jansenb36687a2004-07-16 08:43:47 +00001402 LINKFORSHARED="$LINKFORSHARED -Wl,-F. -framework "'$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001403 fi
1404 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001405 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001406 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001407 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001408 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001409 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1410 then
1411 LINKFORSHARED="-Wl,--export-dynamic"
1412 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001413 SunOS/5*) case $CC in
1414 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001415 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001416 then
1417 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001418 fi;;
1419 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001420 CYGWIN*)
1421 if test $enable_shared = "no"
1422 then
1423 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1424 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001425 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001426fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001427AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001428
Neil Schemenauer61c51152001-01-26 16:18:16 +00001429AC_SUBST(CFLAGSFORSHARED)
1430AC_MSG_CHECKING(CFLAGSFORSHARED)
1431if test ! "$LIBRARY" = "$LDLIBRARY"
1432then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001433 case $ac_sys_system in
1434 CYGWIN*)
1435 # Cygwin needs CCSHARED when building extension DLLs
1436 # but not when building the interpreter DLL.
1437 CFLAGSFORSHARED='';;
1438 *)
1439 CFLAGSFORSHARED='$(CCSHARED)'
1440 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001441fi
1442AC_MSG_RESULT($CFLAGSFORSHARED)
1443
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001444# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1445# library (with --enable-shared).
1446# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001447# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1448# if it is not required, since it creates a dependency of the shared library
1449# to LIBS. This, in turn, means that applications linking the shared libpython
1450# don't need to link LIBS explicitly. The default should be only changed
1451# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001452AC_SUBST(SHLIBS)
1453AC_MSG_CHECKING(SHLIBS)
1454case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001455 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001456 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001457esac
1458AC_MSG_RESULT($SHLIBS)
1459
1460
Guido van Rossum627b2d71993-12-24 10:39:16 +00001461# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001462AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1463AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001464
1465# only check for sem_ini if thread support is requested
1466if test "$with_threads" = "yes" -o -z "$with_threads"; then
1467 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1468 # posix4 on Solaris 2.6
1469 # pthread (first!) on Linux
1470fi
1471
Martin v. Löwis19d17342003-06-14 21:03:05 +00001472# check if we need libintl for locale functions
1473AC_CHECK_LIB(intl, textdomain,
1474 AC_DEFINE(WITH_LIBINTL, 1,
1475 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001476
1477# checks for system dependent C++ extensions support
1478case "$ac_sys_system" in
1479 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1480 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1481 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001482 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1483 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1484 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001485 AC_MSG_RESULT(yes)],
1486 [AC_MSG_RESULT(no)]);;
1487 *) ;;
1488esac
1489
Guido van Rossum70c7f481998-03-26 18:44:10 +00001490# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001491# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001492AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001493AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001494
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001495case "$ac_sys_system" in
1496BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001497AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1498;;
1499esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001500
Guido van Rossumc5a39031996-07-31 17:35:03 +00001501AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001502AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001503 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1504[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001505AC_MSG_RESULT($withval)
1506LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001507],
1508[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001509
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001510# Determine if signalmodule should be used.
1511AC_SUBST(USE_SIGNAL_MODULE)
1512AC_SUBST(SIGNAL_OBJS)
1513AC_MSG_CHECKING(for --with-signal-module)
1514AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001515 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001516
1517if test -z "$with_signal_module"
1518then with_signal_module="yes"
1519fi
1520AC_MSG_RESULT($with_signal_module)
1521
1522if test "${with_signal_module}" = "yes"; then
1523 USE_SIGNAL_MODULE=""
1524 SIGNAL_OBJS=""
1525else
1526 USE_SIGNAL_MODULE="#"
1527 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1528fi
1529
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001530# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001531AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001532USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001533
Guido van Rossum54d93d41997-01-22 20:51:58 +00001534AC_MSG_CHECKING(for --with-dec-threads)
1535AC_SUBST(LDLAST)
1536AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001537 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1538[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001539AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001540LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001541if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001542 with_thread="$withval";
1543fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001544[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001545
Martin v. Löwis11437992002-04-12 09:54:03 +00001546# Templates for things AC_DEFINEd more than once.
1547# For a single AC_DEFINE, no template is needed.
1548AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1549AH_TEMPLATE(_REENTRANT,
1550 [Define to force use of thread-safe errno, h_errno, and other functions])
1551AH_TEMPLATE(WITH_THREAD,
1552 [Define if you want to compile in rudimentary thread support])
1553
Guido van Rossum54d93d41997-01-22 20:51:58 +00001554AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001555dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001556AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001557 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001558
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001559# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001560dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001561AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001562 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1563 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001564
1565if test -z "$with_threads"
1566then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001567fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001568AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001569
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001570AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001571if test "$with_threads" = "no"
1572then
1573 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001574elif test "$ac_cv_pthread_is_default" = yes
1575then
1576 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001577 # Defining _REENTRANT on system with POSIX threads should not hurt.
1578 AC_DEFINE(_REENTRANT)
1579 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001580 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001581elif test "$ac_cv_kpthread" = "yes"
1582then
1583 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001584 if test "$ac_cv_cxx_thread" = "yes"; then
1585 CXX="$CXX -Kpthread"
1586 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001587 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001588 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001589 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001590elif test "$ac_cv_kthread" = "yes"
1591then
1592 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001593 if test "$ac_cv_cxx_thread" = "yes"; then
1594 CXX="$CXX -Kthread"
1595 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001596 AC_DEFINE(WITH_THREAD)
1597 posix_threads=yes
1598 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001599elif test "$ac_cv_pthread" = "yes"
1600then
1601 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001602 if test "$ac_cv_cxx_thread" = "yes"; then
1603 CXX="$CXX -pthread"
1604 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001605 AC_DEFINE(WITH_THREAD)
1606 posix_threads=yes
1607 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001608else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001609 if test ! -z "$with_threads" -a -d "$with_threads"
1610 then LDFLAGS="$LDFLAGS -L$with_threads"
1611 fi
1612 if test ! -z "$withval" -a -d "$withval"
1613 then LDFLAGS="$LDFLAGS -L$withval"
1614 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001615
1616 # According to the POSIX spec, a pthreads implementation must
1617 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1618 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1619 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001620 [
1621#include <unistd.h>
1622#ifdef _POSIX_THREADS
1623yes
1624#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001625 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1626 AC_MSG_RESULT($unistd_defines_pthreads)
1627
Martin v. Löwis130fb172001-07-19 11:00:41 +00001628 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001629 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1630 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001631 AC_DEFINE(HURD_C_THREADS, 1,
1632 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001633 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001634 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001635 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1636 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001637 AC_DEFINE(MACH_C_THREADS, 1,
1638 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001639 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001640 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001641 AC_ARG_WITH([pth],
1642 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1643 [AC_MSG_RESULT($withval)
1644 AC_DEFINE([WITH_THREAD])
1645 AC_DEFINE([HAVE_PTH], 1,
1646 [Define if you have GNU PTH threads.])
1647 LIBS="-lpth $LIBS"
1648 THREADOBJ="Python/thread.o"],
1649 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001650
1651 # Just looking for pthread_create in libpthread is not enough:
1652 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1653 # So we really have to include pthread.h, and then link.
1654 _libs=$LIBS
1655 LIBS="$LIBS -lpthread"
1656 AC_MSG_CHECKING([for pthread_create in -lpthread])
1657 AC_TRY_LINK([#include <pthread.h>
1658
1659void * start_routine (void *arg) { exit (0); }], [
1660pthread_create (NULL, NULL, start_routine, NULL)], [
1661 AC_MSG_RESULT(yes)
1662 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001663 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001664 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001665 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001666 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001667 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001668 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001669 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1670 AC_DEFINE(ATHEOS_THREADS, 1,
1671 [Define this if you have AtheOS threads.])
1672 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001673 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001674 AC_DEFINE(BEOS_THREADS, 1,
1675 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001676 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001677 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001678 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001679 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001680 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001681 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001682 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001683 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001684 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001685 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001686 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001687 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001688 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001689 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001690 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001691 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001692 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001693 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001694 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001695
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001696 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1697 LIBS="$LIBS -lmpc"
1698 THREADOBJ="Python/thread.o"
1699 USE_THREAD_MODULE=""])
1700
1701 if test "$posix_threads" != "yes"; then
1702 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1703 LIBS="$LIBS -lthread"
1704 THREADOBJ="Python/thread.o"
1705 USE_THREAD_MODULE=""])
1706 fi
1707
1708 if test "$USE_THREAD_MODULE" != "#"
1709 then
1710 # If the above checks didn't disable threads, (at least) OSF1
1711 # needs this '-threads' argument during linking.
1712 case $ac_sys_system in
1713 OSF1) LDLAST=-threads;;
1714 esac
1715 fi
1716fi
1717
1718if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001719 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001720 AC_DEFINE(_POSIX_THREADS, 1,
1721 [Define if you have POSIX threads,
1722 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001723 fi
1724
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001725 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1726 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001727 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1728 Defined for Solaris 2.6 bug in pthread header.)
1729 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001730 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001731 Define if the Posix semaphores do not work on your system)
1732 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001733 esac
1734
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001735 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1736 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1737 [AC_TRY_RUN([#include <pthread.h>
1738 void *foo(void *parm) {
1739 return NULL;
1740 }
1741 main() {
1742 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001743 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001744 if (pthread_attr_init(&attr)) exit(-1);
1745 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001746 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001747 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001748 }],
1749 ac_cv_pthread_system_supported=yes,
1750 ac_cv_pthread_system_supported=no,
1751 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001752 ])
1753 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1754 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001755 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001756 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001757 AC_CHECK_FUNCS(pthread_sigmask,
1758 [case $ac_sys_system in
1759 CYGWIN*)
1760 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1761 [Define if pthread_sigmask() does not work on your system.])
1762 ;;
1763 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001764fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001765
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001766
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001767# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001768AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001769AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001770AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001771[ --enable-ipv6 Enable ipv6 (with ipv4) support
1772 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001773[ case "$enableval" in
1774 no)
1775 AC_MSG_RESULT(no)
1776 ipv6=no
1777 ;;
1778 *) AC_MSG_RESULT(yes)
1779 AC_DEFINE(ENABLE_IPV6)
1780 ipv6=yes
1781 ;;
1782 esac ],
1783
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001784[
1785dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001786 AC_TRY_RUN([ /* AF_INET6 available check */
1787#include <sys/types.h>
1788#include <sys/socket.h>
1789main()
1790{
1791 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1792 exit(1);
1793 else
1794 exit(0);
1795}
1796],
1797 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001798 ipv6=yes,
1799 AC_MSG_RESULT(no)
1800 ipv6=no,
1801 AC_MSG_RESULT(no)
1802 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001803)
1804
1805if test "$ipv6" = "yes"; then
1806 AC_MSG_CHECKING(if RFC2553 API is available)
1807 AC_TRY_COMPILE([#include <sys/types.h>
1808#include <netinet/in.h>],
1809 [struct sockaddr_in6 x;
1810x.sin6_scope_id;],
1811 AC_MSG_RESULT(yes)
1812 ipv6=yes,
1813 AC_MSG_RESULT(no, IPv6 disabled)
1814 ipv6=no)
1815fi
1816
1817if test "$ipv6" = "yes"; then
1818 AC_DEFINE(ENABLE_IPV6)
1819fi
1820])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001821
1822ipv6type=unknown
1823ipv6lib=none
1824ipv6trylibc=no
1825
1826if test "$ipv6" = "yes"; then
1827 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001828 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1829 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001830 case $i in
1831 inria)
1832 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001833 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001834#include <netinet/in.h>
1835#ifdef IPV6_INRIA_VERSION
1836yes
1837#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001838 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001839 ;;
1840 kame)
1841 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001842 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001843#include <netinet/in.h>
1844#ifdef __KAME__
1845yes
1846#endif],
1847 [ipv6type=$i;
1848 ipv6lib=inet6
1849 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001850 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001851 ;;
1852 linux-glibc)
1853 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001854 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001855#include <features.h>
1856#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1857yes
1858#endif],
1859 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001860 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001861 ;;
1862 linux-inet6)
1863 dnl http://www.v6.linux.or.jp/
1864 if test -d /usr/inet6; then
1865 ipv6type=$i
1866 ipv6lib=inet6
1867 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001868 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001869 fi
1870 ;;
1871 solaris)
1872 if test -f /etc/netconfig; then
1873 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1874 ipv6type=$i
1875 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001876 fi
1877 fi
1878 ;;
1879 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001880 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001881#include <sys/param.h>
1882#ifdef _TOSHIBA_INET6
1883yes
1884#endif],
1885 [ipv6type=$i;
1886 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001887 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001888 ;;
1889 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001890 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001891#include </usr/local/v6/include/sys/v6config.h>
1892#ifdef __V6D__
1893yes
1894#endif],
1895 [ipv6type=$i;
1896 ipv6lib=v6;
1897 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001898 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001899 ;;
1900 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001901 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001902#include <sys/param.h>
1903#ifdef _ZETA_MINAMI_INET6
1904yes
1905#endif],
1906 [ipv6type=$i;
1907 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001908 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001909 ;;
1910 esac
1911 if test "$ipv6type" != "unknown"; then
1912 break
1913 fi
1914 done
1915 AC_MSG_RESULT($ipv6type)
1916fi
1917
1918if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1919 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1920 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1921 echo "using lib$ipv6lib"
1922 else
1923 if test $ipv6trylibc = "yes"; then
1924 echo "using libc"
1925 else
1926 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1927 echo "You need to fetch lib$ipv6lib.a from appropriate"
1928 echo 'ipv6 kit and compile beforehand.'
1929 exit 1
1930 fi
1931 fi
1932fi
1933
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001934# Check for --with-doc-strings
1935AC_MSG_CHECKING(for --with-doc-strings)
1936AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001937 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001938
1939if test -z "$with_doc_strings"
1940then with_doc_strings="yes"
1941fi
1942if test "$with_doc_strings" != "no"
1943then
1944 AC_DEFINE(WITH_DOC_STRINGS, 1,
1945 [Define if you want documentation strings in extension modules])
1946fi
1947AC_MSG_RESULT($with_doc_strings)
1948
Neil Schemenauera35c6882001-02-27 04:45:05 +00001949# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00001950AC_MSG_CHECKING(for --with-tsc)
1951AC_ARG_WITH(tsc,
1952[ --with(out)-tsc enable/disable timestamp counter profile], [
1953if test "$withval" != no
1954then
1955 AC_DEFINE(WITH_TSC, 1,
1956 [Define to profile with the Pentium timestamp counter])
1957 AC_MSG_RESULT(yes)
1958else AC_MSG_RESULT(no)
1959fi],
1960[AC_MSG_RESULT(no)])
1961
1962# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00001963AC_MSG_CHECKING(for --with-pymalloc)
1964AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001965 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001966
1967if test -z "$with_pymalloc"
1968then with_pymalloc="yes"
1969fi
1970if test "$with_pymalloc" != "no"
1971then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001972 AC_DEFINE(WITH_PYMALLOC, 1,
1973 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001974fi
1975AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001976
Barry Warsawef82cd72000-06-30 16:21:01 +00001977# Check for --with-wctype-functions
1978AC_MSG_CHECKING(for --with-wctype-functions)
1979AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001980 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1981[
Barry Warsawef82cd72000-06-30 16:21:01 +00001982if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001983then
1984 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1985 [Define if you want wctype.h functions to be used instead of the
1986 one supplied by Python itself. (see Include/unicodectype.h).])
1987 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001988else AC_MSG_RESULT(no)
1989fi],
1990[AC_MSG_RESULT(no)])
1991
Guido van Rossum68242b51996-05-28 22:53:03 +00001992# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001993AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001994DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001995
Guido van Rossume97ee181999-12-20 21:27:22 +00001996# the dlopen() function means we might want to use dynload_shlib.o. some
1997# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001998AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001999
2000# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2001# loading of modules.
2002AC_SUBST(DYNLOADFILE)
2003AC_MSG_CHECKING(DYNLOADFILE)
2004if test -z "$DYNLOADFILE"
2005then
2006 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002007 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2008 if test "$ac_cv_func_dlopen" = yes
2009 then DYNLOADFILE="dynload_shlib.o"
2010 else DYNLOADFILE="dynload_aix.o"
2011 fi
2012 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002013 BeOS*) DYNLOADFILE="dynload_beos.o";;
2014 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002015 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002016 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002017 *)
2018 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2019 # out any dynamic loading
2020 if test "$ac_cv_func_dlopen" = yes
2021 then DYNLOADFILE="dynload_shlib.o"
2022 else DYNLOADFILE="dynload_stub.o"
2023 fi
2024 ;;
2025 esac
2026fi
2027AC_MSG_RESULT($DYNLOADFILE)
2028if test "$DYNLOADFILE" != "dynload_stub.o"
2029then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002030 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2031 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002032fi
2033
Jack Jansenc49e5b72001-06-19 15:00:23 +00002034# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2035
2036AC_SUBST(MACHDEP_OBJS)
2037AC_MSG_CHECKING(MACHDEP_OBJS)
2038if test -z "$MACHDEP_OBJS"
2039then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002040 MACHDEP_OBJS=$extra_machdep_objs
2041else
2042 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002043fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002044AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002045
Guido van Rossum627b2d71993-12-24 10:39:16 +00002046# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002047AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2048 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002049 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis49ee14d2003-11-10 06:35:36 +00002050 getpriority getpwent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002051 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002052 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002053 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002054 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002055 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002056 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002057 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002058 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002059
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002060# For some functions, having a definition is not sufficient, since
2061# we want to take their address.
2062AC_MSG_CHECKING(for chroot)
2063AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2064 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2065 AC_MSG_RESULT(yes),
2066 AC_MSG_RESULT(no)
2067)
2068AC_MSG_CHECKING(for link)
2069AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2070 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2071 AC_MSG_RESULT(yes),
2072 AC_MSG_RESULT(no)
2073)
2074AC_MSG_CHECKING(for symlink)
2075AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2076 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2077 AC_MSG_RESULT(yes),
2078 AC_MSG_RESULT(no)
2079)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002080AC_MSG_CHECKING(for fchdir)
2081AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2082 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2083 AC_MSG_RESULT(yes),
2084 AC_MSG_RESULT(no)
2085)
2086AC_MSG_CHECKING(for fsync)
2087AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002088 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002089 AC_MSG_RESULT(yes),
2090 AC_MSG_RESULT(no)
2091)
2092AC_MSG_CHECKING(for fdatasync)
2093AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2094 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2095 AC_MSG_RESULT(yes),
2096 AC_MSG_RESULT(no)
2097)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002098
Martin v. Löwisd5843682002-11-21 20:41:28 +00002099# On some systems (eg. FreeBSD 5), we would find a definition of the
2100# functions ctermid_r, setgroups in the library, but no prototype
2101# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2102# address to avoid compiler warnings and potential miscompilations
2103# because of the missing prototypes.
2104
2105AC_MSG_CHECKING(for ctermid_r)
2106AC_TRY_COMPILE([
2107#include "confdefs.h"
2108#include <stdio.h>
2109], void* p = ctermid_r,
2110 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2111 AC_MSG_RESULT(yes),
2112 AC_MSG_RESULT(no)
2113)
2114
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002115AC_MSG_CHECKING(for flock)
2116AC_TRY_COMPILE([
2117#include "confdefs.h"
2118#include <sys/file.h>
2119], void* p = flock,
2120 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2121 AC_MSG_RESULT(yes),
2122 AC_MSG_RESULT(no)
2123)
2124
2125AC_MSG_CHECKING(for getpagesize)
2126AC_TRY_COMPILE([
2127#include "confdefs.h"
2128#include <unistd.h>
2129], void* p = getpagesize,
2130 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2131 AC_MSG_RESULT(yes),
2132 AC_MSG_RESULT(no)
2133)
2134
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002135dnl check for true
2136AC_CHECK_PROGS(TRUE, true, /bin/true)
2137
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002138dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2139dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002140AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002141 AC_CHECK_LIB(resolv, inet_aton)
2142)
2143
Martin v. Löwise9416172003-05-03 10:12:45 +00002144AC_MSG_CHECKING(for hstrerror)
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 <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002148], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002149 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2150 AC_MSG_RESULT(yes),
2151 AC_MSG_RESULT(no)
2152)
2153
2154AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002155AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002156#include "confdefs.h"
2157#include <sys/socket.h>
2158#include <netinet/in.h>
2159#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002160], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002161 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2162 AC_MSG_RESULT(yes),
2163 AC_MSG_RESULT(no)
2164)
2165
2166AC_MSG_CHECKING(for inet_pton)
2167AC_TRY_COMPILE([
2168#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002169#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002170#include <sys/socket.h>
2171#include <netinet/in.h>
2172#include <arpa/inet.h>
2173], void* p = inet_pton,
2174 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2175 AC_MSG_RESULT(yes),
2176 AC_MSG_RESULT(no)
2177)
2178
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002179# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002180AC_MSG_CHECKING(for setgroups)
2181AC_TRY_COMPILE([
2182#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002183#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002184#ifdef HAVE_GRP_H
2185#include <grp.h>
2186#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002187],
2188void* p = setgroups,
2189 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2190 AC_MSG_RESULT(yes),
2191 AC_MSG_RESULT(no)
2192)
2193
Fred Drake8cef4cf2000-06-28 16:40:38 +00002194# check for openpty and forkpty
2195
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002196AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2197AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002198
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002199# check for long file support functions
2200AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2201
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002202AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002203AC_CHECK_FUNCS(getpgrp,
2204 AC_TRY_COMPILE([#include <unistd.h>],
2205 [getpgrp(0);],
2206 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2207 [Define if getpgrp() must be called as getpgrp(0).])
2208 )
2209)
Jack Jansen150753c2003-03-29 22:07:47 +00002210AC_CHECK_FUNCS(setpgrp,
2211 AC_TRY_COMPILE([#include <unistd.h>],
2212 [setpgrp(0,0);],
2213 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2214 [Define if setpgrp() must be called as setpgrp(0, 0).])
2215 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002216)
2217AC_CHECK_FUNCS(gettimeofday,
2218 AC_TRY_COMPILE([#include <sys/time.h>],
2219 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2220 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2221 [Define if gettimeofday() does not have second (timezone) argument
2222 This is the case on Motorola V4 (R40V4.2)])
2223 )
2224)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002225
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002226AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002227AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002228#if defined(MAJOR_IN_MKDEV)
2229#include <sys/mkdev.h>
2230#elif defined(MAJOR_IN_SYSMACROS)
2231#include <sys/sysmacros.h>
2232#else
2233#include <sys/types.h>
2234#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002235],[
2236 makedev(major(0),minor(0));
2237],[
2238 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2239 [Define to 1 if you have the device macros.])
2240 AC_MSG_RESULT(yes)
2241],[
2242 AC_MSG_RESULT(no)
2243])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002244
2245# On OSF/1 V5.1, getaddrinfo is available, but a define
2246# for [no]getaddrinfo in netdb.h.
2247AC_MSG_CHECKING(for getaddrinfo)
2248AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002249#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002250#include <sys/socket.h>
2251#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002252#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002253],[
2254getaddrinfo(NULL, NULL, NULL, NULL);
2255], [
2256AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002257AC_MSG_CHECKING(getaddrinfo bug)
2258AC_TRY_RUN([
2259#include <sys/types.h>
2260#include <netdb.h>
2261#include <string.h>
2262#include <sys/socket.h>
2263#include <netinet/in.h>
2264
2265main()
2266{
2267 int passive, gaierr, inet4 = 0, inet6 = 0;
2268 struct addrinfo hints, *ai, *aitop;
2269 char straddr[INET6_ADDRSTRLEN], strport[16];
2270
2271 for (passive = 0; passive <= 1; passive++) {
2272 memset(&hints, 0, sizeof(hints));
2273 hints.ai_family = AF_UNSPEC;
2274 hints.ai_flags = passive ? AI_PASSIVE : 0;
2275 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002276 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002277 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2278 (void)gai_strerror(gaierr);
2279 goto bad;
2280 }
2281 for (ai = aitop; ai; ai = ai->ai_next) {
2282 if (ai->ai_addr == NULL ||
2283 ai->ai_addrlen == 0 ||
2284 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2285 straddr, sizeof(straddr), strport, sizeof(strport),
2286 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2287 goto bad;
2288 }
2289 switch (ai->ai_family) {
2290 case AF_INET:
2291 if (strcmp(strport, "54321") != 0) {
2292 goto bad;
2293 }
2294 if (passive) {
2295 if (strcmp(straddr, "0.0.0.0") != 0) {
2296 goto bad;
2297 }
2298 } else {
2299 if (strcmp(straddr, "127.0.0.1") != 0) {
2300 goto bad;
2301 }
2302 }
2303 inet4++;
2304 break;
2305 case AF_INET6:
2306 if (strcmp(strport, "54321") != 0) {
2307 goto bad;
2308 }
2309 if (passive) {
2310 if (strcmp(straddr, "::") != 0) {
2311 goto bad;
2312 }
2313 } else {
2314 if (strcmp(straddr, "::1") != 0) {
2315 goto bad;
2316 }
2317 }
2318 inet6++;
2319 break;
2320 case AF_UNSPEC:
2321 goto bad;
2322 break;
2323 default:
2324 /* another family support? */
2325 break;
2326 }
2327 }
2328 }
2329
2330 if (!(inet4 == 0 || inet4 == 2))
2331 goto bad;
2332 if (!(inet6 == 0 || inet6 == 2))
2333 goto bad;
2334
2335 if (aitop)
2336 freeaddrinfo(aitop);
2337 exit(0);
2338
2339 bad:
2340 if (aitop)
2341 freeaddrinfo(aitop);
2342 exit(1);
2343}
2344],
2345AC_MSG_RESULT(good)
2346buggygetaddrinfo=no,
2347AC_MSG_RESULT(buggy)
2348buggygetaddrinfo=yes,
2349AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002350buggygetaddrinfo=yes)], [
2351AC_MSG_RESULT(no)
2352buggygetaddrinfo=yes
2353])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002354
2355if test "$buggygetaddrinfo" = "yes"; then
2356 if test "$ipv6" = "yes"; then
2357 echo 'Fatal: You must get working getaddrinfo() function.'
2358 echo ' or you can specify "--disable-ipv6"'.
2359 exit 1
2360 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002361else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002362 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002363fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002364AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002365
Guido van Rossum627b2d71993-12-24 10:39:16 +00002366# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002367AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002368AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002369AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002370AC_CHECK_MEMBERS([struct stat.st_rdev])
2371AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002372AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002373
2374AC_MSG_CHECKING(for time.h that defines altzone)
2375AC_CACHE_VAL(ac_cv_header_time_altzone,
2376[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2377 ac_cv_header_time_altzone=yes,
2378 ac_cv_header_time_altzone=no)])
2379AC_MSG_RESULT($ac_cv_header_time_altzone)
2380if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002381 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002382fi
2383
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002384was_it_defined=no
2385AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002386AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002387#include <sys/types.h>
2388#include <sys/select.h>
2389#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390], [;], [
2391 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2392 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2393 (which you can't on SCO ODT 3.0).])
2394 was_it_defined=yes
2395])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002396AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002397
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002398AC_MSG_CHECKING(for addrinfo)
2399AC_CACHE_VAL(ac_cv_struct_addrinfo,
2400AC_TRY_COMPILE([
2401# include <netdb.h>],
2402 [struct addrinfo a],
2403 ac_cv_struct_addrinfo=yes,
2404 ac_cv_struct_addrinfo=no))
2405AC_MSG_RESULT($ac_cv_struct_addrinfo)
2406if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002407 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002408fi
2409
2410AC_MSG_CHECKING(for sockaddr_storage)
2411AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2412AC_TRY_COMPILE([
2413# include <sys/types.h>
2414# include <sys/socket.h>],
2415 [struct sockaddr_storage s],
2416 ac_cv_struct_sockaddr_storage=yes,
2417 ac_cv_struct_sockaddr_storage=no))
2418AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2419if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002420 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002421fi
2422
Guido van Rossum627b2d71993-12-24 10:39:16 +00002423# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002424
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002425AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002426AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002427
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002428works=no
2429AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002430AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2431 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2432)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002433AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002434
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002435works=no
2436AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002437AC_TRY_COMPILE([], [signed char c;], works=yes,
2438 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2439)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002440AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002441
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002442have_prototypes=no
2443AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002444AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2445 AC_DEFINE(HAVE_PROTOTYPES, 1,
2446 [Define if your compiler supports function prototype])
2447 have_prototypes=yes
2448])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002449AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002450
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002451works=no
2452AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002453AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002454#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002455int foo(int x, ...) {
2456 va_list va;
2457 va_start(va, x);
2458 va_arg(va, int);
2459 va_arg(va, char *);
2460 va_arg(va, double);
2461 return 0;
2462}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002463], [return foo(10, "", 3.14);], [
2464 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2465 [Define if your compiler supports variable length function prototypes
2466 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2467 works=yes
2468])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002469AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002470
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002471# check if sockaddr has sa_len member
2472AC_MSG_CHECKING(if sockaddr has sa_len member)
2473AC_TRY_COMPILE([#include <sys/types.h>
2474#include <sys/socket.h>],
2475[struct sockaddr x;
2476x.sa_len = 0;],
2477 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002478 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002479 AC_MSG_RESULT(no))
2480
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002481va_list_is_array=no
2482AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002483AC_TRY_COMPILE([
2484#ifdef HAVE_STDARG_PROTOTYPES
2485#include <stdarg.h>
2486#else
2487#include <varargs.h>
2488#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002489], [va_list list1, list2; list1 = list2;], , [
2490 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2491 va_list_is_array=yes
2492])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002493AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002494
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002495# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002496AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2497 [Define this if you have some version of gethostbyname_r()])
2498
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002499AC_CHECK_FUNC(gethostbyname_r, [
2500 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2501 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2502 OLD_CFLAGS=$CFLAGS
2503 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2504 AC_TRY_COMPILE([
2505# include <netdb.h>
2506 ], [
2507 char *name;
2508 struct hostent *he, *res;
2509 char buffer[2048];
2510 int buflen = 2048;
2511 int h_errnop;
2512
2513 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2514 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002515 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002516 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2517 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002518 AC_MSG_RESULT(yes)
2519 ], [
2520 AC_MSG_RESULT(no)
2521 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2522 AC_TRY_COMPILE([
2523# include <netdb.h>
2524 ], [
2525 char *name;
2526 struct hostent *he;
2527 char buffer[2048];
2528 int buflen = 2048;
2529 int h_errnop;
2530
2531 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2532 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002533 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002534 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2535 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002536 AC_MSG_RESULT(yes)
2537 ], [
2538 AC_MSG_RESULT(no)
2539 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2540 AC_TRY_COMPILE([
2541# include <netdb.h>
2542 ], [
2543 char *name;
2544 struct hostent *he;
2545 struct hostent_data data;
2546
2547 (void) gethostbyname_r(name, he, &data);
2548 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002549 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002550 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2551 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002552 AC_MSG_RESULT(yes)
2553 ], [
2554 AC_MSG_RESULT(no)
2555 ])
2556 ])
2557 ])
2558 CFLAGS=$OLD_CFLAGS
2559], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002560 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002561])
2562AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2563AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2564AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002565AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002566AC_SUBST(HAVE_GETHOSTBYNAME)
2567
Guido van Rossum627b2d71993-12-24 10:39:16 +00002568# checks for system services
2569# (none yet)
2570
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002571# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002572AC_CHECK_FUNC(__fpu_control,
2573 [],
2574 [AC_CHECK_LIB(ieee, __fpu_control)
2575])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002576
Guido van Rossum93274221997-05-09 02:42:00 +00002577# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002578AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002579AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002580 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2581[
Guido van Rossum93274221997-05-09 02:42:00 +00002582if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002583then
2584 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2585 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2586 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002587else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002588fi],
2589[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002590
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002591# check for --with-libm=...
2592AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002593case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002594Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002595BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002596*) LIBM=-lm
2597esac
Guido van Rossum93274221997-05-09 02:42:00 +00002598AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002599AC_ARG_WITH(libm,
2600 AC_HELP_STRING(--with-libm=STRING, math library),
2601[
Guido van Rossum93274221997-05-09 02:42:00 +00002602if test "$withval" = no
2603then LIBM=
2604 AC_MSG_RESULT(force LIBM empty)
2605elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002606then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002607 AC_MSG_RESULT(set LIBM="$withval")
2608else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002609fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002610[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002611
2612# check for --with-libc=...
2613AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002614AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002615AC_ARG_WITH(libc,
2616 AC_HELP_STRING(--with-libc=STRING, C library),
2617[
Guido van Rossum93274221997-05-09 02:42:00 +00002618if test "$withval" = no
2619then LIBC=
2620 AC_MSG_RESULT(force LIBC empty)
2621elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002622then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002623 AC_MSG_RESULT(set LIBC="$withval")
2624else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002625fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002626[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002627
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002628# check for hypot() in math library
2629LIBS_SAVE=$LIBS
2630LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002631AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002632LIBS=$LIBS_SAVE
2633
Guido van Rossumef2255b2000-03-10 22:30:29 +00002634# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002635AC_CHECK_HEADER(wchar.h, [
2636 AC_DEFINE(HAVE_WCHAR_H, 1,
2637 [Define if the compiler provides a wchar.h header file.])
2638 wchar_h="yes"
2639],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002640wchar_h="no"
2641)
2642
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002643# determine wchar_t size
2644if test "$wchar_h" = yes
2645then
Guido van Rossum67b26592001-10-20 14:21:45 +00002646 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002647fi
2648
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002649AC_MSG_CHECKING(for UCS-4 tcl)
2650have_ucs4_tcl=no
2651AC_TRY_COMPILE([
2652#include <tcl.h>
2653#if TCL_UTF_MAX != 6
2654# error "NOT UCS4_TCL"
2655#endif], [], [
2656 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2657 have_ucs4_tcl=yes
2658])
2659AC_MSG_RESULT($have_ucs4_tcl)
2660
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002661# check whether wchar_t is signed or not
2662if test "$wchar_h" = yes
2663then
2664 # check whether wchar_t is signed or not
2665 AC_MSG_CHECKING(whether wchar_t is signed)
2666 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2667 AC_TRY_RUN([
2668 #include <wchar.h>
2669 int main()
2670 {
2671 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2672 }
2673 ],
2674 ac_cv_wchar_t_signed=yes,
2675 ac_cv_wchar_t_signed=no,
2676 ac_cv_wchar_t_signed=yes)])
2677 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2678fi
2679
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002680AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002681dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002682AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002683 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2684 [],
2685 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002686
2687if test $enable_unicode = yes
2688then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002689 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002690 case "$have_ucs4_tcl" in
2691 yes) enable_unicode="ucs4"
2692 ;;
2693 *) enable_unicode="ucs2"
2694 ;;
2695 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002696fi
2697
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002698AH_TEMPLATE(Py_UNICODE_SIZE,
2699 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002700case "$enable_unicode" in
2701ucs2) unicode_size="2"
2702 AC_DEFINE(Py_UNICODE_SIZE,2)
2703 ;;
2704ucs4) unicode_size="4"
2705 AC_DEFINE(Py_UNICODE_SIZE,4)
2706 ;;
2707esac
2708
Martin v. Löwis11437992002-04-12 09:54:03 +00002709AH_TEMPLATE(PY_UNICODE_TYPE,
2710 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002711
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002712AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002713if test "$enable_unicode" = "no"
2714then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002715 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002716 AC_MSG_RESULT(not used)
2717else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002718 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002719 AC_DEFINE(Py_USING_UNICODE, 1,
2720 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002721
2722 # wchar_t is only usable if it maps to an unsigned type
2723 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
2724 -a "$ac_cv_wchar_t_signed" == "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002725 then
2726 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002727 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2728 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002729 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002730 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002731 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2732 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2733 then
2734 PY_UNICODE_TYPE="unsigned short"
2735 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2736 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2737 then
2738 PY_UNICODE_TYPE="unsigned long"
2739 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2740 else
2741 PY_UNICODE_TYPE="no type found"
2742 fi
2743 AC_MSG_RESULT($PY_UNICODE_TYPE)
2744fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002745
2746# check for endianness
2747AC_C_BIGENDIAN
2748
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002749# Check whether right shifting a negative integer extends the sign bit
2750# or fills with zeros (like the Cray J90, according to Tim Peters).
2751AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002752AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002753AC_TRY_RUN([
2754int main()
2755{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002756 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002757}
Guido van Rossum3065c942001-09-17 04:03:14 +00002758],
2759ac_cv_rshift_extends_sign=yes,
2760ac_cv_rshift_extends_sign=no,
2761ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002762AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2763if test "$ac_cv_rshift_extends_sign" = no
2764then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002765 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2766 [Define if i>>j for signed int i does not extend the sign bit
2767 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002768fi
2769
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002770# check for getc_unlocked and related locking functions
2771AC_MSG_CHECKING(for getc_unlocked() and friends)
2772AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2773AC_TRY_LINK([#include <stdio.h>],[
2774 FILE *f = fopen("/dev/null", "r");
2775 flockfile(f);
2776 getc_unlocked(f);
2777 funlockfile(f);
2778], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2779AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2780if test "$ac_cv_have_getc_unlocked" = yes
2781then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002782 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2783 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002784fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002785
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002786# check for readline 2.1
2787AC_CHECK_LIB(readline, rl_callback_handler_install,
2788 AC_DEFINE(HAVE_RL_CALLBACK, 1,
2789 [Define if you have readline 2.1]), , -ltermcap)
2790
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002791# check for readline 2.2
2792AC_TRY_CPP([#include <readline/readline.h>],
2793have_readline=yes, have_readline=no)
2794if test $have_readline = yes
2795then
2796 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2797 [readline/readline.h],
2798 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2799 [Define if you have readline 2.2]), )
2800fi
2801
Martin v. Löwis0daad592001-09-30 21:09:59 +00002802# check for readline 4.0
2803AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002804 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2805 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002806
Guido van Rossum353ae582001-07-10 16:45:32 +00002807# check for readline 4.2
2808AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002809 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2810 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002811
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002812# also in readline 4.2
2813AC_TRY_CPP([#include <readline/readline.h>],
2814have_readline=yes, have_readline=no)
2815if test $have_readline = yes
2816then
2817 AC_EGREP_HEADER([extern int rl_catch_signals;],
2818 [readline/readline.h],
2819 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2820 [Define if you can turn off readline's signal handling.]), )
2821fi
2822
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002823AC_MSG_CHECKING(for broken nice())
2824AC_CACHE_VAL(ac_cv_broken_nice, [
2825AC_TRY_RUN([
2826int main()
2827{
2828 int val1 = nice(1);
2829 if (val1 != -1 && val1 == nice(2))
2830 exit(0);
2831 exit(1);
2832}
Guido van Rossum3065c942001-09-17 04:03:14 +00002833],
2834ac_cv_broken_nice=yes,
2835ac_cv_broken_nice=no,
2836ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002837AC_MSG_RESULT($ac_cv_broken_nice)
2838if test "$ac_cv_broken_nice" = yes
2839then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2841 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002842fi
2843
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002844AC_MSG_CHECKING(for broken poll())
2845AC_TRY_RUN([
2846#include <poll.h>
2847
2848int main (void)
2849 {
2850 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2851
2852 close (42);
2853
2854 int poll_test = poll (&poll_struct, 1, 0);
2855
2856 if (poll_test < 0)
2857 {
2858 exit(0);
2859 }
2860 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2861 {
2862 exit(0);
2863 }
2864 else
2865 {
2866 exit(1);
2867 }
2868 }
2869],
2870ac_cv_broken_poll=yes,
2871ac_cv_broken_poll=no,
2872ac_cv_broken_poll=no)
2873AC_MSG_RESULT($ac_cv_broken_poll)
2874if test "$ac_cv_broken_poll" = yes
2875then
2876 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2877 [Define if poll() sets errno on invalid file descriptors.])
2878fi
2879
2880
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002881# tzset(3) exists and works like we expect it to
2882AC_MSG_CHECKING(for working tzset())
2883AC_CACHE_VAL(ac_cv_working_tzset, [
2884AC_TRY_RUN([
2885#include <stdlib.h>
2886#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002887#include <string.h>
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002888int main()
2889{
Brett Cannon18367812003-09-19 00:59:16 +00002890 /* Note that we need to ensure that not only does tzset(3)
2891 do 'something' with localtime, but it works as documented
2892 in the library reference and as expected by the test suite.
2893
2894 Red Hat 6.2 doesn't understand the southern hemisphere
2895 after New Year's Day; it thinks swaps on that day.
2896 */
2897
2898 time_t groundhogday = 1044144000; /* GMT-based; well, it's a colony */
2899 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2900
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002901 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002902 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002903 if (localtime(&groundhogday)->tm_hour != 0)
2904 exit(1);
2905
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002906 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002907 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002908 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002909 exit(1);
Brett Cannon18367812003-09-19 00:59:16 +00002910
2911 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
2912 tzset();
2913 if (localtime(&groundhogday)->tm_hour != 11)
2914 exit(1);
2915 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
2916 exit(1);
2917 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
2918 exit(1);
2919
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002920 exit(0);
2921}
2922],
2923ac_cv_working_tzset=yes,
2924ac_cv_working_tzset=no,
2925ac_cv_working_tzset=no)])
2926AC_MSG_RESULT($ac_cv_working_tzset)
2927if test "$ac_cv_working_tzset" = yes
2928then
2929 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2930 [Define if tzset() actually switches the local timezone in a meaningful way.])
2931fi
2932
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002933# Look for subsecond timestamps in struct stat
2934AC_MSG_CHECKING(for tv_nsec in struct stat)
2935AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2936AC_TRY_COMPILE([#include <sys/stat.h>], [
2937struct stat st;
2938st.st_mtim.tv_nsec = 1;
2939],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002940ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002941ac_cv_stat_tv_nsec=no,
2942ac_cv_stat_tv_nsec=no))
2943AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2944if test "$ac_cv_stat_tv_nsec" = yes
2945then
2946 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2947 [Define if you have struct stat.st_mtim.tv_nsec])
2948fi
2949
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002950# On HP/UX 11.0, mvwdelch is a block with a return statement
2951AC_MSG_CHECKING(whether mvwdelch is an expression)
2952AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2953AC_TRY_COMPILE([#include <curses.h>], [
2954 int rtn;
2955 rtn = mvwdelch(0,0,0);
2956], ac_cv_mvwdelch_is_expression=yes,
2957 ac_cv_mvwdelch_is_expression=no,
2958 ac_cv_mvwdelch_is_expression=yes))
2959AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2960
2961if test "$ac_cv_mvwdelch_is_expression" = yes
2962then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2964 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002965fi
2966
2967AC_MSG_CHECKING(whether WINDOW has _flags)
2968AC_CACHE_VAL(ac_cv_window_has_flags,
2969AC_TRY_COMPILE([#include <curses.h>], [
2970 WINDOW *w;
2971 w->_flags = 0;
2972], ac_cv_window_has_flags=yes,
2973 ac_cv_window_has_flags=no,
2974 ac_cv_window_has_flags=no))
2975AC_MSG_RESULT($ac_cv_window_has_flags)
2976
2977
2978if test "$ac_cv_window_has_flags" = yes
2979then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002980 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2981 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002982fi
2983
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002984AC_MSG_CHECKING(for /dev/ptmx)
2985
2986if test -e /dev/ptmx
2987then
2988 AC_MSG_RESULT(yes)
2989 AC_DEFINE(HAVE_DEV_PTMX, 1,
2990 [Define if we have /dev/ptmx.])
2991else
2992 AC_MSG_RESULT(no)
2993fi
2994
Neal Norwitz865400f2003-03-21 01:42:58 +00002995AC_MSG_CHECKING(for /dev/ptc)
2996
2997if test -e /dev/ptc
2998then
2999 AC_MSG_RESULT(yes)
3000 AC_DEFINE(HAVE_DEV_PTC, 1,
3001 [Define if we have /dev/ptc.])
3002else
3003 AC_MSG_RESULT(no)
3004fi
3005
Martin v. Löwis01c04012002-11-11 14:58:44 +00003006AC_CHECK_TYPE(socklen_t,,
3007 AC_DEFINE(socklen_t,int,
3008 Define to `int' if <sys/socket.h> does not define.),[
3009#ifdef HAVE_SYS_TYPES_H
3010#include <sys/types.h>
3011#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003012#ifdef HAVE_SYS_SOCKET_H
3013#include <sys/socket.h>
3014#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003015])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003016
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003017AC_SUBST(THREADHEADERS)
3018
3019for h in `(cd $srcdir;echo Python/thread_*.h)`
3020do
3021 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3022done
3023
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003024AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00003025SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003026AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003027for dir in $SRCDIRS; do
3028 if test ! -d $dir; then
3029 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003030 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003031done
3032AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003033
Guido van Rossum627b2d71993-12-24 10:39:16 +00003034# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003035AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3036AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003037
3038echo "creating Setup"
3039if test ! -f Modules/Setup
3040then
3041 cp $srcdir/Modules/Setup.dist Modules/Setup
3042fi
3043
3044echo "creating Setup.local"
3045if test ! -f Modules/Setup.local
3046then
3047 echo "# Edit this file for local setup changes" >Modules/Setup.local
3048fi
3049
3050echo "creating Makefile"
3051$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3052 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003053 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003054mv config.c Modules