blob: 168c621aeb7aec348bdfa85b5d276f478abf1a9e [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
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
64 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
65[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
100 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000101 ;;
102 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000103 PYTHONFRAMEWORK=Python
104 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000105 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000106 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
107 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000108 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000109 ],[
110 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000111 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000112 PYTHONFRAMEWORKPREFIX=
113 PYTHONFRAMEWORKINSTALLDIR=
114 enable_framework=
115])
116AC_SUBST(PYTHONFRAMEWORK)
117AC_SUBST(PYTHONFRAMEWORKDIR)
118AC_SUBST(PYTHONFRAMEWORKPREFIX)
119AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000120
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000121##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000122## AC_HELP_STRING(--with-dyld,
123## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000124##
Guido van Rossumb418f891996-07-30 18:06:02 +0000125# Set name for machine-dependent library files
126AC_SUBST(MACHDEP)
127AC_MSG_CHECKING(MACHDEP)
128if test -z "$MACHDEP"
129then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000130 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000131 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
132 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000133 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000134 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000135 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000136 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000137 ac_md_system=`echo $ac_sys_system |
138 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
139 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000140 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000141 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000142
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000143 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000144 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000145 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000146 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000147 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000148 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000149 esac
150fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000151
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000152# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
153# disable features if it is defined, without any means to access these
154# features as extensions. For these systems, we skip the definition of
155# _XOPEN_SOURCE. Before adding a system to the list to gain access to
156# some feature, make sure there is no alternative way to access this
157# feature. Also, when using wildcards, make sure you have verified the
158# need for not defining _XOPEN_SOURCE on all systems matching the
159# wildcard, and that the wildcard does not include future systems
160# (which may remove their limitations).
161dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
162case $ac_sys_system/$ac_sys_release in
163 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
164 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000165 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz671b9e32006-01-09 07:07:12 +0000166 OpenBSD/2.* | OpenBSD/3.@<:@012345678@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000167 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000168 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
169 # of union __?sigval. Reported by Stuart Bishop.
170 SunOS/5.6)
171 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000172 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
173 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000174 # Reconfirmed for 7.1.4 by Martin v. Loewis.
175 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000176 define_xopen_source=no;;
177 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000178 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000179 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000180 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000181 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
182 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
183 # this is fixed in 10.3, which identifies itself as Darwin/7.*
184 # This should hopefully be fixed in FreeBSD 4.9
185 FreeBSD/4.8* | Darwin/6* )
186 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000187 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
188 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
189 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000190 AIX/4)
191 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000192 AIX/5)
193 if test `uname -r` -eq 1; then
194 define_xopen_source=no
195 fi
196 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000197 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
198 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000199 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
200 # has no effect, don't bother defineing them
201 Darwin/@<:@78@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000202 define_xopen_source=no
203 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000204
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000205esac
206
207if test $define_xopen_source = yes
208then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000209 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
210 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000211 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
212 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000213 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000214 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000215 AC_DEFINE(_XOPEN_SOURCE, 500,
216 Define to the level of X/Open that your system supports)
217 ;;
218 *)
219 AC_DEFINE(_XOPEN_SOURCE, 600,
220 Define to the level of X/Open that your system supports)
221 ;;
222 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000223
224 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
225 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
226 # several APIs are not declared. Since this is also needed in some
227 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000228 # except for Solaris 10, where it must not be defined,
229 # as it implies XPG4.2
230 case $ac_sys_system/$ac_sys_release in
231 SunOS/5.10)
232 ;;
233 *)
234 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
235 Define to activate Unix95-and-earlier features)
236 ;;
237 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000238
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000239 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
240
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000241fi
242
Guido van Rossum91922671997-10-09 20:24:13 +0000243#
244# SGI compilers allow the specification of the both the ABI and the
245# ISA on the command line. Depending on the values of these switches,
246# different and often incompatable code will be generated.
247#
248# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
249# thus supply support for various ABI/ISA combinations. The MACHDEP
250# variable is also adjusted.
251#
252AC_SUBST(SGI_ABI)
253if test ! -z "$SGI_ABI"
254then
255 CC="cc $SGI_ABI"
256 LDFLAGS="$SGI_ABI $LDFLAGS"
257 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
258fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000259AC_MSG_RESULT($MACHDEP)
260
Jack Jansen83f898c2002-12-30 22:23:40 +0000261# And add extra plat-mac for darwin
262AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000263AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000264AC_MSG_CHECKING(EXTRAPLATDIR)
265if test -z "$EXTRAPLATDIR"
266then
267 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000268 darwin)
269 EXTRAPLATDIR="\$(PLATMACDIRS)"
270 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
271 ;;
272 *)
273 EXTRAPLATDIR=""
274 EXTRAMACHDEPPATH=""
275 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000276 esac
277fi
278AC_MSG_RESULT($EXTRAPLATDIR)
279
Jack Jansen6b08a402004-06-03 12:41:45 +0000280# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
281# it may influence the way we can build extensions, so distutils
282# needs to check it
283AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000284AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000285CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000286EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000287
Guido van Rossum627b2d71993-12-24 10:39:16 +0000288# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000289
290# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
291# for debug/optimization stuff. BASECFLAGS is for flags that are required
292# just to get things to compile and link. Users are free to override OPT
293# when running configure or make. The build should not break if they do.
294# BASECFLAGS should generally not be messed with, however.
295
296# XXX shouldn't some/most/all of this code be merged with the stuff later
297# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000298AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000299AC_ARG_WITH(gcc,
300 AC_HELP_STRING(--without-gcc,never use gcc),
301[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000302 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000303 no) CC=cc
304 without_gcc=yes;;
305 yes) CC=gcc
306 without_gcc=no;;
307 *) CC=$withval
308 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000309 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000310 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000311 AIX*) CC=cc_r
312 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000313 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000314 case $BE_HOST_CPU in
315 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000316 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000317 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000318 BASECFLAGS="$BASECFLAGS -export pragma"
319 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000320 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000321 ;;
322 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000323 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000324 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000325 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000326 ;;
327 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000328 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000329 ;;
330 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000331 AR="\$(srcdir)/Modules/ar_beos"
332 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000333 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000334 Monterey*)
335 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000336 without_gcc=;;
337 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000338 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000339AC_MSG_RESULT($without_gcc)
340
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000341# If the user switches compilers, we can't believe the cache
342if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
343then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000344 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
345(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000346fi
347
Guido van Rossum627b2d71993-12-24 10:39:16 +0000348AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000349
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000350AC_SUBST(CXX)
351AC_SUBST(MAINCC)
352AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
353AC_ARG_WITH(cxx_main,
354 AC_HELP_STRING([--with-cxx-main=<compiler>],
355 [compile main() and link python executable with C++ compiler]),
356[
357
358 case $withval in
359 no) with_cxx_main=no
360 MAINCC='$(CC)';;
361 yes) with_cxx_main=yes
362 MAINCC='$(CXX)';;
363 *) with_cxx_main=yes
364 MAINCC=$withval
365 if test -z "$CXX"
366 then
367 CXX=$withval
368 fi;;
369 esac], [
370 with_cxx_main=no
371 MAINCC='$(CC)'
372])
373AC_MSG_RESULT($with_cxx_main)
374
375preset_cxx="$CXX"
376if test -z "$CXX"
377then
378 case "$CC" in
379 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
380 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
381 esac
382 if test "$CXX" = "notfound"
383 then
384 CXX=""
385 fi
386fi
387if test -z "$CXX"
388then
389 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
390 if test "$CXX" = "notfound"
391 then
392 CXX=""
393 fi
394fi
395if test "$preset_cxx" != "$CXX"
396then
397 AC_MSG_WARN([
398
399 By default, distutils will build C++ extension modules with "$CXX".
400 If this is not intended, then set CXX on the configure command line.
401 ])
402fi
403
404
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000405# checks for UNIX variants that set C preprocessor variables
406AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000407
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000408# Check for unsupported systems
409case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000410Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000411 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
412 echo See README for details.
413 exit 1;;
414esac
415
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000416AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000417AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000418AC_ARG_WITH(suffix,
419 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
420[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000421 case $withval in
422 no) EXEEXT=;;
423 yes) EXEEXT=.exe;;
424 *) EXEEXT=$withval;;
425 esac])
426AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000427
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000428# Test whether we're running on a non-case-sensitive system, in which
429# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000430AC_SUBST(BUILDEXEEXT)
431AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000432if test ! -d CaseSensitiveTestDir; then
433mkdir CaseSensitiveTestDir
434fi
435
436if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000437then
Jack Jansen1999ef42001-12-06 21:47:20 +0000438 AC_MSG_RESULT(yes)
439 BUILDEXEEXT=.exe
440else
441 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000442 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000443fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000444rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000445
Guido van Rossumdd997f71998-10-07 19:58:26 +0000446case $MACHDEP in
447bsdos*)
448 case $CC in
449 gcc) CC="$CC -D_HAVE_BSDI";;
450 esac;;
451esac
452
Guido van Rossum84561611997-08-21 00:08:11 +0000453case $ac_sys_system in
454hp*|HP*)
455 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000456 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000457 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000458Monterey*)
459 case $CC in
460 cc) CC="$CC -Wl,-Bexport";;
461 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000462SunOS*)
463 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000464 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000465 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000466esac
467
Martin v. Löwise8964d42001-03-06 12:09:07 +0000468
Neil Schemenauer61c51152001-01-26 16:18:16 +0000469AC_SUBST(LIBRARY)
470AC_MSG_CHECKING(LIBRARY)
471if test -z "$LIBRARY"
472then
473 LIBRARY='libpython$(VERSION).a'
474fi
475AC_MSG_RESULT($LIBRARY)
476
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000477# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000478# name of the library into which to insert object files). BLDLIBRARY is also
479# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
480# is blank as the main program is not linked directly against LDLIBRARY.
481# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
482# systems without shared libraries, LDLIBRARY is the same as LIBRARY
483# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
484# DLLLIBRARY is the shared (i.e., DLL) library.
485#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000486# RUNSHARED is used to run shared python without installed libraries
487#
488# INSTSONAME is the name of the shared library that will be use to install
489# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000490AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000491AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000492AC_SUBST(BLDLIBRARY)
493AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000494AC_SUBST(INSTSONAME)
495AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000496LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000497BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000498INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000499DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000500LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000501RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000502
Guido van Rossumfb842551997-08-06 23:42:07 +0000503# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000504# If CXX is set, and if it is needed to link a main function that was
505# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
506# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000507# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000508# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000509AC_SUBST(LINKCC)
510AC_MSG_CHECKING(LINKCC)
511if test -z "$LINKCC"
512then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000513 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000514 case $ac_sys_system in
515 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000516 exp_extra="\"\""
517 if test $ac_sys_release -ge 5 -o \
518 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
519 exp_extra="."
520 fi
521 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000522 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000523 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000524 esac
525fi
526AC_MSG_RESULT($LINKCC)
527
Martin v. Löwis1142de32002-03-29 16:28:31 +0000528AC_MSG_CHECKING(for --enable-shared)
529AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000530 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000531
Martin v. Löwis1142de32002-03-29 16:28:31 +0000532if test -z "$enable_shared"
533then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000534 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000535 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000536 enable_shared="yes";;
537 *)
538 enable_shared="no";;
539 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000540fi
541AC_MSG_RESULT($enable_shared)
542
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000543AC_MSG_CHECKING(for --enable-profiling)
544AC_ARG_ENABLE(profiling,
545 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
546[ac_save_cc="$CC"
547 CC="$CC -pg"
548 AC_TRY_RUN([int main() { return 0; }],
549 ac_enable_profiling="yes",
550 ac_enable_profiling="no",
551 ac_enable_profiling="no")
552 CC="$ac_save_cc"])
553AC_MSG_RESULT($ac_enable_profiling)
554
555case "$ac_enable_profiling" in
556 "yes")
557 BASECFLAGS="-pg $BASECFLAGS"
558 LDFLAGS="-pg $LDFLAGS"
559 ;;
560esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000561
562AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000563
Guido van Rossumb8552162001-09-05 14:58:11 +0000564# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
565# library that we build, but we do not want to link against it (we
566# will find it with a -framework option). For this reason there is an
567# extra variable BLDLIBRARY against which Python and the extension
568# modules are linked, BLDLIBRARY. This is normally the same as
569# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000570if test "$enable_framework"
571then
572 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000573 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000574 BLDLIBRARY=''
575else
576 BLDLIBRARY='$(LDLIBRARY)'
577fi
578
Martin v. Löwis1142de32002-03-29 16:28:31 +0000579# Other platforms follow
580if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000581 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000582 case $ac_sys_system in
583 BeOS*)
584 LDLIBRARY='libpython$(VERSION).so'
585 ;;
586 CYGWIN*)
587 LDLIBRARY='libpython$(VERSION).dll.a'
588 DLLLIBRARY='libpython$(VERSION).dll'
589 ;;
590 SunOS*)
591 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000592 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000593 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000594 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000595 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000596 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000597 LDLIBRARY='libpython$(VERSION).so'
598 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000599 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000600 case $ac_sys_system in
601 FreeBSD*)
602 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
603 ;;
604 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605 INSTSONAME="$LDLIBRARY".$SOVERSION
606 ;;
607 hp*|HP*)
608 LDLIBRARY='libpython$(VERSION).sl'
609 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000610 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000611 ;;
612 OSF*)
613 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000614 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000615 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000616 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000617 atheos*)
618 LDLIBRARY='libpython$(VERSION).so'
619 BLDLIBRARY='-L. -lpython$(VERSION)'
620 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
621 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000622 esac
Jason Tishler30765592003-09-04 11:04:06 +0000623else # shared is disabled
624 case $ac_sys_system in
625 CYGWIN*)
626 BLDLIBRARY='$(LIBRARY)'
627 LDLIBRARY='libpython$(VERSION).dll.a'
628 ;;
629 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630fi
631
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000632AC_MSG_RESULT($LDLIBRARY)
633
Guido van Rossum627b2d71993-12-24 10:39:16 +0000634AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000635AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000636AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000637
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000638AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000639AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000640if test $SVNVERSION = found
641then
642 SVNVERSION="svnversion \$(srcdir)"
643else
644 SVNVERSION="echo exported"
645fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000646
Neil Schemenauera42c8272001-03-31 00:01:55 +0000647case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000648bsdos*|hp*|HP*)
649 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000650 if test -z "$INSTALL"
651 then
652 INSTALL="${srcdir}/install-sh -c"
653 fi
654esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000655AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000656
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000657# Not every filesystem supports hard links
658AC_SUBST(LN)
659if test -z "$LN" ; then
660 case $ac_sys_system in
661 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000662 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000663 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000664 *) LN=ln;;
665 esac
666fi
667
Fred Drake9f715822001-07-11 06:27:00 +0000668# Check for --with-pydebug
669AC_MSG_CHECKING(for --with-pydebug)
670AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000671 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
672[
Fred Drake9f715822001-07-11 06:27:00 +0000673if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000674then
675 AC_DEFINE(Py_DEBUG, 1,
676 [Define if you want to build an interpreter with many run-time checks.])
677 AC_MSG_RESULT(yes);
678 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000679else AC_MSG_RESULT(no); Py_DEBUG='false'
680fi],
681[AC_MSG_RESULT(no)])
682
Skip Montanarodecc6a42003-01-01 20:07:49 +0000683# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
684# merged with this chunk of code?
685
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000686# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000687# ------------------------
688# (The following bit of code is complicated enough - please keep things
689# indented properly. Just pretend you're editing Python code. ;-)
690
691# There are two parallel sets of case statements below, one that checks to
692# see if OPT was set and one that does BASECFLAGS setting based upon
693# compiler and platform. BASECFLAGS tweaks need to be made even if the
694# user set OPT.
695
696# tweak OPT based on compiler and platform, only if the user didn't set
697# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000698AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000699if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000700then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000701 case $GCC in
702 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000703 if test "$CC" != 'g++' ; then
704 STRICT_PROTO="-Wstrict-prototypes"
705 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000706 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000707 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000708 if test "$Py_DEBUG" = 'true' ; then
709 # Optimization messes up debuggers, so turn it off for
710 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000711 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000712 else
Skip Montanaro288a5be2006-04-13 02:00:56 +0000713 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000714 fi
715 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000716 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000717 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000718 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000719 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000720 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000721 SCO_SV*) OPT="$OPT -m486 -DSCO5"
722 ;;
723 esac
Fred Drake9f715822001-07-11 06:27:00 +0000724 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000725
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000726 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 OPT="-O"
728 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000729 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000730
731 # The current (beta) Monterey compiler dies with optimizations
732 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000733 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000734 Monterey*)
735 OPT=""
736 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000737 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000738
Guido van Rossum4e8af441994-08-19 15:33:54 +0000739fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000740
Skip Montanarodecc6a42003-01-01 20:07:49 +0000741AC_SUBST(BASECFLAGS)
742# tweak BASECFLAGS based on compiler and platform
743case $GCC in
744yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000745 # Python violates C99 rules, by casting between incompatible
746 # pointer types. GCC may generate bad code as a result of that,
747 # so use -fno-strict-aliasing if supported.
748 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
749 ac_save_cc="$CC"
750 CC="$CC -fno-strict-aliasing"
751 AC_TRY_RUN([int main() { return 0; }],
752 ac_cv_no_strict_aliasing_ok=yes,
753 ac_cv_no_strict_aliasing_ok=no,
754 ac_cv_no_strict_aliasing_ok=no)
755 CC="$ac_save_cc"
756 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
757 if test $ac_cv_no_strict_aliasing_ok = yes
758 then
759 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
760 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000761 case $ac_sys_system in
762 SCO_SV*)
763 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
764 ;;
765 # is there any other compiler on Darwin besides gcc?
766 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000767 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000768 if test "${enable_universalsdk}"; then
769 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
770 fi
771
Skip Montanarodecc6a42003-01-01 20:07:49 +0000772 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000773 OSF*)
774 BASECFLAGS="$BASECFLAGS -mieee"
775 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000776 esac
777 ;;
778
779*)
780 case $ac_sys_system in
781 OpenUNIX*|UnixWare*)
782 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
783 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000784 OSF*)
785 BASECFLAGS="$BASECFLAGS -ieee -std"
786 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000787 SCO_SV*)
788 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
789 ;;
790 esac
791 ;;
792esac
793
Fred Drakee1ceaa02001-12-04 20:55:47 +0000794if test "$Py_DEBUG" = 'true'; then
795 :
796else
797 OPT="-DNDEBUG $OPT"
798fi
799
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000800if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000801then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000803fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000804
Neal Norwitz020c46a2006-01-07 21:39:28 +0000805# disable check for icc since it seems to pass, but generates a warning
806if test "$CC" = icc
807then
808 ac_cv_opt_olimit_ok=no
809fi
810
Guido van Rossum91922671997-10-09 20:24:13 +0000811AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
812AC_CACHE_VAL(ac_cv_opt_olimit_ok,
813[ac_save_cc="$CC"
814CC="$CC -OPT:Olimit=0"
815AC_TRY_RUN([int main() { return 0; }],
816 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000817 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000818 ac_cv_opt_olimit_ok=no)
819CC="$ac_save_cc"])
820AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000821if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000822 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
824 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
825 # environment?
826 Darwin*)
827 ;;
828 *)
829 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
830 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000831 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000832else
833 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
834 AC_CACHE_VAL(ac_cv_olimit_ok,
835 [ac_save_cc="$CC"
836 CC="$CC -Olimit 1500"
837 AC_TRY_RUN([int main() { return 0; }],
838 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000839 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000840 ac_cv_olimit_ok=no)
841 CC="$ac_save_cc"])
842 AC_MSG_RESULT($ac_cv_olimit_ok)
843 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000845 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000846fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000847
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000848# On some compilers, pthreads are available without further options
849# (e.g. MacOS X). On some of these systems, the compiler will not
850# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
851# So we have to see first whether pthreads are available without
852# options before we can check whether -Kpthread improves anything.
853AC_MSG_CHECKING(whether pthreads are available without options)
854AC_CACHE_VAL(ac_cv_pthread_is_default,
855[AC_TRY_RUN([
856#include <pthread.h>
857
858void* routine(void* p){return NULL;}
859
860int main(){
861 pthread_t p;
862 if(pthread_create(&p,NULL,routine,NULL)!=0)
863 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000864 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000865 return 0;
866}
867],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000868[
869 ac_cv_pthread_is_default=yes
870 ac_cv_kthread=no
871 ac_cv_pthread=no
872],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000873 ac_cv_pthread_is_default=no,
874 ac_cv_pthread_is_default=no)
875])
876AC_MSG_RESULT($ac_cv_pthread_is_default)
877
878
879if test $ac_cv_pthread_is_default = yes
880then
881 ac_cv_kpthread=no
882else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000883# -Kpthread, if available, provides the right #defines
884# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000885# Some compilers won't report that they do not support -Kpthread,
886# so we need to run a program to see whether it really made the
887# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000888AC_MSG_CHECKING(whether $CC accepts -Kpthread)
889AC_CACHE_VAL(ac_cv_kpthread,
890[ac_save_cc="$CC"
891CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000892AC_TRY_RUN([
893#include <pthread.h>
894
895void* routine(void* p){return NULL;}
896
897int main(){
898 pthread_t p;
899 if(pthread_create(&p,NULL,routine,NULL)!=0)
900 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000901 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000902 return 0;
903}
904],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000905 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000906 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000907 ac_cv_kpthread=no)
908CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000909AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000910fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000911
Skip Montanarod8d39a02003-07-10 20:44:10 +0000912if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000913then
914# -Kthread, if available, provides the right #defines
915# and linker options to make pthread_create available
916# Some compilers won't report that they do not support -Kthread,
917# so we need to run a program to see whether it really made the
918# function available.
919AC_MSG_CHECKING(whether $CC accepts -Kthread)
920AC_CACHE_VAL(ac_cv_kthread,
921[ac_save_cc="$CC"
922CC="$CC -Kthread"
923AC_TRY_RUN([
924#include <pthread.h>
925
926void* routine(void* p){return NULL;}
927
928int main(){
929 pthread_t p;
930 if(pthread_create(&p,NULL,routine,NULL)!=0)
931 return 1;
932 (void)pthread_detach(p);
933 return 0;
934}
935],
936 ac_cv_kthread=yes,
937 ac_cv_kthread=no,
938 ac_cv_kthread=no)
939CC="$ac_save_cc"])
940AC_MSG_RESULT($ac_cv_kthread)
941fi
942
Skip Montanarod8d39a02003-07-10 20:44:10 +0000943if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000944then
945# -pthread, if available, provides the right #defines
946# and linker options to make pthread_create available
947# Some compilers won't report that they do not support -pthread,
948# so we need to run a program to see whether it really made the
949# function available.
950AC_MSG_CHECKING(whether $CC accepts -pthread)
951AC_CACHE_VAL(ac_cv_thread,
952[ac_save_cc="$CC"
953CC="$CC -pthread"
954AC_TRY_RUN([
955#include <pthread.h>
956
957void* routine(void* p){return NULL;}
958
959int main(){
960 pthread_t p;
961 if(pthread_create(&p,NULL,routine,NULL)!=0)
962 return 1;
963 (void)pthread_detach(p);
964 return 0;
965}
966],
967 ac_cv_pthread=yes,
968 ac_cv_pthread=no,
969 ac_cv_pthread=no)
970CC="$ac_save_cc"])
971AC_MSG_RESULT($ac_cv_pthread)
972fi
973
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000974# If we have set a CC compiler flag for thread support then
975# check if it works for CXX, too.
976ac_cv_cxx_thread=no
977if test ! -z "$CXX"
978then
979AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
980ac_save_cxx="$CXX"
981
982if test "$ac_cv_kpthread" = "yes"
983then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000984 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000985 ac_cv_cxx_thread=yes
986elif test "$ac_cv_kthread" = "yes"
987then
988 CXX="$CXX -Kthread"
989 ac_cv_cxx_thread=yes
990elif test "$ac_cv_pthread" = "yes"
991then
992 CXX="$CXX -pthread"
993 ac_cv_cxx_thread=yes
994fi
995
996if test $ac_cv_cxx_thread = yes
997then
998 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
999 $CXX -c conftest.$ac_ext 2>&5
1000 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1001 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1002 then
1003 ac_cv_cxx_thread=yes
1004 else
1005 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001006 fi
1007 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001008fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001009AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001010fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001011CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001012
Fred Drakece81d592000-07-09 14:39:29 +00001013dnl # check for ANSI or K&R ("traditional") preprocessor
1014dnl AC_MSG_CHECKING(for C preprocessor type)
1015dnl AC_TRY_COMPILE([
1016dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1017dnl int foo;
1018dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1019dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1020dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001021
Guido van Rossum627b2d71993-12-24 10:39:16 +00001022# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001023AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001024AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1025shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001026stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001027unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001028sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1029sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +00001030sys/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 +00001031sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001032sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1033bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001034AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001035AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001036
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001037# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001038AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001039#ifdef HAVE_CURSES_H
1040#include <curses.h>
1041#endif
1042])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001043
Martin v. Löwis11017b12006-01-14 18:12:57 +00001044# On Linux, netlink.h requires asm/types.h
1045AC_CHECK_HEADERS(linux/netlink.h,,,[
1046#ifdef HAVE_ASM_TYPES_H
1047#include <asm/types.h>
1048#endif
1049#ifdef HAVE_SYS_SOCKET_H
1050#include <sys/socket.h>
1051#endif
1052])
1053
Guido van Rossum627b2d71993-12-24 10:39:16 +00001054# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001055was_it_defined=no
1056AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001057AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1058 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1059])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001060AC_MSG_RESULT($was_it_defined)
1061
Neal Norwitz11690112002-07-30 01:08:28 +00001062# Check whether using makedev requires defining _OSF_SOURCE
1063AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001064AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001065 [ makedev(0, 0) ],
1066 ac_cv_has_makedev=yes,
1067 ac_cv_has_makedev=no)
1068if test "$ac_cv_has_makedev" = "no"; then
1069 # we didn't link, try if _OSF_SOURCE will allow us to link
1070 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001071#define _OSF_SOURCE 1
1072#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001073 ],
1074 [ makedev(0, 0) ],
1075 ac_cv_has_makedev=yes,
1076 ac_cv_has_makedev=no)
1077 if test "$ac_cv_has_makedev" = "yes"; then
1078 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1079 fi
1080fi
1081AC_MSG_RESULT($ac_cv_has_makedev)
1082if test "$ac_cv_has_makedev" = "yes"; then
1083 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1084fi
1085
Martin v. Löwis399a6892002-10-04 10:22:02 +00001086# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1087# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1088# defined, but the compiler does not support pragma redefine_extname,
1089# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1090# structures (such as rlimit64) without declaring them. As a
1091# work-around, disable LFS on such configurations
1092
1093use_lfs=yes
1094AC_MSG_CHECKING(Solaris LFS bug)
1095AC_TRY_COMPILE([
1096#define _LARGEFILE_SOURCE 1
1097#define _FILE_OFFSET_BITS 64
1098#include <sys/resource.h>
1099],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1100AC_MSG_RESULT($sol_lfs_bug)
1101if test "$sol_lfs_bug" = "yes"; then
1102 use_lfs=no
1103fi
1104
1105if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001106# Two defines needed to enable largefile support on various platforms
1107# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001108AC_DEFINE(_LARGEFILE_SOURCE, 1,
1109[This must be defined on some systems to enable large file support.])
1110AC_DEFINE(_FILE_OFFSET_BITS, 64,
1111[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001112fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001113
Guido van Rossum300fda71996-08-19 21:58:16 +00001114# Add some code to confdefs.h so that the test for off_t works on SCO
1115cat >> confdefs.h <<\EOF
1116#if defined(SCO_DS)
1117#undef _OFF_T
1118#endif
1119EOF
1120
Guido van Rossumef2255b2000-03-10 22:30:29 +00001121# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001122AC_TYPE_MODE_T
1123AC_TYPE_OFF_T
1124AC_TYPE_PID_T
1125AC_TYPE_SIGNAL
1126AC_TYPE_SIZE_T
1127AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001128AC_CHECK_TYPE(ssize_t,
1129 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001130
Guido van Rossumef2255b2000-03-10 22:30:29 +00001131# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001132# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001133AC_CHECK_SIZEOF(int, 4)
1134AC_CHECK_SIZEOF(long, 4)
1135AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001136AC_CHECK_SIZEOF(short, 2)
1137AC_CHECK_SIZEOF(float, 4)
1138AC_CHECK_SIZEOF(double, 8)
1139AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001140AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001141
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001142AC_MSG_CHECKING(for long long support)
1143have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001144AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1145 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1146 have_long_long=yes
1147])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001148AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001149if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001150AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001151fi
1152
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001153AC_MSG_CHECKING(for uintptr_t support)
1154have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001155AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1156 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1157 have_uintptr_t=yes
1158])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001159AC_MSG_RESULT($have_uintptr_t)
1160if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001161AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001162fi
1163
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001164# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1165AC_MSG_CHECKING(size of off_t)
1166AC_CACHE_VAL(ac_cv_sizeof_off_t,
1167[AC_TRY_RUN([#include <stdio.h>
1168#include <sys/types.h>
1169main()
1170{
1171 FILE *f=fopen("conftestval", "w");
1172 if (!f) exit(1);
1173 fprintf(f, "%d\n", sizeof(off_t));
1174 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001175}],
1176ac_cv_sizeof_off_t=`cat conftestval`,
1177ac_cv_sizeof_off_t=0,
1178ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001179])
1180AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001181AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1182[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001183
1184AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001185if test "$have_long_long" = yes -a \
1186 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1187 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001188 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1189 [Defined to enable large file support when an off_t is bigger than a long
1190 and long long is available and at least as big as an off_t. You may need
1191 to add some flags for configuration and compilation to enable this mode.
1192 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001193 AC_MSG_RESULT(yes)
1194else
1195 AC_MSG_RESULT(no)
1196fi
1197
Fred Drakea3f6e912000-06-29 20:44:47 +00001198# AC_CHECK_SIZEOF() doesn't include <time.h>.
1199AC_MSG_CHECKING(size of time_t)
1200AC_CACHE_VAL(ac_cv_sizeof_time_t,
1201[AC_TRY_RUN([#include <stdio.h>
1202#include <time.h>
1203main()
1204{
1205 FILE *f=fopen("conftestval", "w");
1206 if (!f) exit(1);
1207 fprintf(f, "%d\n", sizeof(time_t));
1208 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001209}],
1210ac_cv_sizeof_time_t=`cat conftestval`,
1211ac_cv_sizeof_time_t=0,
1212ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001213])
1214AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001215AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1216[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001217
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001218
Trent Mick635f6fb2000-08-23 21:33:05 +00001219# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001220ac_save_cc="$CC"
1221if test "$ac_cv_kpthread" = "yes"
1222then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001223elif test "$ac_cv_kthread" = "yes"
1224then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001225elif test "$ac_cv_pthread" = "yes"
1226then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001227fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001228AC_MSG_CHECKING(for pthread_t)
1229have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001230AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001231AC_MSG_RESULT($have_pthread_t)
1232if test "$have_pthread_t" = yes ; then
1233 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1234 AC_MSG_CHECKING(size of pthread_t)
1235 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1236 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001237#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001238 main()
1239 {
1240 FILE *f=fopen("conftestval", "w");
1241 if (!f) exit(1);
1242 fprintf(f, "%d\n", sizeof(pthread_t));
1243 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001244 }],
1245 ac_cv_sizeof_pthread_t=`cat conftestval`,
1246 ac_cv_sizeof_pthread_t=0,
1247 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001248 ])
1249 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001250 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1251 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001252fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001253CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001254
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001255AC_MSG_CHECKING(for --enable-toolbox-glue)
1256AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001257 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001258
1259if test -z "$enable_toolbox_glue"
1260then
1261 case $ac_sys_system/$ac_sys_release in
1262 Darwin/*)
1263 enable_toolbox_glue="yes";;
1264 *)
1265 enable_toolbox_glue="no";;
1266 esac
1267fi
1268case "$enable_toolbox_glue" in
1269yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001270 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001271 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001272 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1273 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001274 ;;
1275*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001276 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001277 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001278 ;;
1279esac
1280AC_MSG_RESULT($enable_toolbox_glue)
1281
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001282AC_SUBST(OTHER_LIBTOOL_OPT)
1283case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001284 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001285 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1286 ;;
1287 Darwin/*)
1288 OTHER_LIBTOOL_OPT=""
1289 ;;
1290esac
1291
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001292AC_SUBST(LIBTOOL_CRUFT)
1293case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001294 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001295 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1296 if test "${enable_universalsdk}"; then
1297 :
1298 else
1299 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1300 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001301 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001302 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001303 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001304 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1305 if test ${gcc_version} '<' 4.0
1306 then
1307 LIBTOOL_CRUFT="-lcc_dynamic"
1308 else
1309 LIBTOOL_CRUFT=""
1310 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001311 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001312 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001313 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001314esac
1315
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001316AC_MSG_CHECKING(for --enable-framework)
1317if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001318then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001319 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001320 # -F. is needed to allow linking to the framework while
1321 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001322 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1323 [Define if you want to produce an OpenStep/Rhapsody framework
1324 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001325 AC_MSG_RESULT(yes)
1326else
1327 AC_MSG_RESULT(no)
1328fi
1329
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001330AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001331case $ac_sys_system/$ac_sys_release in
1332 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001333 AC_DEFINE(WITH_DYLD, 1,
1334 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1335 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1336 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001337 AC_MSG_RESULT(always on for Darwin)
1338 ;;
1339 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001340 AC_MSG_RESULT(no)
1341 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001342esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001343
Guido van Rossumac405f61994-09-12 10:56:06 +00001344# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001345AC_SUBST(SO)
1346AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001347AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001348AC_SUBST(CCSHARED)
1349AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001350# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001351# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001352AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001353if test -z "$SO"
1354then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001355 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001356 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001357 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001358 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001359 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001360else
1361 # this might also be a termcap variable, see #610332
1362 echo
1363 echo '====================================================================='
1364 echo '+ +'
1365 echo '+ WARNING: You have set SO in your environment. +'
1366 echo '+ Do you really mean to change the extension for shared libraries? +'
1367 echo '+ Continuing in 10 seconds to let you to ponder. +'
1368 echo '+ +'
1369 echo '====================================================================='
1370 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001371fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001372AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001373# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001374# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001375# (Shared libraries in this instance are shared modules to be loaded into
1376# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001377AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001378if test -z "$LDSHARED"
1379then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001380 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001381 AIX*)
1382 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001383 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001384 ;;
1385 BeOS*)
1386 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001387 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001388 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001389 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001390 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001391 SunOS/5*)
1392 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001393 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001394 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001395 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001396 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001397 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001398 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001399 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1400 if test "$enable_framework" ; then
1401 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001402 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1403 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001404 else
1405 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001406 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001407 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001408 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001409 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1410 if test "$enable_framework" ; then
1411 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001412 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1413 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001414 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001415 # No framework, use the Python app as bundle-loader
1416 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001417 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001418 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001419 Darwin/*)
1420 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1421 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001422 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001423 if test ${cur_target} '>' 10.2; then
1424 cur_target=10.3
1425 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001426 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren988117f2006-04-29 11:31:35 +00001427 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001428 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001429 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001430 if test "${enable_universalsdk}"; then
1431 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1432 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001433 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1434 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001435 else
1436 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1437 if test "$enable_framework" ; then
1438 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001439 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1440 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001441 else
1442 # No framework, use the Python app as bundle-loader
1443 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1444 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1445 fi
1446 fi
1447 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001448 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001449 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001450 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001451 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001452 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001453 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001454 else
1455 LDSHARED="ld -Bshareable ${LDFLAGS}"
1456 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001457 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001458 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001459 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001460 then LDSHARED='$(CC) -shared'
1461 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001462 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001463 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001464 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001465 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001466 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001467 *) LDSHARED="ld";;
1468 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001469fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001470AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001471BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001472# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001473# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001474AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001475if test -z "$CCSHARED"
1476then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001477 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001478 SunOS*) if test "$GCC" = yes;
1479 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001480 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001481 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001482 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001483 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001484 else CCSHARED="+z";
1485 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001486 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001487 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001488 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001489 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001490 if test "$GCC" = "yes"
1491 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001492 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001493 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001494 SCO_SV*)
1495 if test "$GCC" = "yes"
1496 then CCSHARED="-fPIC"
1497 else CCSHARED="-Kpic -belf"
1498 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001499 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001500 IRIX*/6*) case $CC in
1501 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001502 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001503 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001504 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001505 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001506fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001507AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001508# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001509# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001510AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001511if test -z "$LINKFORSHARED"
1512then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001513 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001514 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001515 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001516 LINKFORSHARED="-Wl,-E -Wl,+s";;
1517# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001518 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001519 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001520 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001521 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001522 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1523 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001524 # not used by the core itself but which needs to be in the core so
1525 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001526 # -prebind is no longer used, because it actually seems to give a
1527 # slowdown in stead of a speedup, maybe due to the large number of
1528 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001529
1530 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001531 if test "$enable_framework"
1532 then
Jack Jansenda49e192005-01-07 13:08:22 +00001533 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001534 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001535 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001536 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001537 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001538 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001539 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001540 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1541 then
1542 LINKFORSHARED="-Wl,--export-dynamic"
1543 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001544 SunOS/5*) case $CC in
1545 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001546 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001547 then
1548 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001549 fi;;
1550 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001551 CYGWIN*)
1552 if test $enable_shared = "no"
1553 then
1554 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1555 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001556 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001557fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001558AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001559
Neil Schemenauer61c51152001-01-26 16:18:16 +00001560AC_SUBST(CFLAGSFORSHARED)
1561AC_MSG_CHECKING(CFLAGSFORSHARED)
1562if test ! "$LIBRARY" = "$LDLIBRARY"
1563then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001564 case $ac_sys_system in
1565 CYGWIN*)
1566 # Cygwin needs CCSHARED when building extension DLLs
1567 # but not when building the interpreter DLL.
1568 CFLAGSFORSHARED='';;
1569 *)
1570 CFLAGSFORSHARED='$(CCSHARED)'
1571 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001572fi
1573AC_MSG_RESULT($CFLAGSFORSHARED)
1574
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001575# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1576# library (with --enable-shared).
1577# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001578# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1579# if it is not required, since it creates a dependency of the shared library
1580# to LIBS. This, in turn, means that applications linking the shared libpython
1581# don't need to link LIBS explicitly. The default should be only changed
1582# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001583AC_SUBST(SHLIBS)
1584AC_MSG_CHECKING(SHLIBS)
1585case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001586 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001587 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001588esac
1589AC_MSG_RESULT($SHLIBS)
1590
1591
Guido van Rossum627b2d71993-12-24 10:39:16 +00001592# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001593AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1594AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001595
1596# only check for sem_ini if thread support is requested
1597if test "$with_threads" = "yes" -o -z "$with_threads"; then
1598 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1599 # posix4 on Solaris 2.6
1600 # pthread (first!) on Linux
1601fi
1602
Martin v. Löwis19d17342003-06-14 21:03:05 +00001603# check if we need libintl for locale functions
1604AC_CHECK_LIB(intl, textdomain,
1605 AC_DEFINE(WITH_LIBINTL, 1,
1606 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001607
1608# checks for system dependent C++ extensions support
1609case "$ac_sys_system" in
1610 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1611 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1612 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001613 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1614 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1615 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001616 AC_MSG_RESULT(yes)],
1617 [AC_MSG_RESULT(no)]);;
1618 *) ;;
1619esac
1620
Guido van Rossum70c7f481998-03-26 18:44:10 +00001621# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001622# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001623AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001624AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001625
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001626case "$ac_sys_system" in
1627BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001628AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1629;;
1630esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001631
Guido van Rossumc5a39031996-07-31 17:35:03 +00001632AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001633AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001634 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1635[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001636AC_MSG_RESULT($withval)
1637LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001638],
1639[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001640
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001641# Check for use of the system libffi library
1642AC_MSG_CHECKING(for --with-system-ffi)
1643AC_ARG_WITH(system_ffi,
1644 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1645
1646if test -z "$with_system_ffi"
1647then with_system_ffi="no"
1648fi
1649AC_MSG_RESULT($with_system_ffi)
1650
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001651# Determine if signalmodule should be used.
1652AC_SUBST(USE_SIGNAL_MODULE)
1653AC_SUBST(SIGNAL_OBJS)
1654AC_MSG_CHECKING(for --with-signal-module)
1655AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001656 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001657
1658if test -z "$with_signal_module"
1659then with_signal_module="yes"
1660fi
1661AC_MSG_RESULT($with_signal_module)
1662
1663if test "${with_signal_module}" = "yes"; then
1664 USE_SIGNAL_MODULE=""
1665 SIGNAL_OBJS=""
1666else
1667 USE_SIGNAL_MODULE="#"
1668 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1669fi
1670
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001671# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001672AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001673USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001674
Guido van Rossum54d93d41997-01-22 20:51:58 +00001675AC_MSG_CHECKING(for --with-dec-threads)
1676AC_SUBST(LDLAST)
1677AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001678 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1679[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001680AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001681LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001682if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001683 with_thread="$withval";
1684fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001685[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001686
Martin v. Löwis11437992002-04-12 09:54:03 +00001687# Templates for things AC_DEFINEd more than once.
1688# For a single AC_DEFINE, no template is needed.
1689AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1690AH_TEMPLATE(_REENTRANT,
1691 [Define to force use of thread-safe errno, h_errno, and other functions])
1692AH_TEMPLATE(WITH_THREAD,
1693 [Define if you want to compile in rudimentary thread support])
1694
Guido van Rossum54d93d41997-01-22 20:51:58 +00001695AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001696dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001697AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001698 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001699
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001700# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001701dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001702AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001703 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1704 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001705
1706if test -z "$with_threads"
1707then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001708fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001709AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001710
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001711AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001712if test "$with_threads" = "no"
1713then
1714 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001715elif test "$ac_cv_pthread_is_default" = yes
1716then
1717 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001718 # Defining _REENTRANT on system with POSIX threads should not hurt.
1719 AC_DEFINE(_REENTRANT)
1720 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001721 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001722elif test "$ac_cv_kpthread" = "yes"
1723then
1724 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001725 if test "$ac_cv_cxx_thread" = "yes"; then
1726 CXX="$CXX -Kpthread"
1727 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001728 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001729 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001730 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001731elif test "$ac_cv_kthread" = "yes"
1732then
1733 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001734 if test "$ac_cv_cxx_thread" = "yes"; then
1735 CXX="$CXX -Kthread"
1736 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001737 AC_DEFINE(WITH_THREAD)
1738 posix_threads=yes
1739 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001740elif test "$ac_cv_pthread" = "yes"
1741then
1742 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001743 if test "$ac_cv_cxx_thread" = "yes"; then
1744 CXX="$CXX -pthread"
1745 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001746 AC_DEFINE(WITH_THREAD)
1747 posix_threads=yes
1748 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001749else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001750 if test ! -z "$with_threads" -a -d "$with_threads"
1751 then LDFLAGS="$LDFLAGS -L$with_threads"
1752 fi
1753 if test ! -z "$withval" -a -d "$withval"
1754 then LDFLAGS="$LDFLAGS -L$withval"
1755 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001756
1757 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001758 # define _POSIX_THREADS in unistd.h. Some apparently don't
1759 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001760 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1761 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001762 [
1763#include <unistd.h>
1764#ifdef _POSIX_THREADS
1765yes
1766#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001767 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1768 AC_MSG_RESULT($unistd_defines_pthreads)
1769
Martin v. Löwis130fb172001-07-19 11:00:41 +00001770 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001771 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1772 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001773 AC_DEFINE(HURD_C_THREADS, 1,
1774 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001775 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001776 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001777 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1778 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001779 AC_DEFINE(MACH_C_THREADS, 1,
1780 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001781 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001782 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001783 AC_ARG_WITH([pth],
1784 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1785 [AC_MSG_RESULT($withval)
1786 AC_DEFINE([WITH_THREAD])
1787 AC_DEFINE([HAVE_PTH], 1,
1788 [Define if you have GNU PTH threads.])
1789 LIBS="-lpth $LIBS"
1790 THREADOBJ="Python/thread.o"],
1791 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001792
1793 # Just looking for pthread_create in libpthread is not enough:
1794 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1795 # So we really have to include pthread.h, and then link.
1796 _libs=$LIBS
1797 LIBS="$LIBS -lpthread"
1798 AC_MSG_CHECKING([for pthread_create in -lpthread])
1799 AC_TRY_LINK([#include <pthread.h>
1800
1801void * start_routine (void *arg) { exit (0); }], [
1802pthread_create (NULL, NULL, start_routine, NULL)], [
1803 AC_MSG_RESULT(yes)
1804 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001805 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001806 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001807 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001808 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001809 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001810 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001811 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1812 AC_DEFINE(ATHEOS_THREADS, 1,
1813 [Define this if you have AtheOS threads.])
1814 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001815 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001816 AC_DEFINE(BEOS_THREADS, 1,
1817 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001818 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001819 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001820 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001821 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001822 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001823 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001824 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001825 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001826 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001827 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001828 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001829 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001830 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001831 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001832 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001833 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001834 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001836 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001837
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001838 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1839 LIBS="$LIBS -lmpc"
1840 THREADOBJ="Python/thread.o"
1841 USE_THREAD_MODULE=""])
1842
1843 if test "$posix_threads" != "yes"; then
1844 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1845 LIBS="$LIBS -lthread"
1846 THREADOBJ="Python/thread.o"
1847 USE_THREAD_MODULE=""])
1848 fi
1849
1850 if test "$USE_THREAD_MODULE" != "#"
1851 then
1852 # If the above checks didn't disable threads, (at least) OSF1
1853 # needs this '-threads' argument during linking.
1854 case $ac_sys_system in
1855 OSF1) LDLAST=-threads;;
1856 esac
1857 fi
1858fi
1859
1860if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001861 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001862 AC_DEFINE(_POSIX_THREADS, 1,
1863 [Define if you have POSIX threads,
1864 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001865 fi
1866
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001867 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1868 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001869 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1870 Defined for Solaris 2.6 bug in pthread header.)
1871 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001872 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001873 Define if the Posix semaphores do not work on your system)
1874 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001875 esac
1876
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001877 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1878 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1879 [AC_TRY_RUN([#include <pthread.h>
1880 void *foo(void *parm) {
1881 return NULL;
1882 }
1883 main() {
1884 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001885 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001886 if (pthread_attr_init(&attr)) exit(-1);
1887 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001888 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001889 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001890 }],
1891 ac_cv_pthread_system_supported=yes,
1892 ac_cv_pthread_system_supported=no,
1893 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001894 ])
1895 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1896 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001897 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001898 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001899 AC_CHECK_FUNCS(pthread_sigmask,
1900 [case $ac_sys_system in
1901 CYGWIN*)
1902 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1903 [Define if pthread_sigmask() does not work on your system.])
1904 ;;
1905 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001906fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001907
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001908
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001909# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001910AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001911AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001912AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001913[ --enable-ipv6 Enable ipv6 (with ipv4) support
1914 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001915[ case "$enableval" in
1916 no)
1917 AC_MSG_RESULT(no)
1918 ipv6=no
1919 ;;
1920 *) AC_MSG_RESULT(yes)
1921 AC_DEFINE(ENABLE_IPV6)
1922 ipv6=yes
1923 ;;
1924 esac ],
1925
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001926[
1927dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001928 AC_TRY_RUN([ /* AF_INET6 available check */
1929#include <sys/types.h>
1930#include <sys/socket.h>
1931main()
1932{
1933 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1934 exit(1);
1935 else
1936 exit(0);
1937}
1938],
1939 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001940 ipv6=yes,
1941 AC_MSG_RESULT(no)
1942 ipv6=no,
1943 AC_MSG_RESULT(no)
1944 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001945)
1946
1947if test "$ipv6" = "yes"; then
1948 AC_MSG_CHECKING(if RFC2553 API is available)
1949 AC_TRY_COMPILE([#include <sys/types.h>
1950#include <netinet/in.h>],
1951 [struct sockaddr_in6 x;
1952x.sin6_scope_id;],
1953 AC_MSG_RESULT(yes)
1954 ipv6=yes,
1955 AC_MSG_RESULT(no, IPv6 disabled)
1956 ipv6=no)
1957fi
1958
1959if test "$ipv6" = "yes"; then
1960 AC_DEFINE(ENABLE_IPV6)
1961fi
1962])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001963
1964ipv6type=unknown
1965ipv6lib=none
1966ipv6trylibc=no
1967
1968if test "$ipv6" = "yes"; then
1969 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001970 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1971 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001972 case $i in
1973 inria)
1974 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001975 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001976#include <netinet/in.h>
1977#ifdef IPV6_INRIA_VERSION
1978yes
1979#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001980 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001981 ;;
1982 kame)
1983 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001984 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001985#include <netinet/in.h>
1986#ifdef __KAME__
1987yes
1988#endif],
1989 [ipv6type=$i;
1990 ipv6lib=inet6
1991 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001992 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001993 ;;
1994 linux-glibc)
1995 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001996 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001997#include <features.h>
1998#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1999yes
2000#endif],
2001 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002002 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002003 ;;
2004 linux-inet6)
2005 dnl http://www.v6.linux.or.jp/
2006 if test -d /usr/inet6; then
2007 ipv6type=$i
2008 ipv6lib=inet6
2009 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002010 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002011 fi
2012 ;;
2013 solaris)
2014 if test -f /etc/netconfig; then
2015 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2016 ipv6type=$i
2017 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002018 fi
2019 fi
2020 ;;
2021 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002022 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002023#include <sys/param.h>
2024#ifdef _TOSHIBA_INET6
2025yes
2026#endif],
2027 [ipv6type=$i;
2028 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002029 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002030 ;;
2031 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002032 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002033#include </usr/local/v6/include/sys/v6config.h>
2034#ifdef __V6D__
2035yes
2036#endif],
2037 [ipv6type=$i;
2038 ipv6lib=v6;
2039 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002040 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002041 ;;
2042 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002043 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002044#include <sys/param.h>
2045#ifdef _ZETA_MINAMI_INET6
2046yes
2047#endif],
2048 [ipv6type=$i;
2049 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002050 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002051 ;;
2052 esac
2053 if test "$ipv6type" != "unknown"; then
2054 break
2055 fi
2056 done
2057 AC_MSG_RESULT($ipv6type)
2058fi
2059
2060if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2061 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2062 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2063 echo "using lib$ipv6lib"
2064 else
2065 if test $ipv6trylibc = "yes"; then
2066 echo "using libc"
2067 else
2068 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2069 echo "You need to fetch lib$ipv6lib.a from appropriate"
2070 echo 'ipv6 kit and compile beforehand.'
2071 exit 1
2072 fi
2073 fi
2074fi
2075
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002076# Check for --with-doc-strings
2077AC_MSG_CHECKING(for --with-doc-strings)
2078AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002079 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002080
2081if test -z "$with_doc_strings"
2082then with_doc_strings="yes"
2083fi
2084if test "$with_doc_strings" != "no"
2085then
2086 AC_DEFINE(WITH_DOC_STRINGS, 1,
2087 [Define if you want documentation strings in extension modules])
2088fi
2089AC_MSG_RESULT($with_doc_strings)
2090
Neil Schemenauera35c6882001-02-27 04:45:05 +00002091# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002092AC_MSG_CHECKING(for --with-tsc)
2093AC_ARG_WITH(tsc,
2094[ --with(out)-tsc enable/disable timestamp counter profile], [
2095if test "$withval" != no
2096then
2097 AC_DEFINE(WITH_TSC, 1,
2098 [Define to profile with the Pentium timestamp counter])
2099 AC_MSG_RESULT(yes)
2100else AC_MSG_RESULT(no)
2101fi],
2102[AC_MSG_RESULT(no)])
2103
2104# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002105AC_MSG_CHECKING(for --with-pymalloc)
2106AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002107 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002108
2109if test -z "$with_pymalloc"
2110then with_pymalloc="yes"
2111fi
2112if test "$with_pymalloc" != "no"
2113then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002114 AC_DEFINE(WITH_PYMALLOC, 1,
2115 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002116fi
2117AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002118
Barry Warsawef82cd72000-06-30 16:21:01 +00002119# Check for --with-wctype-functions
2120AC_MSG_CHECKING(for --with-wctype-functions)
2121AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002122 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2123[
Barry Warsawef82cd72000-06-30 16:21:01 +00002124if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002125then
2126 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2127 [Define if you want wctype.h functions to be used instead of the
2128 one supplied by Python itself. (see Include/unicodectype.h).])
2129 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002130else AC_MSG_RESULT(no)
2131fi],
2132[AC_MSG_RESULT(no)])
2133
Guido van Rossum68242b51996-05-28 22:53:03 +00002134# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002135AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002136DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002137
Guido van Rossume97ee181999-12-20 21:27:22 +00002138# the dlopen() function means we might want to use dynload_shlib.o. some
2139# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002140AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002141
2142# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2143# loading of modules.
2144AC_SUBST(DYNLOADFILE)
2145AC_MSG_CHECKING(DYNLOADFILE)
2146if test -z "$DYNLOADFILE"
2147then
2148 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002149 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2150 if test "$ac_cv_func_dlopen" = yes
2151 then DYNLOADFILE="dynload_shlib.o"
2152 else DYNLOADFILE="dynload_aix.o"
2153 fi
2154 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002155 BeOS*) DYNLOADFILE="dynload_beos.o";;
2156 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002157 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2158 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002159 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002160 *)
2161 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2162 # out any dynamic loading
2163 if test "$ac_cv_func_dlopen" = yes
2164 then DYNLOADFILE="dynload_shlib.o"
2165 else DYNLOADFILE="dynload_stub.o"
2166 fi
2167 ;;
2168 esac
2169fi
2170AC_MSG_RESULT($DYNLOADFILE)
2171if test "$DYNLOADFILE" != "dynload_stub.o"
2172then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002173 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2174 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002175fi
2176
Jack Jansenc49e5b72001-06-19 15:00:23 +00002177# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2178
2179AC_SUBST(MACHDEP_OBJS)
2180AC_MSG_CHECKING(MACHDEP_OBJS)
2181if test -z "$MACHDEP_OBJS"
2182then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002183 MACHDEP_OBJS=$extra_machdep_objs
2184else
2185 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002186fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002187AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002188
Guido van Rossum627b2d71993-12-24 10:39:16 +00002189# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002190AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2191 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002192 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002193 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002194 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002195 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002196 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002197 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002198 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002199 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002200 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002201 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002202
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002203# For some functions, having a definition is not sufficient, since
2204# we want to take their address.
2205AC_MSG_CHECKING(for chroot)
2206AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2207 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2208 AC_MSG_RESULT(yes),
2209 AC_MSG_RESULT(no)
2210)
2211AC_MSG_CHECKING(for link)
2212AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2213 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2214 AC_MSG_RESULT(yes),
2215 AC_MSG_RESULT(no)
2216)
2217AC_MSG_CHECKING(for symlink)
2218AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2219 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2220 AC_MSG_RESULT(yes),
2221 AC_MSG_RESULT(no)
2222)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002223AC_MSG_CHECKING(for fchdir)
2224AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2225 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2226 AC_MSG_RESULT(yes),
2227 AC_MSG_RESULT(no)
2228)
2229AC_MSG_CHECKING(for fsync)
2230AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002231 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002232 AC_MSG_RESULT(yes),
2233 AC_MSG_RESULT(no)
2234)
2235AC_MSG_CHECKING(for fdatasync)
2236AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2237 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2238 AC_MSG_RESULT(yes),
2239 AC_MSG_RESULT(no)
2240)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002241
Martin v. Löwisd5843682002-11-21 20:41:28 +00002242# On some systems (eg. FreeBSD 5), we would find a definition of the
2243# functions ctermid_r, setgroups in the library, but no prototype
2244# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2245# address to avoid compiler warnings and potential miscompilations
2246# because of the missing prototypes.
2247
2248AC_MSG_CHECKING(for ctermid_r)
2249AC_TRY_COMPILE([
2250#include "confdefs.h"
2251#include <stdio.h>
2252], void* p = ctermid_r,
2253 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2254 AC_MSG_RESULT(yes),
2255 AC_MSG_RESULT(no)
2256)
2257
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002258AC_MSG_CHECKING(for flock)
2259AC_TRY_COMPILE([
2260#include "confdefs.h"
2261#include <sys/file.h>
2262], void* p = flock,
2263 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2264 AC_MSG_RESULT(yes),
2265 AC_MSG_RESULT(no)
2266)
2267
2268AC_MSG_CHECKING(for getpagesize)
2269AC_TRY_COMPILE([
2270#include "confdefs.h"
2271#include <unistd.h>
2272], void* p = getpagesize,
2273 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2274 AC_MSG_RESULT(yes),
2275 AC_MSG_RESULT(no)
2276)
2277
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002278dnl check for true
2279AC_CHECK_PROGS(TRUE, true, /bin/true)
2280
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002281dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2282dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002283AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002284 AC_CHECK_LIB(resolv, inet_aton)
2285)
2286
Martin v. Löwise9416172003-05-03 10:12:45 +00002287AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002288AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002289#include "confdefs.h"
2290#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002291], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002292 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2293 AC_MSG_RESULT(yes),
2294 AC_MSG_RESULT(no)
2295)
2296
2297AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002298AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002299#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002300#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002301#include <sys/socket.h>
2302#include <netinet/in.h>
2303#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002304], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002305 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2306 AC_MSG_RESULT(yes),
2307 AC_MSG_RESULT(no)
2308)
2309
2310AC_MSG_CHECKING(for inet_pton)
2311AC_TRY_COMPILE([
2312#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002313#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002314#include <sys/socket.h>
2315#include <netinet/in.h>
2316#include <arpa/inet.h>
2317], void* p = inet_pton,
2318 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2319 AC_MSG_RESULT(yes),
2320 AC_MSG_RESULT(no)
2321)
2322
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002323# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002324AC_MSG_CHECKING(for setgroups)
2325AC_TRY_COMPILE([
2326#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002327#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002328#ifdef HAVE_GRP_H
2329#include <grp.h>
2330#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002331],
2332void* p = setgroups,
2333 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2334 AC_MSG_RESULT(yes),
2335 AC_MSG_RESULT(no)
2336)
2337
Fred Drake8cef4cf2000-06-28 16:40:38 +00002338# check for openpty and forkpty
2339
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002340AC_CHECK_FUNCS(openpty,,
2341 AC_CHECK_LIB(util,openpty,
2342 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2343 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2344 )
2345)
2346AC_CHECK_FUNCS(forkpty,,
2347 AC_CHECK_LIB(util,forkpty,
2348 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2349 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2350 )
2351)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002352
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002353# check for long file support functions
2354AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2355
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002356AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002357AC_CHECK_FUNCS(getpgrp,
2358 AC_TRY_COMPILE([#include <unistd.h>],
2359 [getpgrp(0);],
2360 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2361 [Define if getpgrp() must be called as getpgrp(0).])
2362 )
2363)
Jack Jansen150753c2003-03-29 22:07:47 +00002364AC_CHECK_FUNCS(setpgrp,
2365 AC_TRY_COMPILE([#include <unistd.h>],
2366 [setpgrp(0,0);],
2367 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2368 [Define if setpgrp() must be called as setpgrp(0, 0).])
2369 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002370)
2371AC_CHECK_FUNCS(gettimeofday,
2372 AC_TRY_COMPILE([#include <sys/time.h>],
2373 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2374 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2375 [Define if gettimeofday() does not have second (timezone) argument
2376 This is the case on Motorola V4 (R40V4.2)])
2377 )
2378)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002379
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002380AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002381AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002382#if defined(MAJOR_IN_MKDEV)
2383#include <sys/mkdev.h>
2384#elif defined(MAJOR_IN_SYSMACROS)
2385#include <sys/sysmacros.h>
2386#else
2387#include <sys/types.h>
2388#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002389],[
2390 makedev(major(0),minor(0));
2391],[
2392 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2393 [Define to 1 if you have the device macros.])
2394 AC_MSG_RESULT(yes)
2395],[
2396 AC_MSG_RESULT(no)
2397])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002398
2399# On OSF/1 V5.1, getaddrinfo is available, but a define
2400# for [no]getaddrinfo in netdb.h.
2401AC_MSG_CHECKING(for getaddrinfo)
2402AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002403#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002404#include <sys/socket.h>
2405#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002406#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002407],[
2408getaddrinfo(NULL, NULL, NULL, NULL);
2409], [
2410AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002411AC_MSG_CHECKING(getaddrinfo bug)
2412AC_TRY_RUN([
2413#include <sys/types.h>
2414#include <netdb.h>
2415#include <string.h>
2416#include <sys/socket.h>
2417#include <netinet/in.h>
2418
2419main()
2420{
2421 int passive, gaierr, inet4 = 0, inet6 = 0;
2422 struct addrinfo hints, *ai, *aitop;
2423 char straddr[INET6_ADDRSTRLEN], strport[16];
2424
2425 for (passive = 0; passive <= 1; passive++) {
2426 memset(&hints, 0, sizeof(hints));
2427 hints.ai_family = AF_UNSPEC;
2428 hints.ai_flags = passive ? AI_PASSIVE : 0;
2429 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002430 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002431 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2432 (void)gai_strerror(gaierr);
2433 goto bad;
2434 }
2435 for (ai = aitop; ai; ai = ai->ai_next) {
2436 if (ai->ai_addr == NULL ||
2437 ai->ai_addrlen == 0 ||
2438 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2439 straddr, sizeof(straddr), strport, sizeof(strport),
2440 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2441 goto bad;
2442 }
2443 switch (ai->ai_family) {
2444 case AF_INET:
2445 if (strcmp(strport, "54321") != 0) {
2446 goto bad;
2447 }
2448 if (passive) {
2449 if (strcmp(straddr, "0.0.0.0") != 0) {
2450 goto bad;
2451 }
2452 } else {
2453 if (strcmp(straddr, "127.0.0.1") != 0) {
2454 goto bad;
2455 }
2456 }
2457 inet4++;
2458 break;
2459 case AF_INET6:
2460 if (strcmp(strport, "54321") != 0) {
2461 goto bad;
2462 }
2463 if (passive) {
2464 if (strcmp(straddr, "::") != 0) {
2465 goto bad;
2466 }
2467 } else {
2468 if (strcmp(straddr, "::1") != 0) {
2469 goto bad;
2470 }
2471 }
2472 inet6++;
2473 break;
2474 case AF_UNSPEC:
2475 goto bad;
2476 break;
2477 default:
2478 /* another family support? */
2479 break;
2480 }
2481 }
2482 }
2483
2484 if (!(inet4 == 0 || inet4 == 2))
2485 goto bad;
2486 if (!(inet6 == 0 || inet6 == 2))
2487 goto bad;
2488
2489 if (aitop)
2490 freeaddrinfo(aitop);
2491 exit(0);
2492
2493 bad:
2494 if (aitop)
2495 freeaddrinfo(aitop);
2496 exit(1);
2497}
2498],
2499AC_MSG_RESULT(good)
2500buggygetaddrinfo=no,
2501AC_MSG_RESULT(buggy)
2502buggygetaddrinfo=yes,
2503AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002504buggygetaddrinfo=yes)], [
2505AC_MSG_RESULT(no)
2506buggygetaddrinfo=yes
2507])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002508
2509if test "$buggygetaddrinfo" = "yes"; then
2510 if test "$ipv6" = "yes"; then
2511 echo 'Fatal: You must get working getaddrinfo() function.'
2512 echo ' or you can specify "--disable-ipv6"'.
2513 exit 1
2514 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002515else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002516 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002517fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002518AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002519
Guido van Rossum627b2d71993-12-24 10:39:16 +00002520# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002521AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002522AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002523AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002524AC_CHECK_MEMBERS([struct stat.st_rdev])
2525AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002526AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002527AC_CHECK_MEMBERS([struct stat.st_gen])
2528AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002529AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002530
2531AC_MSG_CHECKING(for time.h that defines altzone)
2532AC_CACHE_VAL(ac_cv_header_time_altzone,
2533[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2534 ac_cv_header_time_altzone=yes,
2535 ac_cv_header_time_altzone=no)])
2536AC_MSG_RESULT($ac_cv_header_time_altzone)
2537if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002538 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002539fi
2540
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002541was_it_defined=no
2542AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002543AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002544#include <sys/types.h>
2545#include <sys/select.h>
2546#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002547], [;], [
2548 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2549 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2550 (which you can't on SCO ODT 3.0).])
2551 was_it_defined=yes
2552])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002553AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002554
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002555AC_MSG_CHECKING(for addrinfo)
2556AC_CACHE_VAL(ac_cv_struct_addrinfo,
2557AC_TRY_COMPILE([
2558# include <netdb.h>],
2559 [struct addrinfo a],
2560 ac_cv_struct_addrinfo=yes,
2561 ac_cv_struct_addrinfo=no))
2562AC_MSG_RESULT($ac_cv_struct_addrinfo)
2563if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002564 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002565fi
2566
2567AC_MSG_CHECKING(for sockaddr_storage)
2568AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2569AC_TRY_COMPILE([
2570# include <sys/types.h>
2571# include <sys/socket.h>],
2572 [struct sockaddr_storage s],
2573 ac_cv_struct_sockaddr_storage=yes,
2574 ac_cv_struct_sockaddr_storage=no))
2575AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2576if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002577 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002578fi
2579
Guido van Rossum627b2d71993-12-24 10:39:16 +00002580# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002581
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002582AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002583AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002584
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002585works=no
2586AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002587AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2588 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2589)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002590AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002591
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002592works=no
2593AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002594AC_TRY_COMPILE([], [signed char c;], works=yes,
2595 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2596)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002597AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002598
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002599have_prototypes=no
2600AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002601AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2602 AC_DEFINE(HAVE_PROTOTYPES, 1,
2603 [Define if your compiler supports function prototype])
2604 have_prototypes=yes
2605])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002606AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002607
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002608works=no
2609AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002610AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002611#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002612int foo(int x, ...) {
2613 va_list va;
2614 va_start(va, x);
2615 va_arg(va, int);
2616 va_arg(va, char *);
2617 va_arg(va, double);
2618 return 0;
2619}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002620], [return foo(10, "", 3.14);], [
2621 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2622 [Define if your compiler supports variable length function prototypes
2623 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2624 works=yes
2625])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002626AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002627
Dave Cole331708b2004-08-09 04:51:41 +00002628# check for socketpair
2629AC_MSG_CHECKING(for socketpair)
2630AC_TRY_COMPILE([
2631#include <sys/types.h>
2632#include <sys/socket.h>
2633], void *x=socketpair,
2634 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2635 AC_MSG_RESULT(yes),
2636 AC_MSG_RESULT(no)
2637)
2638
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002639# check if sockaddr has sa_len member
2640AC_MSG_CHECKING(if sockaddr has sa_len member)
2641AC_TRY_COMPILE([#include <sys/types.h>
2642#include <sys/socket.h>],
2643[struct sockaddr x;
2644x.sa_len = 0;],
2645 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002646 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002647 AC_MSG_RESULT(no))
2648
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002649va_list_is_array=no
2650AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002651AC_TRY_COMPILE([
2652#ifdef HAVE_STDARG_PROTOTYPES
2653#include <stdarg.h>
2654#else
2655#include <varargs.h>
2656#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002657], [va_list list1, list2; list1 = list2;], , [
2658 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2659 va_list_is_array=yes
2660])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002661AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002662
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002663# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002664AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2665 [Define this if you have some version of gethostbyname_r()])
2666
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002667AC_CHECK_FUNC(gethostbyname_r, [
2668 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2669 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2670 OLD_CFLAGS=$CFLAGS
2671 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2672 AC_TRY_COMPILE([
2673# include <netdb.h>
2674 ], [
2675 char *name;
2676 struct hostent *he, *res;
2677 char buffer[2048];
2678 int buflen = 2048;
2679 int h_errnop;
2680
2681 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
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_6_ARG, 1,
2685 [Define this if you have the 6-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 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2690 AC_TRY_COMPILE([
2691# include <netdb.h>
2692 ], [
2693 char *name;
2694 struct hostent *he;
2695 char buffer[2048];
2696 int buflen = 2048;
2697 int h_errnop;
2698
2699 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2700 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002701 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002702 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2703 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002704 AC_MSG_RESULT(yes)
2705 ], [
2706 AC_MSG_RESULT(no)
2707 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2708 AC_TRY_COMPILE([
2709# include <netdb.h>
2710 ], [
2711 char *name;
2712 struct hostent *he;
2713 struct hostent_data data;
2714
2715 (void) gethostbyname_r(name, he, &data);
2716 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002717 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002718 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2719 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002720 AC_MSG_RESULT(yes)
2721 ], [
2722 AC_MSG_RESULT(no)
2723 ])
2724 ])
2725 ])
2726 CFLAGS=$OLD_CFLAGS
2727], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002728 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002729])
2730AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2731AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2732AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002733AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002734AC_SUBST(HAVE_GETHOSTBYNAME)
2735
Guido van Rossum627b2d71993-12-24 10:39:16 +00002736# checks for system services
2737# (none yet)
2738
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002739# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002740AC_CHECK_FUNC(__fpu_control,
2741 [],
2742 [AC_CHECK_LIB(ieee, __fpu_control)
2743])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002744
Guido van Rossum93274221997-05-09 02:42:00 +00002745# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002746AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002747AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002748 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2749[
Guido van Rossum93274221997-05-09 02:42:00 +00002750if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002751then
2752 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2753 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2754 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002755else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002756fi],
2757[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002758
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002759# check for --with-libm=...
2760AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002761case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002762Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002763BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002764*) LIBM=-lm
2765esac
Guido van Rossum93274221997-05-09 02:42:00 +00002766AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002767AC_ARG_WITH(libm,
2768 AC_HELP_STRING(--with-libm=STRING, math library),
2769[
Guido van Rossum93274221997-05-09 02:42:00 +00002770if test "$withval" = no
2771then LIBM=
2772 AC_MSG_RESULT(force LIBM empty)
2773elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002774then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002775 AC_MSG_RESULT(set LIBM="$withval")
2776else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002777fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002778[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002779
2780# check for --with-libc=...
2781AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002782AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002783AC_ARG_WITH(libc,
2784 AC_HELP_STRING(--with-libc=STRING, C library),
2785[
Guido van Rossum93274221997-05-09 02:42:00 +00002786if test "$withval" = no
2787then LIBC=
2788 AC_MSG_RESULT(force LIBC empty)
2789elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002790then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002791 AC_MSG_RESULT(set LIBC="$withval")
2792else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002793fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002794[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002795
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002796# check for hypot() in math library
2797LIBS_SAVE=$LIBS
2798LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002799AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002800LIBS=$LIBS_SAVE
2801
Guido van Rossumef2255b2000-03-10 22:30:29 +00002802# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002803AC_CHECK_HEADER(wchar.h, [
2804 AC_DEFINE(HAVE_WCHAR_H, 1,
2805 [Define if the compiler provides a wchar.h header file.])
2806 wchar_h="yes"
2807],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002808wchar_h="no"
2809)
2810
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002811# determine wchar_t size
2812if test "$wchar_h" = yes
2813then
Guido van Rossum67b26592001-10-20 14:21:45 +00002814 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002815fi
2816
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002817AC_MSG_CHECKING(for UCS-4 tcl)
2818have_ucs4_tcl=no
2819AC_TRY_COMPILE([
2820#include <tcl.h>
2821#if TCL_UTF_MAX != 6
2822# error "NOT UCS4_TCL"
2823#endif], [], [
2824 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2825 have_ucs4_tcl=yes
2826])
2827AC_MSG_RESULT($have_ucs4_tcl)
2828
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002829# check whether wchar_t is signed or not
2830if test "$wchar_h" = yes
2831then
2832 # check whether wchar_t is signed or not
2833 AC_MSG_CHECKING(whether wchar_t is signed)
2834 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2835 AC_TRY_RUN([
2836 #include <wchar.h>
2837 int main()
2838 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002839 /* Success: exit code 0 */
2840 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002841 }
2842 ],
2843 ac_cv_wchar_t_signed=yes,
2844 ac_cv_wchar_t_signed=no,
2845 ac_cv_wchar_t_signed=yes)])
2846 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2847fi
2848
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002849AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002850dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002851AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002852 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2853 [],
2854 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002855
2856if test $enable_unicode = yes
2857then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002858 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002859 case "$have_ucs4_tcl" in
2860 yes) enable_unicode="ucs4"
2861 ;;
2862 *) enable_unicode="ucs2"
2863 ;;
2864 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002865fi
2866
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002867AH_TEMPLATE(Py_UNICODE_SIZE,
2868 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002869case "$enable_unicode" in
2870ucs2) unicode_size="2"
2871 AC_DEFINE(Py_UNICODE_SIZE,2)
2872 ;;
2873ucs4) unicode_size="4"
2874 AC_DEFINE(Py_UNICODE_SIZE,4)
2875 ;;
2876esac
2877
Martin v. Löwis11437992002-04-12 09:54:03 +00002878AH_TEMPLATE(PY_UNICODE_TYPE,
2879 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002880
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002881AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002882if test "$enable_unicode" = "no"
2883then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002884 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002885 AC_MSG_RESULT(not used)
2886else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002887 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002888 AC_DEFINE(Py_USING_UNICODE, 1,
2889 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002890
2891 # wchar_t is only usable if it maps to an unsigned type
2892 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002893 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002894 then
2895 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002896 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2897 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002898 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002899 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002900 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2901 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2902 then
2903 PY_UNICODE_TYPE="unsigned short"
2904 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2905 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2906 then
2907 PY_UNICODE_TYPE="unsigned long"
2908 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2909 else
2910 PY_UNICODE_TYPE="no type found"
2911 fi
2912 AC_MSG_RESULT($PY_UNICODE_TYPE)
2913fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002914
2915# check for endianness
2916AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00002917AH_VERBATIM([WORDS_BIGENDIAN],
2918[
2919 /* Define to 1 if your processor stores words with the most significant byte
2920 first (like Motorola and SPARC, unlike Intel and VAX).
2921
2922 The block below does compile-time checking for endianness on platforms
2923 that use GCC and therefore allows compiling fat binaries on OSX by using
2924 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
2925 such that the configure-result is used on systems that don't use GCC.
2926 */
2927#ifdef __BIG_ENDIAN__
2928#define WORDS_BIGENDIAN 1
2929#else
2930#ifndef __LITTLE_ENDIAN__
2931#undef WORDS_BIGENDIAN
2932#endif
2933#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00002934
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002935# Check whether right shifting a negative integer extends the sign bit
2936# or fills with zeros (like the Cray J90, according to Tim Peters).
2937AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002938AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002939AC_TRY_RUN([
2940int main()
2941{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002942 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002943}
Guido van Rossum3065c942001-09-17 04:03:14 +00002944],
2945ac_cv_rshift_extends_sign=yes,
2946ac_cv_rshift_extends_sign=no,
2947ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002948AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2949if test "$ac_cv_rshift_extends_sign" = no
2950then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002951 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2952 [Define if i>>j for signed int i does not extend the sign bit
2953 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002954fi
2955
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002956# check for getc_unlocked and related locking functions
2957AC_MSG_CHECKING(for getc_unlocked() and friends)
2958AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2959AC_TRY_LINK([#include <stdio.h>],[
2960 FILE *f = fopen("/dev/null", "r");
2961 flockfile(f);
2962 getc_unlocked(f);
2963 funlockfile(f);
2964], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2965AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2966if test "$ac_cv_have_getc_unlocked" = yes
2967then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002968 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2969 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002970fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002971
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002972# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002973# save the value of LIBS so we don't actually link Python with readline
2974LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002975AC_CHECK_LIB(readline, readline)
2976if test "$ac_cv_have_readline_readline" = no
2977then
2978 AC_CHECK_LIB(termcap, readline)
2979fi
2980
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002981# check for readline 2.1
2982AC_CHECK_LIB(readline, rl_callback_handler_install,
2983 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002984 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002985
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002986# check for readline 2.2
2987AC_TRY_CPP([#include <readline/readline.h>],
2988have_readline=yes, have_readline=no)
2989if test $have_readline = yes
2990then
2991 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2992 [readline/readline.h],
2993 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2994 [Define if you have readline 2.2]), )
2995fi
2996
Martin v. Löwis0daad592001-09-30 21:09:59 +00002997# check for readline 4.0
2998AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002999 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003000 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003001
Guido van Rossum353ae582001-07-10 16:45:32 +00003002# check for readline 4.2
3003AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003004 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003005 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003006
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003007# also in readline 4.2
3008AC_TRY_CPP([#include <readline/readline.h>],
3009have_readline=yes, have_readline=no)
3010if test $have_readline = yes
3011then
3012 AC_EGREP_HEADER([extern int rl_catch_signals;],
3013 [readline/readline.h],
3014 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3015 [Define if you can turn off readline's signal handling.]), )
3016fi
3017
Martin v. Löwis82bca632006-02-10 20:49:30 +00003018# End of readline checks: restore LIBS
3019LIBS=$LIBS_no_readline
3020
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003021AC_MSG_CHECKING(for broken nice())
3022AC_CACHE_VAL(ac_cv_broken_nice, [
3023AC_TRY_RUN([
3024int main()
3025{
3026 int val1 = nice(1);
3027 if (val1 != -1 && val1 == nice(2))
3028 exit(0);
3029 exit(1);
3030}
Guido van Rossum3065c942001-09-17 04:03:14 +00003031],
3032ac_cv_broken_nice=yes,
3033ac_cv_broken_nice=no,
3034ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003035AC_MSG_RESULT($ac_cv_broken_nice)
3036if test "$ac_cv_broken_nice" = yes
3037then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003038 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3039 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003040fi
3041
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003042AC_MSG_CHECKING(for broken poll())
3043AC_TRY_RUN([
3044#include <poll.h>
3045
3046int main (void)
3047 {
3048 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3049
3050 close (42);
3051
3052 int poll_test = poll (&poll_struct, 1, 0);
3053
3054 if (poll_test < 0)
3055 {
3056 exit(0);
3057 }
3058 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3059 {
3060 exit(0);
3061 }
3062 else
3063 {
3064 exit(1);
3065 }
3066 }
3067],
3068ac_cv_broken_poll=yes,
3069ac_cv_broken_poll=no,
3070ac_cv_broken_poll=no)
3071AC_MSG_RESULT($ac_cv_broken_poll)
3072if test "$ac_cv_broken_poll" = yes
3073then
3074 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3075 [Define if poll() sets errno on invalid file descriptors.])
3076fi
3077
Brett Cannon43802422005-02-10 20:48:03 +00003078# Before we can test tzset, we need to check if struct tm has a tm_zone
3079# (which is not required by ISO C or UNIX spec) and/or if we support
3080# tzname[]
3081AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003082
Brett Cannon43802422005-02-10 20:48:03 +00003083# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003084AC_MSG_CHECKING(for working tzset())
3085AC_CACHE_VAL(ac_cv_working_tzset, [
3086AC_TRY_RUN([
3087#include <stdlib.h>
3088#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003089#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003090
3091#if HAVE_TZNAME
3092extern char *tzname[];
3093#endif
3094
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003095int main()
3096{
Brett Cannon18367812003-09-19 00:59:16 +00003097 /* Note that we need to ensure that not only does tzset(3)
3098 do 'something' with localtime, but it works as documented
3099 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003100 This includes making sure that tzname is set properly if
3101 tm->tm_zone does not exist since it is the alternative way
3102 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003103
3104 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003105 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003106 */
3107
Brett Cannon43802422005-02-10 20:48:03 +00003108 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003109 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3110
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003111 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003112 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003113 if (localtime(&groundhogday)->tm_hour != 0)
3114 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003115#if HAVE_TZNAME
3116 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3117 if (strcmp(tzname[0], "UTC") ||
3118 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3119 exit(1);
3120#endif
Brett Cannon18367812003-09-19 00:59:16 +00003121
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003122 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003123 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003124 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003125 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003126#if HAVE_TZNAME
3127 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3128 exit(1);
3129#endif
Brett Cannon18367812003-09-19 00:59:16 +00003130
3131 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3132 tzset();
3133 if (localtime(&groundhogday)->tm_hour != 11)
3134 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003135#if HAVE_TZNAME
3136 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3137 exit(1);
3138#endif
3139
3140#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003141 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3142 exit(1);
3143 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3144 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003145#endif
Brett Cannon18367812003-09-19 00:59:16 +00003146
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003147 exit(0);
3148}
3149],
3150ac_cv_working_tzset=yes,
3151ac_cv_working_tzset=no,
3152ac_cv_working_tzset=no)])
3153AC_MSG_RESULT($ac_cv_working_tzset)
3154if test "$ac_cv_working_tzset" = yes
3155then
3156 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3157 [Define if tzset() actually switches the local timezone in a meaningful way.])
3158fi
3159
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003160# Look for subsecond timestamps in struct stat
3161AC_MSG_CHECKING(for tv_nsec in struct stat)
3162AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3163AC_TRY_COMPILE([#include <sys/stat.h>], [
3164struct stat st;
3165st.st_mtim.tv_nsec = 1;
3166],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003167ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003168ac_cv_stat_tv_nsec=no,
3169ac_cv_stat_tv_nsec=no))
3170AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3171if test "$ac_cv_stat_tv_nsec" = yes
3172then
3173 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3174 [Define if you have struct stat.st_mtim.tv_nsec])
3175fi
3176
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003177# Look for BSD style subsecond timestamps in struct stat
3178AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3179AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3180AC_TRY_COMPILE([#include <sys/stat.h>], [
3181struct stat st;
3182st.st_mtimespec.tv_nsec = 1;
3183],
3184ac_cv_stat_tv_nsec2=yes,
3185ac_cv_stat_tv_nsec2=no,
3186ac_cv_stat_tv_nsec2=no))
3187AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3188if test "$ac_cv_stat_tv_nsec2" = yes
3189then
3190 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3191 [Define if you have struct stat.st_mtimensec])
3192fi
3193
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003194# On HP/UX 11.0, mvwdelch is a block with a return statement
3195AC_MSG_CHECKING(whether mvwdelch is an expression)
3196AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3197AC_TRY_COMPILE([#include <curses.h>], [
3198 int rtn;
3199 rtn = mvwdelch(0,0,0);
3200], ac_cv_mvwdelch_is_expression=yes,
3201 ac_cv_mvwdelch_is_expression=no,
3202 ac_cv_mvwdelch_is_expression=yes))
3203AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3204
3205if test "$ac_cv_mvwdelch_is_expression" = yes
3206then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003207 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3208 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003209fi
3210
3211AC_MSG_CHECKING(whether WINDOW has _flags)
3212AC_CACHE_VAL(ac_cv_window_has_flags,
3213AC_TRY_COMPILE([#include <curses.h>], [
3214 WINDOW *w;
3215 w->_flags = 0;
3216], ac_cv_window_has_flags=yes,
3217 ac_cv_window_has_flags=no,
3218 ac_cv_window_has_flags=no))
3219AC_MSG_RESULT($ac_cv_window_has_flags)
3220
3221
3222if test "$ac_cv_window_has_flags" = yes
3223then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003224 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3225 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003226fi
3227
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003228AC_MSG_CHECKING(for /dev/ptmx)
3229
3230if test -e /dev/ptmx
3231then
3232 AC_MSG_RESULT(yes)
3233 AC_DEFINE(HAVE_DEV_PTMX, 1,
3234 [Define if we have /dev/ptmx.])
3235else
3236 AC_MSG_RESULT(no)
3237fi
3238
Neal Norwitz865400f2003-03-21 01:42:58 +00003239AC_MSG_CHECKING(for /dev/ptc)
3240
3241if test -e /dev/ptc
3242then
3243 AC_MSG_RESULT(yes)
3244 AC_DEFINE(HAVE_DEV_PTC, 1,
3245 [Define if we have /dev/ptc.])
3246else
3247 AC_MSG_RESULT(no)
3248fi
3249
Brett Cannon09d12362006-05-11 05:11:33 +00003250AC_MSG_CHECKING(for %zd printf() format support)
3251AC_TRY_RUN([#include <stdio.h>
3252#include <stddef.h>
3253#include <string.h>
3254
3255int main()
3256{
3257 char buffer[4];
3258
3259 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3260 return 1;
3261
3262 if (strncmp(buffer, "123", 3))
3263 return 1;
3264
3265 return 0;
3266}],
3267[AC_MSG_RESULT(yes)
3268 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3269 AC_MSG_RESULT(no))
3270
Martin v. Löwis01c04012002-11-11 14:58:44 +00003271AC_CHECK_TYPE(socklen_t,,
3272 AC_DEFINE(socklen_t,int,
3273 Define to `int' if <sys/socket.h> does not define.),[
3274#ifdef HAVE_SYS_TYPES_H
3275#include <sys/types.h>
3276#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003277#ifdef HAVE_SYS_SOCKET_H
3278#include <sys/socket.h>
3279#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003280])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003281
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003282AC_SUBST(THREADHEADERS)
3283
3284for h in `(cd $srcdir;echo Python/thread_*.h)`
3285do
3286 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3287done
3288
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003289AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003290SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003291AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003292for dir in $SRCDIRS; do
3293 if test ! -d $dir; then
3294 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003295 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003296done
3297AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003298
Guido van Rossum627b2d71993-12-24 10:39:16 +00003299# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003300AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3301AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003302
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003303echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003304if test ! -f Modules/Setup
3305then
3306 cp $srcdir/Modules/Setup.dist Modules/Setup
3307fi
3308
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003309echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003310if test ! -f Modules/Setup.local
3311then
3312 echo "# Edit this file for local setup changes" >Modules/Setup.local
3313fi
3314
3315echo "creating Makefile"
3316$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3317 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003318 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003319mv config.c Modules