blob: 0a2b17af8dadd729a649decbe23a26992a63aca2 [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)
Neal Norwitz9be57322006-08-18 05:39:20 +00004m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +00007AC_PREREQ(2.61)
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öwis76760b02007-07-31 19:57:56 +000053# OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
54# also defined. This can be overridden by defining _BSD_SOURCE
55AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
56
Martin v. Löwisd6320502004-08-12 13:45:08 +000057# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
58# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
59AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
60
Martin v. Löwise981a4e2002-11-11 13:26:51 +000061define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000062
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000063# Arguments passed to configure.
64AC_SUBST(CONFIG_ARGS)
65CONFIG_ARGS="$ac_configure_args"
66
Ronald Oussoren988117f2006-04-29 11:31:35 +000067AC_ARG_ENABLE(universalsdk,
68 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
69[
70 case $enableval in
71 yes)
72 enableval=/Developer/SDKs/MacOSX10.4u.sdk
73 ;;
74 esac
75 case $enableval in
76 no)
77 UNIVERSALSDK=
78 enable_universalsdk=
79 ;;
80 *)
81 UNIVERSALSDK=$enableval
82 ;;
83 esac
84],[
85 UNIVERSALSDK=
86 enable_universalsdk=
87])
88AC_SUBST(UNIVERSALSDK)
89
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000090dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000091AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000092 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
93[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000094 case $enableval in
95 yes)
96 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000097 esac
98 case $enableval in
99 no)
100 PYTHONFRAMEWORK=
101 PYTHONFRAMEWORKDIR=no-framework
102 PYTHONFRAMEWORKPREFIX=
103 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000104 FRAMEWORKINSTALLFIRST=
105 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000106 FRAMEWORKALTINSTALLFIRST=
107 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000108 if test "x${prefix}" = "xNONE"; then
109 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
110 else
111 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
112 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000113 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 ;;
115 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000116 PYTHONFRAMEWORK=Python
117 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000118 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000119 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000120 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
121 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000122 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
123 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000124 if test "x${prefix}" = "xNONE" ; then
125 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
126 else
127 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
128 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000129 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000130
131 # Add makefiles for Mac specific code to the list of output
132 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000133 AC_CONFIG_FILES(Mac/Makefile)
134 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
135 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000137 ],[
138 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000139 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000140 PYTHONFRAMEWORKPREFIX=
141 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000142 FRAMEWORKINSTALLFIRST=
143 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000144 FRAMEWORKALTINSTALLFIRST=
145 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000146 if test "x${prefix}" = "xNONE" ; then
147 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
148 else
149 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
150 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000151 enable_framework=
152])
153AC_SUBST(PYTHONFRAMEWORK)
154AC_SUBST(PYTHONFRAMEWORKDIR)
155AC_SUBST(PYTHONFRAMEWORKPREFIX)
156AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000157AC_SUBST(FRAMEWORKINSTALLFIRST)
158AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000159AC_SUBST(FRAMEWORKALTINSTALLFIRST)
160AC_SUBST(FRAMEWORKALTINSTALLLAST)
161AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000162
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000163##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000164## AC_HELP_STRING(--with-dyld,
165## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000166##
Guido van Rossumb418f891996-07-30 18:06:02 +0000167# Set name for machine-dependent library files
168AC_SUBST(MACHDEP)
169AC_MSG_CHECKING(MACHDEP)
170if test -z "$MACHDEP"
171then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000172 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000173 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
174 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000175 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000176 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000177 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000178 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000179 ac_md_system=`echo $ac_sys_system |
180 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
181 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000182 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000183 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000184
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000185 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000186 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000187 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000188 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000189 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000190 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000191 esac
192fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000193
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000194# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
195# disable features if it is defined, without any means to access these
196# features as extensions. For these systems, we skip the definition of
197# _XOPEN_SOURCE. Before adding a system to the list to gain access to
198# some feature, make sure there is no alternative way to access this
199# feature. Also, when using wildcards, make sure you have verified the
200# need for not defining _XOPEN_SOURCE on all systems matching the
201# wildcard, and that the wildcard does not include future systems
202# (which may remove their limitations).
203dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
204case $ac_sys_system/$ac_sys_release in
205 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
206 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000207 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz4bc2c092006-09-05 02:57:01 +0000208 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000209 define_xopen_source=no;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000210 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
211 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
212 # Marc Recht
213 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
214 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000215 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
216 # of union __?sigval. Reported by Stuart Bishop.
217 SunOS/5.6)
218 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000219 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
220 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000221 # Reconfirmed for 7.1.4 by Martin v. Loewis.
222 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000223 define_xopen_source=no;;
224 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000225 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000226 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000227 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000228 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
229 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
230 # this is fixed in 10.3, which identifies itself as Darwin/7.*
231 # This should hopefully be fixed in FreeBSD 4.9
232 FreeBSD/4.8* | Darwin/6* )
233 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000234 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
235 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
236 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000237 AIX/4)
238 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000239 AIX/5)
240 if test `uname -r` -eq 1; then
241 define_xopen_source=no
242 fi
243 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000244 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
245 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000246 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000247 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000248 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000249 define_xopen_source=no
250 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000251
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000252esac
253
254if test $define_xopen_source = yes
255then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000256 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
257 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000258 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
259 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000260 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000261 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000262 AC_DEFINE(_XOPEN_SOURCE, 500,
263 Define to the level of X/Open that your system supports)
264 ;;
265 *)
266 AC_DEFINE(_XOPEN_SOURCE, 600,
267 Define to the level of X/Open that your system supports)
268 ;;
269 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000270
271 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
272 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
273 # several APIs are not declared. Since this is also needed in some
274 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000275 # except for Solaris 10, where it must not be defined,
276 # as it implies XPG4.2
277 case $ac_sys_system/$ac_sys_release in
278 SunOS/5.10)
279 ;;
280 *)
281 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
282 Define to activate Unix95-and-earlier features)
283 ;;
284 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000285
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000286 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
287
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000288fi
289
Guido van Rossum91922671997-10-09 20:24:13 +0000290#
291# SGI compilers allow the specification of the both the ABI and the
292# ISA on the command line. Depending on the values of these switches,
293# different and often incompatable code will be generated.
294#
295# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
296# thus supply support for various ABI/ISA combinations. The MACHDEP
297# variable is also adjusted.
298#
299AC_SUBST(SGI_ABI)
300if test ! -z "$SGI_ABI"
301then
302 CC="cc $SGI_ABI"
303 LDFLAGS="$SGI_ABI $LDFLAGS"
304 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
305fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000306AC_MSG_RESULT($MACHDEP)
307
Jack Jansen83f898c2002-12-30 22:23:40 +0000308# And add extra plat-mac for darwin
309AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000310AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000311AC_MSG_CHECKING(EXTRAPLATDIR)
312if test -z "$EXTRAPLATDIR"
313then
314 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000315 darwin)
316 EXTRAPLATDIR="\$(PLATMACDIRS)"
317 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
318 ;;
319 *)
320 EXTRAPLATDIR=""
321 EXTRAMACHDEPPATH=""
322 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000323 esac
324fi
325AC_MSG_RESULT($EXTRAPLATDIR)
326
Jack Jansen6b08a402004-06-03 12:41:45 +0000327# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
328# it may influence the way we can build extensions, so distutils
329# needs to check it
330AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000331AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000332CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000333EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000334
Guido van Rossum627b2d71993-12-24 10:39:16 +0000335# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000336
337# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
338# for debug/optimization stuff. BASECFLAGS is for flags that are required
339# just to get things to compile and link. Users are free to override OPT
340# when running configure or make. The build should not break if they do.
341# BASECFLAGS should generally not be messed with, however.
342
343# XXX shouldn't some/most/all of this code be merged with the stuff later
344# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000345AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000346AC_ARG_WITH(gcc,
347 AC_HELP_STRING(--without-gcc,never use gcc),
348[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000349 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000350 no) CC=cc
351 without_gcc=yes;;
352 yes) CC=gcc
353 without_gcc=no;;
354 *) CC=$withval
355 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000356 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000357 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000358 AIX*) CC=cc_r
359 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000360 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000361 case $BE_HOST_CPU in
362 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000363 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000364 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000365 BASECFLAGS="$BASECFLAGS -export pragma"
366 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000367 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000368 ;;
369 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000370 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000371 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000372 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000373 ;;
374 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000375 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000376 ;;
377 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000378 AR="\$(srcdir)/Modules/ar_beos"
379 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000380 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000381 Monterey*)
382 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000383 without_gcc=;;
384 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000385 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000386AC_MSG_RESULT($without_gcc)
387
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000388# If the user switches compilers, we can't believe the cache
389if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
390then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000391 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
392(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000393fi
394
Guido van Rossum627b2d71993-12-24 10:39:16 +0000395AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000396
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000397AC_SUBST(CXX)
398AC_SUBST(MAINCC)
399AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
400AC_ARG_WITH(cxx_main,
401 AC_HELP_STRING([--with-cxx-main=<compiler>],
402 [compile main() and link python executable with C++ compiler]),
403[
404
405 case $withval in
406 no) with_cxx_main=no
407 MAINCC='$(CC)';;
408 yes) with_cxx_main=yes
409 MAINCC='$(CXX)';;
410 *) with_cxx_main=yes
411 MAINCC=$withval
412 if test -z "$CXX"
413 then
414 CXX=$withval
415 fi;;
416 esac], [
417 with_cxx_main=no
418 MAINCC='$(CC)'
419])
420AC_MSG_RESULT($with_cxx_main)
421
422preset_cxx="$CXX"
423if test -z "$CXX"
424then
425 case "$CC" in
426 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
427 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
428 esac
429 if test "$CXX" = "notfound"
430 then
431 CXX=""
432 fi
433fi
434if test -z "$CXX"
435then
436 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
437 if test "$CXX" = "notfound"
438 then
439 CXX=""
440 fi
441fi
442if test "$preset_cxx" != "$CXX"
443then
444 AC_MSG_WARN([
445
446 By default, distutils will build C++ extension modules with "$CXX".
447 If this is not intended, then set CXX on the configure command line.
448 ])
449fi
450
451
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000452# checks for UNIX variants that set C preprocessor variables
453AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000454
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000455# Check for unsupported systems
456case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000457atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000458 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
459 echo See README for details.
460 exit 1;;
461esac
462
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000463AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000464AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000465AC_ARG_WITH(suffix,
466 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
467[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000468 case $withval in
469 no) EXEEXT=;;
470 yes) EXEEXT=.exe;;
471 *) EXEEXT=$withval;;
472 esac])
473AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000474
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000475# Test whether we're running on a non-case-sensitive system, in which
476# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000477AC_SUBST(BUILDEXEEXT)
478AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000479if test ! -d CaseSensitiveTestDir; then
480mkdir CaseSensitiveTestDir
481fi
482
483if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000484then
Jack Jansen1999ef42001-12-06 21:47:20 +0000485 AC_MSG_RESULT(yes)
486 BUILDEXEEXT=.exe
487else
488 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000489 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000490fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000491rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000492
Guido van Rossumdd997f71998-10-07 19:58:26 +0000493case $MACHDEP in
494bsdos*)
495 case $CC in
496 gcc) CC="$CC -D_HAVE_BSDI";;
497 esac;;
498esac
499
Guido van Rossum84561611997-08-21 00:08:11 +0000500case $ac_sys_system in
501hp*|HP*)
502 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000503 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000504 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000505Monterey*)
506 case $CC in
507 cc) CC="$CC -Wl,-Bexport";;
508 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000509SunOS*)
510 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000511 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000512 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000513esac
514
Martin v. Löwise8964d42001-03-06 12:09:07 +0000515
Neil Schemenauer61c51152001-01-26 16:18:16 +0000516AC_SUBST(LIBRARY)
517AC_MSG_CHECKING(LIBRARY)
518if test -z "$LIBRARY"
519then
520 LIBRARY='libpython$(VERSION).a'
521fi
522AC_MSG_RESULT($LIBRARY)
523
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000524# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000525# name of the library into which to insert object files). BLDLIBRARY is also
526# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
527# is blank as the main program is not linked directly against LDLIBRARY.
528# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
529# systems without shared libraries, LDLIBRARY is the same as LIBRARY
530# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
531# DLLLIBRARY is the shared (i.e., DLL) library.
532#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000533# RUNSHARED is used to run shared python without installed libraries
534#
535# INSTSONAME is the name of the shared library that will be use to install
536# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000537AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000538AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000539AC_SUBST(BLDLIBRARY)
540AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000541AC_SUBST(INSTSONAME)
542AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000543LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000544BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000545INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000546DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000547LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000548RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000549
Guido van Rossumfb842551997-08-06 23:42:07 +0000550# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000551# If CXX is set, and if it is needed to link a main function that was
552# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
553# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000554# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000555# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000556AC_SUBST(LINKCC)
557AC_MSG_CHECKING(LINKCC)
558if test -z "$LINKCC"
559then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000560 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000561 case $ac_sys_system in
562 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000563 exp_extra="\"\""
564 if test $ac_sys_release -ge 5 -o \
565 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
566 exp_extra="."
567 fi
568 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000569 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000570 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000571 esac
572fi
573AC_MSG_RESULT($LINKCC)
574
Martin v. Löwis1142de32002-03-29 16:28:31 +0000575AC_MSG_CHECKING(for --enable-shared)
576AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000577 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000578
Martin v. Löwis1142de32002-03-29 16:28:31 +0000579if test -z "$enable_shared"
580then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000581 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000582 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000583 enable_shared="yes";;
584 *)
585 enable_shared="no";;
586 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000587fi
588AC_MSG_RESULT($enable_shared)
589
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000590AC_MSG_CHECKING(for --enable-profiling)
591AC_ARG_ENABLE(profiling,
592 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
593[ac_save_cc="$CC"
594 CC="$CC -pg"
595 AC_TRY_RUN([int main() { return 0; }],
596 ac_enable_profiling="yes",
597 ac_enable_profiling="no",
598 ac_enable_profiling="no")
599 CC="$ac_save_cc"])
600AC_MSG_RESULT($ac_enable_profiling)
601
602case "$ac_enable_profiling" in
603 "yes")
604 BASECFLAGS="-pg $BASECFLAGS"
605 LDFLAGS="-pg $LDFLAGS"
606 ;;
607esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000608
609AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000610
Guido van Rossumb8552162001-09-05 14:58:11 +0000611# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
612# library that we build, but we do not want to link against it (we
613# will find it with a -framework option). For this reason there is an
614# extra variable BLDLIBRARY against which Python and the extension
615# modules are linked, BLDLIBRARY. This is normally the same as
616# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000617if test "$enable_framework"
618then
619 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000620 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000621 BLDLIBRARY=''
622else
623 BLDLIBRARY='$(LDLIBRARY)'
624fi
625
Martin v. Löwis1142de32002-03-29 16:28:31 +0000626# Other platforms follow
627if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000628 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000629 case $ac_sys_system in
630 BeOS*)
631 LDLIBRARY='libpython$(VERSION).so'
632 ;;
633 CYGWIN*)
634 LDLIBRARY='libpython$(VERSION).dll.a'
635 DLLLIBRARY='libpython$(VERSION).dll'
636 ;;
637 SunOS*)
638 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000639 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000640 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000641 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000642 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000643 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000644 LDLIBRARY='libpython$(VERSION).so'
645 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000646 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000647 case $ac_sys_system in
648 FreeBSD*)
649 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
650 ;;
651 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000652 INSTSONAME="$LDLIBRARY".$SOVERSION
653 ;;
654 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000655 case `uname -m` in
656 ia64)
657 LDLIBRARY='libpython$(VERSION).so'
658 ;;
659 *)
660 LDLIBRARY='libpython$(VERSION).sl'
661 ;;
662 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000663 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000664 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000665 ;;
666 OSF*)
667 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000668 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000669 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000670 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000671 atheos*)
672 LDLIBRARY='libpython$(VERSION).so'
673 BLDLIBRARY='-L. -lpython$(VERSION)'
674 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
675 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676 esac
Jason Tishler30765592003-09-04 11:04:06 +0000677else # shared is disabled
678 case $ac_sys_system in
679 CYGWIN*)
680 BLDLIBRARY='$(LIBRARY)'
681 LDLIBRARY='libpython$(VERSION).dll.a'
682 ;;
683 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000684fi
685
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000686AC_MSG_RESULT($LDLIBRARY)
687
Guido van Rossum627b2d71993-12-24 10:39:16 +0000688AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000689AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000690AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000691
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000692AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000693AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000694if test $SVNVERSION = found
695then
696 SVNVERSION="svnversion \$(srcdir)"
697else
698 SVNVERSION="echo exported"
699fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000700
Neil Schemenauera42c8272001-03-31 00:01:55 +0000701case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000702bsdos*|hp*|HP*)
703 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000704 if test -z "$INSTALL"
705 then
706 INSTALL="${srcdir}/install-sh -c"
707 fi
708esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000709AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000710
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000711# Not every filesystem supports hard links
712AC_SUBST(LN)
713if test -z "$LN" ; then
714 case $ac_sys_system in
715 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000716 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000717 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000718 *) LN=ln;;
719 esac
720fi
721
Fred Drake9f715822001-07-11 06:27:00 +0000722# Check for --with-pydebug
723AC_MSG_CHECKING(for --with-pydebug)
724AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000725 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
726[
Fred Drake9f715822001-07-11 06:27:00 +0000727if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000728then
729 AC_DEFINE(Py_DEBUG, 1,
730 [Define if you want to build an interpreter with many run-time checks.])
731 AC_MSG_RESULT(yes);
732 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000733else AC_MSG_RESULT(no); Py_DEBUG='false'
734fi],
735[AC_MSG_RESULT(no)])
736
Skip Montanarodecc6a42003-01-01 20:07:49 +0000737# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
738# merged with this chunk of code?
739
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000740# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000741# ------------------------
742# (The following bit of code is complicated enough - please keep things
743# indented properly. Just pretend you're editing Python code. ;-)
744
745# There are two parallel sets of case statements below, one that checks to
746# see if OPT was set and one that does BASECFLAGS setting based upon
747# compiler and platform. BASECFLAGS tweaks need to be made even if the
748# user set OPT.
749
750# tweak OPT based on compiler and platform, only if the user didn't set
751# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000752AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000753if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000754then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000755 case $GCC in
756 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000757 if test "$CC" != 'g++' ; then
758 STRICT_PROTO="-Wstrict-prototypes"
759 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000760 # For gcc 4.x we need to use -fwrapv so lets check if its supported
761 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
762 WRAP="-fwrapv"
763 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000764 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000765 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000766 if test "$Py_DEBUG" = 'true' ; then
767 # Optimization messes up debuggers, so turn it off for
768 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000769 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000770 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000771 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000772 fi
773 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000774 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000775 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000776 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000777 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000778 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000779 SCO_SV*) OPT="$OPT -m486 -DSCO5"
780 ;;
781 esac
Fred Drake9f715822001-07-11 06:27:00 +0000782 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000783
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000784 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000785 OPT="-O"
786 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000787 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000788
789 # The current (beta) Monterey compiler dies with optimizations
790 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000791 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000792 Monterey*)
793 OPT=""
794 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000795 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000796
Guido van Rossum4e8af441994-08-19 15:33:54 +0000797fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000798
Skip Montanarodecc6a42003-01-01 20:07:49 +0000799AC_SUBST(BASECFLAGS)
800# tweak BASECFLAGS based on compiler and platform
801case $GCC in
802yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000803 # Python violates C99 rules, by casting between incompatible
804 # pointer types. GCC may generate bad code as a result of that,
805 # so use -fno-strict-aliasing if supported.
806 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
807 ac_save_cc="$CC"
808 CC="$CC -fno-strict-aliasing"
809 AC_TRY_RUN([int main() { return 0; }],
810 ac_cv_no_strict_aliasing_ok=yes,
811 ac_cv_no_strict_aliasing_ok=no,
812 ac_cv_no_strict_aliasing_ok=no)
813 CC="$ac_save_cc"
814 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
815 if test $ac_cv_no_strict_aliasing_ok = yes
816 then
817 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
818 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000819 case $ac_sys_system in
820 SCO_SV*)
821 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
822 ;;
823 # is there any other compiler on Darwin besides gcc?
824 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000825 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000826 if test "${enable_universalsdk}"; then
827 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
828 fi
829
Skip Montanarodecc6a42003-01-01 20:07:49 +0000830 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000831 OSF*)
832 BASECFLAGS="$BASECFLAGS -mieee"
833 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000834 esac
835 ;;
836
837*)
838 case $ac_sys_system in
839 OpenUNIX*|UnixWare*)
840 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
841 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000842 OSF*)
843 BASECFLAGS="$BASECFLAGS -ieee -std"
844 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000845 SCO_SV*)
846 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
847 ;;
848 esac
849 ;;
850esac
851
Fred Drakee1ceaa02001-12-04 20:55:47 +0000852if test "$Py_DEBUG" = 'true'; then
853 :
854else
855 OPT="-DNDEBUG $OPT"
856fi
857
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000858if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000859then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000861fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000862
Neal Norwitz020c46a2006-01-07 21:39:28 +0000863# disable check for icc since it seems to pass, but generates a warning
864if test "$CC" = icc
865then
866 ac_cv_opt_olimit_ok=no
867fi
868
Guido van Rossum91922671997-10-09 20:24:13 +0000869AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
870AC_CACHE_VAL(ac_cv_opt_olimit_ok,
871[ac_save_cc="$CC"
872CC="$CC -OPT:Olimit=0"
873AC_TRY_RUN([int main() { return 0; }],
874 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000875 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000876 ac_cv_opt_olimit_ok=no)
877CC="$ac_save_cc"])
878AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000879if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000880 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000881 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
882 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
883 # environment?
884 Darwin*)
885 ;;
886 *)
887 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
888 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000889 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000890else
891 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
892 AC_CACHE_VAL(ac_cv_olimit_ok,
893 [ac_save_cc="$CC"
894 CC="$CC -Olimit 1500"
895 AC_TRY_RUN([int main() { return 0; }],
896 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000897 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000898 ac_cv_olimit_ok=no)
899 CC="$ac_save_cc"])
900 AC_MSG_RESULT($ac_cv_olimit_ok)
901 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000902 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000903 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000904fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000905
Martin v. Löwisaac13162006-10-19 10:58:46 +0000906# Check whether GCC supports PyArg_ParseTuple format
907if test "$GCC" = "yes"
908then
909 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
910 save_CFLAGS=$CFLAGS
911 CFLAGS="$CFLAGS -Werror"
912 AC_TRY_COMPILE([
913 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
914 ],,
915 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
916 AC_MSG_RESULT(yes),
917 AC_MSG_RESULT(no)
918 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +0000919 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +0000920fi
921
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000922# On some compilers, pthreads are available without further options
923# (e.g. MacOS X). On some of these systems, the compiler will not
924# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
925# So we have to see first whether pthreads are available without
926# options before we can check whether -Kpthread improves anything.
927AC_MSG_CHECKING(whether pthreads are available without options)
928AC_CACHE_VAL(ac_cv_pthread_is_default,
929[AC_TRY_RUN([
930#include <pthread.h>
931
932void* routine(void* p){return NULL;}
933
934int main(){
935 pthread_t p;
936 if(pthread_create(&p,NULL,routine,NULL)!=0)
937 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000938 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000939 return 0;
940}
941],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000942[
943 ac_cv_pthread_is_default=yes
944 ac_cv_kthread=no
945 ac_cv_pthread=no
946],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000947 ac_cv_pthread_is_default=no,
948 ac_cv_pthread_is_default=no)
949])
950AC_MSG_RESULT($ac_cv_pthread_is_default)
951
952
953if test $ac_cv_pthread_is_default = yes
954then
955 ac_cv_kpthread=no
956else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000957# -Kpthread, if available, provides the right #defines
958# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000959# Some compilers won't report that they do not support -Kpthread,
960# so we need to run a program to see whether it really made the
961# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000962AC_MSG_CHECKING(whether $CC accepts -Kpthread)
963AC_CACHE_VAL(ac_cv_kpthread,
964[ac_save_cc="$CC"
965CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000966AC_TRY_RUN([
967#include <pthread.h>
968
969void* routine(void* p){return NULL;}
970
971int main(){
972 pthread_t p;
973 if(pthread_create(&p,NULL,routine,NULL)!=0)
974 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000975 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000976 return 0;
977}
978],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000979 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000980 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000981 ac_cv_kpthread=no)
982CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000983AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000984fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000985
Skip Montanarod8d39a02003-07-10 20:44:10 +0000986if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000987then
988# -Kthread, if available, provides the right #defines
989# and linker options to make pthread_create available
990# Some compilers won't report that they do not support -Kthread,
991# so we need to run a program to see whether it really made the
992# function available.
993AC_MSG_CHECKING(whether $CC accepts -Kthread)
994AC_CACHE_VAL(ac_cv_kthread,
995[ac_save_cc="$CC"
996CC="$CC -Kthread"
997AC_TRY_RUN([
998#include <pthread.h>
999
1000void* routine(void* p){return NULL;}
1001
1002int main(){
1003 pthread_t p;
1004 if(pthread_create(&p,NULL,routine,NULL)!=0)
1005 return 1;
1006 (void)pthread_detach(p);
1007 return 0;
1008}
1009],
1010 ac_cv_kthread=yes,
1011 ac_cv_kthread=no,
1012 ac_cv_kthread=no)
1013CC="$ac_save_cc"])
1014AC_MSG_RESULT($ac_cv_kthread)
1015fi
1016
Skip Montanarod8d39a02003-07-10 20:44:10 +00001017if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001018then
1019# -pthread, if available, provides the right #defines
1020# and linker options to make pthread_create available
1021# Some compilers won't report that they do not support -pthread,
1022# so we need to run a program to see whether it really made the
1023# function available.
1024AC_MSG_CHECKING(whether $CC accepts -pthread)
1025AC_CACHE_VAL(ac_cv_thread,
1026[ac_save_cc="$CC"
1027CC="$CC -pthread"
1028AC_TRY_RUN([
1029#include <pthread.h>
1030
1031void* routine(void* p){return NULL;}
1032
1033int main(){
1034 pthread_t p;
1035 if(pthread_create(&p,NULL,routine,NULL)!=0)
1036 return 1;
1037 (void)pthread_detach(p);
1038 return 0;
1039}
1040],
1041 ac_cv_pthread=yes,
1042 ac_cv_pthread=no,
1043 ac_cv_pthread=no)
1044CC="$ac_save_cc"])
1045AC_MSG_RESULT($ac_cv_pthread)
1046fi
1047
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001048# If we have set a CC compiler flag for thread support then
1049# check if it works for CXX, too.
1050ac_cv_cxx_thread=no
1051if test ! -z "$CXX"
1052then
1053AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1054ac_save_cxx="$CXX"
1055
1056if test "$ac_cv_kpthread" = "yes"
1057then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001058 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001059 ac_cv_cxx_thread=yes
1060elif test "$ac_cv_kthread" = "yes"
1061then
1062 CXX="$CXX -Kthread"
1063 ac_cv_cxx_thread=yes
1064elif test "$ac_cv_pthread" = "yes"
1065then
1066 CXX="$CXX -pthread"
1067 ac_cv_cxx_thread=yes
1068fi
1069
1070if test $ac_cv_cxx_thread = yes
1071then
1072 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1073 $CXX -c conftest.$ac_ext 2>&5
1074 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1075 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1076 then
1077 ac_cv_cxx_thread=yes
1078 else
1079 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001080 fi
1081 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001082fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001083AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001084fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001085CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001086
Fred Drakece81d592000-07-09 14:39:29 +00001087dnl # check for ANSI or K&R ("traditional") preprocessor
1088dnl AC_MSG_CHECKING(for C preprocessor type)
1089dnl AC_TRY_COMPILE([
1090dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1091dnl int foo;
1092dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1093dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1094dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001095
Guido van Rossum627b2d71993-12-24 10:39:16 +00001096# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001097AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001098AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1099fcntl.h grp.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001100io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
1101shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001102unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001103sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1104sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001105sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1106sys/time.h \
1107sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001108sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001109bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001110AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001111AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001112
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001113# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001114AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001115#ifdef HAVE_CURSES_H
1116#include <curses.h>
1117#endif
1118])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001119
Martin v. Löwis11017b12006-01-14 18:12:57 +00001120# On Linux, netlink.h requires asm/types.h
1121AC_CHECK_HEADERS(linux/netlink.h,,,[
1122#ifdef HAVE_ASM_TYPES_H
1123#include <asm/types.h>
1124#endif
1125#ifdef HAVE_SYS_SOCKET_H
1126#include <sys/socket.h>
1127#endif
1128])
1129
Guido van Rossum627b2d71993-12-24 10:39:16 +00001130# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001131was_it_defined=no
1132AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001133AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1134 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1135])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001136AC_MSG_RESULT($was_it_defined)
1137
Neal Norwitz11690112002-07-30 01:08:28 +00001138# Check whether using makedev requires defining _OSF_SOURCE
1139AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001140AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001141 [ makedev(0, 0) ],
1142 ac_cv_has_makedev=yes,
1143 ac_cv_has_makedev=no)
1144if test "$ac_cv_has_makedev" = "no"; then
1145 # we didn't link, try if _OSF_SOURCE will allow us to link
1146 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001147#define _OSF_SOURCE 1
1148#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001149 ],
1150 [ makedev(0, 0) ],
1151 ac_cv_has_makedev=yes,
1152 ac_cv_has_makedev=no)
1153 if test "$ac_cv_has_makedev" = "yes"; then
1154 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1155 fi
1156fi
1157AC_MSG_RESULT($ac_cv_has_makedev)
1158if test "$ac_cv_has_makedev" = "yes"; then
1159 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1160fi
1161
Martin v. Löwis399a6892002-10-04 10:22:02 +00001162# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1163# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1164# defined, but the compiler does not support pragma redefine_extname,
1165# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1166# structures (such as rlimit64) without declaring them. As a
1167# work-around, disable LFS on such configurations
1168
1169use_lfs=yes
1170AC_MSG_CHECKING(Solaris LFS bug)
1171AC_TRY_COMPILE([
1172#define _LARGEFILE_SOURCE 1
1173#define _FILE_OFFSET_BITS 64
1174#include <sys/resource.h>
1175],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1176AC_MSG_RESULT($sol_lfs_bug)
1177if test "$sol_lfs_bug" = "yes"; then
1178 use_lfs=no
1179fi
1180
1181if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001182# Two defines needed to enable largefile support on various platforms
1183# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001184AC_DEFINE(_LARGEFILE_SOURCE, 1,
1185[This must be defined on some systems to enable large file support.])
1186AC_DEFINE(_FILE_OFFSET_BITS, 64,
1187[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001188fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001189
Guido van Rossum300fda71996-08-19 21:58:16 +00001190# Add some code to confdefs.h so that the test for off_t works on SCO
1191cat >> confdefs.h <<\EOF
1192#if defined(SCO_DS)
1193#undef _OFF_T
1194#endif
1195EOF
1196
Guido van Rossumef2255b2000-03-10 22:30:29 +00001197# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001198AC_TYPE_MODE_T
1199AC_TYPE_OFF_T
1200AC_TYPE_PID_T
1201AC_TYPE_SIGNAL
1202AC_TYPE_SIZE_T
1203AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001204AC_CHECK_TYPE(ssize_t,
1205 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001206
Guido van Rossumef2255b2000-03-10 22:30:29 +00001207# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001208# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001209AC_CHECK_SIZEOF(int, 4)
1210AC_CHECK_SIZEOF(long, 4)
1211AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001212AC_CHECK_SIZEOF(short, 2)
1213AC_CHECK_SIZEOF(float, 4)
1214AC_CHECK_SIZEOF(double, 8)
1215AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001216AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001217
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001218AC_MSG_CHECKING(for long long support)
1219have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001220AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1221 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1222 have_long_long=yes
1223])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001224AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001225if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001226AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001227fi
1228
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001229AC_MSG_CHECKING(for _Bool support)
1230have_c99_bool=no
1231AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1232 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1233 have_c99_bool=yes
1234])
1235AC_MSG_RESULT($have_c99_bool)
1236if test "$have_c99_bool" = yes ; then
1237AC_CHECK_SIZEOF(_Bool, 1)
1238fi
1239
Martin v. Löwisebe26702006-10-02 14:55:51 +00001240AC_CHECK_TYPES(uintptr_t,
1241 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001242 [], [#ifdef HAVE_STDINT_H
1243 #include <stdint.h>
1244 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001245
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001246
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001247# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1248AC_MSG_CHECKING(size of off_t)
1249AC_CACHE_VAL(ac_cv_sizeof_off_t,
1250[AC_TRY_RUN([#include <stdio.h>
1251#include <sys/types.h>
1252main()
1253{
1254 FILE *f=fopen("conftestval", "w");
1255 if (!f) exit(1);
1256 fprintf(f, "%d\n", sizeof(off_t));
1257 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001258}],
1259ac_cv_sizeof_off_t=`cat conftestval`,
1260ac_cv_sizeof_off_t=0,
1261ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001262])
1263AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001264AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1265[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001266
1267AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001268if test "$have_long_long" = yes -a \
1269 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1270 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001271 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1272 [Defined to enable large file support when an off_t is bigger than a long
1273 and long long is available and at least as big as an off_t. You may need
1274 to add some flags for configuration and compilation to enable this mode.
1275 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001276 AC_MSG_RESULT(yes)
1277else
1278 AC_MSG_RESULT(no)
1279fi
1280
Fred Drakea3f6e912000-06-29 20:44:47 +00001281# AC_CHECK_SIZEOF() doesn't include <time.h>.
1282AC_MSG_CHECKING(size of time_t)
1283AC_CACHE_VAL(ac_cv_sizeof_time_t,
1284[AC_TRY_RUN([#include <stdio.h>
1285#include <time.h>
1286main()
1287{
1288 FILE *f=fopen("conftestval", "w");
1289 if (!f) exit(1);
1290 fprintf(f, "%d\n", sizeof(time_t));
1291 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001292}],
1293ac_cv_sizeof_time_t=`cat conftestval`,
1294ac_cv_sizeof_time_t=0,
1295ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001296])
1297AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001298AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1299[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001300
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001301
Trent Mick635f6fb2000-08-23 21:33:05 +00001302# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001303ac_save_cc="$CC"
1304if test "$ac_cv_kpthread" = "yes"
1305then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001306elif test "$ac_cv_kthread" = "yes"
1307then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001308elif test "$ac_cv_pthread" = "yes"
1309then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001310fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001311AC_MSG_CHECKING(for pthread_t)
1312have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001313AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001314AC_MSG_RESULT($have_pthread_t)
1315if test "$have_pthread_t" = yes ; then
1316 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1317 AC_MSG_CHECKING(size of pthread_t)
1318 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1319 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001320#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001321 main()
1322 {
1323 FILE *f=fopen("conftestval", "w");
1324 if (!f) exit(1);
1325 fprintf(f, "%d\n", sizeof(pthread_t));
1326 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001327 }],
1328 ac_cv_sizeof_pthread_t=`cat conftestval`,
1329 ac_cv_sizeof_pthread_t=0,
1330 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001331 ])
1332 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001333 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1334 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001335fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001336CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001337
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001338AC_MSG_CHECKING(for --enable-toolbox-glue)
1339AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001340 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001341
1342if test -z "$enable_toolbox_glue"
1343then
1344 case $ac_sys_system/$ac_sys_release in
1345 Darwin/*)
1346 enable_toolbox_glue="yes";;
1347 *)
1348 enable_toolbox_glue="no";;
1349 esac
1350fi
1351case "$enable_toolbox_glue" in
1352yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001353 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001354 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001355 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1356 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001357 ;;
1358*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001359 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001360 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 ;;
1362esac
1363AC_MSG_RESULT($enable_toolbox_glue)
1364
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001365AC_SUBST(OTHER_LIBTOOL_OPT)
1366case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001367 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001368 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1369 ;;
1370 Darwin/*)
1371 OTHER_LIBTOOL_OPT=""
1372 ;;
1373esac
1374
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001375AC_SUBST(LIBTOOL_CRUFT)
1376case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001377 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001378 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1379 if test "${enable_universalsdk}"; then
1380 :
1381 else
1382 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1383 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001384 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001385 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001386 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001387 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1388 if test ${gcc_version} '<' 4.0
1389 then
1390 LIBTOOL_CRUFT="-lcc_dynamic"
1391 else
1392 LIBTOOL_CRUFT=""
1393 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001394 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001395 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001396 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001397esac
1398
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001399AC_MSG_CHECKING(for --enable-framework)
1400if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001401then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001402 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001403 # -F. is needed to allow linking to the framework while
1404 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001405 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1406 [Define if you want to produce an OpenStep/Rhapsody framework
1407 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001408 AC_MSG_RESULT(yes)
1409else
1410 AC_MSG_RESULT(no)
1411fi
1412
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001413AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001414case $ac_sys_system/$ac_sys_release in
1415 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001416 AC_DEFINE(WITH_DYLD, 1,
1417 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1418 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1419 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001420 AC_MSG_RESULT(always on for Darwin)
1421 ;;
1422 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001423 AC_MSG_RESULT(no)
1424 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001425esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001426
Guido van Rossumac405f61994-09-12 10:56:06 +00001427# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001428AC_SUBST(SO)
1429AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001430AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001431AC_SUBST(CCSHARED)
1432AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001433# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001434# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001435AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001436if test -z "$SO"
1437then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001438 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001439 hp*|HP*)
1440 case `uname -m` in
1441 ia64) SO=.so;;
1442 *) SO=.sl;;
1443 esac
1444 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001445 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001446 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001447 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001448else
1449 # this might also be a termcap variable, see #610332
1450 echo
1451 echo '====================================================================='
1452 echo '+ +'
1453 echo '+ WARNING: You have set SO in your environment. +'
1454 echo '+ Do you really mean to change the extension for shared libraries? +'
1455 echo '+ Continuing in 10 seconds to let you to ponder. +'
1456 echo '+ +'
1457 echo '====================================================================='
1458 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001459fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001460AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001461AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001462# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001463# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001464# (Shared libraries in this instance are shared modules to be loaded into
1465# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001466AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001467if test -z "$LDSHARED"
1468then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001469 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001470 AIX*)
1471 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001472 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001473 ;;
1474 BeOS*)
1475 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001476 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001477 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001478 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001479 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001480 SunOS/5*)
1481 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001482 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001483 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001484 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001485 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001486 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001487 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001488 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1489 if test "$enable_framework" ; then
1490 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001491 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1492 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001493 else
1494 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001495 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001496 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001497 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001498 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1499 if test "$enable_framework" ; then
1500 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001501 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1502 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001503 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001504 # No framework, use the Python app as bundle-loader
1505 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001506 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001507 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001508 Darwin/*)
1509 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1510 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001511 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001512 if test ${cur_target} '>' 10.2; then
1513 cur_target=10.3
1514 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001515 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001516
1517 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1518 # environment with a value that is the same as what we'll use
1519 # in the Makefile to ensure that we'll get the same compiler
1520 # environment during configure and build time.
1521 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1522 export MACOSX_DEPLOYMENT_TARGET
1523
Ronald Oussoren988117f2006-04-29 11:31:35 +00001524 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001525 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001526 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001527 if test "${enable_universalsdk}"; then
1528 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1529 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001530 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1531 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001532 else
1533 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1534 if test "$enable_framework" ; then
1535 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001536 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1537 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001538 else
1539 # No framework, use the Python app as bundle-loader
1540 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1541 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1542 fi
1543 fi
1544 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001545 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001546 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001547 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001548 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001549 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001550 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001551 else
1552 LDSHARED="ld -Bshareable ${LDFLAGS}"
1553 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001554 OpenBSD*)
1555 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1556 then
1557 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1558 else
1559 case `uname -r` in
1560 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1561 LDSHARED="ld -Bshareable ${LDFLAGS}"
1562 ;;
1563 *)
1564 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1565 ;;
1566 esac
1567 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001568 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001569 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001570 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001571 then LDSHARED='$(CC) -shared'
1572 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001573 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001574 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001575 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001576 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001577 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001578 *) LDSHARED="ld";;
1579 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001580fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001581AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001582BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001583# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001585AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001586if test -z "$CCSHARED"
1587then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001588 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001589 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001590 then CCSHARED="-fPIC";
1591 elif test `uname -p` = sparc;
1592 then CCSHARED="-xcode=pic32";
1593 else CCSHARED="-Kpic";
1594 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001595 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001596 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001597 else CCSHARED="+z";
1598 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001599 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001600 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001601 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001602 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001603 if test "$GCC" = "yes"
1604 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001605 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001606 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001607 SCO_SV*)
1608 if test "$GCC" = "yes"
1609 then CCSHARED="-fPIC"
1610 else CCSHARED="-Kpic -belf"
1611 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001612 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001613 IRIX*/6*) case $CC in
1614 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001615 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001616 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001617 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001618 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001619fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001620AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001621# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001622# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001623AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001624if test -z "$LINKFORSHARED"
1625then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001626 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001627 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001628 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001629 LINKFORSHARED="-Wl,-E -Wl,+s";;
1630# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001631 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001632 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001633 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001634 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001635 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1636 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001637 # not used by the core itself but which needs to be in the core so
1638 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001639 # -prebind is no longer used, because it actually seems to give a
1640 # slowdown in stead of a speedup, maybe due to the large number of
1641 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001642
1643 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001644 if test "$enable_framework"
1645 then
Jack Jansenda49e192005-01-07 13:08:22 +00001646 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001647 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001648 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001649 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001650 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001651 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001652 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001653 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1654 then
1655 LINKFORSHARED="-Wl,--export-dynamic"
1656 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001657 SunOS/5*) case $CC in
1658 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001659 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001660 then
1661 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001662 fi;;
1663 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001664 CYGWIN*)
1665 if test $enable_shared = "no"
1666 then
1667 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1668 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001669 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001670fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001671AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001672
Neil Schemenauer61c51152001-01-26 16:18:16 +00001673AC_SUBST(CFLAGSFORSHARED)
1674AC_MSG_CHECKING(CFLAGSFORSHARED)
1675if test ! "$LIBRARY" = "$LDLIBRARY"
1676then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001677 case $ac_sys_system in
1678 CYGWIN*)
1679 # Cygwin needs CCSHARED when building extension DLLs
1680 # but not when building the interpreter DLL.
1681 CFLAGSFORSHARED='';;
1682 *)
1683 CFLAGSFORSHARED='$(CCSHARED)'
1684 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001685fi
1686AC_MSG_RESULT($CFLAGSFORSHARED)
1687
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001688# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1689# library (with --enable-shared).
1690# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001691# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1692# if it is not required, since it creates a dependency of the shared library
1693# to LIBS. This, in turn, means that applications linking the shared libpython
1694# don't need to link LIBS explicitly. The default should be only changed
1695# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001696AC_SUBST(SHLIBS)
1697AC_MSG_CHECKING(SHLIBS)
1698case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001699 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001700 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001701esac
1702AC_MSG_RESULT($SHLIBS)
1703
1704
Guido van Rossum627b2d71993-12-24 10:39:16 +00001705# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001706AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1707AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001708
1709# only check for sem_ini if thread support is requested
1710if test "$with_threads" = "yes" -o -z "$with_threads"; then
1711 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1712 # posix4 on Solaris 2.6
1713 # pthread (first!) on Linux
1714fi
1715
Martin v. Löwis19d17342003-06-14 21:03:05 +00001716# check if we need libintl for locale functions
1717AC_CHECK_LIB(intl, textdomain,
1718 AC_DEFINE(WITH_LIBINTL, 1,
1719 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001720
1721# checks for system dependent C++ extensions support
1722case "$ac_sys_system" in
1723 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1724 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1725 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001726 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1727 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1728 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001729 AC_MSG_RESULT(yes)],
1730 [AC_MSG_RESULT(no)]);;
1731 *) ;;
1732esac
1733
Guido van Rossum70c7f481998-03-26 18:44:10 +00001734# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001735# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001736AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001737AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001738
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001739case "$ac_sys_system" in
1740BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001741AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1742;;
1743esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001744
Guido van Rossumc5a39031996-07-31 17:35:03 +00001745AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001746AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001747 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1748[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001749AC_MSG_RESULT($withval)
1750LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001751],
1752[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001753
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001754# Check for use of the system libffi library
Matthias Klose9afb9852007-10-24 20:00:44 +00001755AC_CHECK_HEADER(ffi.h)
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001756AC_MSG_CHECKING(for --with-system-ffi)
1757AC_ARG_WITH(system_ffi,
1758 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1759
Matthias Klose9afb9852007-10-24 20:00:44 +00001760if test -z "$with_system_ffi" && test "$ac_cv_header_ffi_h" = yes; then
1761 case "$ac_sys_system/`uname -m`" in
Thomas Heller486b1b02007-11-02 19:10:24 +00001762 Linux/alpha*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Matthias Klose6e183f82007-10-25 06:37:24 +00001763 Linux/arm*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Thomas Heller486b1b02007-11-02 19:10:24 +00001764 Linux/ppc*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
1765 Linux/s390*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Matthias Klose9afb9852007-10-24 20:00:44 +00001766 *) with_system_ffi="no"
1767 esac
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001768fi
1769AC_MSG_RESULT($with_system_ffi)
1770
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001771# Determine if signalmodule should be used.
1772AC_SUBST(USE_SIGNAL_MODULE)
1773AC_SUBST(SIGNAL_OBJS)
1774AC_MSG_CHECKING(for --with-signal-module)
1775AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001776 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001777
1778if test -z "$with_signal_module"
1779then with_signal_module="yes"
1780fi
1781AC_MSG_RESULT($with_signal_module)
1782
1783if test "${with_signal_module}" = "yes"; then
1784 USE_SIGNAL_MODULE=""
1785 SIGNAL_OBJS=""
1786else
1787 USE_SIGNAL_MODULE="#"
1788 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1789fi
1790
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001791# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001792AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001793USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001794
Guido van Rossum54d93d41997-01-22 20:51:58 +00001795AC_MSG_CHECKING(for --with-dec-threads)
1796AC_SUBST(LDLAST)
1797AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001798 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1799[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001800AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001801LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001802if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001803 with_thread="$withval";
1804fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001805[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001806
Martin v. Löwis11437992002-04-12 09:54:03 +00001807# Templates for things AC_DEFINEd more than once.
1808# For a single AC_DEFINE, no template is needed.
1809AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1810AH_TEMPLATE(_REENTRANT,
1811 [Define to force use of thread-safe errno, h_errno, and other functions])
1812AH_TEMPLATE(WITH_THREAD,
1813 [Define if you want to compile in rudimentary thread support])
1814
Guido van Rossum54d93d41997-01-22 20:51:58 +00001815AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001816dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001817AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001818 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001819
Barry Warsawc0d24d82000-06-29 16:12:00 +00001820# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001821dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001822AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001823 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1824 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001825
1826if test -z "$with_threads"
1827then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001828fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001829AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001830
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001831AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001832if test "$with_threads" = "no"
1833then
1834 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001835elif test "$ac_cv_pthread_is_default" = yes
1836then
1837 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001838 # Defining _REENTRANT on system with POSIX threads should not hurt.
1839 AC_DEFINE(_REENTRANT)
1840 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001841 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001842elif test "$ac_cv_kpthread" = "yes"
1843then
1844 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001845 if test "$ac_cv_cxx_thread" = "yes"; then
1846 CXX="$CXX -Kpthread"
1847 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001848 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001849 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001850 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001851elif test "$ac_cv_kthread" = "yes"
1852then
1853 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001854 if test "$ac_cv_cxx_thread" = "yes"; then
1855 CXX="$CXX -Kthread"
1856 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001857 AC_DEFINE(WITH_THREAD)
1858 posix_threads=yes
1859 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001860elif test "$ac_cv_pthread" = "yes"
1861then
1862 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001863 if test "$ac_cv_cxx_thread" = "yes"; then
1864 CXX="$CXX -pthread"
1865 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001866 AC_DEFINE(WITH_THREAD)
1867 posix_threads=yes
1868 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001869else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001870 if test ! -z "$with_threads" -a -d "$with_threads"
1871 then LDFLAGS="$LDFLAGS -L$with_threads"
1872 fi
1873 if test ! -z "$withval" -a -d "$withval"
1874 then LDFLAGS="$LDFLAGS -L$withval"
1875 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001876
1877 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001878 # define _POSIX_THREADS in unistd.h. Some apparently don't
1879 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001880 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1881 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001882 [
1883#include <unistd.h>
1884#ifdef _POSIX_THREADS
1885yes
1886#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001887 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1888 AC_MSG_RESULT($unistd_defines_pthreads)
1889
Martin v. Löwis130fb172001-07-19 11:00:41 +00001890 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001891 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1892 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001893 AC_DEFINE(HURD_C_THREADS, 1,
1894 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001895 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001896 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001897 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1898 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001899 AC_DEFINE(MACH_C_THREADS, 1,
1900 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001901 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001902 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001903 AC_ARG_WITH([pth],
1904 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1905 [AC_MSG_RESULT($withval)
1906 AC_DEFINE([WITH_THREAD])
1907 AC_DEFINE([HAVE_PTH], 1,
1908 [Define if you have GNU PTH threads.])
1909 LIBS="-lpth $LIBS"
1910 THREADOBJ="Python/thread.o"],
1911 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001912
1913 # Just looking for pthread_create in libpthread is not enough:
1914 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1915 # So we really have to include pthread.h, and then link.
1916 _libs=$LIBS
1917 LIBS="$LIBS -lpthread"
1918 AC_MSG_CHECKING([for pthread_create in -lpthread])
1919 AC_TRY_LINK([#include <pthread.h>
1920
1921void * start_routine (void *arg) { exit (0); }], [
1922pthread_create (NULL, NULL, start_routine, NULL)], [
1923 AC_MSG_RESULT(yes)
1924 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001925 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001926 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001927 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001928 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001929 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001930 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001931 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1932 AC_DEFINE(ATHEOS_THREADS, 1,
1933 [Define this if you have AtheOS threads.])
1934 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001935 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001936 AC_DEFINE(BEOS_THREADS, 1,
1937 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001938 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001939 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001940 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001941 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001942 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001943 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001944 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001945 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001946 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001947 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001948 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001949 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001950 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001951 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001952 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001953 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001954 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001955 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001956 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001957
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001958 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1959 LIBS="$LIBS -lmpc"
1960 THREADOBJ="Python/thread.o"
1961 USE_THREAD_MODULE=""])
1962
1963 if test "$posix_threads" != "yes"; then
1964 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1965 LIBS="$LIBS -lthread"
1966 THREADOBJ="Python/thread.o"
1967 USE_THREAD_MODULE=""])
1968 fi
1969
1970 if test "$USE_THREAD_MODULE" != "#"
1971 then
1972 # If the above checks didn't disable threads, (at least) OSF1
1973 # needs this '-threads' argument during linking.
1974 case $ac_sys_system in
1975 OSF1) LDLAST=-threads;;
1976 esac
1977 fi
1978fi
1979
1980if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001981 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001982 AC_DEFINE(_POSIX_THREADS, 1,
1983 [Define if you have POSIX threads,
1984 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001985 fi
1986
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001987 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1988 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001989 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1990 Defined for Solaris 2.6 bug in pthread header.)
1991 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001992 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001993 Define if the Posix semaphores do not work on your system)
1994 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001995 esac
1996
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001997 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1998 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1999 [AC_TRY_RUN([#include <pthread.h>
2000 void *foo(void *parm) {
2001 return NULL;
2002 }
2003 main() {
2004 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002005 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002006 if (pthread_attr_init(&attr)) exit(-1);
2007 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002008 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002009 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002010 }],
2011 ac_cv_pthread_system_supported=yes,
2012 ac_cv_pthread_system_supported=no,
2013 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002014 ])
2015 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2016 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002017 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002018 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002019 AC_CHECK_FUNCS(pthread_sigmask,
2020 [case $ac_sys_system in
2021 CYGWIN*)
2022 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2023 [Define if pthread_sigmask() does not work on your system.])
2024 ;;
2025 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002026fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002027
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002028
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002029# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002030AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002031AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002032AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002033[ --enable-ipv6 Enable ipv6 (with ipv4) support
2034 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002035[ case "$enableval" in
2036 no)
2037 AC_MSG_RESULT(no)
2038 ipv6=no
2039 ;;
2040 *) AC_MSG_RESULT(yes)
2041 AC_DEFINE(ENABLE_IPV6)
2042 ipv6=yes
2043 ;;
2044 esac ],
2045
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002046[
2047dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002048 AC_TRY_RUN([ /* AF_INET6 available check */
2049#include <sys/types.h>
2050#include <sys/socket.h>
2051main()
2052{
2053 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2054 exit(1);
2055 else
2056 exit(0);
2057}
2058],
2059 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002060 ipv6=yes,
2061 AC_MSG_RESULT(no)
2062 ipv6=no,
2063 AC_MSG_RESULT(no)
2064 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002065)
2066
2067if test "$ipv6" = "yes"; then
2068 AC_MSG_CHECKING(if RFC2553 API is available)
2069 AC_TRY_COMPILE([#include <sys/types.h>
2070#include <netinet/in.h>],
2071 [struct sockaddr_in6 x;
2072x.sin6_scope_id;],
2073 AC_MSG_RESULT(yes)
2074 ipv6=yes,
2075 AC_MSG_RESULT(no, IPv6 disabled)
2076 ipv6=no)
2077fi
2078
2079if test "$ipv6" = "yes"; then
2080 AC_DEFINE(ENABLE_IPV6)
2081fi
2082])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002083
2084ipv6type=unknown
2085ipv6lib=none
2086ipv6trylibc=no
2087
2088if test "$ipv6" = "yes"; then
2089 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002090 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2091 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002092 case $i in
2093 inria)
2094 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002095 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002096#include <netinet/in.h>
2097#ifdef IPV6_INRIA_VERSION
2098yes
2099#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002100 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002101 ;;
2102 kame)
2103 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002104 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002105#include <netinet/in.h>
2106#ifdef __KAME__
2107yes
2108#endif],
2109 [ipv6type=$i;
2110 ipv6lib=inet6
2111 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002112 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002113 ;;
2114 linux-glibc)
2115 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002116 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002117#include <features.h>
2118#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2119yes
2120#endif],
2121 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002122 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002123 ;;
2124 linux-inet6)
2125 dnl http://www.v6.linux.or.jp/
2126 if test -d /usr/inet6; then
2127 ipv6type=$i
2128 ipv6lib=inet6
2129 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002130 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002131 fi
2132 ;;
2133 solaris)
2134 if test -f /etc/netconfig; then
2135 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2136 ipv6type=$i
2137 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002138 fi
2139 fi
2140 ;;
2141 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002142 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002143#include <sys/param.h>
2144#ifdef _TOSHIBA_INET6
2145yes
2146#endif],
2147 [ipv6type=$i;
2148 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002149 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002150 ;;
2151 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002152 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002153#include </usr/local/v6/include/sys/v6config.h>
2154#ifdef __V6D__
2155yes
2156#endif],
2157 [ipv6type=$i;
2158 ipv6lib=v6;
2159 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002160 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002161 ;;
2162 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002163 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002164#include <sys/param.h>
2165#ifdef _ZETA_MINAMI_INET6
2166yes
2167#endif],
2168 [ipv6type=$i;
2169 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002170 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002171 ;;
2172 esac
2173 if test "$ipv6type" != "unknown"; then
2174 break
2175 fi
2176 done
2177 AC_MSG_RESULT($ipv6type)
2178fi
2179
2180if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2181 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2182 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2183 echo "using lib$ipv6lib"
2184 else
2185 if test $ipv6trylibc = "yes"; then
2186 echo "using libc"
2187 else
2188 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2189 echo "You need to fetch lib$ipv6lib.a from appropriate"
2190 echo 'ipv6 kit and compile beforehand.'
2191 exit 1
2192 fi
2193 fi
2194fi
2195
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002196# Check for --with-doc-strings
2197AC_MSG_CHECKING(for --with-doc-strings)
2198AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002199 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002200
2201if test -z "$with_doc_strings"
2202then with_doc_strings="yes"
2203fi
2204if test "$with_doc_strings" != "no"
2205then
2206 AC_DEFINE(WITH_DOC_STRINGS, 1,
2207 [Define if you want documentation strings in extension modules])
2208fi
2209AC_MSG_RESULT($with_doc_strings)
2210
Neil Schemenauera35c6882001-02-27 04:45:05 +00002211# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002212AC_MSG_CHECKING(for --with-tsc)
2213AC_ARG_WITH(tsc,
2214[ --with(out)-tsc enable/disable timestamp counter profile], [
2215if test "$withval" != no
2216then
2217 AC_DEFINE(WITH_TSC, 1,
2218 [Define to profile with the Pentium timestamp counter])
2219 AC_MSG_RESULT(yes)
2220else AC_MSG_RESULT(no)
2221fi],
2222[AC_MSG_RESULT(no)])
2223
2224# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002225AC_MSG_CHECKING(for --with-pymalloc)
2226AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002227 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002228
2229if test -z "$with_pymalloc"
2230then with_pymalloc="yes"
2231fi
2232if test "$with_pymalloc" != "no"
2233then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002234 AC_DEFINE(WITH_PYMALLOC, 1,
2235 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002236fi
2237AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002238
Barry Warsawef82cd72000-06-30 16:21:01 +00002239# Check for --with-wctype-functions
2240AC_MSG_CHECKING(for --with-wctype-functions)
2241AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002242 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2243[
Barry Warsawef82cd72000-06-30 16:21:01 +00002244if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002245then
2246 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2247 [Define if you want wctype.h functions to be used instead of the
2248 one supplied by Python itself. (see Include/unicodectype.h).])
2249 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002250else AC_MSG_RESULT(no)
2251fi],
2252[AC_MSG_RESULT(no)])
2253
Guido van Rossum68242b51996-05-28 22:53:03 +00002254# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002255AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002256DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002257
Guido van Rossume97ee181999-12-20 21:27:22 +00002258# the dlopen() function means we might want to use dynload_shlib.o. some
2259# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002260AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002261
2262# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2263# loading of modules.
2264AC_SUBST(DYNLOADFILE)
2265AC_MSG_CHECKING(DYNLOADFILE)
2266if test -z "$DYNLOADFILE"
2267then
2268 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002269 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2270 if test "$ac_cv_func_dlopen" = yes
2271 then DYNLOADFILE="dynload_shlib.o"
2272 else DYNLOADFILE="dynload_aix.o"
2273 fi
2274 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002275 BeOS*) DYNLOADFILE="dynload_beos.o";;
2276 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002277 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2278 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002279 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002280 *)
2281 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2282 # out any dynamic loading
2283 if test "$ac_cv_func_dlopen" = yes
2284 then DYNLOADFILE="dynload_shlib.o"
2285 else DYNLOADFILE="dynload_stub.o"
2286 fi
2287 ;;
2288 esac
2289fi
2290AC_MSG_RESULT($DYNLOADFILE)
2291if test "$DYNLOADFILE" != "dynload_stub.o"
2292then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002293 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2294 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002295fi
2296
Jack Jansenc49e5b72001-06-19 15:00:23 +00002297# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2298
2299AC_SUBST(MACHDEP_OBJS)
2300AC_MSG_CHECKING(MACHDEP_OBJS)
2301if test -z "$MACHDEP_OBJS"
2302then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002303 MACHDEP_OBJS=$extra_machdep_objs
2304else
2305 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002306fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002307AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002308
Guido van Rossum627b2d71993-12-24 10:39:16 +00002309# checks for library functions
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002310AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr \
Christian Heimes36281872007-11-30 21:11:28 +00002311 ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002312 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002313 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002314 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002315 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002316 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002317 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002318 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002319 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002320 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002321 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002322
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002323# For some functions, having a definition is not sufficient, since
2324# we want to take their address.
2325AC_MSG_CHECKING(for chroot)
2326AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2327 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2328 AC_MSG_RESULT(yes),
2329 AC_MSG_RESULT(no)
2330)
2331AC_MSG_CHECKING(for link)
2332AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2333 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2334 AC_MSG_RESULT(yes),
2335 AC_MSG_RESULT(no)
2336)
2337AC_MSG_CHECKING(for symlink)
2338AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2339 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2340 AC_MSG_RESULT(yes),
2341 AC_MSG_RESULT(no)
2342)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002343AC_MSG_CHECKING(for fchdir)
2344AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2345 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2346 AC_MSG_RESULT(yes),
2347 AC_MSG_RESULT(no)
2348)
2349AC_MSG_CHECKING(for fsync)
2350AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002351 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002352 AC_MSG_RESULT(yes),
2353 AC_MSG_RESULT(no)
2354)
2355AC_MSG_CHECKING(for fdatasync)
2356AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2357 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2358 AC_MSG_RESULT(yes),
2359 AC_MSG_RESULT(no)
2360)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002361
Martin v. Löwisd5843682002-11-21 20:41:28 +00002362# On some systems (eg. FreeBSD 5), we would find a definition of the
2363# functions ctermid_r, setgroups in the library, but no prototype
2364# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2365# address to avoid compiler warnings and potential miscompilations
2366# because of the missing prototypes.
2367
2368AC_MSG_CHECKING(for ctermid_r)
2369AC_TRY_COMPILE([
2370#include "confdefs.h"
2371#include <stdio.h>
2372], void* p = ctermid_r,
2373 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2374 AC_MSG_RESULT(yes),
2375 AC_MSG_RESULT(no)
2376)
2377
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002378AC_MSG_CHECKING(for flock)
2379AC_TRY_COMPILE([
2380#include "confdefs.h"
2381#include <sys/file.h>
2382], void* p = flock,
2383 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2384 AC_MSG_RESULT(yes),
2385 AC_MSG_RESULT(no)
2386)
2387
2388AC_MSG_CHECKING(for getpagesize)
2389AC_TRY_COMPILE([
2390#include "confdefs.h"
2391#include <unistd.h>
2392], void* p = getpagesize,
2393 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2394 AC_MSG_RESULT(yes),
2395 AC_MSG_RESULT(no)
2396)
2397
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002398dnl check for true
2399AC_CHECK_PROGS(TRUE, true, /bin/true)
2400
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002401dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2402dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002403AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002404 AC_CHECK_LIB(resolv, inet_aton)
2405)
2406
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002407# On Tru64, chflags seems to be present, but calling it will
2408# exit Python
2409AC_MSG_CHECKING(for chflags)
2410AC_TRY_RUN([
2411#include <sys/stat.h>
2412#include <unistd.h>
2413int main(int argc, char*argv[])
2414{
2415 if(chflags(argv[0], 0) != 0)
2416 return 1;
2417 return 0;
2418}
2419],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2420 AC_MSG_RESULT(yes),
2421 AC_MSG_RESULT(no)
2422)
2423
2424AC_MSG_CHECKING(for lchflags)
2425AC_TRY_RUN([
2426#include <sys/stat.h>
2427#include <unistd.h>
2428int main(int argc, char*argv[])
2429{
2430 if(lchflags(argv[0], 0) != 0)
2431 return 1;
2432 return 0;
2433}
2434],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2435 AC_MSG_RESULT(yes),
2436 AC_MSG_RESULT(no)
2437)
2438
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002439dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002440dnl
2441dnl On MacOSX the linker will search for dylibs on the entire linker path
2442dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2443dnl to revert to a more traditional unix behaviour and make it possible to
2444dnl override the system libz with a local static library of libz. Temporarily
2445dnl add that flag to our CFLAGS as well to ensure that we check the version
2446dnl of libz that will be used by setup.py.
2447dnl The -L/usr/local/lib is needed as wel to get the same compilation
2448dnl environment as setup.py (and leaving it out can cause configure to use the
2449dnl wrong version of the library)
2450case $ac_sys_system/$ac_sys_release in
2451Darwin/*)
2452 _CUR_CFLAGS="${CFLAGS}"
2453 _CUR_LDFLAGS="${LDFLAGS}"
2454 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2455 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2456 ;;
2457esac
2458
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002459AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2460
Ronald Oussorenf8752642006-07-06 10:13:35 +00002461case $ac_sys_system/$ac_sys_release in
2462Darwin/*)
2463 CFLAGS="${_CUR_CFLAGS}"
2464 LDFLAGS="${_CUR_LDFLAGS}"
2465 ;;
2466esac
2467
Martin v. Löwise9416172003-05-03 10:12:45 +00002468AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002469AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002470#include "confdefs.h"
2471#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002472], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002473 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2474 AC_MSG_RESULT(yes),
2475 AC_MSG_RESULT(no)
2476)
2477
2478AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002479AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002480#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002481#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002482#include <sys/socket.h>
2483#include <netinet/in.h>
2484#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002485], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002486 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2487 AC_MSG_RESULT(yes),
2488 AC_MSG_RESULT(no)
2489)
2490
2491AC_MSG_CHECKING(for inet_pton)
2492AC_TRY_COMPILE([
2493#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002494#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002495#include <sys/socket.h>
2496#include <netinet/in.h>
2497#include <arpa/inet.h>
2498], void* p = inet_pton,
2499 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2500 AC_MSG_RESULT(yes),
2501 AC_MSG_RESULT(no)
2502)
2503
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002504# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002505AC_MSG_CHECKING(for setgroups)
2506AC_TRY_COMPILE([
2507#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002508#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002509#ifdef HAVE_GRP_H
2510#include <grp.h>
2511#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002512],
2513void* p = setgroups,
2514 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2515 AC_MSG_RESULT(yes),
2516 AC_MSG_RESULT(no)
2517)
2518
Fred Drake8cef4cf2000-06-28 16:40:38 +00002519# check for openpty and forkpty
2520
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002521AC_CHECK_FUNCS(openpty,,
2522 AC_CHECK_LIB(util,openpty,
2523 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2524 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2525 )
2526)
2527AC_CHECK_FUNCS(forkpty,,
2528 AC_CHECK_LIB(util,forkpty,
2529 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2530 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2531 )
2532)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002533
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002534# check for long file support functions
2535AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2536
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002537AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002538AC_CHECK_FUNCS(getpgrp,
2539 AC_TRY_COMPILE([#include <unistd.h>],
2540 [getpgrp(0);],
2541 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2542 [Define if getpgrp() must be called as getpgrp(0).])
2543 )
2544)
Jack Jansen150753c2003-03-29 22:07:47 +00002545AC_CHECK_FUNCS(setpgrp,
2546 AC_TRY_COMPILE([#include <unistd.h>],
2547 [setpgrp(0,0);],
2548 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2549 [Define if setpgrp() must be called as setpgrp(0, 0).])
2550 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002551)
2552AC_CHECK_FUNCS(gettimeofday,
2553 AC_TRY_COMPILE([#include <sys/time.h>],
2554 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2555 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2556 [Define if gettimeofday() does not have second (timezone) argument
2557 This is the case on Motorola V4 (R40V4.2)])
2558 )
2559)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002560
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002561AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002562AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002563#if defined(MAJOR_IN_MKDEV)
2564#include <sys/mkdev.h>
2565#elif defined(MAJOR_IN_SYSMACROS)
2566#include <sys/sysmacros.h>
2567#else
2568#include <sys/types.h>
2569#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002570],[
2571 makedev(major(0),minor(0));
2572],[
2573 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2574 [Define to 1 if you have the device macros.])
2575 AC_MSG_RESULT(yes)
2576],[
2577 AC_MSG_RESULT(no)
2578])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002579
2580# On OSF/1 V5.1, getaddrinfo is available, but a define
2581# for [no]getaddrinfo in netdb.h.
2582AC_MSG_CHECKING(for getaddrinfo)
2583AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002584#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002585#include <sys/socket.h>
2586#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002587#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002588],[
2589getaddrinfo(NULL, NULL, NULL, NULL);
2590], [
2591AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002592AC_MSG_CHECKING(getaddrinfo bug)
2593AC_TRY_RUN([
2594#include <sys/types.h>
2595#include <netdb.h>
2596#include <string.h>
2597#include <sys/socket.h>
2598#include <netinet/in.h>
2599
2600main()
2601{
2602 int passive, gaierr, inet4 = 0, inet6 = 0;
2603 struct addrinfo hints, *ai, *aitop;
2604 char straddr[INET6_ADDRSTRLEN], strport[16];
2605
2606 for (passive = 0; passive <= 1; passive++) {
2607 memset(&hints, 0, sizeof(hints));
2608 hints.ai_family = AF_UNSPEC;
2609 hints.ai_flags = passive ? AI_PASSIVE : 0;
2610 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002611 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002612 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2613 (void)gai_strerror(gaierr);
2614 goto bad;
2615 }
2616 for (ai = aitop; ai; ai = ai->ai_next) {
2617 if (ai->ai_addr == NULL ||
2618 ai->ai_addrlen == 0 ||
2619 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2620 straddr, sizeof(straddr), strport, sizeof(strport),
2621 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2622 goto bad;
2623 }
2624 switch (ai->ai_family) {
2625 case AF_INET:
2626 if (strcmp(strport, "54321") != 0) {
2627 goto bad;
2628 }
2629 if (passive) {
2630 if (strcmp(straddr, "0.0.0.0") != 0) {
2631 goto bad;
2632 }
2633 } else {
2634 if (strcmp(straddr, "127.0.0.1") != 0) {
2635 goto bad;
2636 }
2637 }
2638 inet4++;
2639 break;
2640 case AF_INET6:
2641 if (strcmp(strport, "54321") != 0) {
2642 goto bad;
2643 }
2644 if (passive) {
2645 if (strcmp(straddr, "::") != 0) {
2646 goto bad;
2647 }
2648 } else {
2649 if (strcmp(straddr, "::1") != 0) {
2650 goto bad;
2651 }
2652 }
2653 inet6++;
2654 break;
2655 case AF_UNSPEC:
2656 goto bad;
2657 break;
2658 default:
2659 /* another family support? */
2660 break;
2661 }
2662 }
2663 }
2664
2665 if (!(inet4 == 0 || inet4 == 2))
2666 goto bad;
2667 if (!(inet6 == 0 || inet6 == 2))
2668 goto bad;
2669
2670 if (aitop)
2671 freeaddrinfo(aitop);
2672 exit(0);
2673
2674 bad:
2675 if (aitop)
2676 freeaddrinfo(aitop);
2677 exit(1);
2678}
2679],
2680AC_MSG_RESULT(good)
2681buggygetaddrinfo=no,
2682AC_MSG_RESULT(buggy)
2683buggygetaddrinfo=yes,
2684AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002685buggygetaddrinfo=yes)], [
2686AC_MSG_RESULT(no)
2687buggygetaddrinfo=yes
2688])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002689
2690if test "$buggygetaddrinfo" = "yes"; then
2691 if test "$ipv6" = "yes"; then
2692 echo 'Fatal: You must get working getaddrinfo() function.'
2693 echo ' or you can specify "--disable-ipv6"'.
2694 exit 1
2695 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002696else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002697 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002698fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002699AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002700
Guido van Rossum627b2d71993-12-24 10:39:16 +00002701# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002702AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002703AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002704AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002705AC_CHECK_MEMBERS([struct stat.st_rdev])
2706AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002707AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002708AC_CHECK_MEMBERS([struct stat.st_gen])
2709AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002710AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002711
2712AC_MSG_CHECKING(for time.h that defines altzone)
2713AC_CACHE_VAL(ac_cv_header_time_altzone,
2714[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2715 ac_cv_header_time_altzone=yes,
2716 ac_cv_header_time_altzone=no)])
2717AC_MSG_RESULT($ac_cv_header_time_altzone)
2718if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002719 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002720fi
2721
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002722was_it_defined=no
2723AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002724AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002725#include <sys/types.h>
2726#include <sys/select.h>
2727#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002728], [;], [
2729 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2730 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2731 (which you can't on SCO ODT 3.0).])
2732 was_it_defined=yes
2733])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002734AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002735
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002736AC_MSG_CHECKING(for addrinfo)
2737AC_CACHE_VAL(ac_cv_struct_addrinfo,
2738AC_TRY_COMPILE([
2739# include <netdb.h>],
2740 [struct addrinfo a],
2741 ac_cv_struct_addrinfo=yes,
2742 ac_cv_struct_addrinfo=no))
2743AC_MSG_RESULT($ac_cv_struct_addrinfo)
2744if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002745 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002746fi
2747
2748AC_MSG_CHECKING(for sockaddr_storage)
2749AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2750AC_TRY_COMPILE([
2751# include <sys/types.h>
2752# include <sys/socket.h>],
2753 [struct sockaddr_storage s],
2754 ac_cv_struct_sockaddr_storage=yes,
2755 ac_cv_struct_sockaddr_storage=no))
2756AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2757if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002758 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002759fi
2760
Guido van Rossum627b2d71993-12-24 10:39:16 +00002761# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002762
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002763AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002764AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002765
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002766works=no
2767AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002768AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2769 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2770)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002771AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002772
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002773works=no
2774AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002775AC_TRY_COMPILE([], [signed char c;], works=yes,
2776 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2777)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002778AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002779
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002780have_prototypes=no
2781AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002782AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2783 AC_DEFINE(HAVE_PROTOTYPES, 1,
2784 [Define if your compiler supports function prototype])
2785 have_prototypes=yes
2786])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002787AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002788
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002789works=no
2790AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002791AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002792#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002793int foo(int x, ...) {
2794 va_list va;
2795 va_start(va, x);
2796 va_arg(va, int);
2797 va_arg(va, char *);
2798 va_arg(va, double);
2799 return 0;
2800}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002801], [return foo(10, "", 3.14);], [
2802 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2803 [Define if your compiler supports variable length function prototypes
2804 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2805 works=yes
2806])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002807AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002808
Dave Cole331708b2004-08-09 04:51:41 +00002809# check for socketpair
2810AC_MSG_CHECKING(for socketpair)
2811AC_TRY_COMPILE([
2812#include <sys/types.h>
2813#include <sys/socket.h>
2814], void *x=socketpair,
2815 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2816 AC_MSG_RESULT(yes),
2817 AC_MSG_RESULT(no)
2818)
2819
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002820# check if sockaddr has sa_len member
2821AC_MSG_CHECKING(if sockaddr has sa_len member)
2822AC_TRY_COMPILE([#include <sys/types.h>
2823#include <sys/socket.h>],
2824[struct sockaddr x;
2825x.sa_len = 0;],
2826 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002828 AC_MSG_RESULT(no))
2829
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002830va_list_is_array=no
2831AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002832AC_TRY_COMPILE([
2833#ifdef HAVE_STDARG_PROTOTYPES
2834#include <stdarg.h>
2835#else
2836#include <varargs.h>
2837#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002838], [va_list list1, list2; list1 = list2;], , [
2839 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2840 va_list_is_array=yes
2841])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002842AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002843
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002844# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002845AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2846 [Define this if you have some version of gethostbyname_r()])
2847
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002848AC_CHECK_FUNC(gethostbyname_r, [
2849 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2850 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2851 OLD_CFLAGS=$CFLAGS
2852 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2853 AC_TRY_COMPILE([
2854# include <netdb.h>
2855 ], [
2856 char *name;
2857 struct hostent *he, *res;
2858 char buffer[2048];
2859 int buflen = 2048;
2860 int h_errnop;
2861
2862 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2863 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002864 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002865 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2866 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002867 AC_MSG_RESULT(yes)
2868 ], [
2869 AC_MSG_RESULT(no)
2870 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2871 AC_TRY_COMPILE([
2872# include <netdb.h>
2873 ], [
2874 char *name;
2875 struct hostent *he;
2876 char buffer[2048];
2877 int buflen = 2048;
2878 int h_errnop;
2879
2880 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2881 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002882 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002883 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2884 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002885 AC_MSG_RESULT(yes)
2886 ], [
2887 AC_MSG_RESULT(no)
2888 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2889 AC_TRY_COMPILE([
2890# include <netdb.h>
2891 ], [
2892 char *name;
2893 struct hostent *he;
2894 struct hostent_data data;
2895
2896 (void) gethostbyname_r(name, he, &data);
2897 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002898 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002899 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2900 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002901 AC_MSG_RESULT(yes)
2902 ], [
2903 AC_MSG_RESULT(no)
2904 ])
2905 ])
2906 ])
2907 CFLAGS=$OLD_CFLAGS
2908], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002909 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002910])
2911AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2912AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2913AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002914AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002915AC_SUBST(HAVE_GETHOSTBYNAME)
2916
Guido van Rossum627b2d71993-12-24 10:39:16 +00002917# checks for system services
2918# (none yet)
2919
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002920# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002921AC_CHECK_FUNC(__fpu_control,
2922 [],
2923 [AC_CHECK_LIB(ieee, __fpu_control)
2924])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002925
Guido van Rossum93274221997-05-09 02:42:00 +00002926# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002927AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002928AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002929 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2930[
Guido van Rossum93274221997-05-09 02:42:00 +00002931if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002932then
2933 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2934 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2935 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002936else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002937fi],
2938[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002939
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002940# check for --with-libm=...
2941AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002942case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002943Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002944BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002945*) LIBM=-lm
2946esac
Guido van Rossum93274221997-05-09 02:42:00 +00002947AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002948AC_ARG_WITH(libm,
2949 AC_HELP_STRING(--with-libm=STRING, math library),
2950[
Guido van Rossum93274221997-05-09 02:42:00 +00002951if test "$withval" = no
2952then LIBM=
2953 AC_MSG_RESULT(force LIBM empty)
2954elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002955then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002956 AC_MSG_RESULT(set LIBM="$withval")
2957else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002958fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002959[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002960
2961# check for --with-libc=...
2962AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002963AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002964AC_ARG_WITH(libc,
2965 AC_HELP_STRING(--with-libc=STRING, C library),
2966[
Guido van Rossum93274221997-05-09 02:42:00 +00002967if test "$withval" = no
2968then LIBC=
2969 AC_MSG_RESULT(force LIBC empty)
2970elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002971then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002972 AC_MSG_RESULT(set LIBC="$withval")
2973else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002974fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002975[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002976
Christian Heimes0a8143f2007-12-18 23:22:54 +00002977# ************************************
2978# * Check for mathematical functions *
2979# ************************************
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002980# check for hypot() in math library
2981LIBS_SAVE=$LIBS
2982LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002983AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00002984
2985AC_CHECK_FUNCS(copysign isfinite isnan isinf)
2986
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002987LIBS=$LIBS_SAVE
2988
Guido van Rossumef2255b2000-03-10 22:30:29 +00002989# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002990AC_CHECK_HEADER(wchar.h, [
2991 AC_DEFINE(HAVE_WCHAR_H, 1,
2992 [Define if the compiler provides a wchar.h header file.])
2993 wchar_h="yes"
2994],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002995wchar_h="no"
2996)
2997
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002998# determine wchar_t size
2999if test "$wchar_h" = yes
3000then
Guido van Rossum67b26592001-10-20 14:21:45 +00003001 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003002fi
3003
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003004AC_MSG_CHECKING(for UCS-4 tcl)
3005have_ucs4_tcl=no
3006AC_TRY_COMPILE([
3007#include <tcl.h>
3008#if TCL_UTF_MAX != 6
3009# error "NOT UCS4_TCL"
3010#endif], [], [
3011 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3012 have_ucs4_tcl=yes
3013])
3014AC_MSG_RESULT($have_ucs4_tcl)
3015
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003016# check whether wchar_t is signed or not
3017if test "$wchar_h" = yes
3018then
3019 # check whether wchar_t is signed or not
3020 AC_MSG_CHECKING(whether wchar_t is signed)
3021 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3022 AC_TRY_RUN([
3023 #include <wchar.h>
3024 int main()
3025 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003026 /* Success: exit code 0 */
3027 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003028 }
3029 ],
3030 ac_cv_wchar_t_signed=yes,
3031 ac_cv_wchar_t_signed=no,
3032 ac_cv_wchar_t_signed=yes)])
3033 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3034fi
3035
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003036AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003037dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003038AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003039 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3040 [],
3041 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003042
3043if test $enable_unicode = yes
3044then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003045 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003046 case "$have_ucs4_tcl" in
3047 yes) enable_unicode="ucs4"
3048 ;;
3049 *) enable_unicode="ucs2"
3050 ;;
3051 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003052fi
3053
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003054AH_TEMPLATE(Py_UNICODE_SIZE,
3055 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003056case "$enable_unicode" in
3057ucs2) unicode_size="2"
3058 AC_DEFINE(Py_UNICODE_SIZE,2)
3059 ;;
3060ucs4) unicode_size="4"
3061 AC_DEFINE(Py_UNICODE_SIZE,4)
3062 ;;
3063esac
3064
Martin v. Löwis11437992002-04-12 09:54:03 +00003065AH_TEMPLATE(PY_UNICODE_TYPE,
3066 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003067
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003068AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003069if test "$enable_unicode" = "no"
3070then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003071 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003072 AC_MSG_RESULT(not used)
3073else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003074 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003075 AC_DEFINE(Py_USING_UNICODE, 1,
3076 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003077
3078 # wchar_t is only usable if it maps to an unsigned type
3079 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003080 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003081 then
3082 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003083 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3084 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003085 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003086 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003087 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3088 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3089 then
3090 PY_UNICODE_TYPE="unsigned short"
3091 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3092 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3093 then
3094 PY_UNICODE_TYPE="unsigned long"
3095 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3096 else
3097 PY_UNICODE_TYPE="no type found"
3098 fi
3099 AC_MSG_RESULT($PY_UNICODE_TYPE)
3100fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003101
3102# check for endianness
3103AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003104AH_VERBATIM([WORDS_BIGENDIAN],
3105[
3106 /* Define to 1 if your processor stores words with the most significant byte
3107 first (like Motorola and SPARC, unlike Intel and VAX).
3108
3109 The block below does compile-time checking for endianness on platforms
3110 that use GCC and therefore allows compiling fat binaries on OSX by using
3111 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3112 such that the configure-result is used on systems that don't use GCC.
3113 */
3114#ifdef __BIG_ENDIAN__
3115#define WORDS_BIGENDIAN 1
3116#else
3117#ifndef __LITTLE_ENDIAN__
3118#undef WORDS_BIGENDIAN
3119#endif
3120#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003121
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003122# Check whether right shifting a negative integer extends the sign bit
3123# or fills with zeros (like the Cray J90, according to Tim Peters).
3124AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003125AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003126AC_TRY_RUN([
3127int main()
3128{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003129 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003130}
Guido van Rossum3065c942001-09-17 04:03:14 +00003131],
3132ac_cv_rshift_extends_sign=yes,
3133ac_cv_rshift_extends_sign=no,
3134ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003135AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3136if test "$ac_cv_rshift_extends_sign" = no
3137then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003138 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3139 [Define if i>>j for signed int i does not extend the sign bit
3140 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003141fi
3142
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003143# check for getc_unlocked and related locking functions
3144AC_MSG_CHECKING(for getc_unlocked() and friends)
3145AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3146AC_TRY_LINK([#include <stdio.h>],[
3147 FILE *f = fopen("/dev/null", "r");
3148 flockfile(f);
3149 getc_unlocked(f);
3150 funlockfile(f);
3151], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3152AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3153if test "$ac_cv_have_getc_unlocked" = yes
3154then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003155 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3156 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003157fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003158
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003159# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003160# save the value of LIBS so we don't actually link Python with readline
3161LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003162AC_CHECK_LIB(readline, readline)
3163if test "$ac_cv_have_readline_readline" = no
3164then
3165 AC_CHECK_LIB(termcap, readline)
3166fi
3167
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003168# check for readline 2.1
3169AC_CHECK_LIB(readline, rl_callback_handler_install,
3170 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003171 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003172
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003173# check for readline 2.2
3174AC_TRY_CPP([#include <readline/readline.h>],
3175have_readline=yes, have_readline=no)
3176if test $have_readline = yes
3177then
3178 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3179 [readline/readline.h],
3180 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3181 [Define if you have readline 2.2]), )
3182fi
3183
Martin v. Löwis0daad592001-09-30 21:09:59 +00003184# check for readline 4.0
3185AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003186 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003187 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003188
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003189# also in 4.0
3190AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3191 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3192 [Define if you have readline 4.0]), , )
3193
Guido van Rossum353ae582001-07-10 16:45:32 +00003194# check for readline 4.2
3195AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003196 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003197 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003198
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003199# also in readline 4.2
3200AC_TRY_CPP([#include <readline/readline.h>],
3201have_readline=yes, have_readline=no)
3202if test $have_readline = yes
3203then
3204 AC_EGREP_HEADER([extern int rl_catch_signals;],
3205 [readline/readline.h],
3206 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3207 [Define if you can turn off readline's signal handling.]), )
3208fi
3209
Martin v. Löwis82bca632006-02-10 20:49:30 +00003210# End of readline checks: restore LIBS
3211LIBS=$LIBS_no_readline
3212
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003213AC_MSG_CHECKING(for broken nice())
3214AC_CACHE_VAL(ac_cv_broken_nice, [
3215AC_TRY_RUN([
3216int main()
3217{
3218 int val1 = nice(1);
3219 if (val1 != -1 && val1 == nice(2))
3220 exit(0);
3221 exit(1);
3222}
Guido van Rossum3065c942001-09-17 04:03:14 +00003223],
3224ac_cv_broken_nice=yes,
3225ac_cv_broken_nice=no,
3226ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003227AC_MSG_RESULT($ac_cv_broken_nice)
3228if test "$ac_cv_broken_nice" = yes
3229then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003230 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3231 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003232fi
3233
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003234AC_MSG_CHECKING(for broken poll())
3235AC_TRY_RUN([
3236#include <poll.h>
3237
3238int main (void)
3239 {
3240 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3241
3242 close (42);
3243
3244 int poll_test = poll (&poll_struct, 1, 0);
3245
3246 if (poll_test < 0)
3247 {
3248 exit(0);
3249 }
3250 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3251 {
3252 exit(0);
3253 }
3254 else
3255 {
3256 exit(1);
3257 }
3258 }
3259],
3260ac_cv_broken_poll=yes,
3261ac_cv_broken_poll=no,
3262ac_cv_broken_poll=no)
3263AC_MSG_RESULT($ac_cv_broken_poll)
3264if test "$ac_cv_broken_poll" = yes
3265then
3266 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3267 [Define if poll() sets errno on invalid file descriptors.])
3268fi
3269
Brett Cannon43802422005-02-10 20:48:03 +00003270# Before we can test tzset, we need to check if struct tm has a tm_zone
3271# (which is not required by ISO C or UNIX spec) and/or if we support
3272# tzname[]
3273AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003274
Brett Cannon43802422005-02-10 20:48:03 +00003275# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003276AC_MSG_CHECKING(for working tzset())
3277AC_CACHE_VAL(ac_cv_working_tzset, [
3278AC_TRY_RUN([
3279#include <stdlib.h>
3280#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003281#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003282
3283#if HAVE_TZNAME
3284extern char *tzname[];
3285#endif
3286
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003287int main()
3288{
Brett Cannon18367812003-09-19 00:59:16 +00003289 /* Note that we need to ensure that not only does tzset(3)
3290 do 'something' with localtime, but it works as documented
3291 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003292 This includes making sure that tzname is set properly if
3293 tm->tm_zone does not exist since it is the alternative way
3294 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003295
3296 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003297 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003298 */
3299
Brett Cannon43802422005-02-10 20:48:03 +00003300 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003301 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3302
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003303 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003304 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003305 if (localtime(&groundhogday)->tm_hour != 0)
3306 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003307#if HAVE_TZNAME
3308 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3309 if (strcmp(tzname[0], "UTC") ||
3310 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3311 exit(1);
3312#endif
Brett Cannon18367812003-09-19 00:59:16 +00003313
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003314 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003315 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003316 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003317 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003318#if HAVE_TZNAME
3319 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3320 exit(1);
3321#endif
Brett Cannon18367812003-09-19 00:59:16 +00003322
3323 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3324 tzset();
3325 if (localtime(&groundhogday)->tm_hour != 11)
3326 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003327#if HAVE_TZNAME
3328 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3329 exit(1);
3330#endif
3331
3332#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003333 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3334 exit(1);
3335 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3336 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003337#endif
Brett Cannon18367812003-09-19 00:59:16 +00003338
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003339 exit(0);
3340}
3341],
3342ac_cv_working_tzset=yes,
3343ac_cv_working_tzset=no,
3344ac_cv_working_tzset=no)])
3345AC_MSG_RESULT($ac_cv_working_tzset)
3346if test "$ac_cv_working_tzset" = yes
3347then
3348 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3349 [Define if tzset() actually switches the local timezone in a meaningful way.])
3350fi
3351
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003352# Look for subsecond timestamps in struct stat
3353AC_MSG_CHECKING(for tv_nsec in struct stat)
3354AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3355AC_TRY_COMPILE([#include <sys/stat.h>], [
3356struct stat st;
3357st.st_mtim.tv_nsec = 1;
3358],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003359ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003360ac_cv_stat_tv_nsec=no,
3361ac_cv_stat_tv_nsec=no))
3362AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3363if test "$ac_cv_stat_tv_nsec" = yes
3364then
3365 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3366 [Define if you have struct stat.st_mtim.tv_nsec])
3367fi
3368
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003369# Look for BSD style subsecond timestamps in struct stat
3370AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3371AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3372AC_TRY_COMPILE([#include <sys/stat.h>], [
3373struct stat st;
3374st.st_mtimespec.tv_nsec = 1;
3375],
3376ac_cv_stat_tv_nsec2=yes,
3377ac_cv_stat_tv_nsec2=no,
3378ac_cv_stat_tv_nsec2=no))
3379AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3380if test "$ac_cv_stat_tv_nsec2" = yes
3381then
3382 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3383 [Define if you have struct stat.st_mtimensec])
3384fi
3385
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003386# On HP/UX 11.0, mvwdelch is a block with a return statement
3387AC_MSG_CHECKING(whether mvwdelch is an expression)
3388AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3389AC_TRY_COMPILE([#include <curses.h>], [
3390 int rtn;
3391 rtn = mvwdelch(0,0,0);
3392], ac_cv_mvwdelch_is_expression=yes,
3393 ac_cv_mvwdelch_is_expression=no,
3394 ac_cv_mvwdelch_is_expression=yes))
3395AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3396
3397if test "$ac_cv_mvwdelch_is_expression" = yes
3398then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003399 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3400 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003401fi
3402
3403AC_MSG_CHECKING(whether WINDOW has _flags)
3404AC_CACHE_VAL(ac_cv_window_has_flags,
3405AC_TRY_COMPILE([#include <curses.h>], [
3406 WINDOW *w;
3407 w->_flags = 0;
3408], ac_cv_window_has_flags=yes,
3409 ac_cv_window_has_flags=no,
3410 ac_cv_window_has_flags=no))
3411AC_MSG_RESULT($ac_cv_window_has_flags)
3412
3413
3414if test "$ac_cv_window_has_flags" = yes
3415then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003416 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3417 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003418fi
3419
Walter Dörwald4994d952006-06-19 08:07:50 +00003420AC_MSG_CHECKING(for is_term_resized)
3421AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3422 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3423 AC_MSG_RESULT(yes),
3424 AC_MSG_RESULT(no)
3425)
3426
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003427AC_MSG_CHECKING(for resize_term)
3428AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3429 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003430 AC_MSG_RESULT(yes),
3431 AC_MSG_RESULT(no)
3432)
3433
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003434AC_MSG_CHECKING(for resizeterm)
3435AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3436 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003437 AC_MSG_RESULT(yes),
3438 AC_MSG_RESULT(no)
3439)
3440
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003441AC_MSG_CHECKING(for /dev/ptmx)
3442
3443if test -r /dev/ptmx
3444then
3445 AC_MSG_RESULT(yes)
3446 AC_DEFINE(HAVE_DEV_PTMX, 1,
3447 [Define if we have /dev/ptmx.])
3448else
3449 AC_MSG_RESULT(no)
3450fi
3451
3452AC_MSG_CHECKING(for /dev/ptc)
3453
3454if test -r /dev/ptc
3455then
3456 AC_MSG_RESULT(yes)
3457 AC_DEFINE(HAVE_DEV_PTC, 1,
3458 [Define if we have /dev/ptc.])
3459else
3460 AC_MSG_RESULT(no)
3461fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003462
Brett Cannon09d12362006-05-11 05:11:33 +00003463AC_MSG_CHECKING(for %zd printf() format support)
3464AC_TRY_RUN([#include <stdio.h>
3465#include <stddef.h>
3466#include <string.h>
3467
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003468#ifdef HAVE_SYS_TYPES_H
3469#include <sys/types.h>
3470#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003471
3472#ifdef HAVE_SSIZE_T
3473typedef ssize_t Py_ssize_t;
3474#elif SIZEOF_VOID_P == SIZEOF_LONG
3475typedef long Py_ssize_t;
3476#else
3477typedef int Py_ssize_t;
3478#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003479
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003480int main()
3481{
3482 char buffer[256];
3483
Brett Cannon09d12362006-05-11 05:11:33 +00003484 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3485 return 1;
3486
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003487 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003488 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003489
3490 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3491 return 1;
3492
3493 if (strcmp(buffer, "-123"))
3494 return 1;
3495
Brett Cannon09d12362006-05-11 05:11:33 +00003496 return 0;
3497}],
3498[AC_MSG_RESULT(yes)
3499 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3500 AC_MSG_RESULT(no))
3501
Martin v. Löwis01c04012002-11-11 14:58:44 +00003502AC_CHECK_TYPE(socklen_t,,
3503 AC_DEFINE(socklen_t,int,
3504 Define to `int' if <sys/socket.h> does not define.),[
3505#ifdef HAVE_SYS_TYPES_H
3506#include <sys/types.h>
3507#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003508#ifdef HAVE_SYS_SOCKET_H
3509#include <sys/socket.h>
3510#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003511])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003512
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003513AC_SUBST(THREADHEADERS)
3514
3515for h in `(cd $srcdir;echo Python/thread_*.h)`
3516do
3517 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3518done
3519
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003520AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003521SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003522AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003523for dir in $SRCDIRS; do
3524 if test ! -d $dir; then
3525 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003526 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003527done
3528AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003529
Guido van Rossum627b2d71993-12-24 10:39:16 +00003530# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003531AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3532AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003533
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003534echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003535if test ! -f Modules/Setup
3536then
3537 cp $srcdir/Modules/Setup.dist Modules/Setup
3538fi
3539
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003540echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003541if test ! -f Modules/Setup.local
3542then
3543 echo "# Edit this file for local setup changes" >Modules/Setup.local
3544fi
3545
3546echo "creating Makefile"
3547$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3548 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003549 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003550
3551case $ac_sys_system in
3552BeOS)
3553 AC_MSG_WARN([
3554
3555 Support for BeOS is deprecated as of Python 2.6.
3556 See PEP 11 for the gory details.
3557 ])
3558 ;;
3559*) ;;
3560esac
3561
Neil Schemenauer66252162001-02-19 04:47:42 +00003562mv config.c Modules