blob: 027dc50969f27031e245779f4ef7ce11276d38bd [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00004m4_define(PYTHON_VERSION, 2.5)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis4ddc78a2006-01-29 09:53:44 +00007AC_PREREQ(2.59)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000063dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000064AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000065 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
66[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000067 case $enableval in
68 yes)
69 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000070 esac
71 case $enableval in
72 no)
73 PYTHONFRAMEWORK=
74 PYTHONFRAMEWORKDIR=no-framework
75 PYTHONFRAMEWORKPREFIX=
76 PYTHONFRAMEWORKINSTALLDIR=
77 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 ;;
79 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000080 PYTHONFRAMEWORK=Python
81 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000083 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
84 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000086 ],[
87 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000088 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000089 PYTHONFRAMEWORKPREFIX=
90 PYTHONFRAMEWORKINSTALLDIR=
91 enable_framework=
92])
93AC_SUBST(PYTHONFRAMEWORK)
94AC_SUBST(PYTHONFRAMEWORKDIR)
95AC_SUBST(PYTHONFRAMEWORKPREFIX)
96AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000097
Jack Jansenb6e9cad2001-08-15 01:26:28 +000098##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000099## AC_HELP_STRING(--with-dyld,
100## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000101##
Guido van Rossumb418f891996-07-30 18:06:02 +0000102# Set name for machine-dependent library files
103AC_SUBST(MACHDEP)
104AC_MSG_CHECKING(MACHDEP)
105if test -z "$MACHDEP"
106then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000107 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000108 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
109 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000111 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000112 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000113 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000114 ac_md_system=`echo $ac_sys_system |
115 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
116 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000117 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000118 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000119
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000120 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000121 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000122 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000123 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000124 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000125 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000126 esac
127fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000128
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000129# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
130# disable features if it is defined, without any means to access these
131# features as extensions. For these systems, we skip the definition of
132# _XOPEN_SOURCE. Before adding a system to the list to gain access to
133# some feature, make sure there is no alternative way to access this
134# feature. Also, when using wildcards, make sure you have verified the
135# need for not defining _XOPEN_SOURCE on all systems matching the
136# wildcard, and that the wildcard does not include future systems
137# (which may remove their limitations).
138dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
139case $ac_sys_system/$ac_sys_release in
140 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
141 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000142 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz671b9e32006-01-09 07:07:12 +0000143 OpenBSD/2.* | OpenBSD/3.@<:@012345678@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000144 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000145 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
146 # of union __?sigval. Reported by Stuart Bishop.
147 SunOS/5.6)
148 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
150 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000151 # Reconfirmed for 7.1.4 by Martin v. Loewis.
152 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000153 define_xopen_source=no;;
154 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000155 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000156 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000157 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000158 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
159 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
160 # this is fixed in 10.3, which identifies itself as Darwin/7.*
161 # This should hopefully be fixed in FreeBSD 4.9
162 FreeBSD/4.8* | Darwin/6* )
163 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000164 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
165 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
166 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000167 AIX/4)
168 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000169 AIX/5)
170 if test `uname -r` -eq 1; then
171 define_xopen_source=no
172 fi
173 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000174 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
175 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000176 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
177 # has no effect, don't bother defineing them
178 Darwin/@<:@78@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000179 define_xopen_source=no
180 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000181
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000182esac
183
184if test $define_xopen_source = yes
185then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000186 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
187 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000188 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
189 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000190 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000191 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000192 AC_DEFINE(_XOPEN_SOURCE, 500,
193 Define to the level of X/Open that your system supports)
194 ;;
195 *)
196 AC_DEFINE(_XOPEN_SOURCE, 600,
197 Define to the level of X/Open that your system supports)
198 ;;
199 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000200
201 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
202 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
203 # several APIs are not declared. Since this is also needed in some
204 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000205 # except for Solaris 10, where it must not be defined,
206 # as it implies XPG4.2
207 case $ac_sys_system/$ac_sys_release in
208 SunOS/5.10)
209 ;;
210 *)
211 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
212 Define to activate Unix95-and-earlier features)
213 ;;
214 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000215
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000216 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
217
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000218fi
219
Guido van Rossum91922671997-10-09 20:24:13 +0000220#
221# SGI compilers allow the specification of the both the ABI and the
222# ISA on the command line. Depending on the values of these switches,
223# different and often incompatable code will be generated.
224#
225# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
226# thus supply support for various ABI/ISA combinations. The MACHDEP
227# variable is also adjusted.
228#
229AC_SUBST(SGI_ABI)
230if test ! -z "$SGI_ABI"
231then
232 CC="cc $SGI_ABI"
233 LDFLAGS="$SGI_ABI $LDFLAGS"
234 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
235fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000236AC_MSG_RESULT($MACHDEP)
237
Jack Jansen83f898c2002-12-30 22:23:40 +0000238# And add extra plat-mac for darwin
239AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000240AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000241AC_MSG_CHECKING(EXTRAPLATDIR)
242if test -z "$EXTRAPLATDIR"
243then
244 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000245 darwin)
246 EXTRAPLATDIR="\$(PLATMACDIRS)"
247 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
248 ;;
249 *)
250 EXTRAPLATDIR=""
251 EXTRAMACHDEPPATH=""
252 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000253 esac
254fi
255AC_MSG_RESULT($EXTRAPLATDIR)
256
Jack Jansen6b08a402004-06-03 12:41:45 +0000257# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
258# it may influence the way we can build extensions, so distutils
259# needs to check it
260AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
261CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
262
Guido van Rossum627b2d71993-12-24 10:39:16 +0000263# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000264
265# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
266# for debug/optimization stuff. BASECFLAGS is for flags that are required
267# just to get things to compile and link. Users are free to override OPT
268# when running configure or make. The build should not break if they do.
269# BASECFLAGS should generally not be messed with, however.
270
271# XXX shouldn't some/most/all of this code be merged with the stuff later
272# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000273AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000274AC_ARG_WITH(gcc,
275 AC_HELP_STRING(--without-gcc,never use gcc),
276[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000277 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000278 no) CC=cc
279 without_gcc=yes;;
280 yes) CC=gcc
281 without_gcc=no;;
282 *) CC=$withval
283 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000284 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000285 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000286 AIX*) CC=cc_r
287 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000288 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000289 case $BE_HOST_CPU in
290 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000291 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000292 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000293 BASECFLAGS="$BASECFLAGS -export pragma"
294 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000295 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000296 ;;
297 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000298 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000299 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000300 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000301 ;;
302 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000303 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000304 ;;
305 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000306 AR="\$(srcdir)/Modules/ar_beos"
307 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000308 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000309 Monterey*)
310 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000311 without_gcc=;;
312 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000313 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000314AC_MSG_RESULT($without_gcc)
315
Guido van Rossum27552902001-01-23 01:52:26 +0000316AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000317AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000318MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000319AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000320AC_ARG_WITH(cxx,
321 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
322[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000323 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000324 case $withval in
325 no) CXX=
326 with_cxx=no;;
327 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000328 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000329 with_cxx=$withval;;
330 esac], [
331 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000332 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000333])
334AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000335
Michael W. Hudson54241132001-12-07 15:38:26 +0000336if test "$with_cxx" = "yes"
337then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000338 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000339fi
340
Martin v. Löwis537970f2000-12-13 17:37:02 +0000341dnl The following fragment works similar to AC_PROG_CXX.
342dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000343dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000344dnl Finally, it does not test whether CXX is g++.
345
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000346dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
347ifdef([AC_PROG_CXX_WORKS],[],
348 [AC_DEFUN([AC_PROG_CXX_WORKS],
349 [AC_LANG_PUSH(C++)dnl
350 _AC_COMPILER_EXEEXT
351 AC_LANG_POP()
352 ]
353)])
354
Martin v. Löwis537970f2000-12-13 17:37:02 +0000355if test "$check_cxx" = "yes"
356then
357 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
358 if test "$CXX" = "notfound"
359 then
360 CXX=
361 else
362 AC_PROG_CXX_WORKS
363 fi
364fi
365
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000366# If the user switches compilers, we can't believe the cache
367if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
368then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000369 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
370(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000371fi
372
Guido van Rossum627b2d71993-12-24 10:39:16 +0000373AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000374
375# checks for UNIX variants that set C preprocessor variables
376AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000377
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000378# Check for unsupported systems
379case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000380Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000381 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
382 echo See README for details.
383 exit 1;;
384esac
385
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000386AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000387AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000388AC_ARG_WITH(suffix,
389 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
390[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000391 case $withval in
392 no) EXEEXT=;;
393 yes) EXEEXT=.exe;;
394 *) EXEEXT=$withval;;
395 esac])
396AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000397
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000398# Test whether we're running on a non-case-sensitive system, in which
399# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000400AC_SUBST(BUILDEXEEXT)
401AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000402if test ! -d CaseSensitiveTestDir; then
403mkdir CaseSensitiveTestDir
404fi
405
406if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000407then
Jack Jansen1999ef42001-12-06 21:47:20 +0000408 AC_MSG_RESULT(yes)
409 BUILDEXEEXT=.exe
410else
411 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000412 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000413fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000414rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000415
Guido van Rossumdd997f71998-10-07 19:58:26 +0000416case $MACHDEP in
417bsdos*)
418 case $CC in
419 gcc) CC="$CC -D_HAVE_BSDI";;
420 esac;;
421esac
422
Guido van Rossum84561611997-08-21 00:08:11 +0000423case $ac_sys_system in
424hp*|HP*)
425 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000426 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000427 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000428Monterey*)
429 case $CC in
430 cc) CC="$CC -Wl,-Bexport";;
431 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000432SunOS*)
433 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000434 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000435 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000436esac
437
Martin v. Löwise8964d42001-03-06 12:09:07 +0000438
Neil Schemenauer61c51152001-01-26 16:18:16 +0000439AC_SUBST(LIBRARY)
440AC_MSG_CHECKING(LIBRARY)
441if test -z "$LIBRARY"
442then
443 LIBRARY='libpython$(VERSION).a'
444fi
445AC_MSG_RESULT($LIBRARY)
446
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000447# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000448# name of the library into which to insert object files). BLDLIBRARY is also
449# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
450# is blank as the main program is not linked directly against LDLIBRARY.
451# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
452# systems without shared libraries, LDLIBRARY is the same as LIBRARY
453# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
454# DLLLIBRARY is the shared (i.e., DLL) library.
455#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000456# RUNSHARED is used to run shared python without installed libraries
457#
458# INSTSONAME is the name of the shared library that will be use to install
459# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000460AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000461AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000462AC_SUBST(BLDLIBRARY)
463AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000464AC_SUBST(INSTSONAME)
465AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000466LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000467BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000468INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000469DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000470LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000471RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000472
Guido van Rossumfb842551997-08-06 23:42:07 +0000473# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000474# If CXX is set, and if it is needed to link a main function that was
475# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
476# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000477# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000478# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000479AC_SUBST(LINKCC)
480AC_MSG_CHECKING(LINKCC)
481if test -z "$LINKCC"
482then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000483 if test -z "$CXX"; then
484 LINKCC="\$(PURIFY) \$(CC)"
485 else
Martin v. Löwis147fbe52005-08-07 21:09:30 +0000486 echo 'extern "C" void foo();int main(){foo();}' > conftest_a.cc
487 $CXX -c conftest_a.cc # 2>&5
488 echo 'void foo(){}' > conftest_b.$ac_ext
489 $CC -c conftest_b.$ac_ext # 2>&5
490 if $CC -o conftest$ac_exeext conftest_a.$ac_objext conftest_b.$ac_objext 2>&5 \
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000491 && test -s conftest$ac_exeext && ./conftest$ac_exeext
492 then
493 LINKCC="\$(PURIFY) \$(CC)"
494 else
495 LINKCC="\$(PURIFY) \$(CXX)"
496 fi
497 rm -fr conftest*
498 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000499 case $ac_sys_system in
500 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000501 exp_extra="\"\""
502 if test $ac_sys_release -ge 5 -o \
503 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
504 exp_extra="."
505 fi
506 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000507 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000508 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000509 esac
510fi
511AC_MSG_RESULT($LINKCC)
512
Martin v. Löwis1142de32002-03-29 16:28:31 +0000513AC_MSG_CHECKING(for --enable-shared)
514AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000515 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000516
Martin v. Löwis1142de32002-03-29 16:28:31 +0000517if test -z "$enable_shared"
518then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000519 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000520 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000521 enable_shared="yes";;
522 *)
523 enable_shared="no";;
524 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000525fi
526AC_MSG_RESULT($enable_shared)
527
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000528AC_MSG_CHECKING(for --enable-profiling)
529AC_ARG_ENABLE(profiling,
530 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
531[ac_save_cc="$CC"
532 CC="$CC -pg"
533 AC_TRY_RUN([int main() { return 0; }],
534 ac_enable_profiling="yes",
535 ac_enable_profiling="no",
536 ac_enable_profiling="no")
537 CC="$ac_save_cc"])
538AC_MSG_RESULT($ac_enable_profiling)
539
540case "$ac_enable_profiling" in
541 "yes")
542 BASECFLAGS="-pg $BASECFLAGS"
543 LDFLAGS="-pg $LDFLAGS"
544 ;;
545esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546
547AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000548
Guido van Rossumb8552162001-09-05 14:58:11 +0000549# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
550# library that we build, but we do not want to link against it (we
551# will find it with a -framework option). For this reason there is an
552# extra variable BLDLIBRARY against which Python and the extension
553# modules are linked, BLDLIBRARY. This is normally the same as
554# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000555if test "$enable_framework"
556then
557 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000558 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000559 BLDLIBRARY=''
560else
561 BLDLIBRARY='$(LDLIBRARY)'
562fi
563
Martin v. Löwis1142de32002-03-29 16:28:31 +0000564# Other platforms follow
565if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000566 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000567 case $ac_sys_system in
568 BeOS*)
569 LDLIBRARY='libpython$(VERSION).so'
570 ;;
571 CYGWIN*)
572 LDLIBRARY='libpython$(VERSION).dll.a'
573 DLLLIBRARY='libpython$(VERSION).dll'
574 ;;
575 SunOS*)
576 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000577 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000578 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000579 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000581 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000582 LDLIBRARY='libpython$(VERSION).so'
583 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000584 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000585 case $ac_sys_system in
586 FreeBSD*)
587 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
588 ;;
589 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000590 INSTSONAME="$LDLIBRARY".$SOVERSION
591 ;;
592 hp*|HP*)
593 LDLIBRARY='libpython$(VERSION).sl'
594 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000595 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000596 ;;
597 OSF*)
598 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000599 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000600 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000602 atheos*)
603 LDLIBRARY='libpython$(VERSION).so'
604 BLDLIBRARY='-L. -lpython$(VERSION)'
605 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
606 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000607 esac
Jason Tishler30765592003-09-04 11:04:06 +0000608else # shared is disabled
609 case $ac_sys_system in
610 CYGWIN*)
611 BLDLIBRARY='$(LIBRARY)'
612 LDLIBRARY='libpython$(VERSION).dll.a'
613 ;;
614 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000615fi
616
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000617AC_MSG_RESULT($LDLIBRARY)
618
Guido van Rossum627b2d71993-12-24 10:39:16 +0000619AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000620AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000621AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000622
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000623AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000624AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000625if test $SVNVERSION = found
626then
627 SVNVERSION="svnversion \$(srcdir)"
628else
629 SVNVERSION="echo exported"
630fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000631
Neil Schemenauera42c8272001-03-31 00:01:55 +0000632case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000633bsdos*|hp*|HP*)
634 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000635 if test -z "$INSTALL"
636 then
637 INSTALL="${srcdir}/install-sh -c"
638 fi
639esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000640AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000641
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000642# Not every filesystem supports hard links
643AC_SUBST(LN)
644if test -z "$LN" ; then
645 case $ac_sys_system in
646 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000647 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000648 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000649 *) LN=ln;;
650 esac
651fi
652
Fred Drake9f715822001-07-11 06:27:00 +0000653# Check for --with-pydebug
654AC_MSG_CHECKING(for --with-pydebug)
655AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000656 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
657[
Fred Drake9f715822001-07-11 06:27:00 +0000658if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000659then
660 AC_DEFINE(Py_DEBUG, 1,
661 [Define if you want to build an interpreter with many run-time checks.])
662 AC_MSG_RESULT(yes);
663 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000664else AC_MSG_RESULT(no); Py_DEBUG='false'
665fi],
666[AC_MSG_RESULT(no)])
667
Skip Montanarodecc6a42003-01-01 20:07:49 +0000668# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
669# merged with this chunk of code?
670
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000671# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000672# ------------------------
673# (The following bit of code is complicated enough - please keep things
674# indented properly. Just pretend you're editing Python code. ;-)
675
676# There are two parallel sets of case statements below, one that checks to
677# see if OPT was set and one that does BASECFLAGS setting based upon
678# compiler and platform. BASECFLAGS tweaks need to be made even if the
679# user set OPT.
680
681# tweak OPT based on compiler and platform, only if the user didn't set
682# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000683AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000684if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000685then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000686 case $GCC in
687 yes)
688 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000689 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000690 if test "$Py_DEBUG" = 'true' ; then
691 # Optimization messes up debuggers, so turn it off for
692 # debug builds.
693 OPT="-g -Wall -Wstrict-prototypes"
694 else
695 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000696 fi
697 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000698 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000699 OPT="-O3 -Wall -Wstrict-prototypes"
700 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000701 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000702 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000703 SCO_SV*) OPT="$OPT -m486 -DSCO5"
704 ;;
705 esac
Fred Drake9f715822001-07-11 06:27:00 +0000706 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000707
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000708 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000709 OPT="-O"
710 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000711 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000712
713 # The current (beta) Monterey compiler dies with optimizations
714 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000715 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000716 Monterey*)
717 OPT=""
718 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000719 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000720
Guido van Rossum4e8af441994-08-19 15:33:54 +0000721fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000722
Skip Montanarodecc6a42003-01-01 20:07:49 +0000723AC_SUBST(BASECFLAGS)
724# tweak BASECFLAGS based on compiler and platform
725case $GCC in
726yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000727 # Python violates C99 rules, by casting between incompatible
728 # pointer types. GCC may generate bad code as a result of that,
729 # so use -fno-strict-aliasing if supported.
730 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
731 ac_save_cc="$CC"
732 CC="$CC -fno-strict-aliasing"
733 AC_TRY_RUN([int main() { return 0; }],
734 ac_cv_no_strict_aliasing_ok=yes,
735 ac_cv_no_strict_aliasing_ok=no,
736 ac_cv_no_strict_aliasing_ok=no)
737 CC="$ac_save_cc"
738 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
739 if test $ac_cv_no_strict_aliasing_ok = yes
740 then
741 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
742 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000743 case $ac_sys_system in
744 SCO_SV*)
745 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
746 ;;
747 # is there any other compiler on Darwin besides gcc?
748 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000749 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000750 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000751 OSF*)
752 BASECFLAGS="$BASECFLAGS -mieee"
753 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000754 esac
755 ;;
756
757*)
758 case $ac_sys_system in
759 OpenUNIX*|UnixWare*)
760 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
761 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000762 OSF*)
763 BASECFLAGS="$BASECFLAGS -ieee -std"
764 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000765 SCO_SV*)
766 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
767 ;;
768 esac
769 ;;
770esac
771
Fred Drakee1ceaa02001-12-04 20:55:47 +0000772if test "$Py_DEBUG" = 'true'; then
773 :
774else
775 OPT="-DNDEBUG $OPT"
776fi
777
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000778if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000779then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000780 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000781fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000782
Neal Norwitz020c46a2006-01-07 21:39:28 +0000783# disable check for icc since it seems to pass, but generates a warning
784if test "$CC" = icc
785then
786 ac_cv_opt_olimit_ok=no
787fi
788
Guido van Rossum91922671997-10-09 20:24:13 +0000789AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
790AC_CACHE_VAL(ac_cv_opt_olimit_ok,
791[ac_save_cc="$CC"
792CC="$CC -OPT:Olimit=0"
793AC_TRY_RUN([int main() { return 0; }],
794 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000795 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000796 ac_cv_opt_olimit_ok=no)
797CC="$ac_save_cc"])
798AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000799if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000800 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000801 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
802 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
803 # environment?
804 Darwin*)
805 ;;
806 *)
807 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
808 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000809 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000810else
811 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
812 AC_CACHE_VAL(ac_cv_olimit_ok,
813 [ac_save_cc="$CC"
814 CC="$CC -Olimit 1500"
815 AC_TRY_RUN([int main() { return 0; }],
816 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000817 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000818 ac_cv_olimit_ok=no)
819 CC="$ac_save_cc"])
820 AC_MSG_RESULT($ac_cv_olimit_ok)
821 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000822 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000823 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000824fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000825
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000826# On some compilers, pthreads are available without further options
827# (e.g. MacOS X). On some of these systems, the compiler will not
828# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
829# So we have to see first whether pthreads are available without
830# options before we can check whether -Kpthread improves anything.
831AC_MSG_CHECKING(whether pthreads are available without options)
832AC_CACHE_VAL(ac_cv_pthread_is_default,
833[AC_TRY_RUN([
834#include <pthread.h>
835
836void* routine(void* p){return NULL;}
837
838int main(){
839 pthread_t p;
840 if(pthread_create(&p,NULL,routine,NULL)!=0)
841 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000842 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000843 return 0;
844}
845],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000846[
847 ac_cv_pthread_is_default=yes
848 ac_cv_kthread=no
849 ac_cv_pthread=no
850],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000851 ac_cv_pthread_is_default=no,
852 ac_cv_pthread_is_default=no)
853])
854AC_MSG_RESULT($ac_cv_pthread_is_default)
855
856
857if test $ac_cv_pthread_is_default = yes
858then
859 ac_cv_kpthread=no
860else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000861# -Kpthread, if available, provides the right #defines
862# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000863# Some compilers won't report that they do not support -Kpthread,
864# so we need to run a program to see whether it really made the
865# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000866AC_MSG_CHECKING(whether $CC accepts -Kpthread)
867AC_CACHE_VAL(ac_cv_kpthread,
868[ac_save_cc="$CC"
869CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000870AC_TRY_RUN([
871#include <pthread.h>
872
873void* routine(void* p){return NULL;}
874
875int main(){
876 pthread_t p;
877 if(pthread_create(&p,NULL,routine,NULL)!=0)
878 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000879 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000880 return 0;
881}
882],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000883 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000884 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000885 ac_cv_kpthread=no)
886CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000887AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000888fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000889
Skip Montanarod8d39a02003-07-10 20:44:10 +0000890if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000891then
892# -Kthread, if available, provides the right #defines
893# and linker options to make pthread_create available
894# Some compilers won't report that they do not support -Kthread,
895# so we need to run a program to see whether it really made the
896# function available.
897AC_MSG_CHECKING(whether $CC accepts -Kthread)
898AC_CACHE_VAL(ac_cv_kthread,
899[ac_save_cc="$CC"
900CC="$CC -Kthread"
901AC_TRY_RUN([
902#include <pthread.h>
903
904void* routine(void* p){return NULL;}
905
906int main(){
907 pthread_t p;
908 if(pthread_create(&p,NULL,routine,NULL)!=0)
909 return 1;
910 (void)pthread_detach(p);
911 return 0;
912}
913],
914 ac_cv_kthread=yes,
915 ac_cv_kthread=no,
916 ac_cv_kthread=no)
917CC="$ac_save_cc"])
918AC_MSG_RESULT($ac_cv_kthread)
919fi
920
Skip Montanarod8d39a02003-07-10 20:44:10 +0000921if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000922then
923# -pthread, if available, provides the right #defines
924# and linker options to make pthread_create available
925# Some compilers won't report that they do not support -pthread,
926# so we need to run a program to see whether it really made the
927# function available.
928AC_MSG_CHECKING(whether $CC accepts -pthread)
929AC_CACHE_VAL(ac_cv_thread,
930[ac_save_cc="$CC"
931CC="$CC -pthread"
932AC_TRY_RUN([
933#include <pthread.h>
934
935void* routine(void* p){return NULL;}
936
937int main(){
938 pthread_t p;
939 if(pthread_create(&p,NULL,routine,NULL)!=0)
940 return 1;
941 (void)pthread_detach(p);
942 return 0;
943}
944],
945 ac_cv_pthread=yes,
946 ac_cv_pthread=no,
947 ac_cv_pthread=no)
948CC="$ac_save_cc"])
949AC_MSG_RESULT($ac_cv_pthread)
950fi
951
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000952# If we have set a CC compiler flag for thread support then
953# check if it works for CXX, too.
954ac_cv_cxx_thread=no
955if test ! -z "$CXX"
956then
957AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
958ac_save_cxx="$CXX"
959
960if test "$ac_cv_kpthread" = "yes"
961then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000962 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000963 ac_cv_cxx_thread=yes
964elif test "$ac_cv_kthread" = "yes"
965then
966 CXX="$CXX -Kthread"
967 ac_cv_cxx_thread=yes
968elif test "$ac_cv_pthread" = "yes"
969then
970 CXX="$CXX -pthread"
971 ac_cv_cxx_thread=yes
972fi
973
974if test $ac_cv_cxx_thread = yes
975then
976 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
977 $CXX -c conftest.$ac_ext 2>&5
978 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
979 && test -s conftest$ac_exeext && ./conftest$ac_exeext
980 then
981 ac_cv_cxx_thread=yes
982 else
983 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000984 fi
985 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000986fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000987AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000988fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000989CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000990
Fred Drakece81d592000-07-09 14:39:29 +0000991dnl # check for ANSI or K&R ("traditional") preprocessor
992dnl AC_MSG_CHECKING(for C preprocessor type)
993dnl AC_TRY_COMPILE([
994dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
995dnl int foo;
996dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
997dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
998dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000999
Guido van Rossum627b2d71993-12-24 10:39:16 +00001000# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001001AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001002AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1003shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001004stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001005unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001006sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1007sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +00001008sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001009sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001010sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1011bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001012AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001013AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001014
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001015# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001016AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001017#ifdef HAVE_CURSES_H
1018#include <curses.h>
1019#endif
1020])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001021
Martin v. Löwis11017b12006-01-14 18:12:57 +00001022# On Linux, netlink.h requires asm/types.h
1023AC_CHECK_HEADERS(linux/netlink.h,,,[
1024#ifdef HAVE_ASM_TYPES_H
1025#include <asm/types.h>
1026#endif
1027#ifdef HAVE_SYS_SOCKET_H
1028#include <sys/socket.h>
1029#endif
1030])
1031
Guido van Rossum627b2d71993-12-24 10:39:16 +00001032# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001033was_it_defined=no
1034AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001035AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1036 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1037])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001038AC_MSG_RESULT($was_it_defined)
1039
Neal Norwitz11690112002-07-30 01:08:28 +00001040# Check whether using makedev requires defining _OSF_SOURCE
1041AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001042AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001043 [ makedev(0, 0) ],
1044 ac_cv_has_makedev=yes,
1045 ac_cv_has_makedev=no)
1046if test "$ac_cv_has_makedev" = "no"; then
1047 # we didn't link, try if _OSF_SOURCE will allow us to link
1048 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001049#define _OSF_SOURCE 1
1050#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001051 ],
1052 [ makedev(0, 0) ],
1053 ac_cv_has_makedev=yes,
1054 ac_cv_has_makedev=no)
1055 if test "$ac_cv_has_makedev" = "yes"; then
1056 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1057 fi
1058fi
1059AC_MSG_RESULT($ac_cv_has_makedev)
1060if test "$ac_cv_has_makedev" = "yes"; then
1061 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1062fi
1063
Martin v. Löwis399a6892002-10-04 10:22:02 +00001064# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1065# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1066# defined, but the compiler does not support pragma redefine_extname,
1067# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1068# structures (such as rlimit64) without declaring them. As a
1069# work-around, disable LFS on such configurations
1070
1071use_lfs=yes
1072AC_MSG_CHECKING(Solaris LFS bug)
1073AC_TRY_COMPILE([
1074#define _LARGEFILE_SOURCE 1
1075#define _FILE_OFFSET_BITS 64
1076#include <sys/resource.h>
1077],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1078AC_MSG_RESULT($sol_lfs_bug)
1079if test "$sol_lfs_bug" = "yes"; then
1080 use_lfs=no
1081fi
1082
1083if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001084# Two defines needed to enable largefile support on various platforms
1085# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001086AC_DEFINE(_LARGEFILE_SOURCE, 1,
1087[This must be defined on some systems to enable large file support.])
1088AC_DEFINE(_FILE_OFFSET_BITS, 64,
1089[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001090fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001091
Guido van Rossum300fda71996-08-19 21:58:16 +00001092# Add some code to confdefs.h so that the test for off_t works on SCO
1093cat >> confdefs.h <<\EOF
1094#if defined(SCO_DS)
1095#undef _OFF_T
1096#endif
1097EOF
1098
Guido van Rossumef2255b2000-03-10 22:30:29 +00001099# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001100AC_TYPE_MODE_T
1101AC_TYPE_OFF_T
1102AC_TYPE_PID_T
1103AC_TYPE_SIGNAL
1104AC_TYPE_SIZE_T
1105AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001106AC_CHECK_TYPE(ssize_t,
1107 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001108
Guido van Rossumef2255b2000-03-10 22:30:29 +00001109# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001110# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001111AC_CHECK_SIZEOF(int, 4)
1112AC_CHECK_SIZEOF(long, 4)
1113AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001114AC_CHECK_SIZEOF(short, 2)
1115AC_CHECK_SIZEOF(float, 4)
1116AC_CHECK_SIZEOF(double, 8)
1117AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001118AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001119
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001120AC_MSG_CHECKING(for long long support)
1121have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001122AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1123 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1124 have_long_long=yes
1125])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001126AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001127if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001128AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001129fi
1130
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001131AC_MSG_CHECKING(for uintptr_t support)
1132have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001133AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1134 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1135 have_uintptr_t=yes
1136])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001137AC_MSG_RESULT($have_uintptr_t)
1138if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001139AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001140fi
1141
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001142# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1143AC_MSG_CHECKING(size of off_t)
1144AC_CACHE_VAL(ac_cv_sizeof_off_t,
1145[AC_TRY_RUN([#include <stdio.h>
1146#include <sys/types.h>
1147main()
1148{
1149 FILE *f=fopen("conftestval", "w");
1150 if (!f) exit(1);
1151 fprintf(f, "%d\n", sizeof(off_t));
1152 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001153}],
1154ac_cv_sizeof_off_t=`cat conftestval`,
1155ac_cv_sizeof_off_t=0,
1156ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001157])
1158AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001159AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1160[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001161
1162AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001163if test "$have_long_long" = yes -a \
1164 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1165 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001166 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1167 [Defined to enable large file support when an off_t is bigger than a long
1168 and long long is available and at least as big as an off_t. You may need
1169 to add some flags for configuration and compilation to enable this mode.
1170 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001171 AC_MSG_RESULT(yes)
1172else
1173 AC_MSG_RESULT(no)
1174fi
1175
Fred Drakea3f6e912000-06-29 20:44:47 +00001176# AC_CHECK_SIZEOF() doesn't include <time.h>.
1177AC_MSG_CHECKING(size of time_t)
1178AC_CACHE_VAL(ac_cv_sizeof_time_t,
1179[AC_TRY_RUN([#include <stdio.h>
1180#include <time.h>
1181main()
1182{
1183 FILE *f=fopen("conftestval", "w");
1184 if (!f) exit(1);
1185 fprintf(f, "%d\n", sizeof(time_t));
1186 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001187}],
1188ac_cv_sizeof_time_t=`cat conftestval`,
1189ac_cv_sizeof_time_t=0,
1190ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001191])
1192AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001193AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1194[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001195
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001196
Trent Mick635f6fb2000-08-23 21:33:05 +00001197# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001198ac_save_cc="$CC"
1199if test "$ac_cv_kpthread" = "yes"
1200then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001201elif test "$ac_cv_kthread" = "yes"
1202then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001203elif test "$ac_cv_pthread" = "yes"
1204then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001205fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001206AC_MSG_CHECKING(for pthread_t)
1207have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001208AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001209AC_MSG_RESULT($have_pthread_t)
1210if test "$have_pthread_t" = yes ; then
1211 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1212 AC_MSG_CHECKING(size of pthread_t)
1213 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1214 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001215#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001216 main()
1217 {
1218 FILE *f=fopen("conftestval", "w");
1219 if (!f) exit(1);
1220 fprintf(f, "%d\n", sizeof(pthread_t));
1221 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001222 }],
1223 ac_cv_sizeof_pthread_t=`cat conftestval`,
1224 ac_cv_sizeof_pthread_t=0,
1225 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001226 ])
1227 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001228 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1229 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001230fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001231CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001232
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001233AC_MSG_CHECKING(for --enable-toolbox-glue)
1234AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001235 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001236
1237if test -z "$enable_toolbox_glue"
1238then
1239 case $ac_sys_system/$ac_sys_release in
1240 Darwin/*)
1241 enable_toolbox_glue="yes";;
1242 *)
1243 enable_toolbox_glue="no";;
1244 esac
1245fi
1246case "$enable_toolbox_glue" in
1247yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001248 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001249 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001250 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1251 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001252 ;;
1253*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001254 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001255 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001256 ;;
1257esac
1258AC_MSG_RESULT($enable_toolbox_glue)
1259
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001260AC_SUBST(OTHER_LIBTOOL_OPT)
1261case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001262 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001263 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1264 ;;
1265 Darwin/*)
1266 OTHER_LIBTOOL_OPT=""
1267 ;;
1268esac
1269
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001270AC_SUBST(LIBTOOL_CRUFT)
1271case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001272 Darwin/@<:@01567@:>@\..*)
Jack Jansen39fd2312006-02-23 15:12:19 +00001273 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001274 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001275 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001276 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001277 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1278 if test ${gcc_version} '<' 4.0
1279 then
1280 LIBTOOL_CRUFT="-lcc_dynamic"
1281 else
1282 LIBTOOL_CRUFT=""
1283 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001284 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001285 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001286 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001287esac
1288
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001289AC_MSG_CHECKING(for --enable-framework)
1290if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001291then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001292 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001293 # -F. is needed to allow linking to the framework while
1294 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001295 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1296 [Define if you want to produce an OpenStep/Rhapsody framework
1297 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001298 AC_MSG_RESULT(yes)
1299else
1300 AC_MSG_RESULT(no)
1301fi
1302
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001303AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001304case $ac_sys_system/$ac_sys_release in
1305 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001306 AC_DEFINE(WITH_DYLD, 1,
1307 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1308 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1309 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001310 AC_MSG_RESULT(always on for Darwin)
1311 ;;
1312 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001313 AC_MSG_RESULT(no)
1314 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001315esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001316
Guido van Rossumac405f61994-09-12 10:56:06 +00001317# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001318AC_SUBST(SO)
1319AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001320AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001321AC_SUBST(CCSHARED)
1322AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001323# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001324# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001325AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001326if test -z "$SO"
1327then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001328 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001329 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001330 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001331 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001332 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001333else
1334 # this might also be a termcap variable, see #610332
1335 echo
1336 echo '====================================================================='
1337 echo '+ +'
1338 echo '+ WARNING: You have set SO in your environment. +'
1339 echo '+ Do you really mean to change the extension for shared libraries? +'
1340 echo '+ Continuing in 10 seconds to let you to ponder. +'
1341 echo '+ +'
1342 echo '====================================================================='
1343 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001344fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001345AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001346# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001347# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001348# (Shared libraries in this instance are shared modules to be loaded into
1349# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001350AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001351if test -z "$LDSHARED"
1352then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001353 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001354 AIX*)
1355 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001356 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001357 ;;
1358 BeOS*)
1359 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001360 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001361 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001362 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001363 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001364 SunOS/5*)
1365 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001366 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001367 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001368 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001369 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001370 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001371 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001372 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1373 if test "$enable_framework" ; then
1374 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001375 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1376 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001377 else
1378 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001379 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001380 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001381 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001382 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1383 if test "$enable_framework" ; then
1384 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001385 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1386 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001387 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001388 # No framework, use the Python app as bundle-loader
1389 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001390 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001392 Darwin/*)
1393 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1394 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001395 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001396 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001397 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001398 then
1399 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1400 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001401 else
1402 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1403 if test "$enable_framework" ; then
1404 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001405 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1406 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001407 else
1408 # No framework, use the Python app as bundle-loader
1409 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1410 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1411 fi
1412 fi
1413 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001414 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001415 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001416 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001417 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001418 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001419 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001420 else
1421 LDSHARED="ld -Bshareable ${LDFLAGS}"
1422 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001423 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001424 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001425 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001426 then LDSHARED='$(CC) -shared'
1427 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001428 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001429 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001430 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001431 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001432 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001433 *) LDSHARED="ld";;
1434 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001435fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001436AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001437BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001438# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001439# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001440AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001441if test -z "$CCSHARED"
1442then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001443 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001444 SunOS*) if test "$GCC" = yes;
1445 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001446 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001447 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001448 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001449 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001450 else CCSHARED="+z";
1451 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001452 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001453 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001454 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001455 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001456 if test "$GCC" = "yes"
1457 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001458 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001459 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001460 SCO_SV*)
1461 if test "$GCC" = "yes"
1462 then CCSHARED="-fPIC"
1463 else CCSHARED="-Kpic -belf"
1464 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001465 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001466 IRIX*/6*) case $CC in
1467 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001468 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001469 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001470 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001471 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001472fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001473AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001474# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001475# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001476AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001477if test -z "$LINKFORSHARED"
1478then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001479 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001480 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001481 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001482 LINKFORSHARED="-Wl,-E -Wl,+s";;
1483# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001484 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001485 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001486 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001487 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001488 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1489 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001490 # not used by the core itself but which needs to be in the core so
1491 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001492 # -prebind is no longer used, because it actually seems to give a
1493 # slowdown in stead of a speedup, maybe due to the large number of
1494 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001495
1496 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001497 if test "$enable_framework"
1498 then
Jack Jansenda49e192005-01-07 13:08:22 +00001499 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001500 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001501 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001502 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001503 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001504 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001505 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001506 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1507 then
1508 LINKFORSHARED="-Wl,--export-dynamic"
1509 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001510 SunOS/5*) case $CC in
1511 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001512 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001513 then
1514 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001515 fi;;
1516 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001517 CYGWIN*)
1518 if test $enable_shared = "no"
1519 then
1520 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1521 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001522 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001523fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001524AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001525
Neil Schemenauer61c51152001-01-26 16:18:16 +00001526AC_SUBST(CFLAGSFORSHARED)
1527AC_MSG_CHECKING(CFLAGSFORSHARED)
1528if test ! "$LIBRARY" = "$LDLIBRARY"
1529then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001530 case $ac_sys_system in
1531 CYGWIN*)
1532 # Cygwin needs CCSHARED when building extension DLLs
1533 # but not when building the interpreter DLL.
1534 CFLAGSFORSHARED='';;
1535 *)
1536 CFLAGSFORSHARED='$(CCSHARED)'
1537 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001538fi
1539AC_MSG_RESULT($CFLAGSFORSHARED)
1540
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001541# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1542# library (with --enable-shared).
1543# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001544# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1545# if it is not required, since it creates a dependency of the shared library
1546# to LIBS. This, in turn, means that applications linking the shared libpython
1547# don't need to link LIBS explicitly. The default should be only changed
1548# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001549AC_SUBST(SHLIBS)
1550AC_MSG_CHECKING(SHLIBS)
1551case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001552 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001553 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001554esac
1555AC_MSG_RESULT($SHLIBS)
1556
1557
Guido van Rossum627b2d71993-12-24 10:39:16 +00001558# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001559AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1560AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001561
1562# only check for sem_ini if thread support is requested
1563if test "$with_threads" = "yes" -o -z "$with_threads"; then
1564 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1565 # posix4 on Solaris 2.6
1566 # pthread (first!) on Linux
1567fi
1568
Martin v. Löwis19d17342003-06-14 21:03:05 +00001569# check if we need libintl for locale functions
1570AC_CHECK_LIB(intl, textdomain,
1571 AC_DEFINE(WITH_LIBINTL, 1,
1572 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001573
1574# checks for system dependent C++ extensions support
1575case "$ac_sys_system" in
1576 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1577 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1578 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001579 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1580 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1581 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001582 AC_MSG_RESULT(yes)],
1583 [AC_MSG_RESULT(no)]);;
1584 *) ;;
1585esac
1586
Guido van Rossum70c7f481998-03-26 18:44:10 +00001587# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001588# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001589AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001590AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001591
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001592case "$ac_sys_system" in
1593BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001594AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1595;;
1596esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001597
Guido van Rossumc5a39031996-07-31 17:35:03 +00001598AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001599AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001600 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1601[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001602AC_MSG_RESULT($withval)
1603LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001604],
1605[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001606
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001607# Check for use of the system libffi library
1608AC_MSG_CHECKING(for --with-system-ffi)
1609AC_ARG_WITH(system_ffi,
1610 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1611
1612if test -z "$with_system_ffi"
1613then with_system_ffi="no"
1614fi
1615AC_MSG_RESULT($with_system_ffi)
1616
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001617# Determine if signalmodule should be used.
1618AC_SUBST(USE_SIGNAL_MODULE)
1619AC_SUBST(SIGNAL_OBJS)
1620AC_MSG_CHECKING(for --with-signal-module)
1621AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001622 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001623
1624if test -z "$with_signal_module"
1625then with_signal_module="yes"
1626fi
1627AC_MSG_RESULT($with_signal_module)
1628
1629if test "${with_signal_module}" = "yes"; then
1630 USE_SIGNAL_MODULE=""
1631 SIGNAL_OBJS=""
1632else
1633 USE_SIGNAL_MODULE="#"
1634 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1635fi
1636
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001637# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001638AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001639USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001640
Guido van Rossum54d93d41997-01-22 20:51:58 +00001641AC_MSG_CHECKING(for --with-dec-threads)
1642AC_SUBST(LDLAST)
1643AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001644 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1645[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001646AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001647LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001648if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001649 with_thread="$withval";
1650fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001651[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001652
Martin v. Löwis11437992002-04-12 09:54:03 +00001653# Templates for things AC_DEFINEd more than once.
1654# For a single AC_DEFINE, no template is needed.
1655AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1656AH_TEMPLATE(_REENTRANT,
1657 [Define to force use of thread-safe errno, h_errno, and other functions])
1658AH_TEMPLATE(WITH_THREAD,
1659 [Define if you want to compile in rudimentary thread support])
1660
Guido van Rossum54d93d41997-01-22 20:51:58 +00001661AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001662dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001663AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001664 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001665
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001666# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001667dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001668AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001669 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1670 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001671
1672if test -z "$with_threads"
1673then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001674fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001675AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001676
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001677AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001678if test "$with_threads" = "no"
1679then
1680 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001681elif test "$ac_cv_pthread_is_default" = yes
1682then
1683 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001684 # Defining _REENTRANT on system with POSIX threads should not hurt.
1685 AC_DEFINE(_REENTRANT)
1686 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001687 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001688elif test "$ac_cv_kpthread" = "yes"
1689then
1690 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001691 if test "$ac_cv_cxx_thread" = "yes"; then
1692 CXX="$CXX -Kpthread"
1693 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001694 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001695 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001696 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001697elif test "$ac_cv_kthread" = "yes"
1698then
1699 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001700 if test "$ac_cv_cxx_thread" = "yes"; then
1701 CXX="$CXX -Kthread"
1702 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001703 AC_DEFINE(WITH_THREAD)
1704 posix_threads=yes
1705 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001706elif test "$ac_cv_pthread" = "yes"
1707then
1708 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001709 if test "$ac_cv_cxx_thread" = "yes"; then
1710 CXX="$CXX -pthread"
1711 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001712 AC_DEFINE(WITH_THREAD)
1713 posix_threads=yes
1714 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001715else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001716 if test ! -z "$with_threads" -a -d "$with_threads"
1717 then LDFLAGS="$LDFLAGS -L$with_threads"
1718 fi
1719 if test ! -z "$withval" -a -d "$withval"
1720 then LDFLAGS="$LDFLAGS -L$withval"
1721 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001722
1723 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001724 # define _POSIX_THREADS in unistd.h. Some apparently don't
1725 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001726 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1727 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001728 [
1729#include <unistd.h>
1730#ifdef _POSIX_THREADS
1731yes
1732#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001733 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1734 AC_MSG_RESULT($unistd_defines_pthreads)
1735
Martin v. Löwis130fb172001-07-19 11:00:41 +00001736 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001737 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1738 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001739 AC_DEFINE(HURD_C_THREADS, 1,
1740 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001741 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001742 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001743 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1744 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001745 AC_DEFINE(MACH_C_THREADS, 1,
1746 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001747 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001748 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001749 AC_ARG_WITH([pth],
1750 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1751 [AC_MSG_RESULT($withval)
1752 AC_DEFINE([WITH_THREAD])
1753 AC_DEFINE([HAVE_PTH], 1,
1754 [Define if you have GNU PTH threads.])
1755 LIBS="-lpth $LIBS"
1756 THREADOBJ="Python/thread.o"],
1757 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001758
1759 # Just looking for pthread_create in libpthread is not enough:
1760 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1761 # So we really have to include pthread.h, and then link.
1762 _libs=$LIBS
1763 LIBS="$LIBS -lpthread"
1764 AC_MSG_CHECKING([for pthread_create in -lpthread])
1765 AC_TRY_LINK([#include <pthread.h>
1766
1767void * start_routine (void *arg) { exit (0); }], [
1768pthread_create (NULL, NULL, start_routine, NULL)], [
1769 AC_MSG_RESULT(yes)
1770 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001771 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001772 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001773 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001774 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001775 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001776 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001777 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1778 AC_DEFINE(ATHEOS_THREADS, 1,
1779 [Define this if you have AtheOS threads.])
1780 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001781 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001782 AC_DEFINE(BEOS_THREADS, 1,
1783 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001784 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001785 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001786 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001787 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001788 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001789 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001790 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001791 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001792 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001793 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001794 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001795 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001796 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001797 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001798 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001799 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001800 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001801 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001802 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001803
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001804 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1805 LIBS="$LIBS -lmpc"
1806 THREADOBJ="Python/thread.o"
1807 USE_THREAD_MODULE=""])
1808
1809 if test "$posix_threads" != "yes"; then
1810 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1811 LIBS="$LIBS -lthread"
1812 THREADOBJ="Python/thread.o"
1813 USE_THREAD_MODULE=""])
1814 fi
1815
1816 if test "$USE_THREAD_MODULE" != "#"
1817 then
1818 # If the above checks didn't disable threads, (at least) OSF1
1819 # needs this '-threads' argument during linking.
1820 case $ac_sys_system in
1821 OSF1) LDLAST=-threads;;
1822 esac
1823 fi
1824fi
1825
1826if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001827 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001828 AC_DEFINE(_POSIX_THREADS, 1,
1829 [Define if you have POSIX threads,
1830 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001831 fi
1832
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001833 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1834 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001835 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1836 Defined for Solaris 2.6 bug in pthread header.)
1837 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001838 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001839 Define if the Posix semaphores do not work on your system)
1840 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001841 esac
1842
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001843 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1844 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1845 [AC_TRY_RUN([#include <pthread.h>
1846 void *foo(void *parm) {
1847 return NULL;
1848 }
1849 main() {
1850 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001851 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001852 if (pthread_attr_init(&attr)) exit(-1);
1853 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001854 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001855 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001856 }],
1857 ac_cv_pthread_system_supported=yes,
1858 ac_cv_pthread_system_supported=no,
1859 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001860 ])
1861 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1862 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001863 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001864 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001865 AC_CHECK_FUNCS(pthread_sigmask,
1866 [case $ac_sys_system in
1867 CYGWIN*)
1868 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1869 [Define if pthread_sigmask() does not work on your system.])
1870 ;;
1871 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001872fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001873
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001874
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001875# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001876AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001877AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001878AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001879[ --enable-ipv6 Enable ipv6 (with ipv4) support
1880 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001881[ case "$enableval" in
1882 no)
1883 AC_MSG_RESULT(no)
1884 ipv6=no
1885 ;;
1886 *) AC_MSG_RESULT(yes)
1887 AC_DEFINE(ENABLE_IPV6)
1888 ipv6=yes
1889 ;;
1890 esac ],
1891
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001892[
1893dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001894 AC_TRY_RUN([ /* AF_INET6 available check */
1895#include <sys/types.h>
1896#include <sys/socket.h>
1897main()
1898{
1899 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1900 exit(1);
1901 else
1902 exit(0);
1903}
1904],
1905 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001906 ipv6=yes,
1907 AC_MSG_RESULT(no)
1908 ipv6=no,
1909 AC_MSG_RESULT(no)
1910 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001911)
1912
1913if test "$ipv6" = "yes"; then
1914 AC_MSG_CHECKING(if RFC2553 API is available)
1915 AC_TRY_COMPILE([#include <sys/types.h>
1916#include <netinet/in.h>],
1917 [struct sockaddr_in6 x;
1918x.sin6_scope_id;],
1919 AC_MSG_RESULT(yes)
1920 ipv6=yes,
1921 AC_MSG_RESULT(no, IPv6 disabled)
1922 ipv6=no)
1923fi
1924
1925if test "$ipv6" = "yes"; then
1926 AC_DEFINE(ENABLE_IPV6)
1927fi
1928])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001929
1930ipv6type=unknown
1931ipv6lib=none
1932ipv6trylibc=no
1933
1934if test "$ipv6" = "yes"; then
1935 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001936 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1937 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001938 case $i in
1939 inria)
1940 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001941 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001942#include <netinet/in.h>
1943#ifdef IPV6_INRIA_VERSION
1944yes
1945#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001946 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001947 ;;
1948 kame)
1949 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001950 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001951#include <netinet/in.h>
1952#ifdef __KAME__
1953yes
1954#endif],
1955 [ipv6type=$i;
1956 ipv6lib=inet6
1957 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001958 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001959 ;;
1960 linux-glibc)
1961 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001962 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001963#include <features.h>
1964#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1965yes
1966#endif],
1967 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001968 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001969 ;;
1970 linux-inet6)
1971 dnl http://www.v6.linux.or.jp/
1972 if test -d /usr/inet6; then
1973 ipv6type=$i
1974 ipv6lib=inet6
1975 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001976 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001977 fi
1978 ;;
1979 solaris)
1980 if test -f /etc/netconfig; then
1981 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1982 ipv6type=$i
1983 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001984 fi
1985 fi
1986 ;;
1987 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001988 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001989#include <sys/param.h>
1990#ifdef _TOSHIBA_INET6
1991yes
1992#endif],
1993 [ipv6type=$i;
1994 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001995 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001996 ;;
1997 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001998 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001999#include </usr/local/v6/include/sys/v6config.h>
2000#ifdef __V6D__
2001yes
2002#endif],
2003 [ipv6type=$i;
2004 ipv6lib=v6;
2005 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002006 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002007 ;;
2008 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002009 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002010#include <sys/param.h>
2011#ifdef _ZETA_MINAMI_INET6
2012yes
2013#endif],
2014 [ipv6type=$i;
2015 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002016 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002017 ;;
2018 esac
2019 if test "$ipv6type" != "unknown"; then
2020 break
2021 fi
2022 done
2023 AC_MSG_RESULT($ipv6type)
2024fi
2025
2026if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2027 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2028 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2029 echo "using lib$ipv6lib"
2030 else
2031 if test $ipv6trylibc = "yes"; then
2032 echo "using libc"
2033 else
2034 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2035 echo "You need to fetch lib$ipv6lib.a from appropriate"
2036 echo 'ipv6 kit and compile beforehand.'
2037 exit 1
2038 fi
2039 fi
2040fi
2041
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002042# Check for --with-doc-strings
2043AC_MSG_CHECKING(for --with-doc-strings)
2044AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002045 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002046
2047if test -z "$with_doc_strings"
2048then with_doc_strings="yes"
2049fi
2050if test "$with_doc_strings" != "no"
2051then
2052 AC_DEFINE(WITH_DOC_STRINGS, 1,
2053 [Define if you want documentation strings in extension modules])
2054fi
2055AC_MSG_RESULT($with_doc_strings)
2056
Neil Schemenauera35c6882001-02-27 04:45:05 +00002057# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002058AC_MSG_CHECKING(for --with-tsc)
2059AC_ARG_WITH(tsc,
2060[ --with(out)-tsc enable/disable timestamp counter profile], [
2061if test "$withval" != no
2062then
2063 AC_DEFINE(WITH_TSC, 1,
2064 [Define to profile with the Pentium timestamp counter])
2065 AC_MSG_RESULT(yes)
2066else AC_MSG_RESULT(no)
2067fi],
2068[AC_MSG_RESULT(no)])
2069
2070# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002071AC_MSG_CHECKING(for --with-pymalloc)
2072AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002073 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002074
2075if test -z "$with_pymalloc"
2076then with_pymalloc="yes"
2077fi
2078if test "$with_pymalloc" != "no"
2079then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002080 AC_DEFINE(WITH_PYMALLOC, 1,
2081 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002082fi
2083AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002084
Barry Warsawef82cd72000-06-30 16:21:01 +00002085# Check for --with-wctype-functions
2086AC_MSG_CHECKING(for --with-wctype-functions)
2087AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002088 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2089[
Barry Warsawef82cd72000-06-30 16:21:01 +00002090if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002091then
2092 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2093 [Define if you want wctype.h functions to be used instead of the
2094 one supplied by Python itself. (see Include/unicodectype.h).])
2095 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002096else AC_MSG_RESULT(no)
2097fi],
2098[AC_MSG_RESULT(no)])
2099
Guido van Rossum68242b51996-05-28 22:53:03 +00002100# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002101AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002102DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002103
Guido van Rossume97ee181999-12-20 21:27:22 +00002104# the dlopen() function means we might want to use dynload_shlib.o. some
2105# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002106AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002107
2108# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2109# loading of modules.
2110AC_SUBST(DYNLOADFILE)
2111AC_MSG_CHECKING(DYNLOADFILE)
2112if test -z "$DYNLOADFILE"
2113then
2114 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002115 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2116 if test "$ac_cv_func_dlopen" = yes
2117 then DYNLOADFILE="dynload_shlib.o"
2118 else DYNLOADFILE="dynload_aix.o"
2119 fi
2120 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002121 BeOS*) DYNLOADFILE="dynload_beos.o";;
2122 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002123 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2124 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002125 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002126 *)
2127 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2128 # out any dynamic loading
2129 if test "$ac_cv_func_dlopen" = yes
2130 then DYNLOADFILE="dynload_shlib.o"
2131 else DYNLOADFILE="dynload_stub.o"
2132 fi
2133 ;;
2134 esac
2135fi
2136AC_MSG_RESULT($DYNLOADFILE)
2137if test "$DYNLOADFILE" != "dynload_stub.o"
2138then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002139 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2140 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002141fi
2142
Jack Jansenc49e5b72001-06-19 15:00:23 +00002143# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2144
2145AC_SUBST(MACHDEP_OBJS)
2146AC_MSG_CHECKING(MACHDEP_OBJS)
2147if test -z "$MACHDEP_OBJS"
2148then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002149 MACHDEP_OBJS=$extra_machdep_objs
2150else
2151 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002152fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002153AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002154
Guido van Rossum627b2d71993-12-24 10:39:16 +00002155# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002156AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2157 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002158 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002159 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002160 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002161 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002162 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002163 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002164 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002165 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002166 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002167 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002168
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002169# For some functions, having a definition is not sufficient, since
2170# we want to take their address.
2171AC_MSG_CHECKING(for chroot)
2172AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2173 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2174 AC_MSG_RESULT(yes),
2175 AC_MSG_RESULT(no)
2176)
2177AC_MSG_CHECKING(for link)
2178AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2179 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2180 AC_MSG_RESULT(yes),
2181 AC_MSG_RESULT(no)
2182)
2183AC_MSG_CHECKING(for symlink)
2184AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2185 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2186 AC_MSG_RESULT(yes),
2187 AC_MSG_RESULT(no)
2188)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002189AC_MSG_CHECKING(for fchdir)
2190AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2191 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2192 AC_MSG_RESULT(yes),
2193 AC_MSG_RESULT(no)
2194)
2195AC_MSG_CHECKING(for fsync)
2196AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002197 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002198 AC_MSG_RESULT(yes),
2199 AC_MSG_RESULT(no)
2200)
2201AC_MSG_CHECKING(for fdatasync)
2202AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2203 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2204 AC_MSG_RESULT(yes),
2205 AC_MSG_RESULT(no)
2206)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002207
Martin v. Löwisd5843682002-11-21 20:41:28 +00002208# On some systems (eg. FreeBSD 5), we would find a definition of the
2209# functions ctermid_r, setgroups in the library, but no prototype
2210# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2211# address to avoid compiler warnings and potential miscompilations
2212# because of the missing prototypes.
2213
2214AC_MSG_CHECKING(for ctermid_r)
2215AC_TRY_COMPILE([
2216#include "confdefs.h"
2217#include <stdio.h>
2218], void* p = ctermid_r,
2219 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2220 AC_MSG_RESULT(yes),
2221 AC_MSG_RESULT(no)
2222)
2223
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002224AC_MSG_CHECKING(for flock)
2225AC_TRY_COMPILE([
2226#include "confdefs.h"
2227#include <sys/file.h>
2228], void* p = flock,
2229 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2230 AC_MSG_RESULT(yes),
2231 AC_MSG_RESULT(no)
2232)
2233
2234AC_MSG_CHECKING(for getpagesize)
2235AC_TRY_COMPILE([
2236#include "confdefs.h"
2237#include <unistd.h>
2238], void* p = getpagesize,
2239 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2240 AC_MSG_RESULT(yes),
2241 AC_MSG_RESULT(no)
2242)
2243
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002244dnl check for true
2245AC_CHECK_PROGS(TRUE, true, /bin/true)
2246
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002247dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2248dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002249AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002250 AC_CHECK_LIB(resolv, inet_aton)
2251)
2252
Martin v. Löwise9416172003-05-03 10:12:45 +00002253AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002254AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002255#include "confdefs.h"
2256#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002257], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002258 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2259 AC_MSG_RESULT(yes),
2260 AC_MSG_RESULT(no)
2261)
2262
2263AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002264AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002265#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002266#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002267#include <sys/socket.h>
2268#include <netinet/in.h>
2269#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002270], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002271 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2272 AC_MSG_RESULT(yes),
2273 AC_MSG_RESULT(no)
2274)
2275
2276AC_MSG_CHECKING(for inet_pton)
2277AC_TRY_COMPILE([
2278#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002279#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002280#include <sys/socket.h>
2281#include <netinet/in.h>
2282#include <arpa/inet.h>
2283], void* p = inet_pton,
2284 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2285 AC_MSG_RESULT(yes),
2286 AC_MSG_RESULT(no)
2287)
2288
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002289# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002290AC_MSG_CHECKING(for setgroups)
2291AC_TRY_COMPILE([
2292#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002293#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002294#ifdef HAVE_GRP_H
2295#include <grp.h>
2296#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002297],
2298void* p = setgroups,
2299 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2300 AC_MSG_RESULT(yes),
2301 AC_MSG_RESULT(no)
2302)
2303
Fred Drake8cef4cf2000-06-28 16:40:38 +00002304# check for openpty and forkpty
2305
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002306AC_CHECK_FUNCS(openpty,,
2307 AC_CHECK_LIB(util,openpty,
2308 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2309 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2310 )
2311)
2312AC_CHECK_FUNCS(forkpty,,
2313 AC_CHECK_LIB(util,forkpty,
2314 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2315 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2316 )
2317)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002318
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002319# check for long file support functions
2320AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2321
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002322AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002323AC_CHECK_FUNCS(getpgrp,
2324 AC_TRY_COMPILE([#include <unistd.h>],
2325 [getpgrp(0);],
2326 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2327 [Define if getpgrp() must be called as getpgrp(0).])
2328 )
2329)
Jack Jansen150753c2003-03-29 22:07:47 +00002330AC_CHECK_FUNCS(setpgrp,
2331 AC_TRY_COMPILE([#include <unistd.h>],
2332 [setpgrp(0,0);],
2333 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2334 [Define if setpgrp() must be called as setpgrp(0, 0).])
2335 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002336)
2337AC_CHECK_FUNCS(gettimeofday,
2338 AC_TRY_COMPILE([#include <sys/time.h>],
2339 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2340 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2341 [Define if gettimeofday() does not have second (timezone) argument
2342 This is the case on Motorola V4 (R40V4.2)])
2343 )
2344)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002345
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002346AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002347AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002348#if defined(MAJOR_IN_MKDEV)
2349#include <sys/mkdev.h>
2350#elif defined(MAJOR_IN_SYSMACROS)
2351#include <sys/sysmacros.h>
2352#else
2353#include <sys/types.h>
2354#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002355],[
2356 makedev(major(0),minor(0));
2357],[
2358 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2359 [Define to 1 if you have the device macros.])
2360 AC_MSG_RESULT(yes)
2361],[
2362 AC_MSG_RESULT(no)
2363])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002364
2365# On OSF/1 V5.1, getaddrinfo is available, but a define
2366# for [no]getaddrinfo in netdb.h.
2367AC_MSG_CHECKING(for getaddrinfo)
2368AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002369#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002370#include <sys/socket.h>
2371#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002372#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002373],[
2374getaddrinfo(NULL, NULL, NULL, NULL);
2375], [
2376AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002377AC_MSG_CHECKING(getaddrinfo bug)
2378AC_TRY_RUN([
2379#include <sys/types.h>
2380#include <netdb.h>
2381#include <string.h>
2382#include <sys/socket.h>
2383#include <netinet/in.h>
2384
2385main()
2386{
2387 int passive, gaierr, inet4 = 0, inet6 = 0;
2388 struct addrinfo hints, *ai, *aitop;
2389 char straddr[INET6_ADDRSTRLEN], strport[16];
2390
2391 for (passive = 0; passive <= 1; passive++) {
2392 memset(&hints, 0, sizeof(hints));
2393 hints.ai_family = AF_UNSPEC;
2394 hints.ai_flags = passive ? AI_PASSIVE : 0;
2395 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002396 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002397 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2398 (void)gai_strerror(gaierr);
2399 goto bad;
2400 }
2401 for (ai = aitop; ai; ai = ai->ai_next) {
2402 if (ai->ai_addr == NULL ||
2403 ai->ai_addrlen == 0 ||
2404 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2405 straddr, sizeof(straddr), strport, sizeof(strport),
2406 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2407 goto bad;
2408 }
2409 switch (ai->ai_family) {
2410 case AF_INET:
2411 if (strcmp(strport, "54321") != 0) {
2412 goto bad;
2413 }
2414 if (passive) {
2415 if (strcmp(straddr, "0.0.0.0") != 0) {
2416 goto bad;
2417 }
2418 } else {
2419 if (strcmp(straddr, "127.0.0.1") != 0) {
2420 goto bad;
2421 }
2422 }
2423 inet4++;
2424 break;
2425 case AF_INET6:
2426 if (strcmp(strport, "54321") != 0) {
2427 goto bad;
2428 }
2429 if (passive) {
2430 if (strcmp(straddr, "::") != 0) {
2431 goto bad;
2432 }
2433 } else {
2434 if (strcmp(straddr, "::1") != 0) {
2435 goto bad;
2436 }
2437 }
2438 inet6++;
2439 break;
2440 case AF_UNSPEC:
2441 goto bad;
2442 break;
2443 default:
2444 /* another family support? */
2445 break;
2446 }
2447 }
2448 }
2449
2450 if (!(inet4 == 0 || inet4 == 2))
2451 goto bad;
2452 if (!(inet6 == 0 || inet6 == 2))
2453 goto bad;
2454
2455 if (aitop)
2456 freeaddrinfo(aitop);
2457 exit(0);
2458
2459 bad:
2460 if (aitop)
2461 freeaddrinfo(aitop);
2462 exit(1);
2463}
2464],
2465AC_MSG_RESULT(good)
2466buggygetaddrinfo=no,
2467AC_MSG_RESULT(buggy)
2468buggygetaddrinfo=yes,
2469AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002470buggygetaddrinfo=yes)], [
2471AC_MSG_RESULT(no)
2472buggygetaddrinfo=yes
2473])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002474
2475if test "$buggygetaddrinfo" = "yes"; then
2476 if test "$ipv6" = "yes"; then
2477 echo 'Fatal: You must get working getaddrinfo() function.'
2478 echo ' or you can specify "--disable-ipv6"'.
2479 exit 1
2480 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002481else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002482 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002483fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002484AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002485
Guido van Rossum627b2d71993-12-24 10:39:16 +00002486# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002487AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002488AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002489AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002490AC_CHECK_MEMBERS([struct stat.st_rdev])
2491AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002492AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002493AC_CHECK_MEMBERS([struct stat.st_gen])
2494AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002495AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002496
2497AC_MSG_CHECKING(for time.h that defines altzone)
2498AC_CACHE_VAL(ac_cv_header_time_altzone,
2499[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2500 ac_cv_header_time_altzone=yes,
2501 ac_cv_header_time_altzone=no)])
2502AC_MSG_RESULT($ac_cv_header_time_altzone)
2503if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002504 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002505fi
2506
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002507was_it_defined=no
2508AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002509AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002510#include <sys/types.h>
2511#include <sys/select.h>
2512#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002513], [;], [
2514 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2515 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2516 (which you can't on SCO ODT 3.0).])
2517 was_it_defined=yes
2518])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002519AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002520
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002521AC_MSG_CHECKING(for addrinfo)
2522AC_CACHE_VAL(ac_cv_struct_addrinfo,
2523AC_TRY_COMPILE([
2524# include <netdb.h>],
2525 [struct addrinfo a],
2526 ac_cv_struct_addrinfo=yes,
2527 ac_cv_struct_addrinfo=no))
2528AC_MSG_RESULT($ac_cv_struct_addrinfo)
2529if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002530 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002531fi
2532
2533AC_MSG_CHECKING(for sockaddr_storage)
2534AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2535AC_TRY_COMPILE([
2536# include <sys/types.h>
2537# include <sys/socket.h>],
2538 [struct sockaddr_storage s],
2539 ac_cv_struct_sockaddr_storage=yes,
2540 ac_cv_struct_sockaddr_storage=no))
2541AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2542if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002543 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002544fi
2545
Guido van Rossum627b2d71993-12-24 10:39:16 +00002546# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002547
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002548AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002549AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002550
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002551works=no
2552AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002553AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2554 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2555)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002556AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002557
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002558works=no
2559AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002560AC_TRY_COMPILE([], [signed char c;], works=yes,
2561 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2562)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002563AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002564
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002565have_prototypes=no
2566AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002567AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2568 AC_DEFINE(HAVE_PROTOTYPES, 1,
2569 [Define if your compiler supports function prototype])
2570 have_prototypes=yes
2571])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002572AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002573
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002574works=no
2575AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002576AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002577#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002578int foo(int x, ...) {
2579 va_list va;
2580 va_start(va, x);
2581 va_arg(va, int);
2582 va_arg(va, char *);
2583 va_arg(va, double);
2584 return 0;
2585}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002586], [return foo(10, "", 3.14);], [
2587 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2588 [Define if your compiler supports variable length function prototypes
2589 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2590 works=yes
2591])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002592AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002593
Dave Cole331708b2004-08-09 04:51:41 +00002594# check for socketpair
2595AC_MSG_CHECKING(for socketpair)
2596AC_TRY_COMPILE([
2597#include <sys/types.h>
2598#include <sys/socket.h>
2599], void *x=socketpair,
2600 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2601 AC_MSG_RESULT(yes),
2602 AC_MSG_RESULT(no)
2603)
2604
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002605# check if sockaddr has sa_len member
2606AC_MSG_CHECKING(if sockaddr has sa_len member)
2607AC_TRY_COMPILE([#include <sys/types.h>
2608#include <sys/socket.h>],
2609[struct sockaddr x;
2610x.sa_len = 0;],
2611 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002612 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002613 AC_MSG_RESULT(no))
2614
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002615va_list_is_array=no
2616AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002617AC_TRY_COMPILE([
2618#ifdef HAVE_STDARG_PROTOTYPES
2619#include <stdarg.h>
2620#else
2621#include <varargs.h>
2622#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002623], [va_list list1, list2; list1 = list2;], , [
2624 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2625 va_list_is_array=yes
2626])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002627AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002628
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002629# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002630AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2631 [Define this if you have some version of gethostbyname_r()])
2632
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002633AC_CHECK_FUNC(gethostbyname_r, [
2634 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2635 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2636 OLD_CFLAGS=$CFLAGS
2637 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2638 AC_TRY_COMPILE([
2639# include <netdb.h>
2640 ], [
2641 char *name;
2642 struct hostent *he, *res;
2643 char buffer[2048];
2644 int buflen = 2048;
2645 int h_errnop;
2646
2647 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2648 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002649 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002650 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2651 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002652 AC_MSG_RESULT(yes)
2653 ], [
2654 AC_MSG_RESULT(no)
2655 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2656 AC_TRY_COMPILE([
2657# include <netdb.h>
2658 ], [
2659 char *name;
2660 struct hostent *he;
2661 char buffer[2048];
2662 int buflen = 2048;
2663 int h_errnop;
2664
2665 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2666 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002667 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002668 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2669 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002670 AC_MSG_RESULT(yes)
2671 ], [
2672 AC_MSG_RESULT(no)
2673 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2674 AC_TRY_COMPILE([
2675# include <netdb.h>
2676 ], [
2677 char *name;
2678 struct hostent *he;
2679 struct hostent_data data;
2680
2681 (void) gethostbyname_r(name, he, &data);
2682 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002683 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002684 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2685 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002686 AC_MSG_RESULT(yes)
2687 ], [
2688 AC_MSG_RESULT(no)
2689 ])
2690 ])
2691 ])
2692 CFLAGS=$OLD_CFLAGS
2693], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002694 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002695])
2696AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2697AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2698AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002699AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002700AC_SUBST(HAVE_GETHOSTBYNAME)
2701
Guido van Rossum627b2d71993-12-24 10:39:16 +00002702# checks for system services
2703# (none yet)
2704
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002705# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002706AC_CHECK_FUNC(__fpu_control,
2707 [],
2708 [AC_CHECK_LIB(ieee, __fpu_control)
2709])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002710
Guido van Rossum93274221997-05-09 02:42:00 +00002711# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002712AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002713AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002714 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2715[
Guido van Rossum93274221997-05-09 02:42:00 +00002716if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002717then
2718 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2719 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2720 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002721else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002722fi],
2723[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002724
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002725# check for --with-libm=...
2726AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002727case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002728Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002729BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002730*) LIBM=-lm
2731esac
Guido van Rossum93274221997-05-09 02:42:00 +00002732AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002733AC_ARG_WITH(libm,
2734 AC_HELP_STRING(--with-libm=STRING, math library),
2735[
Guido van Rossum93274221997-05-09 02:42:00 +00002736if test "$withval" = no
2737then LIBM=
2738 AC_MSG_RESULT(force LIBM empty)
2739elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002740then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002741 AC_MSG_RESULT(set LIBM="$withval")
2742else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002743fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002744[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002745
2746# check for --with-libc=...
2747AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002748AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002749AC_ARG_WITH(libc,
2750 AC_HELP_STRING(--with-libc=STRING, C library),
2751[
Guido van Rossum93274221997-05-09 02:42:00 +00002752if test "$withval" = no
2753then LIBC=
2754 AC_MSG_RESULT(force LIBC empty)
2755elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002756then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002757 AC_MSG_RESULT(set LIBC="$withval")
2758else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002759fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002760[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002761
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002762# check for hypot() in math library
2763LIBS_SAVE=$LIBS
2764LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002765AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002766LIBS=$LIBS_SAVE
2767
Guido van Rossumef2255b2000-03-10 22:30:29 +00002768# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002769AC_CHECK_HEADER(wchar.h, [
2770 AC_DEFINE(HAVE_WCHAR_H, 1,
2771 [Define if the compiler provides a wchar.h header file.])
2772 wchar_h="yes"
2773],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002774wchar_h="no"
2775)
2776
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002777# determine wchar_t size
2778if test "$wchar_h" = yes
2779then
Guido van Rossum67b26592001-10-20 14:21:45 +00002780 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002781fi
2782
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002783AC_MSG_CHECKING(for UCS-4 tcl)
2784have_ucs4_tcl=no
2785AC_TRY_COMPILE([
2786#include <tcl.h>
2787#if TCL_UTF_MAX != 6
2788# error "NOT UCS4_TCL"
2789#endif], [], [
2790 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2791 have_ucs4_tcl=yes
2792])
2793AC_MSG_RESULT($have_ucs4_tcl)
2794
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002795# check whether wchar_t is signed or not
2796if test "$wchar_h" = yes
2797then
2798 # check whether wchar_t is signed or not
2799 AC_MSG_CHECKING(whether wchar_t is signed)
2800 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2801 AC_TRY_RUN([
2802 #include <wchar.h>
2803 int main()
2804 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002805 /* Success: exit code 0 */
2806 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002807 }
2808 ],
2809 ac_cv_wchar_t_signed=yes,
2810 ac_cv_wchar_t_signed=no,
2811 ac_cv_wchar_t_signed=yes)])
2812 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2813fi
2814
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002815AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002816dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002817AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002818 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2819 [],
2820 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002821
2822if test $enable_unicode = yes
2823then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002824 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002825 case "$have_ucs4_tcl" in
2826 yes) enable_unicode="ucs4"
2827 ;;
2828 *) enable_unicode="ucs2"
2829 ;;
2830 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002831fi
2832
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002833AH_TEMPLATE(Py_UNICODE_SIZE,
2834 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002835case "$enable_unicode" in
2836ucs2) unicode_size="2"
2837 AC_DEFINE(Py_UNICODE_SIZE,2)
2838 ;;
2839ucs4) unicode_size="4"
2840 AC_DEFINE(Py_UNICODE_SIZE,4)
2841 ;;
2842esac
2843
Martin v. Löwis11437992002-04-12 09:54:03 +00002844AH_TEMPLATE(PY_UNICODE_TYPE,
2845 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002846
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002847AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002848if test "$enable_unicode" = "no"
2849then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002850 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002851 AC_MSG_RESULT(not used)
2852else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002853 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002854 AC_DEFINE(Py_USING_UNICODE, 1,
2855 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002856
2857 # wchar_t is only usable if it maps to an unsigned type
2858 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002859 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002860 then
2861 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002862 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2863 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002864 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002865 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002866 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2867 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2868 then
2869 PY_UNICODE_TYPE="unsigned short"
2870 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2871 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2872 then
2873 PY_UNICODE_TYPE="unsigned long"
2874 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2875 else
2876 PY_UNICODE_TYPE="no type found"
2877 fi
2878 AC_MSG_RESULT($PY_UNICODE_TYPE)
2879fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002880
2881# check for endianness
2882AC_C_BIGENDIAN
2883
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002884# Check whether right shifting a negative integer extends the sign bit
2885# or fills with zeros (like the Cray J90, according to Tim Peters).
2886AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002887AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002888AC_TRY_RUN([
2889int main()
2890{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002891 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002892}
Guido van Rossum3065c942001-09-17 04:03:14 +00002893],
2894ac_cv_rshift_extends_sign=yes,
2895ac_cv_rshift_extends_sign=no,
2896ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002897AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2898if test "$ac_cv_rshift_extends_sign" = no
2899then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002900 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2901 [Define if i>>j for signed int i does not extend the sign bit
2902 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002903fi
2904
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002905# check for getc_unlocked and related locking functions
2906AC_MSG_CHECKING(for getc_unlocked() and friends)
2907AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2908AC_TRY_LINK([#include <stdio.h>],[
2909 FILE *f = fopen("/dev/null", "r");
2910 flockfile(f);
2911 getc_unlocked(f);
2912 funlockfile(f);
2913], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2914AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2915if test "$ac_cv_have_getc_unlocked" = yes
2916then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002917 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2918 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002919fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002920
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002921# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002922# save the value of LIBS so we don't actually link Python with readline
2923LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002924AC_CHECK_LIB(readline, readline)
2925if test "$ac_cv_have_readline_readline" = no
2926then
2927 AC_CHECK_LIB(termcap, readline)
2928fi
2929
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002930# check for readline 2.1
2931AC_CHECK_LIB(readline, rl_callback_handler_install,
2932 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002933 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002934
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002935# check for readline 2.2
2936AC_TRY_CPP([#include <readline/readline.h>],
2937have_readline=yes, have_readline=no)
2938if test $have_readline = yes
2939then
2940 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2941 [readline/readline.h],
2942 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2943 [Define if you have readline 2.2]), )
2944fi
2945
Martin v. Löwis0daad592001-09-30 21:09:59 +00002946# check for readline 4.0
2947AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002948 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002949 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00002950
Guido van Rossum353ae582001-07-10 16:45:32 +00002951# check for readline 4.2
2952AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002953 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002954 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00002955
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002956# also in readline 4.2
2957AC_TRY_CPP([#include <readline/readline.h>],
2958have_readline=yes, have_readline=no)
2959if test $have_readline = yes
2960then
2961 AC_EGREP_HEADER([extern int rl_catch_signals;],
2962 [readline/readline.h],
2963 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2964 [Define if you can turn off readline's signal handling.]), )
2965fi
2966
Martin v. Löwis82bca632006-02-10 20:49:30 +00002967# End of readline checks: restore LIBS
2968LIBS=$LIBS_no_readline
2969
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002970AC_MSG_CHECKING(for broken nice())
2971AC_CACHE_VAL(ac_cv_broken_nice, [
2972AC_TRY_RUN([
2973int main()
2974{
2975 int val1 = nice(1);
2976 if (val1 != -1 && val1 == nice(2))
2977 exit(0);
2978 exit(1);
2979}
Guido van Rossum3065c942001-09-17 04:03:14 +00002980],
2981ac_cv_broken_nice=yes,
2982ac_cv_broken_nice=no,
2983ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002984AC_MSG_RESULT($ac_cv_broken_nice)
2985if test "$ac_cv_broken_nice" = yes
2986then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2988 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002989fi
2990
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002991AC_MSG_CHECKING(for broken poll())
2992AC_TRY_RUN([
2993#include <poll.h>
2994
2995int main (void)
2996 {
2997 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2998
2999 close (42);
3000
3001 int poll_test = poll (&poll_struct, 1, 0);
3002
3003 if (poll_test < 0)
3004 {
3005 exit(0);
3006 }
3007 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3008 {
3009 exit(0);
3010 }
3011 else
3012 {
3013 exit(1);
3014 }
3015 }
3016],
3017ac_cv_broken_poll=yes,
3018ac_cv_broken_poll=no,
3019ac_cv_broken_poll=no)
3020AC_MSG_RESULT($ac_cv_broken_poll)
3021if test "$ac_cv_broken_poll" = yes
3022then
3023 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3024 [Define if poll() sets errno on invalid file descriptors.])
3025fi
3026
Brett Cannon43802422005-02-10 20:48:03 +00003027# Before we can test tzset, we need to check if struct tm has a tm_zone
3028# (which is not required by ISO C or UNIX spec) and/or if we support
3029# tzname[]
3030AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003031
Brett Cannon43802422005-02-10 20:48:03 +00003032# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003033AC_MSG_CHECKING(for working tzset())
3034AC_CACHE_VAL(ac_cv_working_tzset, [
3035AC_TRY_RUN([
3036#include <stdlib.h>
3037#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003038#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003039
3040#if HAVE_TZNAME
3041extern char *tzname[];
3042#endif
3043
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003044int main()
3045{
Brett Cannon18367812003-09-19 00:59:16 +00003046 /* Note that we need to ensure that not only does tzset(3)
3047 do 'something' with localtime, but it works as documented
3048 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003049 This includes making sure that tzname is set properly if
3050 tm->tm_zone does not exist since it is the alternative way
3051 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003052
3053 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003054 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003055 */
3056
Brett Cannon43802422005-02-10 20:48:03 +00003057 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003058 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3059
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003060 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003061 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003062 if (localtime(&groundhogday)->tm_hour != 0)
3063 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003064#if HAVE_TZNAME
3065 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3066 if (strcmp(tzname[0], "UTC") ||
3067 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3068 exit(1);
3069#endif
Brett Cannon18367812003-09-19 00:59:16 +00003070
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003071 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003072 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003073 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003074 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003075#if HAVE_TZNAME
3076 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3077 exit(1);
3078#endif
Brett Cannon18367812003-09-19 00:59:16 +00003079
3080 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3081 tzset();
3082 if (localtime(&groundhogday)->tm_hour != 11)
3083 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003084#if HAVE_TZNAME
3085 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3086 exit(1);
3087#endif
3088
3089#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003090 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3091 exit(1);
3092 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3093 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003094#endif
Brett Cannon18367812003-09-19 00:59:16 +00003095
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003096 exit(0);
3097}
3098],
3099ac_cv_working_tzset=yes,
3100ac_cv_working_tzset=no,
3101ac_cv_working_tzset=no)])
3102AC_MSG_RESULT($ac_cv_working_tzset)
3103if test "$ac_cv_working_tzset" = yes
3104then
3105 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3106 [Define if tzset() actually switches the local timezone in a meaningful way.])
3107fi
3108
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003109# Look for subsecond timestamps in struct stat
3110AC_MSG_CHECKING(for tv_nsec in struct stat)
3111AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3112AC_TRY_COMPILE([#include <sys/stat.h>], [
3113struct stat st;
3114st.st_mtim.tv_nsec = 1;
3115],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003116ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003117ac_cv_stat_tv_nsec=no,
3118ac_cv_stat_tv_nsec=no))
3119AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3120if test "$ac_cv_stat_tv_nsec" = yes
3121then
3122 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3123 [Define if you have struct stat.st_mtim.tv_nsec])
3124fi
3125
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003126# Look for BSD style subsecond timestamps in struct stat
3127AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3128AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3129AC_TRY_COMPILE([#include <sys/stat.h>], [
3130struct stat st;
3131st.st_mtimespec.tv_nsec = 1;
3132],
3133ac_cv_stat_tv_nsec2=yes,
3134ac_cv_stat_tv_nsec2=no,
3135ac_cv_stat_tv_nsec2=no))
3136AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3137if test "$ac_cv_stat_tv_nsec2" = yes
3138then
3139 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3140 [Define if you have struct stat.st_mtimensec])
3141fi
3142
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003143# On HP/UX 11.0, mvwdelch is a block with a return statement
3144AC_MSG_CHECKING(whether mvwdelch is an expression)
3145AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3146AC_TRY_COMPILE([#include <curses.h>], [
3147 int rtn;
3148 rtn = mvwdelch(0,0,0);
3149], ac_cv_mvwdelch_is_expression=yes,
3150 ac_cv_mvwdelch_is_expression=no,
3151 ac_cv_mvwdelch_is_expression=yes))
3152AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3153
3154if test "$ac_cv_mvwdelch_is_expression" = yes
3155then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003156 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3157 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003158fi
3159
3160AC_MSG_CHECKING(whether WINDOW has _flags)
3161AC_CACHE_VAL(ac_cv_window_has_flags,
3162AC_TRY_COMPILE([#include <curses.h>], [
3163 WINDOW *w;
3164 w->_flags = 0;
3165], ac_cv_window_has_flags=yes,
3166 ac_cv_window_has_flags=no,
3167 ac_cv_window_has_flags=no))
3168AC_MSG_RESULT($ac_cv_window_has_flags)
3169
3170
3171if test "$ac_cv_window_has_flags" = yes
3172then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003173 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3174 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003175fi
3176
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003177AC_MSG_CHECKING(for /dev/ptmx)
3178
3179if test -e /dev/ptmx
3180then
3181 AC_MSG_RESULT(yes)
3182 AC_DEFINE(HAVE_DEV_PTMX, 1,
3183 [Define if we have /dev/ptmx.])
3184else
3185 AC_MSG_RESULT(no)
3186fi
3187
Neal Norwitz865400f2003-03-21 01:42:58 +00003188AC_MSG_CHECKING(for /dev/ptc)
3189
3190if test -e /dev/ptc
3191then
3192 AC_MSG_RESULT(yes)
3193 AC_DEFINE(HAVE_DEV_PTC, 1,
3194 [Define if we have /dev/ptc.])
3195else
3196 AC_MSG_RESULT(no)
3197fi
3198
Martin v. Löwis01c04012002-11-11 14:58:44 +00003199AC_CHECK_TYPE(socklen_t,,
3200 AC_DEFINE(socklen_t,int,
3201 Define to `int' if <sys/socket.h> does not define.),[
3202#ifdef HAVE_SYS_TYPES_H
3203#include <sys/types.h>
3204#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003205#ifdef HAVE_SYS_SOCKET_H
3206#include <sys/socket.h>
3207#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003208])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003209
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003210AC_SUBST(THREADHEADERS)
3211
3212for h in `(cd $srcdir;echo Python/thread_*.h)`
3213do
3214 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3215done
3216
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003217AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003218SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003219AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003220for dir in $SRCDIRS; do
3221 if test ! -d $dir; then
3222 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003223 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003224done
3225AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003226
Guido van Rossum627b2d71993-12-24 10:39:16 +00003227# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003228AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3229AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003230
3231echo "creating Setup"
3232if test ! -f Modules/Setup
3233then
3234 cp $srcdir/Modules/Setup.dist Modules/Setup
3235fi
3236
3237echo "creating Setup.local"
3238if test ! -f Modules/Setup.local
3239then
3240 echo "# Edit this file for local setup changes" >Modules/Setup.local
3241fi
3242
3243echo "creating Makefile"
3244$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3245 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003246 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003247mv config.c Modules