blob: 16d6ff157b5d97dae358e4ab291b5825d9f72e49 [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00004m4_define(PYTHON_VERSION, 2.5)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis4ddc78a2006-01-29 09:53:44 +00007AC_PREREQ(2.59)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
64 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
65[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000102 FRAMEWORKALTINSTALLFIRST=
103 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000104 if test "x${prefix}" = "xNONE"; then
105 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
106 else
107 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
108 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000109 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000110 ;;
111 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000112 PYTHONFRAMEWORK=Python
113 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000115 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000116 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
117 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000118 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
119 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000120 if test "x${prefix}" = "xNONE" ; then
121 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
122 else
123 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
124 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000125 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000126
127 # Add makefiles for Mac specific code to the list of output
128 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000129 AC_CONFIG_FILES(Mac/Makefile)
130 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
131 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000132 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000133 ],[
134 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000135 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000142 if test "x${prefix}" = "xNONE" ; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 enable_framework=
148])
149AC_SUBST(PYTHONFRAMEWORK)
150AC_SUBST(PYTHONFRAMEWORKDIR)
151AC_SUBST(PYTHONFRAMEWORKPREFIX)
152AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000153AC_SUBST(FRAMEWORKINSTALLFIRST)
154AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000155AC_SUBST(FRAMEWORKALTINSTALLFIRST)
156AC_SUBST(FRAMEWORKALTINSTALLLAST)
157AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000158
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000159##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160## AC_HELP_STRING(--with-dyld,
161## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000162##
Guido van Rossumb418f891996-07-30 18:06:02 +0000163# Set name for machine-dependent library files
164AC_SUBST(MACHDEP)
165AC_MSG_CHECKING(MACHDEP)
166if test -z "$MACHDEP"
167then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000168 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000169 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
170 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000171 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000172 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000173 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000174 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000175 ac_md_system=`echo $ac_sys_system |
176 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
177 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000178 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000179 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000180
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000181 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000182 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000183 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000184 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000185 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000186 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 esac
188fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000189
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000190# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
191# disable features if it is defined, without any means to access these
192# features as extensions. For these systems, we skip the definition of
193# _XOPEN_SOURCE. Before adding a system to the list to gain access to
194# some feature, make sure there is no alternative way to access this
195# feature. Also, when using wildcards, make sure you have verified the
196# need for not defining _XOPEN_SOURCE on all systems matching the
197# wildcard, and that the wildcard does not include future systems
198# (which may remove their limitations).
199dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
200case $ac_sys_system/$ac_sys_release in
201 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
202 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000203 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz541a48b2006-09-05 02:54:42 +0000204 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000205 define_xopen_source=no;;
Martin v. Löwis9147f7e2006-11-25 15:39:28 +0000206 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
207 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
208 # Marc Recht
209 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
210 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000211 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
212 # of union __?sigval. Reported by Stuart Bishop.
213 SunOS/5.6)
214 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000215 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
216 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000217 # Reconfirmed for 7.1.4 by Martin v. Loewis.
218 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000219 define_xopen_source=no;;
220 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000221 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000222 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000223 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000224 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
225 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
226 # this is fixed in 10.3, which identifies itself as Darwin/7.*
227 # This should hopefully be fixed in FreeBSD 4.9
228 FreeBSD/4.8* | Darwin/6* )
229 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000230 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
231 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
232 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000233 AIX/4)
234 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000235 AIX/5)
236 if test `uname -r` -eq 1; then
237 define_xopen_source=no
238 fi
239 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000240 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
241 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000242 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000243 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000244 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000245 define_xopen_source=no
246 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000247
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000248esac
249
250if test $define_xopen_source = yes
251then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000252 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
253 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000254 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
255 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000256 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000257 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000258 AC_DEFINE(_XOPEN_SOURCE, 500,
259 Define to the level of X/Open that your system supports)
260 ;;
261 *)
262 AC_DEFINE(_XOPEN_SOURCE, 600,
263 Define to the level of X/Open that your system supports)
264 ;;
265 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000266
267 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
268 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
269 # several APIs are not declared. Since this is also needed in some
270 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000271 # except for Solaris 10, where it must not be defined,
272 # as it implies XPG4.2
273 case $ac_sys_system/$ac_sys_release in
274 SunOS/5.10)
275 ;;
276 *)
277 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
278 Define to activate Unix95-and-earlier features)
279 ;;
280 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000281
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000282 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
283
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000284fi
285
Guido van Rossum91922671997-10-09 20:24:13 +0000286#
287# SGI compilers allow the specification of the both the ABI and the
288# ISA on the command line. Depending on the values of these switches,
289# different and often incompatable code will be generated.
290#
291# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
292# thus supply support for various ABI/ISA combinations. The MACHDEP
293# variable is also adjusted.
294#
295AC_SUBST(SGI_ABI)
296if test ! -z "$SGI_ABI"
297then
298 CC="cc $SGI_ABI"
299 LDFLAGS="$SGI_ABI $LDFLAGS"
300 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
301fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000302AC_MSG_RESULT($MACHDEP)
303
Jack Jansen83f898c2002-12-30 22:23:40 +0000304# And add extra plat-mac for darwin
305AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000306AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000307AC_MSG_CHECKING(EXTRAPLATDIR)
308if test -z "$EXTRAPLATDIR"
309then
310 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000311 darwin)
312 EXTRAPLATDIR="\$(PLATMACDIRS)"
313 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
314 ;;
315 *)
316 EXTRAPLATDIR=""
317 EXTRAMACHDEPPATH=""
318 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000319 esac
320fi
321AC_MSG_RESULT($EXTRAPLATDIR)
322
Jack Jansen6b08a402004-06-03 12:41:45 +0000323# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
324# it may influence the way we can build extensions, so distutils
325# needs to check it
326AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000327AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000328CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000329EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000330
Guido van Rossum627b2d71993-12-24 10:39:16 +0000331# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000332
333# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
334# for debug/optimization stuff. BASECFLAGS is for flags that are required
335# just to get things to compile and link. Users are free to override OPT
336# when running configure or make. The build should not break if they do.
337# BASECFLAGS should generally not be messed with, however.
338
339# XXX shouldn't some/most/all of this code be merged with the stuff later
340# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000341AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000342AC_ARG_WITH(gcc,
343 AC_HELP_STRING(--without-gcc,never use gcc),
344[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000345 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000346 no) CC=cc
347 without_gcc=yes;;
348 yes) CC=gcc
349 without_gcc=no;;
350 *) CC=$withval
351 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000352 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000353 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000354 AIX*) CC=cc_r
355 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000356 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000357 case $BE_HOST_CPU in
358 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000359 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000360 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000361 BASECFLAGS="$BASECFLAGS -export pragma"
362 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000363 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000364 ;;
365 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000366 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000367 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000368 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000369 ;;
370 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000371 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000372 ;;
373 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000374 AR="\$(srcdir)/Modules/ar_beos"
375 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000376 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000377 Monterey*)
378 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000379 without_gcc=;;
380 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000381 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000382AC_MSG_RESULT($without_gcc)
383
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000384# If the user switches compilers, we can't believe the cache
385if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
386then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000387 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
388(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000389fi
390
Guido van Rossum627b2d71993-12-24 10:39:16 +0000391AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000392
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000393AC_SUBST(CXX)
394AC_SUBST(MAINCC)
395AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
396AC_ARG_WITH(cxx_main,
397 AC_HELP_STRING([--with-cxx-main=<compiler>],
398 [compile main() and link python executable with C++ compiler]),
399[
400
401 case $withval in
402 no) with_cxx_main=no
403 MAINCC='$(CC)';;
404 yes) with_cxx_main=yes
405 MAINCC='$(CXX)';;
406 *) with_cxx_main=yes
407 MAINCC=$withval
408 if test -z "$CXX"
409 then
410 CXX=$withval
411 fi;;
412 esac], [
413 with_cxx_main=no
414 MAINCC='$(CC)'
415])
416AC_MSG_RESULT($with_cxx_main)
417
418preset_cxx="$CXX"
419if test -z "$CXX"
420then
421 case "$CC" in
422 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
423 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
424 esac
425 if test "$CXX" = "notfound"
426 then
427 CXX=""
428 fi
429fi
430if test -z "$CXX"
431then
432 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
433 if test "$CXX" = "notfound"
434 then
435 CXX=""
436 fi
437fi
438if test "$preset_cxx" != "$CXX"
439then
440 AC_MSG_WARN([
441
442 By default, distutils will build C++ extension modules with "$CXX".
443 If this is not intended, then set CXX on the configure command line.
444 ])
445fi
446
447
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000448# checks for UNIX variants that set C preprocessor variables
449AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000450
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000451# Check for unsupported systems
452case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000453Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000454 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
455 echo See README for details.
456 exit 1;;
457esac
458
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000459AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000460AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000461AC_ARG_WITH(suffix,
462 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
463[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000464 case $withval in
465 no) EXEEXT=;;
466 yes) EXEEXT=.exe;;
467 *) EXEEXT=$withval;;
468 esac])
469AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000470
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000471# Test whether we're running on a non-case-sensitive system, in which
472# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000473AC_SUBST(BUILDEXEEXT)
474AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000475if test ! -d CaseSensitiveTestDir; then
476mkdir CaseSensitiveTestDir
477fi
478
479if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000480then
Jack Jansen1999ef42001-12-06 21:47:20 +0000481 AC_MSG_RESULT(yes)
482 BUILDEXEEXT=.exe
483else
484 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000485 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000486fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000487rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000488
Guido van Rossumdd997f71998-10-07 19:58:26 +0000489case $MACHDEP in
490bsdos*)
491 case $CC in
492 gcc) CC="$CC -D_HAVE_BSDI";;
493 esac;;
494esac
495
Guido van Rossum84561611997-08-21 00:08:11 +0000496case $ac_sys_system in
497hp*|HP*)
498 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000499 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000500 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000501Monterey*)
502 case $CC in
503 cc) CC="$CC -Wl,-Bexport";;
504 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000505SunOS*)
506 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000507 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000508 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000509esac
510
Martin v. Löwise8964d42001-03-06 12:09:07 +0000511
Neil Schemenauer61c51152001-01-26 16:18:16 +0000512AC_SUBST(LIBRARY)
513AC_MSG_CHECKING(LIBRARY)
514if test -z "$LIBRARY"
515then
516 LIBRARY='libpython$(VERSION).a'
517fi
518AC_MSG_RESULT($LIBRARY)
519
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000520# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000521# name of the library into which to insert object files). BLDLIBRARY is also
522# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
523# is blank as the main program is not linked directly against LDLIBRARY.
524# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
525# systems without shared libraries, LDLIBRARY is the same as LIBRARY
526# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
527# DLLLIBRARY is the shared (i.e., DLL) library.
528#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000529# RUNSHARED is used to run shared python without installed libraries
530#
531# INSTSONAME is the name of the shared library that will be use to install
532# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000533AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000534AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000535AC_SUBST(BLDLIBRARY)
536AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000537AC_SUBST(INSTSONAME)
538AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000539LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000540BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000541INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000542DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000543LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000544RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000545
Guido van Rossumfb842551997-08-06 23:42:07 +0000546# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000547# If CXX is set, and if it is needed to link a main function that was
548# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
549# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000550# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000551# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000552AC_SUBST(LINKCC)
553AC_MSG_CHECKING(LINKCC)
554if test -z "$LINKCC"
555then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000556 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000557 case $ac_sys_system in
558 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000559 exp_extra="\"\""
560 if test $ac_sys_release -ge 5 -o \
561 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
562 exp_extra="."
563 fi
564 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000565 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000566 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000567 esac
568fi
569AC_MSG_RESULT($LINKCC)
570
Martin v. Löwis1142de32002-03-29 16:28:31 +0000571AC_MSG_CHECKING(for --enable-shared)
572AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000573 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000574
Martin v. Löwis1142de32002-03-29 16:28:31 +0000575if test -z "$enable_shared"
576then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000577 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000578 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000579 enable_shared="yes";;
580 *)
581 enable_shared="no";;
582 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000583fi
584AC_MSG_RESULT($enable_shared)
585
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000586AC_MSG_CHECKING(for --enable-profiling)
587AC_ARG_ENABLE(profiling,
588 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
589[ac_save_cc="$CC"
590 CC="$CC -pg"
591 AC_TRY_RUN([int main() { return 0; }],
592 ac_enable_profiling="yes",
593 ac_enable_profiling="no",
594 ac_enable_profiling="no")
595 CC="$ac_save_cc"])
596AC_MSG_RESULT($ac_enable_profiling)
597
598case "$ac_enable_profiling" in
599 "yes")
600 BASECFLAGS="-pg $BASECFLAGS"
601 LDFLAGS="-pg $LDFLAGS"
602 ;;
603esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000604
605AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000606
Guido van Rossumb8552162001-09-05 14:58:11 +0000607# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
608# library that we build, but we do not want to link against it (we
609# will find it with a -framework option). For this reason there is an
610# extra variable BLDLIBRARY against which Python and the extension
611# modules are linked, BLDLIBRARY. This is normally the same as
612# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000613if test "$enable_framework"
614then
615 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000616 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000617 BLDLIBRARY=''
618else
619 BLDLIBRARY='$(LDLIBRARY)'
620fi
621
Martin v. Löwis1142de32002-03-29 16:28:31 +0000622# Other platforms follow
623if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000624 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000625 case $ac_sys_system in
626 BeOS*)
627 LDLIBRARY='libpython$(VERSION).so'
628 ;;
629 CYGWIN*)
630 LDLIBRARY='libpython$(VERSION).dll.a'
631 DLLLIBRARY='libpython$(VERSION).dll'
632 ;;
633 SunOS*)
634 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000635 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000636 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000637 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000638 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000639 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640 LDLIBRARY='libpython$(VERSION).so'
641 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000642 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000643 case $ac_sys_system in
644 FreeBSD*)
645 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
646 ;;
647 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000648 INSTSONAME="$LDLIBRARY".$SOVERSION
649 ;;
650 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000651 case `uname -m` in
652 ia64)
653 LDLIBRARY='libpython$(VERSION).so'
654 ;;
655 *)
656 LDLIBRARY='libpython$(VERSION).sl'
657 ;;
658 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000659 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000660 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000661 ;;
662 OSF*)
663 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000664 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000665 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000666 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000667 atheos*)
668 LDLIBRARY='libpython$(VERSION).so'
669 BLDLIBRARY='-L. -lpython$(VERSION)'
670 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
671 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000672 esac
Jason Tishler30765592003-09-04 11:04:06 +0000673else # shared is disabled
674 case $ac_sys_system in
675 CYGWIN*)
676 BLDLIBRARY='$(LIBRARY)'
677 LDLIBRARY='libpython$(VERSION).dll.a'
678 ;;
679 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000680fi
681
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000682AC_MSG_RESULT($LDLIBRARY)
683
Guido van Rossum627b2d71993-12-24 10:39:16 +0000684AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000685AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000686AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000687
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000688AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000689AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000690if test $SVNVERSION = found
691then
692 SVNVERSION="svnversion \$(srcdir)"
693else
694 SVNVERSION="echo exported"
695fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000696
Neil Schemenauera42c8272001-03-31 00:01:55 +0000697case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000698bsdos*|hp*|HP*)
699 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000700 if test -z "$INSTALL"
701 then
702 INSTALL="${srcdir}/install-sh -c"
703 fi
704esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000705AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000706
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000707# Not every filesystem supports hard links
708AC_SUBST(LN)
709if test -z "$LN" ; then
710 case $ac_sys_system in
711 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000712 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000713 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000714 *) LN=ln;;
715 esac
716fi
717
Fred Drake9f715822001-07-11 06:27:00 +0000718# Check for --with-pydebug
719AC_MSG_CHECKING(for --with-pydebug)
720AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000721 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
722[
Fred Drake9f715822001-07-11 06:27:00 +0000723if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000724then
725 AC_DEFINE(Py_DEBUG, 1,
726 [Define if you want to build an interpreter with many run-time checks.])
727 AC_MSG_RESULT(yes);
728 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000729else AC_MSG_RESULT(no); Py_DEBUG='false'
730fi],
731[AC_MSG_RESULT(no)])
732
Skip Montanarodecc6a42003-01-01 20:07:49 +0000733# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
734# merged with this chunk of code?
735
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000736# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000737# ------------------------
738# (The following bit of code is complicated enough - please keep things
739# indented properly. Just pretend you're editing Python code. ;-)
740
741# There are two parallel sets of case statements below, one that checks to
742# see if OPT was set and one that does BASECFLAGS setting based upon
743# compiler and platform. BASECFLAGS tweaks need to be made even if the
744# user set OPT.
745
746# tweak OPT based on compiler and platform, only if the user didn't set
747# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000748AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000749if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000750then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751 case $GCC in
752 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000753 if test "$CC" != 'g++' ; then
754 STRICT_PROTO="-Wstrict-prototypes"
755 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000756 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000757 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000758 if test "$Py_DEBUG" = 'true' ; then
759 # Optimization messes up debuggers, so turn it off for
760 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000761 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000762 else
Skip Montanaro288a5be2006-04-13 02:00:56 +0000763 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000764 fi
765 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000766 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000767 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000769 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000770 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000771 SCO_SV*) OPT="$OPT -m486 -DSCO5"
772 ;;
773 esac
Fred Drake9f715822001-07-11 06:27:00 +0000774 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000775
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000776 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000777 OPT="-O"
778 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000779 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000780
781 # The current (beta) Monterey compiler dies with optimizations
782 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000783 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000784 Monterey*)
785 OPT=""
786 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000787 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000788
Guido van Rossum4e8af441994-08-19 15:33:54 +0000789fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000790
Skip Montanarodecc6a42003-01-01 20:07:49 +0000791AC_SUBST(BASECFLAGS)
792# tweak BASECFLAGS based on compiler and platform
793case $GCC in
794yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000795 # Python violates C99 rules, by casting between incompatible
796 # pointer types. GCC may generate bad code as a result of that,
797 # so use -fno-strict-aliasing if supported.
798 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
799 ac_save_cc="$CC"
800 CC="$CC -fno-strict-aliasing"
801 AC_TRY_RUN([int main() { return 0; }],
802 ac_cv_no_strict_aliasing_ok=yes,
803 ac_cv_no_strict_aliasing_ok=no,
804 ac_cv_no_strict_aliasing_ok=no)
805 CC="$ac_save_cc"
806 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
807 if test $ac_cv_no_strict_aliasing_ok = yes
808 then
809 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
810 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000811 case $ac_sys_system in
812 SCO_SV*)
813 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
814 ;;
815 # is there any other compiler on Darwin besides gcc?
816 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000817 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000818 if test "${enable_universalsdk}"; then
819 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
820 fi
821
Skip Montanarodecc6a42003-01-01 20:07:49 +0000822 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000823 OSF*)
824 BASECFLAGS="$BASECFLAGS -mieee"
825 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 esac
827 ;;
828
829*)
830 case $ac_sys_system in
831 OpenUNIX*|UnixWare*)
832 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
833 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000834 OSF*)
835 BASECFLAGS="$BASECFLAGS -ieee -std"
836 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000837 SCO_SV*)
838 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
839 ;;
840 esac
841 ;;
842esac
843
Fred Drakee1ceaa02001-12-04 20:55:47 +0000844if test "$Py_DEBUG" = 'true'; then
845 :
846else
847 OPT="-DNDEBUG $OPT"
848fi
849
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000850if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000851then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000853fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000854
Neal Norwitz020c46a2006-01-07 21:39:28 +0000855# disable check for icc since it seems to pass, but generates a warning
856if test "$CC" = icc
857then
858 ac_cv_opt_olimit_ok=no
859fi
860
Guido van Rossum91922671997-10-09 20:24:13 +0000861AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
862AC_CACHE_VAL(ac_cv_opt_olimit_ok,
863[ac_save_cc="$CC"
864CC="$CC -OPT:Olimit=0"
865AC_TRY_RUN([int main() { return 0; }],
866 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000867 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000868 ac_cv_opt_olimit_ok=no)
869CC="$ac_save_cc"])
870AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000871if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000872 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000873 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
874 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
875 # environment?
876 Darwin*)
877 ;;
878 *)
879 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
880 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000881 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000882else
883 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
884 AC_CACHE_VAL(ac_cv_olimit_ok,
885 [ac_save_cc="$CC"
886 CC="$CC -Olimit 1500"
887 AC_TRY_RUN([int main() { return 0; }],
888 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000889 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000890 ac_cv_olimit_ok=no)
891 CC="$ac_save_cc"])
892 AC_MSG_RESULT($ac_cv_olimit_ok)
893 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000894 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000895 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000896fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000897
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000898# On some compilers, pthreads are available without further options
899# (e.g. MacOS X). On some of these systems, the compiler will not
900# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
901# So we have to see first whether pthreads are available without
902# options before we can check whether -Kpthread improves anything.
903AC_MSG_CHECKING(whether pthreads are available without options)
904AC_CACHE_VAL(ac_cv_pthread_is_default,
905[AC_TRY_RUN([
906#include <pthread.h>
907
908void* routine(void* p){return NULL;}
909
910int main(){
911 pthread_t p;
912 if(pthread_create(&p,NULL,routine,NULL)!=0)
913 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000914 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000915 return 0;
916}
917],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000918[
919 ac_cv_pthread_is_default=yes
920 ac_cv_kthread=no
921 ac_cv_pthread=no
922],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000923 ac_cv_pthread_is_default=no,
924 ac_cv_pthread_is_default=no)
925])
926AC_MSG_RESULT($ac_cv_pthread_is_default)
927
928
929if test $ac_cv_pthread_is_default = yes
930then
931 ac_cv_kpthread=no
932else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000933# -Kpthread, if available, provides the right #defines
934# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000935# Some compilers won't report that they do not support -Kpthread,
936# so we need to run a program to see whether it really made the
937# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000938AC_MSG_CHECKING(whether $CC accepts -Kpthread)
939AC_CACHE_VAL(ac_cv_kpthread,
940[ac_save_cc="$CC"
941CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000942AC_TRY_RUN([
943#include <pthread.h>
944
945void* routine(void* p){return NULL;}
946
947int main(){
948 pthread_t p;
949 if(pthread_create(&p,NULL,routine,NULL)!=0)
950 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000951 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000952 return 0;
953}
954],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000955 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000956 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000957 ac_cv_kpthread=no)
958CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000959AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000960fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000961
Skip Montanarod8d39a02003-07-10 20:44:10 +0000962if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000963then
964# -Kthread, if available, provides the right #defines
965# and linker options to make pthread_create available
966# Some compilers won't report that they do not support -Kthread,
967# so we need to run a program to see whether it really made the
968# function available.
969AC_MSG_CHECKING(whether $CC accepts -Kthread)
970AC_CACHE_VAL(ac_cv_kthread,
971[ac_save_cc="$CC"
972CC="$CC -Kthread"
973AC_TRY_RUN([
974#include <pthread.h>
975
976void* routine(void* p){return NULL;}
977
978int main(){
979 pthread_t p;
980 if(pthread_create(&p,NULL,routine,NULL)!=0)
981 return 1;
982 (void)pthread_detach(p);
983 return 0;
984}
985],
986 ac_cv_kthread=yes,
987 ac_cv_kthread=no,
988 ac_cv_kthread=no)
989CC="$ac_save_cc"])
990AC_MSG_RESULT($ac_cv_kthread)
991fi
992
Skip Montanarod8d39a02003-07-10 20:44:10 +0000993if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000994then
995# -pthread, if available, provides the right #defines
996# and linker options to make pthread_create available
997# Some compilers won't report that they do not support -pthread,
998# so we need to run a program to see whether it really made the
999# function available.
1000AC_MSG_CHECKING(whether $CC accepts -pthread)
1001AC_CACHE_VAL(ac_cv_thread,
1002[ac_save_cc="$CC"
1003CC="$CC -pthread"
1004AC_TRY_RUN([
1005#include <pthread.h>
1006
1007void* routine(void* p){return NULL;}
1008
1009int main(){
1010 pthread_t p;
1011 if(pthread_create(&p,NULL,routine,NULL)!=0)
1012 return 1;
1013 (void)pthread_detach(p);
1014 return 0;
1015}
1016],
1017 ac_cv_pthread=yes,
1018 ac_cv_pthread=no,
1019 ac_cv_pthread=no)
1020CC="$ac_save_cc"])
1021AC_MSG_RESULT($ac_cv_pthread)
1022fi
1023
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001024# If we have set a CC compiler flag for thread support then
1025# check if it works for CXX, too.
1026ac_cv_cxx_thread=no
1027if test ! -z "$CXX"
1028then
1029AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1030ac_save_cxx="$CXX"
1031
1032if test "$ac_cv_kpthread" = "yes"
1033then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001034 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001035 ac_cv_cxx_thread=yes
1036elif test "$ac_cv_kthread" = "yes"
1037then
1038 CXX="$CXX -Kthread"
1039 ac_cv_cxx_thread=yes
1040elif test "$ac_cv_pthread" = "yes"
1041then
1042 CXX="$CXX -pthread"
1043 ac_cv_cxx_thread=yes
1044fi
1045
1046if test $ac_cv_cxx_thread = yes
1047then
1048 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1049 $CXX -c conftest.$ac_ext 2>&5
1050 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1051 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1052 then
1053 ac_cv_cxx_thread=yes
1054 else
1055 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001056 fi
1057 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001058fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001059AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001060fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001061CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001062
Fred Drakece81d592000-07-09 14:39:29 +00001063dnl # check for ANSI or K&R ("traditional") preprocessor
1064dnl AC_MSG_CHECKING(for C preprocessor type)
1065dnl AC_TRY_COMPILE([
1066dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1067dnl int foo;
1068dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1069dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1070dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001071
Guido van Rossum627b2d71993-12-24 10:39:16 +00001072# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001073AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001074AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1075fcntl.h grp.h \
Martin v. Löwis33bb6102006-10-02 15:24:01 +00001076io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
1077shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001078unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001079sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1080sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001081sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1082sys/time.h \
1083sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis64cd9ef2006-10-27 07:06:59 +00001084sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001085bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001086AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001087AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001088
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001089# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001090AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001091#ifdef HAVE_CURSES_H
1092#include <curses.h>
1093#endif
1094])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001095
Martin v. Löwis11017b12006-01-14 18:12:57 +00001096# On Linux, netlink.h requires asm/types.h
1097AC_CHECK_HEADERS(linux/netlink.h,,,[
1098#ifdef HAVE_ASM_TYPES_H
1099#include <asm/types.h>
1100#endif
1101#ifdef HAVE_SYS_SOCKET_H
1102#include <sys/socket.h>
1103#endif
1104])
1105
Guido van Rossum627b2d71993-12-24 10:39:16 +00001106# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001107was_it_defined=no
1108AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001109AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1110 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1111])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001112AC_MSG_RESULT($was_it_defined)
1113
Neal Norwitz11690112002-07-30 01:08:28 +00001114# Check whether using makedev requires defining _OSF_SOURCE
1115AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001116AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001117 [ makedev(0, 0) ],
1118 ac_cv_has_makedev=yes,
1119 ac_cv_has_makedev=no)
1120if test "$ac_cv_has_makedev" = "no"; then
1121 # we didn't link, try if _OSF_SOURCE will allow us to link
1122 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001123#define _OSF_SOURCE 1
1124#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001125 ],
1126 [ makedev(0, 0) ],
1127 ac_cv_has_makedev=yes,
1128 ac_cv_has_makedev=no)
1129 if test "$ac_cv_has_makedev" = "yes"; then
1130 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1131 fi
1132fi
1133AC_MSG_RESULT($ac_cv_has_makedev)
1134if test "$ac_cv_has_makedev" = "yes"; then
1135 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1136fi
1137
Martin v. Löwis399a6892002-10-04 10:22:02 +00001138# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1139# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1140# defined, but the compiler does not support pragma redefine_extname,
1141# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1142# structures (such as rlimit64) without declaring them. As a
1143# work-around, disable LFS on such configurations
1144
1145use_lfs=yes
1146AC_MSG_CHECKING(Solaris LFS bug)
1147AC_TRY_COMPILE([
1148#define _LARGEFILE_SOURCE 1
1149#define _FILE_OFFSET_BITS 64
1150#include <sys/resource.h>
1151],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1152AC_MSG_RESULT($sol_lfs_bug)
1153if test "$sol_lfs_bug" = "yes"; then
1154 use_lfs=no
1155fi
1156
1157if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001158# Two defines needed to enable largefile support on various platforms
1159# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001160AC_DEFINE(_LARGEFILE_SOURCE, 1,
1161[This must be defined on some systems to enable large file support.])
1162AC_DEFINE(_FILE_OFFSET_BITS, 64,
1163[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001164fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001165
Guido van Rossum300fda71996-08-19 21:58:16 +00001166# Add some code to confdefs.h so that the test for off_t works on SCO
1167cat >> confdefs.h <<\EOF
1168#if defined(SCO_DS)
1169#undef _OFF_T
1170#endif
1171EOF
1172
Guido van Rossumef2255b2000-03-10 22:30:29 +00001173# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001174AC_TYPE_MODE_T
1175AC_TYPE_OFF_T
1176AC_TYPE_PID_T
1177AC_TYPE_SIGNAL
1178AC_TYPE_SIZE_T
1179AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001180AC_CHECK_TYPE(ssize_t,
1181 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001182
Guido van Rossumef2255b2000-03-10 22:30:29 +00001183# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001184# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001185AC_CHECK_SIZEOF(int, 4)
1186AC_CHECK_SIZEOF(long, 4)
1187AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001188AC_CHECK_SIZEOF(short, 2)
1189AC_CHECK_SIZEOF(float, 4)
1190AC_CHECK_SIZEOF(double, 8)
1191AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001192AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001193
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001194AC_MSG_CHECKING(for long long support)
1195have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001196AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1197 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1198 have_long_long=yes
1199])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001200AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001201if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001202AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001203fi
1204
Martin v. Löwisda70fd12006-10-02 14:56:15 +00001205AC_CHECK_TYPES(uintptr_t,
1206 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis33bb6102006-10-02 15:24:01 +00001207 [], [#ifdef HAVE_STDINT_H
1208 #include <stdint.h>
1209 #endif])
Martin v. Löwisda70fd12006-10-02 14:56:15 +00001210
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001211
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001212# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1213AC_MSG_CHECKING(size of off_t)
1214AC_CACHE_VAL(ac_cv_sizeof_off_t,
1215[AC_TRY_RUN([#include <stdio.h>
1216#include <sys/types.h>
1217main()
1218{
1219 FILE *f=fopen("conftestval", "w");
1220 if (!f) exit(1);
1221 fprintf(f, "%d\n", sizeof(off_t));
1222 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001223}],
1224ac_cv_sizeof_off_t=`cat conftestval`,
1225ac_cv_sizeof_off_t=0,
1226ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001227])
1228AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001229AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1230[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001231
1232AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001233if test "$have_long_long" = yes -a \
1234 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1235 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001236 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1237 [Defined to enable large file support when an off_t is bigger than a long
1238 and long long is available and at least as big as an off_t. You may need
1239 to add some flags for configuration and compilation to enable this mode.
1240 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001241 AC_MSG_RESULT(yes)
1242else
1243 AC_MSG_RESULT(no)
1244fi
1245
Fred Drakea3f6e912000-06-29 20:44:47 +00001246# AC_CHECK_SIZEOF() doesn't include <time.h>.
1247AC_MSG_CHECKING(size of time_t)
1248AC_CACHE_VAL(ac_cv_sizeof_time_t,
1249[AC_TRY_RUN([#include <stdio.h>
1250#include <time.h>
1251main()
1252{
1253 FILE *f=fopen("conftestval", "w");
1254 if (!f) exit(1);
1255 fprintf(f, "%d\n", sizeof(time_t));
1256 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001257}],
1258ac_cv_sizeof_time_t=`cat conftestval`,
1259ac_cv_sizeof_time_t=0,
1260ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001261])
1262AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001263AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1264[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001265
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001266
Trent Mick635f6fb2000-08-23 21:33:05 +00001267# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001268ac_save_cc="$CC"
1269if test "$ac_cv_kpthread" = "yes"
1270then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001271elif test "$ac_cv_kthread" = "yes"
1272then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001273elif test "$ac_cv_pthread" = "yes"
1274then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001275fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001276AC_MSG_CHECKING(for pthread_t)
1277have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001278AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001279AC_MSG_RESULT($have_pthread_t)
1280if test "$have_pthread_t" = yes ; then
1281 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1282 AC_MSG_CHECKING(size of pthread_t)
1283 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1284 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001285#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001286 main()
1287 {
1288 FILE *f=fopen("conftestval", "w");
1289 if (!f) exit(1);
1290 fprintf(f, "%d\n", sizeof(pthread_t));
1291 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001292 }],
1293 ac_cv_sizeof_pthread_t=`cat conftestval`,
1294 ac_cv_sizeof_pthread_t=0,
1295 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001296 ])
1297 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001298 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1299 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001300fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001301CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001302
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001303AC_MSG_CHECKING(for --enable-toolbox-glue)
1304AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001305 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001306
1307if test -z "$enable_toolbox_glue"
1308then
1309 case $ac_sys_system/$ac_sys_release in
1310 Darwin/*)
1311 enable_toolbox_glue="yes";;
1312 *)
1313 enable_toolbox_glue="no";;
1314 esac
1315fi
1316case "$enable_toolbox_glue" in
1317yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001318 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001319 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001320 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1321 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001322 ;;
1323*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001324 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001325 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001326 ;;
1327esac
1328AC_MSG_RESULT($enable_toolbox_glue)
1329
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001330AC_SUBST(OTHER_LIBTOOL_OPT)
1331case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001332 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001333 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1334 ;;
1335 Darwin/*)
1336 OTHER_LIBTOOL_OPT=""
1337 ;;
1338esac
1339
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001340AC_SUBST(LIBTOOL_CRUFT)
1341case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001342 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001343 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1344 if test "${enable_universalsdk}"; then
1345 :
1346 else
1347 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1348 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001349 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001350 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001351 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001352 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1353 if test ${gcc_version} '<' 4.0
1354 then
1355 LIBTOOL_CRUFT="-lcc_dynamic"
1356 else
1357 LIBTOOL_CRUFT=""
1358 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001359 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001360 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001362esac
1363
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001364AC_MSG_CHECKING(for --enable-framework)
1365if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001366then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001367 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001368 # -F. is needed to allow linking to the framework while
1369 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001370 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1371 [Define if you want to produce an OpenStep/Rhapsody framework
1372 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001373 AC_MSG_RESULT(yes)
1374else
1375 AC_MSG_RESULT(no)
1376fi
1377
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001378AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001379case $ac_sys_system/$ac_sys_release in
1380 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001381 AC_DEFINE(WITH_DYLD, 1,
1382 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1383 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1384 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001385 AC_MSG_RESULT(always on for Darwin)
1386 ;;
1387 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001388 AC_MSG_RESULT(no)
1389 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001390esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391
Guido van Rossumac405f61994-09-12 10:56:06 +00001392# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001393AC_SUBST(SO)
1394AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001395AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001396AC_SUBST(CCSHARED)
1397AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001398# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001399# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001400AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001401if test -z "$SO"
1402then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001403 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001404 hp*|HP*)
1405 case `uname -m` in
1406 ia64) SO=.so;;
1407 *) SO=.sl;;
1408 esac
1409 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001410 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001411 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001412 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001413else
1414 # this might also be a termcap variable, see #610332
1415 echo
1416 echo '====================================================================='
1417 echo '+ +'
1418 echo '+ WARNING: You have set SO in your environment. +'
1419 echo '+ Do you really mean to change the extension for shared libraries? +'
1420 echo '+ Continuing in 10 seconds to let you to ponder. +'
1421 echo '+ +'
1422 echo '====================================================================='
1423 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001424fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001425AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001426AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001427# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001428# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001429# (Shared libraries in this instance are shared modules to be loaded into
1430# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001431AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001432if test -z "$LDSHARED"
1433then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001434 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001435 AIX*)
1436 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001437 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001438 ;;
1439 BeOS*)
1440 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001441 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001442 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001443 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001444 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001445 SunOS/5*)
1446 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001447 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001448 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001449 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001450 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001451 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001452 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001453 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1454 if test "$enable_framework" ; then
1455 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001456 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1457 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001458 else
1459 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001460 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001461 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001462 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001463 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1464 if test "$enable_framework" ; then
1465 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001466 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1467 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001468 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001469 # No framework, use the Python app as bundle-loader
1470 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001471 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001472 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001473 Darwin/*)
1474 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1475 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001476 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001477 if test ${cur_target} '>' 10.2; then
1478 cur_target=10.3
1479 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001480 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren988117f2006-04-29 11:31:35 +00001481 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001482 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001483 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001484 if test "${enable_universalsdk}"; then
1485 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1486 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001487 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1488 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001489 else
1490 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1491 if test "$enable_framework" ; then
1492 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001493 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1494 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001495 else
1496 # No framework, use the Python app as bundle-loader
1497 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1498 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1499 fi
1500 fi
1501 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001502 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001503 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001504 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001505 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001506 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001507 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001508 else
1509 LDSHARED="ld -Bshareable ${LDFLAGS}"
1510 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001511 OpenBSD*)
1512 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1513 then
1514 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1515 else
1516 case `uname -r` in
1517 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1518 LDSHARED="ld -Bshareable ${LDFLAGS}"
1519 ;;
1520 *)
1521 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1522 ;;
1523 esac
1524 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001525 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001526 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001527 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001528 then LDSHARED='$(CC) -shared'
1529 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001530 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001531 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001532 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001533 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001534 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001535 *) LDSHARED="ld";;
1536 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001537fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001538AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001539BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001540# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001541# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001542AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001543if test -z "$CCSHARED"
1544then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001545 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001546 SunOS*) if test "$GCC" = yes;
Martin v. Löwisa8cfa2a2007-03-12 10:50:51 +00001547 then CCSHARED="-fPIC";
1548 elif test `uname -p` = sparc;
1549 then CCSHARED="-xcode=pic32";
1550 else CCSHARED="-Kpic";
1551 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001552 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001553 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001554 else CCSHARED="+z";
1555 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001556 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001557 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001558 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001559 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001560 if test "$GCC" = "yes"
1561 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001562 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001563 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001564 SCO_SV*)
1565 if test "$GCC" = "yes"
1566 then CCSHARED="-fPIC"
1567 else CCSHARED="-Kpic -belf"
1568 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001569 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001570 IRIX*/6*) case $CC in
1571 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001572 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001573 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001574 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001575 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001576fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001577AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001578# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001579# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001580AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001581if test -z "$LINKFORSHARED"
1582then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001583 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001584 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001585 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001586 LINKFORSHARED="-Wl,-E -Wl,+s";;
1587# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001588 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001589 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001590 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001591 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001592 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1593 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001594 # not used by the core itself but which needs to be in the core so
1595 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001596 # -prebind is no longer used, because it actually seems to give a
1597 # slowdown in stead of a speedup, maybe due to the large number of
1598 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001599
1600 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001601 if test "$enable_framework"
1602 then
Jack Jansenda49e192005-01-07 13:08:22 +00001603 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001604 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001605 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001606 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001607 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001608 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001609 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001610 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1611 then
1612 LINKFORSHARED="-Wl,--export-dynamic"
1613 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001614 SunOS/5*) case $CC in
1615 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001616 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001617 then
1618 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001619 fi;;
1620 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001621 CYGWIN*)
1622 if test $enable_shared = "no"
1623 then
1624 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1625 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001626 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001627fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001628AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001629
Neil Schemenauer61c51152001-01-26 16:18:16 +00001630AC_SUBST(CFLAGSFORSHARED)
1631AC_MSG_CHECKING(CFLAGSFORSHARED)
1632if test ! "$LIBRARY" = "$LDLIBRARY"
1633then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001634 case $ac_sys_system in
1635 CYGWIN*)
1636 # Cygwin needs CCSHARED when building extension DLLs
1637 # but not when building the interpreter DLL.
1638 CFLAGSFORSHARED='';;
1639 *)
1640 CFLAGSFORSHARED='$(CCSHARED)'
1641 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001642fi
1643AC_MSG_RESULT($CFLAGSFORSHARED)
1644
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001645# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1646# library (with --enable-shared).
1647# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001648# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1649# if it is not required, since it creates a dependency of the shared library
1650# to LIBS. This, in turn, means that applications linking the shared libpython
1651# don't need to link LIBS explicitly. The default should be only changed
1652# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001653AC_SUBST(SHLIBS)
1654AC_MSG_CHECKING(SHLIBS)
1655case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001656 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001657 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001658esac
1659AC_MSG_RESULT($SHLIBS)
1660
1661
Guido van Rossum627b2d71993-12-24 10:39:16 +00001662# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001663AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1664AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001665
1666# only check for sem_ini if thread support is requested
1667if test "$with_threads" = "yes" -o -z "$with_threads"; then
1668 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1669 # posix4 on Solaris 2.6
1670 # pthread (first!) on Linux
1671fi
1672
Martin v. Löwis19d17342003-06-14 21:03:05 +00001673# check if we need libintl for locale functions
1674AC_CHECK_LIB(intl, textdomain,
1675 AC_DEFINE(WITH_LIBINTL, 1,
1676 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001677
1678# checks for system dependent C++ extensions support
1679case "$ac_sys_system" in
1680 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1681 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1682 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001683 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1684 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1685 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001686 AC_MSG_RESULT(yes)],
1687 [AC_MSG_RESULT(no)]);;
1688 *) ;;
1689esac
1690
Guido van Rossum70c7f481998-03-26 18:44:10 +00001691# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001692# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001693AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001694AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001695
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001696case "$ac_sys_system" in
1697BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001698AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1699;;
1700esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001701
Guido van Rossumc5a39031996-07-31 17:35:03 +00001702AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001703AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001704 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1705[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001706AC_MSG_RESULT($withval)
1707LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001708],
1709[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001710
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001711# Check for use of the system libffi library
1712AC_MSG_CHECKING(for --with-system-ffi)
1713AC_ARG_WITH(system_ffi,
1714 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1715
1716if test -z "$with_system_ffi"
1717then with_system_ffi="no"
1718fi
1719AC_MSG_RESULT($with_system_ffi)
1720
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001721# Determine if signalmodule should be used.
1722AC_SUBST(USE_SIGNAL_MODULE)
1723AC_SUBST(SIGNAL_OBJS)
1724AC_MSG_CHECKING(for --with-signal-module)
1725AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001726 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001727
1728if test -z "$with_signal_module"
1729then with_signal_module="yes"
1730fi
1731AC_MSG_RESULT($with_signal_module)
1732
1733if test "${with_signal_module}" = "yes"; then
1734 USE_SIGNAL_MODULE=""
1735 SIGNAL_OBJS=""
1736else
1737 USE_SIGNAL_MODULE="#"
1738 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1739fi
1740
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001741# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001742AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001743USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001744
Guido van Rossum54d93d41997-01-22 20:51:58 +00001745AC_MSG_CHECKING(for --with-dec-threads)
1746AC_SUBST(LDLAST)
1747AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001748 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1749[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001750AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001751LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001752if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001753 with_thread="$withval";
1754fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001755[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001756
Martin v. Löwis11437992002-04-12 09:54:03 +00001757# Templates for things AC_DEFINEd more than once.
1758# For a single AC_DEFINE, no template is needed.
1759AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1760AH_TEMPLATE(_REENTRANT,
1761 [Define to force use of thread-safe errno, h_errno, and other functions])
1762AH_TEMPLATE(WITH_THREAD,
1763 [Define if you want to compile in rudimentary thread support])
1764
Guido van Rossum54d93d41997-01-22 20:51:58 +00001765AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001766dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001767AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001768 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001769
Barry Warsawc0d24d82000-06-29 16:12:00 +00001770# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001771dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001772AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001773 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1774 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001775
1776if test -z "$with_threads"
1777then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001778fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001779AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001780
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001781AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001782if test "$with_threads" = "no"
1783then
1784 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001785elif test "$ac_cv_pthread_is_default" = yes
1786then
1787 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001788 # Defining _REENTRANT on system with POSIX threads should not hurt.
1789 AC_DEFINE(_REENTRANT)
1790 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001791 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001792elif test "$ac_cv_kpthread" = "yes"
1793then
1794 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001795 if test "$ac_cv_cxx_thread" = "yes"; then
1796 CXX="$CXX -Kpthread"
1797 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001798 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001799 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001800 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001801elif test "$ac_cv_kthread" = "yes"
1802then
1803 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001804 if test "$ac_cv_cxx_thread" = "yes"; then
1805 CXX="$CXX -Kthread"
1806 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001807 AC_DEFINE(WITH_THREAD)
1808 posix_threads=yes
1809 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001810elif test "$ac_cv_pthread" = "yes"
1811then
1812 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001813 if test "$ac_cv_cxx_thread" = "yes"; then
1814 CXX="$CXX -pthread"
1815 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001816 AC_DEFINE(WITH_THREAD)
1817 posix_threads=yes
1818 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001819else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001820 if test ! -z "$with_threads" -a -d "$with_threads"
1821 then LDFLAGS="$LDFLAGS -L$with_threads"
1822 fi
1823 if test ! -z "$withval" -a -d "$withval"
1824 then LDFLAGS="$LDFLAGS -L$withval"
1825 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001826
1827 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001828 # define _POSIX_THREADS in unistd.h. Some apparently don't
1829 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001830 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1831 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001832 [
1833#include <unistd.h>
1834#ifdef _POSIX_THREADS
1835yes
1836#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001837 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1838 AC_MSG_RESULT($unistd_defines_pthreads)
1839
Martin v. Löwis130fb172001-07-19 11:00:41 +00001840 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001841 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1842 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001843 AC_DEFINE(HURD_C_THREADS, 1,
1844 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001845 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001846 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001847 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1848 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001849 AC_DEFINE(MACH_C_THREADS, 1,
1850 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001851 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001852 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001853 AC_ARG_WITH([pth],
1854 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1855 [AC_MSG_RESULT($withval)
1856 AC_DEFINE([WITH_THREAD])
1857 AC_DEFINE([HAVE_PTH], 1,
1858 [Define if you have GNU PTH threads.])
1859 LIBS="-lpth $LIBS"
1860 THREADOBJ="Python/thread.o"],
1861 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001862
1863 # Just looking for pthread_create in libpthread is not enough:
1864 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1865 # So we really have to include pthread.h, and then link.
1866 _libs=$LIBS
1867 LIBS="$LIBS -lpthread"
1868 AC_MSG_CHECKING([for pthread_create in -lpthread])
1869 AC_TRY_LINK([#include <pthread.h>
1870
1871void * start_routine (void *arg) { exit (0); }], [
1872pthread_create (NULL, NULL, start_routine, NULL)], [
1873 AC_MSG_RESULT(yes)
1874 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001875 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001876 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001877 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001878 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001879 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001880 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001881 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1882 AC_DEFINE(ATHEOS_THREADS, 1,
1883 [Define this if you have AtheOS threads.])
1884 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001885 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001886 AC_DEFINE(BEOS_THREADS, 1,
1887 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001888 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001889 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001890 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001891 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001892 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001893 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001894 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001895 LIBS="$LIBS -lc_r"
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_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001898 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001899 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001900 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001901 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001902 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001903 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001904 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001905 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001906 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001907
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001908 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1909 LIBS="$LIBS -lmpc"
1910 THREADOBJ="Python/thread.o"
1911 USE_THREAD_MODULE=""])
1912
1913 if test "$posix_threads" != "yes"; then
1914 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1915 LIBS="$LIBS -lthread"
1916 THREADOBJ="Python/thread.o"
1917 USE_THREAD_MODULE=""])
1918 fi
1919
1920 if test "$USE_THREAD_MODULE" != "#"
1921 then
1922 # If the above checks didn't disable threads, (at least) OSF1
1923 # needs this '-threads' argument during linking.
1924 case $ac_sys_system in
1925 OSF1) LDLAST=-threads;;
1926 esac
1927 fi
1928fi
1929
1930if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001931 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001932 AC_DEFINE(_POSIX_THREADS, 1,
1933 [Define if you have POSIX threads,
1934 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001935 fi
1936
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001937 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1938 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001939 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1940 Defined for Solaris 2.6 bug in pthread header.)
1941 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001942 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001943 Define if the Posix semaphores do not work on your system)
1944 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001945 esac
1946
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001947 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1948 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1949 [AC_TRY_RUN([#include <pthread.h>
1950 void *foo(void *parm) {
1951 return NULL;
1952 }
1953 main() {
1954 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001955 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001956 if (pthread_attr_init(&attr)) exit(-1);
1957 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001958 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001959 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001960 }],
1961 ac_cv_pthread_system_supported=yes,
1962 ac_cv_pthread_system_supported=no,
1963 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001964 ])
1965 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1966 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001967 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001968 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001969 AC_CHECK_FUNCS(pthread_sigmask,
1970 [case $ac_sys_system in
1971 CYGWIN*)
1972 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1973 [Define if pthread_sigmask() does not work on your system.])
1974 ;;
1975 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001976fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001977
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001978
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001979# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001980AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001981AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001982AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001983[ --enable-ipv6 Enable ipv6 (with ipv4) support
1984 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001985[ case "$enableval" in
1986 no)
1987 AC_MSG_RESULT(no)
1988 ipv6=no
1989 ;;
1990 *) AC_MSG_RESULT(yes)
1991 AC_DEFINE(ENABLE_IPV6)
1992 ipv6=yes
1993 ;;
1994 esac ],
1995
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001996[
1997dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001998 AC_TRY_RUN([ /* AF_INET6 available check */
1999#include <sys/types.h>
2000#include <sys/socket.h>
2001main()
2002{
2003 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2004 exit(1);
2005 else
2006 exit(0);
2007}
2008],
2009 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002010 ipv6=yes,
2011 AC_MSG_RESULT(no)
2012 ipv6=no,
2013 AC_MSG_RESULT(no)
2014 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002015)
2016
2017if test "$ipv6" = "yes"; then
2018 AC_MSG_CHECKING(if RFC2553 API is available)
2019 AC_TRY_COMPILE([#include <sys/types.h>
2020#include <netinet/in.h>],
2021 [struct sockaddr_in6 x;
2022x.sin6_scope_id;],
2023 AC_MSG_RESULT(yes)
2024 ipv6=yes,
2025 AC_MSG_RESULT(no, IPv6 disabled)
2026 ipv6=no)
2027fi
2028
2029if test "$ipv6" = "yes"; then
2030 AC_DEFINE(ENABLE_IPV6)
2031fi
2032])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002033
2034ipv6type=unknown
2035ipv6lib=none
2036ipv6trylibc=no
2037
2038if test "$ipv6" = "yes"; then
2039 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002040 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2041 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002042 case $i in
2043 inria)
2044 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002045 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002046#include <netinet/in.h>
2047#ifdef IPV6_INRIA_VERSION
2048yes
2049#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002050 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002051 ;;
2052 kame)
2053 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002054 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002055#include <netinet/in.h>
2056#ifdef __KAME__
2057yes
2058#endif],
2059 [ipv6type=$i;
2060 ipv6lib=inet6
2061 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002062 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002063 ;;
2064 linux-glibc)
2065 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002066 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002067#include <features.h>
2068#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2069yes
2070#endif],
2071 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002072 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002073 ;;
2074 linux-inet6)
2075 dnl http://www.v6.linux.or.jp/
2076 if test -d /usr/inet6; then
2077 ipv6type=$i
2078 ipv6lib=inet6
2079 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002080 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002081 fi
2082 ;;
2083 solaris)
2084 if test -f /etc/netconfig; then
2085 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2086 ipv6type=$i
2087 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002088 fi
2089 fi
2090 ;;
2091 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002092 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002093#include <sys/param.h>
2094#ifdef _TOSHIBA_INET6
2095yes
2096#endif],
2097 [ipv6type=$i;
2098 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002099 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002100 ;;
2101 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002102 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002103#include </usr/local/v6/include/sys/v6config.h>
2104#ifdef __V6D__
2105yes
2106#endif],
2107 [ipv6type=$i;
2108 ipv6lib=v6;
2109 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002110 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002111 ;;
2112 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002113 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002114#include <sys/param.h>
2115#ifdef _ZETA_MINAMI_INET6
2116yes
2117#endif],
2118 [ipv6type=$i;
2119 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002120 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002121 ;;
2122 esac
2123 if test "$ipv6type" != "unknown"; then
2124 break
2125 fi
2126 done
2127 AC_MSG_RESULT($ipv6type)
2128fi
2129
2130if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2131 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2132 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2133 echo "using lib$ipv6lib"
2134 else
2135 if test $ipv6trylibc = "yes"; then
2136 echo "using libc"
2137 else
2138 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2139 echo "You need to fetch lib$ipv6lib.a from appropriate"
2140 echo 'ipv6 kit and compile beforehand.'
2141 exit 1
2142 fi
2143 fi
2144fi
2145
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002146# Check for --with-doc-strings
2147AC_MSG_CHECKING(for --with-doc-strings)
2148AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002149 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002150
2151if test -z "$with_doc_strings"
2152then with_doc_strings="yes"
2153fi
2154if test "$with_doc_strings" != "no"
2155then
2156 AC_DEFINE(WITH_DOC_STRINGS, 1,
2157 [Define if you want documentation strings in extension modules])
2158fi
2159AC_MSG_RESULT($with_doc_strings)
2160
Neil Schemenauera35c6882001-02-27 04:45:05 +00002161# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002162AC_MSG_CHECKING(for --with-tsc)
2163AC_ARG_WITH(tsc,
2164[ --with(out)-tsc enable/disable timestamp counter profile], [
2165if test "$withval" != no
2166then
2167 AC_DEFINE(WITH_TSC, 1,
2168 [Define to profile with the Pentium timestamp counter])
2169 AC_MSG_RESULT(yes)
2170else AC_MSG_RESULT(no)
2171fi],
2172[AC_MSG_RESULT(no)])
2173
2174# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002175AC_MSG_CHECKING(for --with-pymalloc)
2176AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002177 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002178
2179if test -z "$with_pymalloc"
2180then with_pymalloc="yes"
2181fi
2182if test "$with_pymalloc" != "no"
2183then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002184 AC_DEFINE(WITH_PYMALLOC, 1,
2185 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002186fi
2187AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002188
Barry Warsawef82cd72000-06-30 16:21:01 +00002189# Check for --with-wctype-functions
2190AC_MSG_CHECKING(for --with-wctype-functions)
2191AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002192 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2193[
Barry Warsawef82cd72000-06-30 16:21:01 +00002194if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002195then
2196 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2197 [Define if you want wctype.h functions to be used instead of the
2198 one supplied by Python itself. (see Include/unicodectype.h).])
2199 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002200else AC_MSG_RESULT(no)
2201fi],
2202[AC_MSG_RESULT(no)])
2203
Guido van Rossum68242b51996-05-28 22:53:03 +00002204# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002205AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002206DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002207
Guido van Rossume97ee181999-12-20 21:27:22 +00002208# the dlopen() function means we might want to use dynload_shlib.o. some
2209# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002210AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002211
2212# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2213# loading of modules.
2214AC_SUBST(DYNLOADFILE)
2215AC_MSG_CHECKING(DYNLOADFILE)
2216if test -z "$DYNLOADFILE"
2217then
2218 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002219 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2220 if test "$ac_cv_func_dlopen" = yes
2221 then DYNLOADFILE="dynload_shlib.o"
2222 else DYNLOADFILE="dynload_aix.o"
2223 fi
2224 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002225 BeOS*) DYNLOADFILE="dynload_beos.o";;
2226 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002227 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2228 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002229 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002230 *)
2231 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2232 # out any dynamic loading
2233 if test "$ac_cv_func_dlopen" = yes
2234 then DYNLOADFILE="dynload_shlib.o"
2235 else DYNLOADFILE="dynload_stub.o"
2236 fi
2237 ;;
2238 esac
2239fi
2240AC_MSG_RESULT($DYNLOADFILE)
2241if test "$DYNLOADFILE" != "dynload_stub.o"
2242then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002243 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2244 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002245fi
2246
Jack Jansenc49e5b72001-06-19 15:00:23 +00002247# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2248
2249AC_SUBST(MACHDEP_OBJS)
2250AC_MSG_CHECKING(MACHDEP_OBJS)
2251if test -z "$MACHDEP_OBJS"
2252then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002253 MACHDEP_OBJS=$extra_machdep_objs
2254else
2255 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002256fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002257AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002258
Guido van Rossum627b2d71993-12-24 10:39:16 +00002259# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002260AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2261 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002262 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002263 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002264 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002265 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002266 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002267 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002268 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002269 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002270 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002271 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002272
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002273# For some functions, having a definition is not sufficient, since
2274# we want to take their address.
2275AC_MSG_CHECKING(for chroot)
2276AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2277 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2278 AC_MSG_RESULT(yes),
2279 AC_MSG_RESULT(no)
2280)
2281AC_MSG_CHECKING(for link)
2282AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2283 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2284 AC_MSG_RESULT(yes),
2285 AC_MSG_RESULT(no)
2286)
2287AC_MSG_CHECKING(for symlink)
2288AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2289 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2290 AC_MSG_RESULT(yes),
2291 AC_MSG_RESULT(no)
2292)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002293AC_MSG_CHECKING(for fchdir)
2294AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2295 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2296 AC_MSG_RESULT(yes),
2297 AC_MSG_RESULT(no)
2298)
2299AC_MSG_CHECKING(for fsync)
2300AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002301 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002302 AC_MSG_RESULT(yes),
2303 AC_MSG_RESULT(no)
2304)
2305AC_MSG_CHECKING(for fdatasync)
2306AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2307 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2308 AC_MSG_RESULT(yes),
2309 AC_MSG_RESULT(no)
2310)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002311
Martin v. Löwisd5843682002-11-21 20:41:28 +00002312# On some systems (eg. FreeBSD 5), we would find a definition of the
2313# functions ctermid_r, setgroups in the library, but no prototype
2314# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2315# address to avoid compiler warnings and potential miscompilations
2316# because of the missing prototypes.
2317
2318AC_MSG_CHECKING(for ctermid_r)
2319AC_TRY_COMPILE([
2320#include "confdefs.h"
2321#include <stdio.h>
2322], void* p = ctermid_r,
2323 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2324 AC_MSG_RESULT(yes),
2325 AC_MSG_RESULT(no)
2326)
2327
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002328AC_MSG_CHECKING(for flock)
2329AC_TRY_COMPILE([
2330#include "confdefs.h"
2331#include <sys/file.h>
2332], void* p = flock,
2333 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2334 AC_MSG_RESULT(yes),
2335 AC_MSG_RESULT(no)
2336)
2337
2338AC_MSG_CHECKING(for getpagesize)
2339AC_TRY_COMPILE([
2340#include "confdefs.h"
2341#include <unistd.h>
2342], void* p = getpagesize,
2343 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2344 AC_MSG_RESULT(yes),
2345 AC_MSG_RESULT(no)
2346)
2347
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002348dnl check for true
2349AC_CHECK_PROGS(TRUE, true, /bin/true)
2350
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002351dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2352dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002353AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002354 AC_CHECK_LIB(resolv, inet_aton)
2355)
2356
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002357dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002358dnl
2359dnl On MacOSX the linker will search for dylibs on the entire linker path
2360dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2361dnl to revert to a more traditional unix behaviour and make it possible to
2362dnl override the system libz with a local static library of libz. Temporarily
2363dnl add that flag to our CFLAGS as well to ensure that we check the version
2364dnl of libz that will be used by setup.py.
2365dnl The -L/usr/local/lib is needed as wel to get the same compilation
2366dnl environment as setup.py (and leaving it out can cause configure to use the
2367dnl wrong version of the library)
2368case $ac_sys_system/$ac_sys_release in
2369Darwin/*)
2370 _CUR_CFLAGS="${CFLAGS}"
2371 _CUR_LDFLAGS="${LDFLAGS}"
2372 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2373 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2374 ;;
2375esac
2376
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002377AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2378
Ronald Oussorenf8752642006-07-06 10:13:35 +00002379case $ac_sys_system/$ac_sys_release in
2380Darwin/*)
2381 CFLAGS="${_CUR_CFLAGS}"
2382 LDFLAGS="${_CUR_LDFLAGS}"
2383 ;;
2384esac
2385
Martin v. Löwise9416172003-05-03 10:12:45 +00002386AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002387AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002388#include "confdefs.h"
2389#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002390], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002391 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2392 AC_MSG_RESULT(yes),
2393 AC_MSG_RESULT(no)
2394)
2395
2396AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002397AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002398#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002399#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002400#include <sys/socket.h>
2401#include <netinet/in.h>
2402#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002403], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002404 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2405 AC_MSG_RESULT(yes),
2406 AC_MSG_RESULT(no)
2407)
2408
2409AC_MSG_CHECKING(for inet_pton)
2410AC_TRY_COMPILE([
2411#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002412#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002413#include <sys/socket.h>
2414#include <netinet/in.h>
2415#include <arpa/inet.h>
2416], void* p = inet_pton,
2417 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2418 AC_MSG_RESULT(yes),
2419 AC_MSG_RESULT(no)
2420)
2421
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002422# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002423AC_MSG_CHECKING(for setgroups)
2424AC_TRY_COMPILE([
2425#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002426#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002427#ifdef HAVE_GRP_H
2428#include <grp.h>
2429#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002430],
2431void* p = setgroups,
2432 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2433 AC_MSG_RESULT(yes),
2434 AC_MSG_RESULT(no)
2435)
2436
Fred Drake8cef4cf2000-06-28 16:40:38 +00002437# check for openpty and forkpty
2438
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002439AC_CHECK_FUNCS(openpty,,
2440 AC_CHECK_LIB(util,openpty,
2441 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2442 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2443 )
2444)
2445AC_CHECK_FUNCS(forkpty,,
2446 AC_CHECK_LIB(util,forkpty,
2447 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2448 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2449 )
2450)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002451
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002452# check for long file support functions
2453AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2454
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002455AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002456AC_CHECK_FUNCS(getpgrp,
2457 AC_TRY_COMPILE([#include <unistd.h>],
2458 [getpgrp(0);],
2459 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2460 [Define if getpgrp() must be called as getpgrp(0).])
2461 )
2462)
Jack Jansen150753c2003-03-29 22:07:47 +00002463AC_CHECK_FUNCS(setpgrp,
2464 AC_TRY_COMPILE([#include <unistd.h>],
2465 [setpgrp(0,0);],
2466 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2467 [Define if setpgrp() must be called as setpgrp(0, 0).])
2468 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002469)
2470AC_CHECK_FUNCS(gettimeofday,
2471 AC_TRY_COMPILE([#include <sys/time.h>],
2472 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2473 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2474 [Define if gettimeofday() does not have second (timezone) argument
2475 This is the case on Motorola V4 (R40V4.2)])
2476 )
2477)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002478
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002479AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002480AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002481#if defined(MAJOR_IN_MKDEV)
2482#include <sys/mkdev.h>
2483#elif defined(MAJOR_IN_SYSMACROS)
2484#include <sys/sysmacros.h>
2485#else
2486#include <sys/types.h>
2487#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002488],[
2489 makedev(major(0),minor(0));
2490],[
2491 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2492 [Define to 1 if you have the device macros.])
2493 AC_MSG_RESULT(yes)
2494],[
2495 AC_MSG_RESULT(no)
2496])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002497
2498# On OSF/1 V5.1, getaddrinfo is available, but a define
2499# for [no]getaddrinfo in netdb.h.
2500AC_MSG_CHECKING(for getaddrinfo)
2501AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002502#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002503#include <sys/socket.h>
2504#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002505#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002506],[
2507getaddrinfo(NULL, NULL, NULL, NULL);
2508], [
2509AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002510AC_MSG_CHECKING(getaddrinfo bug)
2511AC_TRY_RUN([
2512#include <sys/types.h>
2513#include <netdb.h>
2514#include <string.h>
2515#include <sys/socket.h>
2516#include <netinet/in.h>
2517
2518main()
2519{
2520 int passive, gaierr, inet4 = 0, inet6 = 0;
2521 struct addrinfo hints, *ai, *aitop;
2522 char straddr[INET6_ADDRSTRLEN], strport[16];
2523
2524 for (passive = 0; passive <= 1; passive++) {
2525 memset(&hints, 0, sizeof(hints));
2526 hints.ai_family = AF_UNSPEC;
2527 hints.ai_flags = passive ? AI_PASSIVE : 0;
2528 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002529 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002530 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2531 (void)gai_strerror(gaierr);
2532 goto bad;
2533 }
2534 for (ai = aitop; ai; ai = ai->ai_next) {
2535 if (ai->ai_addr == NULL ||
2536 ai->ai_addrlen == 0 ||
2537 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2538 straddr, sizeof(straddr), strport, sizeof(strport),
2539 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2540 goto bad;
2541 }
2542 switch (ai->ai_family) {
2543 case AF_INET:
2544 if (strcmp(strport, "54321") != 0) {
2545 goto bad;
2546 }
2547 if (passive) {
2548 if (strcmp(straddr, "0.0.0.0") != 0) {
2549 goto bad;
2550 }
2551 } else {
2552 if (strcmp(straddr, "127.0.0.1") != 0) {
2553 goto bad;
2554 }
2555 }
2556 inet4++;
2557 break;
2558 case AF_INET6:
2559 if (strcmp(strport, "54321") != 0) {
2560 goto bad;
2561 }
2562 if (passive) {
2563 if (strcmp(straddr, "::") != 0) {
2564 goto bad;
2565 }
2566 } else {
2567 if (strcmp(straddr, "::1") != 0) {
2568 goto bad;
2569 }
2570 }
2571 inet6++;
2572 break;
2573 case AF_UNSPEC:
2574 goto bad;
2575 break;
2576 default:
2577 /* another family support? */
2578 break;
2579 }
2580 }
2581 }
2582
2583 if (!(inet4 == 0 || inet4 == 2))
2584 goto bad;
2585 if (!(inet6 == 0 || inet6 == 2))
2586 goto bad;
2587
2588 if (aitop)
2589 freeaddrinfo(aitop);
2590 exit(0);
2591
2592 bad:
2593 if (aitop)
2594 freeaddrinfo(aitop);
2595 exit(1);
2596}
2597],
2598AC_MSG_RESULT(good)
2599buggygetaddrinfo=no,
2600AC_MSG_RESULT(buggy)
2601buggygetaddrinfo=yes,
2602AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002603buggygetaddrinfo=yes)], [
2604AC_MSG_RESULT(no)
2605buggygetaddrinfo=yes
2606])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002607
2608if test "$buggygetaddrinfo" = "yes"; then
2609 if test "$ipv6" = "yes"; then
2610 echo 'Fatal: You must get working getaddrinfo() function.'
2611 echo ' or you can specify "--disable-ipv6"'.
2612 exit 1
2613 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002614else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002615 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002616fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002617AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002618
Guido van Rossum627b2d71993-12-24 10:39:16 +00002619# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002620AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002621AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002622AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002623AC_CHECK_MEMBERS([struct stat.st_rdev])
2624AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002625AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002626AC_CHECK_MEMBERS([struct stat.st_gen])
2627AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002628AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002629
2630AC_MSG_CHECKING(for time.h that defines altzone)
2631AC_CACHE_VAL(ac_cv_header_time_altzone,
2632[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2633 ac_cv_header_time_altzone=yes,
2634 ac_cv_header_time_altzone=no)])
2635AC_MSG_RESULT($ac_cv_header_time_altzone)
2636if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002637 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002638fi
2639
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002640was_it_defined=no
2641AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002642AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002643#include <sys/types.h>
2644#include <sys/select.h>
2645#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002646], [;], [
2647 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2648 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2649 (which you can't on SCO ODT 3.0).])
2650 was_it_defined=yes
2651])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002652AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002653
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002654AC_MSG_CHECKING(for addrinfo)
2655AC_CACHE_VAL(ac_cv_struct_addrinfo,
2656AC_TRY_COMPILE([
2657# include <netdb.h>],
2658 [struct addrinfo a],
2659 ac_cv_struct_addrinfo=yes,
2660 ac_cv_struct_addrinfo=no))
2661AC_MSG_RESULT($ac_cv_struct_addrinfo)
2662if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002663 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002664fi
2665
2666AC_MSG_CHECKING(for sockaddr_storage)
2667AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2668AC_TRY_COMPILE([
2669# include <sys/types.h>
2670# include <sys/socket.h>],
2671 [struct sockaddr_storage s],
2672 ac_cv_struct_sockaddr_storage=yes,
2673 ac_cv_struct_sockaddr_storage=no))
2674AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2675if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002676 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002677fi
2678
Guido van Rossum627b2d71993-12-24 10:39:16 +00002679# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002680
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002681AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002682AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002683
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002684works=no
2685AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002686AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2687 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2688)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002689AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002690
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002691works=no
2692AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002693AC_TRY_COMPILE([], [signed char c;], works=yes,
2694 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2695)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002696AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002697
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002698have_prototypes=no
2699AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002700AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2701 AC_DEFINE(HAVE_PROTOTYPES, 1,
2702 [Define if your compiler supports function prototype])
2703 have_prototypes=yes
2704])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002705AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002706
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002707works=no
2708AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002709AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002710#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002711int foo(int x, ...) {
2712 va_list va;
2713 va_start(va, x);
2714 va_arg(va, int);
2715 va_arg(va, char *);
2716 va_arg(va, double);
2717 return 0;
2718}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002719], [return foo(10, "", 3.14);], [
2720 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2721 [Define if your compiler supports variable length function prototypes
2722 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2723 works=yes
2724])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002725AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002726
Dave Cole331708b2004-08-09 04:51:41 +00002727# check for socketpair
2728AC_MSG_CHECKING(for socketpair)
2729AC_TRY_COMPILE([
2730#include <sys/types.h>
2731#include <sys/socket.h>
2732], void *x=socketpair,
2733 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2734 AC_MSG_RESULT(yes),
2735 AC_MSG_RESULT(no)
2736)
2737
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002738# check if sockaddr has sa_len member
2739AC_MSG_CHECKING(if sockaddr has sa_len member)
2740AC_TRY_COMPILE([#include <sys/types.h>
2741#include <sys/socket.h>],
2742[struct sockaddr x;
2743x.sa_len = 0;],
2744 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002745 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002746 AC_MSG_RESULT(no))
2747
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002748va_list_is_array=no
2749AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002750AC_TRY_COMPILE([
2751#ifdef HAVE_STDARG_PROTOTYPES
2752#include <stdarg.h>
2753#else
2754#include <varargs.h>
2755#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002756], [va_list list1, list2; list1 = list2;], , [
2757 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2758 va_list_is_array=yes
2759])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002760AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002761
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002762# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002763AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2764 [Define this if you have some version of gethostbyname_r()])
2765
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002766AC_CHECK_FUNC(gethostbyname_r, [
2767 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2768 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2769 OLD_CFLAGS=$CFLAGS
2770 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2771 AC_TRY_COMPILE([
2772# include <netdb.h>
2773 ], [
2774 char *name;
2775 struct hostent *he, *res;
2776 char buffer[2048];
2777 int buflen = 2048;
2778 int h_errnop;
2779
2780 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2781 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002782 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002783 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2784 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002785 AC_MSG_RESULT(yes)
2786 ], [
2787 AC_MSG_RESULT(no)
2788 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2789 AC_TRY_COMPILE([
2790# include <netdb.h>
2791 ], [
2792 char *name;
2793 struct hostent *he;
2794 char buffer[2048];
2795 int buflen = 2048;
2796 int h_errnop;
2797
2798 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2799 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002800 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002801 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2802 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002803 AC_MSG_RESULT(yes)
2804 ], [
2805 AC_MSG_RESULT(no)
2806 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2807 AC_TRY_COMPILE([
2808# include <netdb.h>
2809 ], [
2810 char *name;
2811 struct hostent *he;
2812 struct hostent_data data;
2813
2814 (void) gethostbyname_r(name, he, &data);
2815 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002816 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002817 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2818 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002819 AC_MSG_RESULT(yes)
2820 ], [
2821 AC_MSG_RESULT(no)
2822 ])
2823 ])
2824 ])
2825 CFLAGS=$OLD_CFLAGS
2826], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002827 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002828])
2829AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2830AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2831AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002832AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002833AC_SUBST(HAVE_GETHOSTBYNAME)
2834
Guido van Rossum627b2d71993-12-24 10:39:16 +00002835# checks for system services
2836# (none yet)
2837
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002838# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002839AC_CHECK_FUNC(__fpu_control,
2840 [],
2841 [AC_CHECK_LIB(ieee, __fpu_control)
2842])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002843
Guido van Rossum93274221997-05-09 02:42:00 +00002844# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002845AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002846AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002847 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2848[
Guido van Rossum93274221997-05-09 02:42:00 +00002849if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002850then
2851 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2852 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2853 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002854else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002855fi],
2856[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002857
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002858# check for --with-libm=...
2859AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002860case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002861Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002862BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002863*) LIBM=-lm
2864esac
Guido van Rossum93274221997-05-09 02:42:00 +00002865AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002866AC_ARG_WITH(libm,
2867 AC_HELP_STRING(--with-libm=STRING, math library),
2868[
Guido van Rossum93274221997-05-09 02:42:00 +00002869if test "$withval" = no
2870then LIBM=
2871 AC_MSG_RESULT(force LIBM empty)
2872elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002873then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002874 AC_MSG_RESULT(set LIBM="$withval")
2875else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002876fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002877[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002878
2879# check for --with-libc=...
2880AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002881AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002882AC_ARG_WITH(libc,
2883 AC_HELP_STRING(--with-libc=STRING, C library),
2884[
Guido van Rossum93274221997-05-09 02:42:00 +00002885if test "$withval" = no
2886then LIBC=
2887 AC_MSG_RESULT(force LIBC empty)
2888elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002889then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002890 AC_MSG_RESULT(set LIBC="$withval")
2891else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002892fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002893[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002894
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002895# check for hypot() in math library
2896LIBS_SAVE=$LIBS
2897LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002898AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002899LIBS=$LIBS_SAVE
2900
Guido van Rossumef2255b2000-03-10 22:30:29 +00002901# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902AC_CHECK_HEADER(wchar.h, [
2903 AC_DEFINE(HAVE_WCHAR_H, 1,
2904 [Define if the compiler provides a wchar.h header file.])
2905 wchar_h="yes"
2906],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002907wchar_h="no"
2908)
2909
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002910# determine wchar_t size
2911if test "$wchar_h" = yes
2912then
Guido van Rossum67b26592001-10-20 14:21:45 +00002913 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002914fi
2915
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002916AC_MSG_CHECKING(for UCS-4 tcl)
2917have_ucs4_tcl=no
2918AC_TRY_COMPILE([
2919#include <tcl.h>
2920#if TCL_UTF_MAX != 6
2921# error "NOT UCS4_TCL"
2922#endif], [], [
2923 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2924 have_ucs4_tcl=yes
2925])
2926AC_MSG_RESULT($have_ucs4_tcl)
2927
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002928# check whether wchar_t is signed or not
2929if test "$wchar_h" = yes
2930then
2931 # check whether wchar_t is signed or not
2932 AC_MSG_CHECKING(whether wchar_t is signed)
2933 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2934 AC_TRY_RUN([
2935 #include <wchar.h>
2936 int main()
2937 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002938 /* Success: exit code 0 */
2939 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002940 }
2941 ],
2942 ac_cv_wchar_t_signed=yes,
2943 ac_cv_wchar_t_signed=no,
2944 ac_cv_wchar_t_signed=yes)])
2945 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2946fi
2947
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002948AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002949dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002950AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002951 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2952 [],
2953 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002954
2955if test $enable_unicode = yes
2956then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002957 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002958 case "$have_ucs4_tcl" in
2959 yes) enable_unicode="ucs4"
2960 ;;
2961 *) enable_unicode="ucs2"
2962 ;;
2963 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002964fi
2965
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002966AH_TEMPLATE(Py_UNICODE_SIZE,
2967 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002968case "$enable_unicode" in
2969ucs2) unicode_size="2"
2970 AC_DEFINE(Py_UNICODE_SIZE,2)
2971 ;;
2972ucs4) unicode_size="4"
2973 AC_DEFINE(Py_UNICODE_SIZE,4)
2974 ;;
2975esac
2976
Martin v. Löwis11437992002-04-12 09:54:03 +00002977AH_TEMPLATE(PY_UNICODE_TYPE,
2978 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002979
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002980AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002981if test "$enable_unicode" = "no"
2982then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002983 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002984 AC_MSG_RESULT(not used)
2985else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002986 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987 AC_DEFINE(Py_USING_UNICODE, 1,
2988 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002989
2990 # wchar_t is only usable if it maps to an unsigned type
2991 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002992 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002993 then
2994 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002995 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2996 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002997 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002998 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002999 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3000 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3001 then
3002 PY_UNICODE_TYPE="unsigned short"
3003 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3004 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3005 then
3006 PY_UNICODE_TYPE="unsigned long"
3007 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3008 else
3009 PY_UNICODE_TYPE="no type found"
3010 fi
3011 AC_MSG_RESULT($PY_UNICODE_TYPE)
3012fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003013
3014# check for endianness
3015AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003016AH_VERBATIM([WORDS_BIGENDIAN],
3017[
3018 /* Define to 1 if your processor stores words with the most significant byte
3019 first (like Motorola and SPARC, unlike Intel and VAX).
3020
3021 The block below does compile-time checking for endianness on platforms
3022 that use GCC and therefore allows compiling fat binaries on OSX by using
3023 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3024 such that the configure-result is used on systems that don't use GCC.
3025 */
3026#ifdef __BIG_ENDIAN__
3027#define WORDS_BIGENDIAN 1
3028#else
3029#ifndef __LITTLE_ENDIAN__
3030#undef WORDS_BIGENDIAN
3031#endif
3032#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003033
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003034# Check whether right shifting a negative integer extends the sign bit
3035# or fills with zeros (like the Cray J90, according to Tim Peters).
3036AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003037AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003038AC_TRY_RUN([
3039int main()
3040{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003041 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003042}
Guido van Rossum3065c942001-09-17 04:03:14 +00003043],
3044ac_cv_rshift_extends_sign=yes,
3045ac_cv_rshift_extends_sign=no,
3046ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003047AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3048if test "$ac_cv_rshift_extends_sign" = no
3049then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003050 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3051 [Define if i>>j for signed int i does not extend the sign bit
3052 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003053fi
3054
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003055# check for getc_unlocked and related locking functions
3056AC_MSG_CHECKING(for getc_unlocked() and friends)
3057AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3058AC_TRY_LINK([#include <stdio.h>],[
3059 FILE *f = fopen("/dev/null", "r");
3060 flockfile(f);
3061 getc_unlocked(f);
3062 funlockfile(f);
3063], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3064AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3065if test "$ac_cv_have_getc_unlocked" = yes
3066then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003067 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3068 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003069fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003070
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003071# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003072# save the value of LIBS so we don't actually link Python with readline
3073LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003074AC_CHECK_LIB(readline, readline)
3075if test "$ac_cv_have_readline_readline" = no
3076then
3077 AC_CHECK_LIB(termcap, readline)
3078fi
3079
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003080# check for readline 2.1
3081AC_CHECK_LIB(readline, rl_callback_handler_install,
3082 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003083 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003084
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003085# check for readline 2.2
3086AC_TRY_CPP([#include <readline/readline.h>],
3087have_readline=yes, have_readline=no)
3088if test $have_readline = yes
3089then
3090 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3091 [readline/readline.h],
3092 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3093 [Define if you have readline 2.2]), )
3094fi
3095
Martin v. Löwis0daad592001-09-30 21:09:59 +00003096# check for readline 4.0
3097AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003098 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003099 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003100
Guido van Rossum353ae582001-07-10 16:45:32 +00003101# check for readline 4.2
3102AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003103 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003104 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003105
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003106# also in readline 4.2
3107AC_TRY_CPP([#include <readline/readline.h>],
3108have_readline=yes, have_readline=no)
3109if test $have_readline = yes
3110then
3111 AC_EGREP_HEADER([extern int rl_catch_signals;],
3112 [readline/readline.h],
3113 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3114 [Define if you can turn off readline's signal handling.]), )
3115fi
3116
Martin v. Löwis82bca632006-02-10 20:49:30 +00003117# End of readline checks: restore LIBS
3118LIBS=$LIBS_no_readline
3119
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003120AC_MSG_CHECKING(for broken nice())
3121AC_CACHE_VAL(ac_cv_broken_nice, [
3122AC_TRY_RUN([
3123int main()
3124{
3125 int val1 = nice(1);
3126 if (val1 != -1 && val1 == nice(2))
3127 exit(0);
3128 exit(1);
3129}
Guido van Rossum3065c942001-09-17 04:03:14 +00003130],
3131ac_cv_broken_nice=yes,
3132ac_cv_broken_nice=no,
3133ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003134AC_MSG_RESULT($ac_cv_broken_nice)
3135if test "$ac_cv_broken_nice" = yes
3136then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003137 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3138 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003139fi
3140
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003141AC_MSG_CHECKING(for broken poll())
3142AC_TRY_RUN([
3143#include <poll.h>
3144
3145int main (void)
3146 {
3147 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3148
3149 close (42);
3150
3151 int poll_test = poll (&poll_struct, 1, 0);
3152
3153 if (poll_test < 0)
3154 {
3155 exit(0);
3156 }
3157 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3158 {
3159 exit(0);
3160 }
3161 else
3162 {
3163 exit(1);
3164 }
3165 }
3166],
3167ac_cv_broken_poll=yes,
3168ac_cv_broken_poll=no,
3169ac_cv_broken_poll=no)
3170AC_MSG_RESULT($ac_cv_broken_poll)
3171if test "$ac_cv_broken_poll" = yes
3172then
3173 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3174 [Define if poll() sets errno on invalid file descriptors.])
3175fi
3176
Brett Cannon43802422005-02-10 20:48:03 +00003177# Before we can test tzset, we need to check if struct tm has a tm_zone
3178# (which is not required by ISO C or UNIX spec) and/or if we support
3179# tzname[]
3180AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003181
Brett Cannon43802422005-02-10 20:48:03 +00003182# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003183AC_MSG_CHECKING(for working tzset())
3184AC_CACHE_VAL(ac_cv_working_tzset, [
3185AC_TRY_RUN([
3186#include <stdlib.h>
3187#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003188#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003189
3190#if HAVE_TZNAME
3191extern char *tzname[];
3192#endif
3193
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003194int main()
3195{
Brett Cannon18367812003-09-19 00:59:16 +00003196 /* Note that we need to ensure that not only does tzset(3)
3197 do 'something' with localtime, but it works as documented
3198 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003199 This includes making sure that tzname is set properly if
3200 tm->tm_zone does not exist since it is the alternative way
3201 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003202
3203 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003204 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003205 */
3206
Brett Cannon43802422005-02-10 20:48:03 +00003207 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003208 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3209
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003210 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003211 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003212 if (localtime(&groundhogday)->tm_hour != 0)
3213 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003214#if HAVE_TZNAME
3215 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3216 if (strcmp(tzname[0], "UTC") ||
3217 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3218 exit(1);
3219#endif
Brett Cannon18367812003-09-19 00:59:16 +00003220
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003221 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003222 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003223 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003224 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003225#if HAVE_TZNAME
3226 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3227 exit(1);
3228#endif
Brett Cannon18367812003-09-19 00:59:16 +00003229
3230 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3231 tzset();
3232 if (localtime(&groundhogday)->tm_hour != 11)
3233 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003234#if HAVE_TZNAME
3235 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3236 exit(1);
3237#endif
3238
3239#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003240 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3241 exit(1);
3242 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3243 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003244#endif
Brett Cannon18367812003-09-19 00:59:16 +00003245
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003246 exit(0);
3247}
3248],
3249ac_cv_working_tzset=yes,
3250ac_cv_working_tzset=no,
3251ac_cv_working_tzset=no)])
3252AC_MSG_RESULT($ac_cv_working_tzset)
3253if test "$ac_cv_working_tzset" = yes
3254then
3255 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3256 [Define if tzset() actually switches the local timezone in a meaningful way.])
3257fi
3258
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003259# Look for subsecond timestamps in struct stat
3260AC_MSG_CHECKING(for tv_nsec in struct stat)
3261AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3262AC_TRY_COMPILE([#include <sys/stat.h>], [
3263struct stat st;
3264st.st_mtim.tv_nsec = 1;
3265],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003266ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003267ac_cv_stat_tv_nsec=no,
3268ac_cv_stat_tv_nsec=no))
3269AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3270if test "$ac_cv_stat_tv_nsec" = yes
3271then
3272 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3273 [Define if you have struct stat.st_mtim.tv_nsec])
3274fi
3275
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003276# Look for BSD style subsecond timestamps in struct stat
3277AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3278AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3279AC_TRY_COMPILE([#include <sys/stat.h>], [
3280struct stat st;
3281st.st_mtimespec.tv_nsec = 1;
3282],
3283ac_cv_stat_tv_nsec2=yes,
3284ac_cv_stat_tv_nsec2=no,
3285ac_cv_stat_tv_nsec2=no))
3286AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3287if test "$ac_cv_stat_tv_nsec2" = yes
3288then
3289 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3290 [Define if you have struct stat.st_mtimensec])
3291fi
3292
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003293# On HP/UX 11.0, mvwdelch is a block with a return statement
3294AC_MSG_CHECKING(whether mvwdelch is an expression)
3295AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3296AC_TRY_COMPILE([#include <curses.h>], [
3297 int rtn;
3298 rtn = mvwdelch(0,0,0);
3299], ac_cv_mvwdelch_is_expression=yes,
3300 ac_cv_mvwdelch_is_expression=no,
3301 ac_cv_mvwdelch_is_expression=yes))
3302AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3303
3304if test "$ac_cv_mvwdelch_is_expression" = yes
3305then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003306 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3307 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003308fi
3309
3310AC_MSG_CHECKING(whether WINDOW has _flags)
3311AC_CACHE_VAL(ac_cv_window_has_flags,
3312AC_TRY_COMPILE([#include <curses.h>], [
3313 WINDOW *w;
3314 w->_flags = 0;
3315], ac_cv_window_has_flags=yes,
3316 ac_cv_window_has_flags=no,
3317 ac_cv_window_has_flags=no))
3318AC_MSG_RESULT($ac_cv_window_has_flags)
3319
3320
3321if test "$ac_cv_window_has_flags" = yes
3322then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003323 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3324 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003325fi
3326
Walter Dörwald4994d952006-06-19 08:07:50 +00003327AC_MSG_CHECKING(for is_term_resized)
3328AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3329 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3330 AC_MSG_RESULT(yes),
3331 AC_MSG_RESULT(no)
3332)
3333
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003334AC_MSG_CHECKING(for resize_term)
3335AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3336 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003337 AC_MSG_RESULT(yes),
3338 AC_MSG_RESULT(no)
3339)
3340
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003341AC_MSG_CHECKING(for resizeterm)
3342AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3343 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003344 AC_MSG_RESULT(yes),
3345 AC_MSG_RESULT(no)
3346)
3347
Martin v. Löwisca362b62006-10-17 18:59:06 +00003348AC_MSG_CHECKING(for /dev/ptmx)
3349
3350if test -r /dev/ptmx
3351then
3352 AC_MSG_RESULT(yes)
3353 AC_DEFINE(HAVE_DEV_PTMX, 1,
3354 [Define if we have /dev/ptmx.])
3355else
3356 AC_MSG_RESULT(no)
3357fi
3358
3359AC_MSG_CHECKING(for /dev/ptc)
3360
3361if test -r /dev/ptc
3362then
3363 AC_MSG_RESULT(yes)
3364 AC_DEFINE(HAVE_DEV_PTC, 1,
3365 [Define if we have /dev/ptc.])
3366else
3367 AC_MSG_RESULT(no)
3368fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003369
Brett Cannon09d12362006-05-11 05:11:33 +00003370AC_MSG_CHECKING(for %zd printf() format support)
3371AC_TRY_RUN([#include <stdio.h>
3372#include <stddef.h>
3373#include <string.h>
3374
3375int main()
3376{
Georg Brandl934c90d2006-09-25 06:58:00 +00003377 char buffer[256];
3378
3379#ifdef HAVE_SSIZE_T
3380typedef ssize_t Py_ssize_t;
3381#elif SIZEOF_VOID_P == SIZEOF_LONG
3382typedef long Py_ssize_t;
3383#else
3384typedef int Py_ssize_t;
3385#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003386
3387 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3388 return 1;
3389
Georg Brandl934c90d2006-09-25 06:58:00 +00003390 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003391 return 1;
Georg Brandl934c90d2006-09-25 06:58:00 +00003392
3393 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3394 return 1;
3395
3396 if (strcmp(buffer, "-123"))
3397 return 1;
3398
Brett Cannon09d12362006-05-11 05:11:33 +00003399 return 0;
3400}],
3401[AC_MSG_RESULT(yes)
3402 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3403 AC_MSG_RESULT(no))
3404
Martin v. Löwis01c04012002-11-11 14:58:44 +00003405AC_CHECK_TYPE(socklen_t,,
3406 AC_DEFINE(socklen_t,int,
3407 Define to `int' if <sys/socket.h> does not define.),[
3408#ifdef HAVE_SYS_TYPES_H
3409#include <sys/types.h>
3410#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003411#ifdef HAVE_SYS_SOCKET_H
3412#include <sys/socket.h>
3413#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003414])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003415
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003416AC_SUBST(THREADHEADERS)
3417
3418for h in `(cd $srcdir;echo Python/thread_*.h)`
3419do
3420 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3421done
3422
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003423AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003424SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003425AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003426for dir in $SRCDIRS; do
3427 if test ! -d $dir; then
3428 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003429 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003430done
3431AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003432
Guido van Rossum627b2d71993-12-24 10:39:16 +00003433# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003434AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3435AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003436
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003437echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003438if test ! -f Modules/Setup
3439then
3440 cp $srcdir/Modules/Setup.dist Modules/Setup
3441fi
3442
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003443echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003444if test ! -f Modules/Setup.local
3445then
3446 echo "# Edit this file for local setup changes" >Modules/Setup.local
3447fi
3448
3449echo "creating Makefile"
3450$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3451 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003452 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003453mv config.c Modules