blob: 9d446c6bf2a2e6bddd94ec98a546ee93d762f1d3 [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00004m4_define(PYTHON_VERSION, 2.5)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis4ddc78a2006-01-29 09:53:44 +00007AC_PREREQ(2.59)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
64 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
65[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
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öwisfd1c69e72004-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 Ward57c9a6632000-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 Ward57c9a6632000-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;
1547 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001548 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001549 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001550 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001551 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001552 else CCSHARED="+z";
1553 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001554 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001555 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001556 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001557 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001558 if test "$GCC" = "yes"
1559 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001560 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001561 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001562 SCO_SV*)
1563 if test "$GCC" = "yes"
1564 then CCSHARED="-fPIC"
1565 else CCSHARED="-Kpic -belf"
1566 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001567 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001568 IRIX*/6*) case $CC in
1569 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001570 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001571 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001572 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001573 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001574fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001575AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001576# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001577# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001578AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001579if test -z "$LINKFORSHARED"
1580then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001581 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001582 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001583 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001584 LINKFORSHARED="-Wl,-E -Wl,+s";;
1585# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001586 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001587 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001588 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001589 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001590 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1591 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001592 # not used by the core itself but which needs to be in the core so
1593 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001594 # -prebind is no longer used, because it actually seems to give a
1595 # slowdown in stead of a speedup, maybe due to the large number of
1596 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001597
1598 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001599 if test "$enable_framework"
1600 then
Jack Jansenda49e192005-01-07 13:08:22 +00001601 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001602 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001603 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001604 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001605 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001606 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001607 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001608 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1609 then
1610 LINKFORSHARED="-Wl,--export-dynamic"
1611 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001612 SunOS/5*) case $CC in
1613 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001614 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001615 then
1616 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001617 fi;;
1618 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001619 CYGWIN*)
1620 if test $enable_shared = "no"
1621 then
1622 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1623 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001624 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001625fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001626AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001627
Neil Schemenauer61c51152001-01-26 16:18:16 +00001628AC_SUBST(CFLAGSFORSHARED)
1629AC_MSG_CHECKING(CFLAGSFORSHARED)
1630if test ! "$LIBRARY" = "$LDLIBRARY"
1631then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001632 case $ac_sys_system in
1633 CYGWIN*)
1634 # Cygwin needs CCSHARED when building extension DLLs
1635 # but not when building the interpreter DLL.
1636 CFLAGSFORSHARED='';;
1637 *)
1638 CFLAGSFORSHARED='$(CCSHARED)'
1639 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001640fi
1641AC_MSG_RESULT($CFLAGSFORSHARED)
1642
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001643# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1644# library (with --enable-shared).
1645# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001646# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1647# if it is not required, since it creates a dependency of the shared library
1648# to LIBS. This, in turn, means that applications linking the shared libpython
1649# don't need to link LIBS explicitly. The default should be only changed
1650# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001651AC_SUBST(SHLIBS)
1652AC_MSG_CHECKING(SHLIBS)
1653case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001654 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001655 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001656esac
1657AC_MSG_RESULT($SHLIBS)
1658
1659
Guido van Rossum627b2d71993-12-24 10:39:16 +00001660# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001661AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1662AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001663
1664# only check for sem_ini if thread support is requested
1665if test "$with_threads" = "yes" -o -z "$with_threads"; then
1666 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1667 # posix4 on Solaris 2.6
1668 # pthread (first!) on Linux
1669fi
1670
Martin v. Löwis19d17342003-06-14 21:03:05 +00001671# check if we need libintl for locale functions
1672AC_CHECK_LIB(intl, textdomain,
1673 AC_DEFINE(WITH_LIBINTL, 1,
1674 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001675
1676# checks for system dependent C++ extensions support
1677case "$ac_sys_system" in
1678 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1679 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1680 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001681 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1682 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1683 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001684 AC_MSG_RESULT(yes)],
1685 [AC_MSG_RESULT(no)]);;
1686 *) ;;
1687esac
1688
Guido van Rossum70c7f481998-03-26 18:44:10 +00001689# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001690# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001691AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001692AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001693
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001694case "$ac_sys_system" in
1695BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001696AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1697;;
1698esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001699
Guido van Rossumc5a39031996-07-31 17:35:03 +00001700AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001701AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001702 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1703[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001704AC_MSG_RESULT($withval)
1705LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001706],
1707[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001708
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001709# Check for use of the system libffi library
1710AC_MSG_CHECKING(for --with-system-ffi)
1711AC_ARG_WITH(system_ffi,
1712 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1713
1714if test -z "$with_system_ffi"
1715then with_system_ffi="no"
1716fi
1717AC_MSG_RESULT($with_system_ffi)
1718
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001719# Determine if signalmodule should be used.
1720AC_SUBST(USE_SIGNAL_MODULE)
1721AC_SUBST(SIGNAL_OBJS)
1722AC_MSG_CHECKING(for --with-signal-module)
1723AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001724 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001725
1726if test -z "$with_signal_module"
1727then with_signal_module="yes"
1728fi
1729AC_MSG_RESULT($with_signal_module)
1730
1731if test "${with_signal_module}" = "yes"; then
1732 USE_SIGNAL_MODULE=""
1733 SIGNAL_OBJS=""
1734else
1735 USE_SIGNAL_MODULE="#"
1736 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1737fi
1738
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001739# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001740AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001741USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001742
Guido van Rossum54d93d41997-01-22 20:51:58 +00001743AC_MSG_CHECKING(for --with-dec-threads)
1744AC_SUBST(LDLAST)
1745AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001746 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1747[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001748AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001749LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001750if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001751 with_thread="$withval";
1752fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001753[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001754
Martin v. Löwis11437992002-04-12 09:54:03 +00001755# Templates for things AC_DEFINEd more than once.
1756# For a single AC_DEFINE, no template is needed.
1757AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1758AH_TEMPLATE(_REENTRANT,
1759 [Define to force use of thread-safe errno, h_errno, and other functions])
1760AH_TEMPLATE(WITH_THREAD,
1761 [Define if you want to compile in rudimentary thread support])
1762
Guido van Rossum54d93d41997-01-22 20:51:58 +00001763AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001764dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001765AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001766 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001767
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001768# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001769dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001770AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001771 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1772 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001773
1774if test -z "$with_threads"
1775then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001776fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001777AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001778
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001779AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001780if test "$with_threads" = "no"
1781then
1782 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001783elif test "$ac_cv_pthread_is_default" = yes
1784then
1785 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001786 # Defining _REENTRANT on system with POSIX threads should not hurt.
1787 AC_DEFINE(_REENTRANT)
1788 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001789 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001790elif test "$ac_cv_kpthread" = "yes"
1791then
1792 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001793 if test "$ac_cv_cxx_thread" = "yes"; then
1794 CXX="$CXX -Kpthread"
1795 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001796 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001797 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001798 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001799elif test "$ac_cv_kthread" = "yes"
1800then
1801 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001802 if test "$ac_cv_cxx_thread" = "yes"; then
1803 CXX="$CXX -Kthread"
1804 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001805 AC_DEFINE(WITH_THREAD)
1806 posix_threads=yes
1807 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001808elif test "$ac_cv_pthread" = "yes"
1809then
1810 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001811 if test "$ac_cv_cxx_thread" = "yes"; then
1812 CXX="$CXX -pthread"
1813 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001814 AC_DEFINE(WITH_THREAD)
1815 posix_threads=yes
1816 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001817else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001818 if test ! -z "$with_threads" -a -d "$with_threads"
1819 then LDFLAGS="$LDFLAGS -L$with_threads"
1820 fi
1821 if test ! -z "$withval" -a -d "$withval"
1822 then LDFLAGS="$LDFLAGS -L$withval"
1823 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001824
1825 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001826 # define _POSIX_THREADS in unistd.h. Some apparently don't
1827 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001828 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1829 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001830 [
1831#include <unistd.h>
1832#ifdef _POSIX_THREADS
1833yes
1834#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001835 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1836 AC_MSG_RESULT($unistd_defines_pthreads)
1837
Martin v. Löwis130fb172001-07-19 11:00:41 +00001838 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001839 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1840 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001841 AC_DEFINE(HURD_C_THREADS, 1,
1842 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001843 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001844 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001845 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1846 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001847 AC_DEFINE(MACH_C_THREADS, 1,
1848 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001849 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001850 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001851 AC_ARG_WITH([pth],
1852 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1853 [AC_MSG_RESULT($withval)
1854 AC_DEFINE([WITH_THREAD])
1855 AC_DEFINE([HAVE_PTH], 1,
1856 [Define if you have GNU PTH threads.])
1857 LIBS="-lpth $LIBS"
1858 THREADOBJ="Python/thread.o"],
1859 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001860
1861 # Just looking for pthread_create in libpthread is not enough:
1862 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1863 # So we really have to include pthread.h, and then link.
1864 _libs=$LIBS
1865 LIBS="$LIBS -lpthread"
1866 AC_MSG_CHECKING([for pthread_create in -lpthread])
1867 AC_TRY_LINK([#include <pthread.h>
1868
1869void * start_routine (void *arg) { exit (0); }], [
1870pthread_create (NULL, NULL, start_routine, NULL)], [
1871 AC_MSG_RESULT(yes)
1872 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001873 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001874 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001875 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001876 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001877 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001878 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001879 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1880 AC_DEFINE(ATHEOS_THREADS, 1,
1881 [Define this if you have AtheOS threads.])
1882 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001883 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001884 AC_DEFINE(BEOS_THREADS, 1,
1885 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001886 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001887 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001888 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001889 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001890 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001891 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001892 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001893 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001894 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001895 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001896 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001897 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001898 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001899 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001900 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001901 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001902 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001903 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001904 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001905
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001906 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1907 LIBS="$LIBS -lmpc"
1908 THREADOBJ="Python/thread.o"
1909 USE_THREAD_MODULE=""])
1910
1911 if test "$posix_threads" != "yes"; then
1912 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1913 LIBS="$LIBS -lthread"
1914 THREADOBJ="Python/thread.o"
1915 USE_THREAD_MODULE=""])
1916 fi
1917
1918 if test "$USE_THREAD_MODULE" != "#"
1919 then
1920 # If the above checks didn't disable threads, (at least) OSF1
1921 # needs this '-threads' argument during linking.
1922 case $ac_sys_system in
1923 OSF1) LDLAST=-threads;;
1924 esac
1925 fi
1926fi
1927
1928if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001929 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001930 AC_DEFINE(_POSIX_THREADS, 1,
1931 [Define if you have POSIX threads,
1932 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001933 fi
1934
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001935 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1936 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001937 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1938 Defined for Solaris 2.6 bug in pthread header.)
1939 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001940 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001941 Define if the Posix semaphores do not work on your system)
1942 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001943 esac
1944
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001945 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1946 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1947 [AC_TRY_RUN([#include <pthread.h>
1948 void *foo(void *parm) {
1949 return NULL;
1950 }
1951 main() {
1952 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001953 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001954 if (pthread_attr_init(&attr)) exit(-1);
1955 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001956 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001957 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001958 }],
1959 ac_cv_pthread_system_supported=yes,
1960 ac_cv_pthread_system_supported=no,
1961 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001962 ])
1963 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1964 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001965 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001966 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001967 AC_CHECK_FUNCS(pthread_sigmask,
1968 [case $ac_sys_system in
1969 CYGWIN*)
1970 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1971 [Define if pthread_sigmask() does not work on your system.])
1972 ;;
1973 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001974fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001975
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001976
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001977# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001978AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001979AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001980AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001981[ --enable-ipv6 Enable ipv6 (with ipv4) support
1982 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001983[ case "$enableval" in
1984 no)
1985 AC_MSG_RESULT(no)
1986 ipv6=no
1987 ;;
1988 *) AC_MSG_RESULT(yes)
1989 AC_DEFINE(ENABLE_IPV6)
1990 ipv6=yes
1991 ;;
1992 esac ],
1993
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001994[
1995dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001996 AC_TRY_RUN([ /* AF_INET6 available check */
1997#include <sys/types.h>
1998#include <sys/socket.h>
1999main()
2000{
2001 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2002 exit(1);
2003 else
2004 exit(0);
2005}
2006],
2007 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002008 ipv6=yes,
2009 AC_MSG_RESULT(no)
2010 ipv6=no,
2011 AC_MSG_RESULT(no)
2012 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002013)
2014
2015if test "$ipv6" = "yes"; then
2016 AC_MSG_CHECKING(if RFC2553 API is available)
2017 AC_TRY_COMPILE([#include <sys/types.h>
2018#include <netinet/in.h>],
2019 [struct sockaddr_in6 x;
2020x.sin6_scope_id;],
2021 AC_MSG_RESULT(yes)
2022 ipv6=yes,
2023 AC_MSG_RESULT(no, IPv6 disabled)
2024 ipv6=no)
2025fi
2026
2027if test "$ipv6" = "yes"; then
2028 AC_DEFINE(ENABLE_IPV6)
2029fi
2030])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002031
2032ipv6type=unknown
2033ipv6lib=none
2034ipv6trylibc=no
2035
2036if test "$ipv6" = "yes"; then
2037 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002038 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2039 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002040 case $i in
2041 inria)
2042 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002043 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002044#include <netinet/in.h>
2045#ifdef IPV6_INRIA_VERSION
2046yes
2047#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002048 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002049 ;;
2050 kame)
2051 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002052 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002053#include <netinet/in.h>
2054#ifdef __KAME__
2055yes
2056#endif],
2057 [ipv6type=$i;
2058 ipv6lib=inet6
2059 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002060 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002061 ;;
2062 linux-glibc)
2063 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002064 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002065#include <features.h>
2066#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2067yes
2068#endif],
2069 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002070 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002071 ;;
2072 linux-inet6)
2073 dnl http://www.v6.linux.or.jp/
2074 if test -d /usr/inet6; then
2075 ipv6type=$i
2076 ipv6lib=inet6
2077 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002078 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002079 fi
2080 ;;
2081 solaris)
2082 if test -f /etc/netconfig; then
2083 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2084 ipv6type=$i
2085 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002086 fi
2087 fi
2088 ;;
2089 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002090 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002091#include <sys/param.h>
2092#ifdef _TOSHIBA_INET6
2093yes
2094#endif],
2095 [ipv6type=$i;
2096 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002097 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002098 ;;
2099 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002100 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002101#include </usr/local/v6/include/sys/v6config.h>
2102#ifdef __V6D__
2103yes
2104#endif],
2105 [ipv6type=$i;
2106 ipv6lib=v6;
2107 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002108 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002109 ;;
2110 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002111 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002112#include <sys/param.h>
2113#ifdef _ZETA_MINAMI_INET6
2114yes
2115#endif],
2116 [ipv6type=$i;
2117 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002118 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002119 ;;
2120 esac
2121 if test "$ipv6type" != "unknown"; then
2122 break
2123 fi
2124 done
2125 AC_MSG_RESULT($ipv6type)
2126fi
2127
2128if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2129 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2130 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2131 echo "using lib$ipv6lib"
2132 else
2133 if test $ipv6trylibc = "yes"; then
2134 echo "using libc"
2135 else
2136 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2137 echo "You need to fetch lib$ipv6lib.a from appropriate"
2138 echo 'ipv6 kit and compile beforehand.'
2139 exit 1
2140 fi
2141 fi
2142fi
2143
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002144# Check for --with-doc-strings
2145AC_MSG_CHECKING(for --with-doc-strings)
2146AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002147 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002148
2149if test -z "$with_doc_strings"
2150then with_doc_strings="yes"
2151fi
2152if test "$with_doc_strings" != "no"
2153then
2154 AC_DEFINE(WITH_DOC_STRINGS, 1,
2155 [Define if you want documentation strings in extension modules])
2156fi
2157AC_MSG_RESULT($with_doc_strings)
2158
Neil Schemenauera35c6882001-02-27 04:45:05 +00002159# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002160AC_MSG_CHECKING(for --with-tsc)
2161AC_ARG_WITH(tsc,
2162[ --with(out)-tsc enable/disable timestamp counter profile], [
2163if test "$withval" != no
2164then
2165 AC_DEFINE(WITH_TSC, 1,
2166 [Define to profile with the Pentium timestamp counter])
2167 AC_MSG_RESULT(yes)
2168else AC_MSG_RESULT(no)
2169fi],
2170[AC_MSG_RESULT(no)])
2171
2172# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002173AC_MSG_CHECKING(for --with-pymalloc)
2174AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002175 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002176
2177if test -z "$with_pymalloc"
2178then with_pymalloc="yes"
2179fi
2180if test "$with_pymalloc" != "no"
2181then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002182 AC_DEFINE(WITH_PYMALLOC, 1,
2183 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002184fi
2185AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002186
Barry Warsawef82cd72000-06-30 16:21:01 +00002187# Check for --with-wctype-functions
2188AC_MSG_CHECKING(for --with-wctype-functions)
2189AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002190 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2191[
Barry Warsawef82cd72000-06-30 16:21:01 +00002192if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002193then
2194 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2195 [Define if you want wctype.h functions to be used instead of the
2196 one supplied by Python itself. (see Include/unicodectype.h).])
2197 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002198else AC_MSG_RESULT(no)
2199fi],
2200[AC_MSG_RESULT(no)])
2201
Guido van Rossum68242b51996-05-28 22:53:03 +00002202# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002203AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002204DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002205
Guido van Rossume97ee181999-12-20 21:27:22 +00002206# the dlopen() function means we might want to use dynload_shlib.o. some
2207# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002208AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002209
2210# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2211# loading of modules.
2212AC_SUBST(DYNLOADFILE)
2213AC_MSG_CHECKING(DYNLOADFILE)
2214if test -z "$DYNLOADFILE"
2215then
2216 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002217 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2218 if test "$ac_cv_func_dlopen" = yes
2219 then DYNLOADFILE="dynload_shlib.o"
2220 else DYNLOADFILE="dynload_aix.o"
2221 fi
2222 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002223 BeOS*) DYNLOADFILE="dynload_beos.o";;
2224 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002225 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2226 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002227 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002228 *)
2229 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2230 # out any dynamic loading
2231 if test "$ac_cv_func_dlopen" = yes
2232 then DYNLOADFILE="dynload_shlib.o"
2233 else DYNLOADFILE="dynload_stub.o"
2234 fi
2235 ;;
2236 esac
2237fi
2238AC_MSG_RESULT($DYNLOADFILE)
2239if test "$DYNLOADFILE" != "dynload_stub.o"
2240then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002241 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2242 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002243fi
2244
Jack Jansenc49e5b72001-06-19 15:00:23 +00002245# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2246
2247AC_SUBST(MACHDEP_OBJS)
2248AC_MSG_CHECKING(MACHDEP_OBJS)
2249if test -z "$MACHDEP_OBJS"
2250then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002251 MACHDEP_OBJS=$extra_machdep_objs
2252else
2253 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002254fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002255AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002256
Guido van Rossum627b2d71993-12-24 10:39:16 +00002257# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002258AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2259 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002260 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002261 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002262 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002263 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002264 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002265 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002266 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002267 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002268 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002269 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002270
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002271# For some functions, having a definition is not sufficient, since
2272# we want to take their address.
2273AC_MSG_CHECKING(for chroot)
2274AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2275 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2276 AC_MSG_RESULT(yes),
2277 AC_MSG_RESULT(no)
2278)
2279AC_MSG_CHECKING(for link)
2280AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2281 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2282 AC_MSG_RESULT(yes),
2283 AC_MSG_RESULT(no)
2284)
2285AC_MSG_CHECKING(for symlink)
2286AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2287 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2288 AC_MSG_RESULT(yes),
2289 AC_MSG_RESULT(no)
2290)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002291AC_MSG_CHECKING(for fchdir)
2292AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2293 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2294 AC_MSG_RESULT(yes),
2295 AC_MSG_RESULT(no)
2296)
2297AC_MSG_CHECKING(for fsync)
2298AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002299 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002300 AC_MSG_RESULT(yes),
2301 AC_MSG_RESULT(no)
2302)
2303AC_MSG_CHECKING(for fdatasync)
2304AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2305 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2306 AC_MSG_RESULT(yes),
2307 AC_MSG_RESULT(no)
2308)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002309
Martin v. Löwisd5843682002-11-21 20:41:28 +00002310# On some systems (eg. FreeBSD 5), we would find a definition of the
2311# functions ctermid_r, setgroups in the library, but no prototype
2312# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2313# address to avoid compiler warnings and potential miscompilations
2314# because of the missing prototypes.
2315
2316AC_MSG_CHECKING(for ctermid_r)
2317AC_TRY_COMPILE([
2318#include "confdefs.h"
2319#include <stdio.h>
2320], void* p = ctermid_r,
2321 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2322 AC_MSG_RESULT(yes),
2323 AC_MSG_RESULT(no)
2324)
2325
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002326AC_MSG_CHECKING(for flock)
2327AC_TRY_COMPILE([
2328#include "confdefs.h"
2329#include <sys/file.h>
2330], void* p = flock,
2331 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2332 AC_MSG_RESULT(yes),
2333 AC_MSG_RESULT(no)
2334)
2335
2336AC_MSG_CHECKING(for getpagesize)
2337AC_TRY_COMPILE([
2338#include "confdefs.h"
2339#include <unistd.h>
2340], void* p = getpagesize,
2341 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2342 AC_MSG_RESULT(yes),
2343 AC_MSG_RESULT(no)
2344)
2345
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002346dnl check for true
2347AC_CHECK_PROGS(TRUE, true, /bin/true)
2348
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002349dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2350dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002351AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002352 AC_CHECK_LIB(resolv, inet_aton)
2353)
2354
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002355dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002356dnl
2357dnl On MacOSX the linker will search for dylibs on the entire linker path
2358dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2359dnl to revert to a more traditional unix behaviour and make it possible to
2360dnl override the system libz with a local static library of libz. Temporarily
2361dnl add that flag to our CFLAGS as well to ensure that we check the version
2362dnl of libz that will be used by setup.py.
2363dnl The -L/usr/local/lib is needed as wel to get the same compilation
2364dnl environment as setup.py (and leaving it out can cause configure to use the
2365dnl wrong version of the library)
2366case $ac_sys_system/$ac_sys_release in
2367Darwin/*)
2368 _CUR_CFLAGS="${CFLAGS}"
2369 _CUR_LDFLAGS="${LDFLAGS}"
2370 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2371 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2372 ;;
2373esac
2374
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002375AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2376
Ronald Oussorenf8752642006-07-06 10:13:35 +00002377case $ac_sys_system/$ac_sys_release in
2378Darwin/*)
2379 CFLAGS="${_CUR_CFLAGS}"
2380 LDFLAGS="${_CUR_LDFLAGS}"
2381 ;;
2382esac
2383
Martin v. Löwise9416172003-05-03 10:12:45 +00002384AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002385AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002386#include "confdefs.h"
2387#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002388], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002389 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2390 AC_MSG_RESULT(yes),
2391 AC_MSG_RESULT(no)
2392)
2393
2394AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002395AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002396#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002397#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002398#include <sys/socket.h>
2399#include <netinet/in.h>
2400#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002401], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002402 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2403 AC_MSG_RESULT(yes),
2404 AC_MSG_RESULT(no)
2405)
2406
2407AC_MSG_CHECKING(for inet_pton)
2408AC_TRY_COMPILE([
2409#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002410#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002411#include <sys/socket.h>
2412#include <netinet/in.h>
2413#include <arpa/inet.h>
2414], void* p = inet_pton,
2415 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2416 AC_MSG_RESULT(yes),
2417 AC_MSG_RESULT(no)
2418)
2419
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002420# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002421AC_MSG_CHECKING(for setgroups)
2422AC_TRY_COMPILE([
2423#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002424#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002425#ifdef HAVE_GRP_H
2426#include <grp.h>
2427#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002428],
2429void* p = setgroups,
2430 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2431 AC_MSG_RESULT(yes),
2432 AC_MSG_RESULT(no)
2433)
2434
Fred Drake8cef4cf2000-06-28 16:40:38 +00002435# check for openpty and forkpty
2436
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002437AC_CHECK_FUNCS(openpty,,
2438 AC_CHECK_LIB(util,openpty,
2439 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2440 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2441 )
2442)
2443AC_CHECK_FUNCS(forkpty,,
2444 AC_CHECK_LIB(util,forkpty,
2445 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2446 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2447 )
2448)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002449
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002450# check for long file support functions
2451AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2452
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002453AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002454AC_CHECK_FUNCS(getpgrp,
2455 AC_TRY_COMPILE([#include <unistd.h>],
2456 [getpgrp(0);],
2457 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2458 [Define if getpgrp() must be called as getpgrp(0).])
2459 )
2460)
Jack Jansen150753c2003-03-29 22:07:47 +00002461AC_CHECK_FUNCS(setpgrp,
2462 AC_TRY_COMPILE([#include <unistd.h>],
2463 [setpgrp(0,0);],
2464 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2465 [Define if setpgrp() must be called as setpgrp(0, 0).])
2466 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002467)
2468AC_CHECK_FUNCS(gettimeofday,
2469 AC_TRY_COMPILE([#include <sys/time.h>],
2470 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2471 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2472 [Define if gettimeofday() does not have second (timezone) argument
2473 This is the case on Motorola V4 (R40V4.2)])
2474 )
2475)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002476
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002477AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002478AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002479#if defined(MAJOR_IN_MKDEV)
2480#include <sys/mkdev.h>
2481#elif defined(MAJOR_IN_SYSMACROS)
2482#include <sys/sysmacros.h>
2483#else
2484#include <sys/types.h>
2485#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002486],[
2487 makedev(major(0),minor(0));
2488],[
2489 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2490 [Define to 1 if you have the device macros.])
2491 AC_MSG_RESULT(yes)
2492],[
2493 AC_MSG_RESULT(no)
2494])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002495
2496# On OSF/1 V5.1, getaddrinfo is available, but a define
2497# for [no]getaddrinfo in netdb.h.
2498AC_MSG_CHECKING(for getaddrinfo)
2499AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002500#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002501#include <sys/socket.h>
2502#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002503#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002504],[
2505getaddrinfo(NULL, NULL, NULL, NULL);
2506], [
2507AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002508AC_MSG_CHECKING(getaddrinfo bug)
2509AC_TRY_RUN([
2510#include <sys/types.h>
2511#include <netdb.h>
2512#include <string.h>
2513#include <sys/socket.h>
2514#include <netinet/in.h>
2515
2516main()
2517{
2518 int passive, gaierr, inet4 = 0, inet6 = 0;
2519 struct addrinfo hints, *ai, *aitop;
2520 char straddr[INET6_ADDRSTRLEN], strport[16];
2521
2522 for (passive = 0; passive <= 1; passive++) {
2523 memset(&hints, 0, sizeof(hints));
2524 hints.ai_family = AF_UNSPEC;
2525 hints.ai_flags = passive ? AI_PASSIVE : 0;
2526 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002527 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002528 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2529 (void)gai_strerror(gaierr);
2530 goto bad;
2531 }
2532 for (ai = aitop; ai; ai = ai->ai_next) {
2533 if (ai->ai_addr == NULL ||
2534 ai->ai_addrlen == 0 ||
2535 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2536 straddr, sizeof(straddr), strport, sizeof(strport),
2537 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2538 goto bad;
2539 }
2540 switch (ai->ai_family) {
2541 case AF_INET:
2542 if (strcmp(strport, "54321") != 0) {
2543 goto bad;
2544 }
2545 if (passive) {
2546 if (strcmp(straddr, "0.0.0.0") != 0) {
2547 goto bad;
2548 }
2549 } else {
2550 if (strcmp(straddr, "127.0.0.1") != 0) {
2551 goto bad;
2552 }
2553 }
2554 inet4++;
2555 break;
2556 case AF_INET6:
2557 if (strcmp(strport, "54321") != 0) {
2558 goto bad;
2559 }
2560 if (passive) {
2561 if (strcmp(straddr, "::") != 0) {
2562 goto bad;
2563 }
2564 } else {
2565 if (strcmp(straddr, "::1") != 0) {
2566 goto bad;
2567 }
2568 }
2569 inet6++;
2570 break;
2571 case AF_UNSPEC:
2572 goto bad;
2573 break;
2574 default:
2575 /* another family support? */
2576 break;
2577 }
2578 }
2579 }
2580
2581 if (!(inet4 == 0 || inet4 == 2))
2582 goto bad;
2583 if (!(inet6 == 0 || inet6 == 2))
2584 goto bad;
2585
2586 if (aitop)
2587 freeaddrinfo(aitop);
2588 exit(0);
2589
2590 bad:
2591 if (aitop)
2592 freeaddrinfo(aitop);
2593 exit(1);
2594}
2595],
2596AC_MSG_RESULT(good)
2597buggygetaddrinfo=no,
2598AC_MSG_RESULT(buggy)
2599buggygetaddrinfo=yes,
2600AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002601buggygetaddrinfo=yes)], [
2602AC_MSG_RESULT(no)
2603buggygetaddrinfo=yes
2604])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002605
2606if test "$buggygetaddrinfo" = "yes"; then
2607 if test "$ipv6" = "yes"; then
2608 echo 'Fatal: You must get working getaddrinfo() function.'
2609 echo ' or you can specify "--disable-ipv6"'.
2610 exit 1
2611 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002612else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002613 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002614fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002615AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002616
Guido van Rossum627b2d71993-12-24 10:39:16 +00002617# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002618AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002619AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002620AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002621AC_CHECK_MEMBERS([struct stat.st_rdev])
2622AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002623AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002624AC_CHECK_MEMBERS([struct stat.st_gen])
2625AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002626AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002627
2628AC_MSG_CHECKING(for time.h that defines altzone)
2629AC_CACHE_VAL(ac_cv_header_time_altzone,
2630[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2631 ac_cv_header_time_altzone=yes,
2632 ac_cv_header_time_altzone=no)])
2633AC_MSG_RESULT($ac_cv_header_time_altzone)
2634if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002635 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002636fi
2637
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002638was_it_defined=no
2639AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002640AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002641#include <sys/types.h>
2642#include <sys/select.h>
2643#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002644], [;], [
2645 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2646 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2647 (which you can't on SCO ODT 3.0).])
2648 was_it_defined=yes
2649])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002650AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002651
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002652AC_MSG_CHECKING(for addrinfo)
2653AC_CACHE_VAL(ac_cv_struct_addrinfo,
2654AC_TRY_COMPILE([
2655# include <netdb.h>],
2656 [struct addrinfo a],
2657 ac_cv_struct_addrinfo=yes,
2658 ac_cv_struct_addrinfo=no))
2659AC_MSG_RESULT($ac_cv_struct_addrinfo)
2660if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002661 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002662fi
2663
2664AC_MSG_CHECKING(for sockaddr_storage)
2665AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2666AC_TRY_COMPILE([
2667# include <sys/types.h>
2668# include <sys/socket.h>],
2669 [struct sockaddr_storage s],
2670 ac_cv_struct_sockaddr_storage=yes,
2671 ac_cv_struct_sockaddr_storage=no))
2672AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2673if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002674 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002675fi
2676
Guido van Rossum627b2d71993-12-24 10:39:16 +00002677# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002678
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002679AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002680AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002681
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002682works=no
2683AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002684AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2685 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2686)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002687AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002688
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002689works=no
2690AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002691AC_TRY_COMPILE([], [signed char c;], works=yes,
2692 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2693)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002694AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002695
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002696have_prototypes=no
2697AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002698AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2699 AC_DEFINE(HAVE_PROTOTYPES, 1,
2700 [Define if your compiler supports function prototype])
2701 have_prototypes=yes
2702])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002703AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002704
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002705works=no
2706AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002707AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002708#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002709int foo(int x, ...) {
2710 va_list va;
2711 va_start(va, x);
2712 va_arg(va, int);
2713 va_arg(va, char *);
2714 va_arg(va, double);
2715 return 0;
2716}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002717], [return foo(10, "", 3.14);], [
2718 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2719 [Define if your compiler supports variable length function prototypes
2720 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2721 works=yes
2722])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002723AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002724
Dave Cole331708b2004-08-09 04:51:41 +00002725# check for socketpair
2726AC_MSG_CHECKING(for socketpair)
2727AC_TRY_COMPILE([
2728#include <sys/types.h>
2729#include <sys/socket.h>
2730], void *x=socketpair,
2731 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2732 AC_MSG_RESULT(yes),
2733 AC_MSG_RESULT(no)
2734)
2735
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002736# check if sockaddr has sa_len member
2737AC_MSG_CHECKING(if sockaddr has sa_len member)
2738AC_TRY_COMPILE([#include <sys/types.h>
2739#include <sys/socket.h>],
2740[struct sockaddr x;
2741x.sa_len = 0;],
2742 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002743 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002744 AC_MSG_RESULT(no))
2745
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002746va_list_is_array=no
2747AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002748AC_TRY_COMPILE([
2749#ifdef HAVE_STDARG_PROTOTYPES
2750#include <stdarg.h>
2751#else
2752#include <varargs.h>
2753#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002754], [va_list list1, list2; list1 = list2;], , [
2755 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2756 va_list_is_array=yes
2757])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002758AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002759
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002760# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002761AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2762 [Define this if you have some version of gethostbyname_r()])
2763
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002764AC_CHECK_FUNC(gethostbyname_r, [
2765 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2766 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2767 OLD_CFLAGS=$CFLAGS
2768 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2769 AC_TRY_COMPILE([
2770# include <netdb.h>
2771 ], [
2772 char *name;
2773 struct hostent *he, *res;
2774 char buffer[2048];
2775 int buflen = 2048;
2776 int h_errnop;
2777
2778 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2779 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002780 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002781 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2782 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002783 AC_MSG_RESULT(yes)
2784 ], [
2785 AC_MSG_RESULT(no)
2786 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2787 AC_TRY_COMPILE([
2788# include <netdb.h>
2789 ], [
2790 char *name;
2791 struct hostent *he;
2792 char buffer[2048];
2793 int buflen = 2048;
2794 int h_errnop;
2795
2796 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2797 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002798 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002799 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2800 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002801 AC_MSG_RESULT(yes)
2802 ], [
2803 AC_MSG_RESULT(no)
2804 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2805 AC_TRY_COMPILE([
2806# include <netdb.h>
2807 ], [
2808 char *name;
2809 struct hostent *he;
2810 struct hostent_data data;
2811
2812 (void) gethostbyname_r(name, he, &data);
2813 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002814 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002815 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2816 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002817 AC_MSG_RESULT(yes)
2818 ], [
2819 AC_MSG_RESULT(no)
2820 ])
2821 ])
2822 ])
2823 CFLAGS=$OLD_CFLAGS
2824], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002825 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002826])
2827AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2828AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2829AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002830AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002831AC_SUBST(HAVE_GETHOSTBYNAME)
2832
Guido van Rossum627b2d71993-12-24 10:39:16 +00002833# checks for system services
2834# (none yet)
2835
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002836# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002837AC_CHECK_FUNC(__fpu_control,
2838 [],
2839 [AC_CHECK_LIB(ieee, __fpu_control)
2840])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002841
Guido van Rossum93274221997-05-09 02:42:00 +00002842# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002843AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002844AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002845 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2846[
Guido van Rossum93274221997-05-09 02:42:00 +00002847if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002848then
2849 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2850 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2851 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002852else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002853fi],
2854[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002855
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002856# check for --with-libm=...
2857AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002858case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002859Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002860BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002861*) LIBM=-lm
2862esac
Guido van Rossum93274221997-05-09 02:42:00 +00002863AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002864AC_ARG_WITH(libm,
2865 AC_HELP_STRING(--with-libm=STRING, math library),
2866[
Guido van Rossum93274221997-05-09 02:42:00 +00002867if test "$withval" = no
2868then LIBM=
2869 AC_MSG_RESULT(force LIBM empty)
2870elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002871then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002872 AC_MSG_RESULT(set LIBM="$withval")
2873else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002874fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002875[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002876
2877# check for --with-libc=...
2878AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002879AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002880AC_ARG_WITH(libc,
2881 AC_HELP_STRING(--with-libc=STRING, C library),
2882[
Guido van Rossum93274221997-05-09 02:42:00 +00002883if test "$withval" = no
2884then LIBC=
2885 AC_MSG_RESULT(force LIBC empty)
2886elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002887then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002888 AC_MSG_RESULT(set LIBC="$withval")
2889else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002890fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002891[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002892
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002893# check for hypot() in math library
2894LIBS_SAVE=$LIBS
2895LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002896AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002897LIBS=$LIBS_SAVE
2898
Guido van Rossumef2255b2000-03-10 22:30:29 +00002899# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002900AC_CHECK_HEADER(wchar.h, [
2901 AC_DEFINE(HAVE_WCHAR_H, 1,
2902 [Define if the compiler provides a wchar.h header file.])
2903 wchar_h="yes"
2904],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002905wchar_h="no"
2906)
2907
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002908# determine wchar_t size
2909if test "$wchar_h" = yes
2910then
Guido van Rossum67b26592001-10-20 14:21:45 +00002911 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002912fi
2913
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002914AC_MSG_CHECKING(for UCS-4 tcl)
2915have_ucs4_tcl=no
2916AC_TRY_COMPILE([
2917#include <tcl.h>
2918#if TCL_UTF_MAX != 6
2919# error "NOT UCS4_TCL"
2920#endif], [], [
2921 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2922 have_ucs4_tcl=yes
2923])
2924AC_MSG_RESULT($have_ucs4_tcl)
2925
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002926# check whether wchar_t is signed or not
2927if test "$wchar_h" = yes
2928then
2929 # check whether wchar_t is signed or not
2930 AC_MSG_CHECKING(whether wchar_t is signed)
2931 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2932 AC_TRY_RUN([
2933 #include <wchar.h>
2934 int main()
2935 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002936 /* Success: exit code 0 */
2937 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002938 }
2939 ],
2940 ac_cv_wchar_t_signed=yes,
2941 ac_cv_wchar_t_signed=no,
2942 ac_cv_wchar_t_signed=yes)])
2943 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2944fi
2945
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002946AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002947dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002948AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002949 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2950 [],
2951 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002952
2953if test $enable_unicode = yes
2954then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002955 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002956 case "$have_ucs4_tcl" in
2957 yes) enable_unicode="ucs4"
2958 ;;
2959 *) enable_unicode="ucs2"
2960 ;;
2961 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002962fi
2963
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002964AH_TEMPLATE(Py_UNICODE_SIZE,
2965 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002966case "$enable_unicode" in
2967ucs2) unicode_size="2"
2968 AC_DEFINE(Py_UNICODE_SIZE,2)
2969 ;;
2970ucs4) unicode_size="4"
2971 AC_DEFINE(Py_UNICODE_SIZE,4)
2972 ;;
2973esac
2974
Martin v. Löwis11437992002-04-12 09:54:03 +00002975AH_TEMPLATE(PY_UNICODE_TYPE,
2976 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002977
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002978AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002979if test "$enable_unicode" = "no"
2980then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002981 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002982 AC_MSG_RESULT(not used)
2983else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002984 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002985 AC_DEFINE(Py_USING_UNICODE, 1,
2986 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002987
2988 # wchar_t is only usable if it maps to an unsigned type
2989 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002990 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002991 then
2992 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002993 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2994 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002995 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002996 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002997 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2998 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2999 then
3000 PY_UNICODE_TYPE="unsigned short"
3001 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3002 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3003 then
3004 PY_UNICODE_TYPE="unsigned long"
3005 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3006 else
3007 PY_UNICODE_TYPE="no type found"
3008 fi
3009 AC_MSG_RESULT($PY_UNICODE_TYPE)
3010fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003011
3012# check for endianness
3013AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003014AH_VERBATIM([WORDS_BIGENDIAN],
3015[
3016 /* Define to 1 if your processor stores words with the most significant byte
3017 first (like Motorola and SPARC, unlike Intel and VAX).
3018
3019 The block below does compile-time checking for endianness on platforms
3020 that use GCC and therefore allows compiling fat binaries on OSX by using
3021 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3022 such that the configure-result is used on systems that don't use GCC.
3023 */
3024#ifdef __BIG_ENDIAN__
3025#define WORDS_BIGENDIAN 1
3026#else
3027#ifndef __LITTLE_ENDIAN__
3028#undef WORDS_BIGENDIAN
3029#endif
3030#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003031
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003032# Check whether right shifting a negative integer extends the sign bit
3033# or fills with zeros (like the Cray J90, according to Tim Peters).
3034AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003035AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003036AC_TRY_RUN([
3037int main()
3038{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003039 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003040}
Guido van Rossum3065c942001-09-17 04:03:14 +00003041],
3042ac_cv_rshift_extends_sign=yes,
3043ac_cv_rshift_extends_sign=no,
3044ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003045AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3046if test "$ac_cv_rshift_extends_sign" = no
3047then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3049 [Define if i>>j for signed int i does not extend the sign bit
3050 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003051fi
3052
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003053# check for getc_unlocked and related locking functions
3054AC_MSG_CHECKING(for getc_unlocked() and friends)
3055AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3056AC_TRY_LINK([#include <stdio.h>],[
3057 FILE *f = fopen("/dev/null", "r");
3058 flockfile(f);
3059 getc_unlocked(f);
3060 funlockfile(f);
3061], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3062AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3063if test "$ac_cv_have_getc_unlocked" = yes
3064then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003065 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3066 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003067fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003068
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003069# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003070# save the value of LIBS so we don't actually link Python with readline
3071LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003072AC_CHECK_LIB(readline, readline)
3073if test "$ac_cv_have_readline_readline" = no
3074then
3075 AC_CHECK_LIB(termcap, readline)
3076fi
3077
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003078# check for readline 2.1
3079AC_CHECK_LIB(readline, rl_callback_handler_install,
3080 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003081 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003082
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003083# check for readline 2.2
3084AC_TRY_CPP([#include <readline/readline.h>],
3085have_readline=yes, have_readline=no)
3086if test $have_readline = yes
3087then
3088 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3089 [readline/readline.h],
3090 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3091 [Define if you have readline 2.2]), )
3092fi
3093
Martin v. Löwis0daad592001-09-30 21:09:59 +00003094# check for readline 4.0
3095AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003096 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003097 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003098
Guido van Rossum353ae582001-07-10 16:45:32 +00003099# check for readline 4.2
3100AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003101 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003102 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003103
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003104# also in readline 4.2
3105AC_TRY_CPP([#include <readline/readline.h>],
3106have_readline=yes, have_readline=no)
3107if test $have_readline = yes
3108then
3109 AC_EGREP_HEADER([extern int rl_catch_signals;],
3110 [readline/readline.h],
3111 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3112 [Define if you can turn off readline's signal handling.]), )
3113fi
3114
Martin v. Löwis82bca632006-02-10 20:49:30 +00003115# End of readline checks: restore LIBS
3116LIBS=$LIBS_no_readline
3117
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003118AC_MSG_CHECKING(for broken nice())
3119AC_CACHE_VAL(ac_cv_broken_nice, [
3120AC_TRY_RUN([
3121int main()
3122{
3123 int val1 = nice(1);
3124 if (val1 != -1 && val1 == nice(2))
3125 exit(0);
3126 exit(1);
3127}
Guido van Rossum3065c942001-09-17 04:03:14 +00003128],
3129ac_cv_broken_nice=yes,
3130ac_cv_broken_nice=no,
3131ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003132AC_MSG_RESULT($ac_cv_broken_nice)
3133if test "$ac_cv_broken_nice" = yes
3134then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003135 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3136 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003137fi
3138
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003139AC_MSG_CHECKING(for broken poll())
3140AC_TRY_RUN([
3141#include <poll.h>
3142
3143int main (void)
3144 {
3145 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3146
3147 close (42);
3148
3149 int poll_test = poll (&poll_struct, 1, 0);
3150
3151 if (poll_test < 0)
3152 {
3153 exit(0);
3154 }
3155 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3156 {
3157 exit(0);
3158 }
3159 else
3160 {
3161 exit(1);
3162 }
3163 }
3164],
3165ac_cv_broken_poll=yes,
3166ac_cv_broken_poll=no,
3167ac_cv_broken_poll=no)
3168AC_MSG_RESULT($ac_cv_broken_poll)
3169if test "$ac_cv_broken_poll" = yes
3170then
3171 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3172 [Define if poll() sets errno on invalid file descriptors.])
3173fi
3174
Brett Cannon43802422005-02-10 20:48:03 +00003175# Before we can test tzset, we need to check if struct tm has a tm_zone
3176# (which is not required by ISO C or UNIX spec) and/or if we support
3177# tzname[]
3178AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003179
Brett Cannon43802422005-02-10 20:48:03 +00003180# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003181AC_MSG_CHECKING(for working tzset())
3182AC_CACHE_VAL(ac_cv_working_tzset, [
3183AC_TRY_RUN([
3184#include <stdlib.h>
3185#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003186#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003187
3188#if HAVE_TZNAME
3189extern char *tzname[];
3190#endif
3191
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003192int main()
3193{
Brett Cannon18367812003-09-19 00:59:16 +00003194 /* Note that we need to ensure that not only does tzset(3)
3195 do 'something' with localtime, but it works as documented
3196 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003197 This includes making sure that tzname is set properly if
3198 tm->tm_zone does not exist since it is the alternative way
3199 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003200
3201 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003202 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003203 */
3204
Brett Cannon43802422005-02-10 20:48:03 +00003205 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003206 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3207
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003208 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003209 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003210 if (localtime(&groundhogday)->tm_hour != 0)
3211 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003212#if HAVE_TZNAME
3213 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3214 if (strcmp(tzname[0], "UTC") ||
3215 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3216 exit(1);
3217#endif
Brett Cannon18367812003-09-19 00:59:16 +00003218
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003219 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003220 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003221 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003222 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003223#if HAVE_TZNAME
3224 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3225 exit(1);
3226#endif
Brett Cannon18367812003-09-19 00:59:16 +00003227
3228 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3229 tzset();
3230 if (localtime(&groundhogday)->tm_hour != 11)
3231 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003232#if HAVE_TZNAME
3233 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3234 exit(1);
3235#endif
3236
3237#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003238 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3239 exit(1);
3240 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3241 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003242#endif
Brett Cannon18367812003-09-19 00:59:16 +00003243
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003244 exit(0);
3245}
3246],
3247ac_cv_working_tzset=yes,
3248ac_cv_working_tzset=no,
3249ac_cv_working_tzset=no)])
3250AC_MSG_RESULT($ac_cv_working_tzset)
3251if test "$ac_cv_working_tzset" = yes
3252then
3253 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3254 [Define if tzset() actually switches the local timezone in a meaningful way.])
3255fi
3256
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003257# Look for subsecond timestamps in struct stat
3258AC_MSG_CHECKING(for tv_nsec in struct stat)
3259AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3260AC_TRY_COMPILE([#include <sys/stat.h>], [
3261struct stat st;
3262st.st_mtim.tv_nsec = 1;
3263],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003264ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003265ac_cv_stat_tv_nsec=no,
3266ac_cv_stat_tv_nsec=no))
3267AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3268if test "$ac_cv_stat_tv_nsec" = yes
3269then
3270 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3271 [Define if you have struct stat.st_mtim.tv_nsec])
3272fi
3273
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003274# Look for BSD style subsecond timestamps in struct stat
3275AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3276AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3277AC_TRY_COMPILE([#include <sys/stat.h>], [
3278struct stat st;
3279st.st_mtimespec.tv_nsec = 1;
3280],
3281ac_cv_stat_tv_nsec2=yes,
3282ac_cv_stat_tv_nsec2=no,
3283ac_cv_stat_tv_nsec2=no))
3284AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3285if test "$ac_cv_stat_tv_nsec2" = yes
3286then
3287 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3288 [Define if you have struct stat.st_mtimensec])
3289fi
3290
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003291# On HP/UX 11.0, mvwdelch is a block with a return statement
3292AC_MSG_CHECKING(whether mvwdelch is an expression)
3293AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3294AC_TRY_COMPILE([#include <curses.h>], [
3295 int rtn;
3296 rtn = mvwdelch(0,0,0);
3297], ac_cv_mvwdelch_is_expression=yes,
3298 ac_cv_mvwdelch_is_expression=no,
3299 ac_cv_mvwdelch_is_expression=yes))
3300AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3301
3302if test "$ac_cv_mvwdelch_is_expression" = yes
3303then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003304 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3305 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003306fi
3307
3308AC_MSG_CHECKING(whether WINDOW has _flags)
3309AC_CACHE_VAL(ac_cv_window_has_flags,
3310AC_TRY_COMPILE([#include <curses.h>], [
3311 WINDOW *w;
3312 w->_flags = 0;
3313], ac_cv_window_has_flags=yes,
3314 ac_cv_window_has_flags=no,
3315 ac_cv_window_has_flags=no))
3316AC_MSG_RESULT($ac_cv_window_has_flags)
3317
3318
3319if test "$ac_cv_window_has_flags" = yes
3320then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003321 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3322 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003323fi
3324
Walter Dörwald4994d952006-06-19 08:07:50 +00003325AC_MSG_CHECKING(for is_term_resized)
3326AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3327 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3328 AC_MSG_RESULT(yes),
3329 AC_MSG_RESULT(no)
3330)
3331
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003332AC_MSG_CHECKING(for resize_term)
3333AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3334 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003335 AC_MSG_RESULT(yes),
3336 AC_MSG_RESULT(no)
3337)
3338
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003339AC_MSG_CHECKING(for resizeterm)
3340AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3341 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003342 AC_MSG_RESULT(yes),
3343 AC_MSG_RESULT(no)
3344)
3345
Martin v. Löwisca362b62006-10-17 18:59:06 +00003346AC_MSG_CHECKING(for /dev/ptmx)
3347
3348if test -r /dev/ptmx
3349then
3350 AC_MSG_RESULT(yes)
3351 AC_DEFINE(HAVE_DEV_PTMX, 1,
3352 [Define if we have /dev/ptmx.])
3353else
3354 AC_MSG_RESULT(no)
3355fi
3356
3357AC_MSG_CHECKING(for /dev/ptc)
3358
3359if test -r /dev/ptc
3360then
3361 AC_MSG_RESULT(yes)
3362 AC_DEFINE(HAVE_DEV_PTC, 1,
3363 [Define if we have /dev/ptc.])
3364else
3365 AC_MSG_RESULT(no)
3366fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003367
Brett Cannon09d12362006-05-11 05:11:33 +00003368AC_MSG_CHECKING(for %zd printf() format support)
3369AC_TRY_RUN([#include <stdio.h>
3370#include <stddef.h>
3371#include <string.h>
3372
3373int main()
3374{
Georg Brandl934c90d2006-09-25 06:58:00 +00003375 char buffer[256];
3376
3377#ifdef HAVE_SSIZE_T
3378typedef ssize_t Py_ssize_t;
3379#elif SIZEOF_VOID_P == SIZEOF_LONG
3380typedef long Py_ssize_t;
3381#else
3382typedef int Py_ssize_t;
3383#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003384
3385 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3386 return 1;
3387
Georg Brandl934c90d2006-09-25 06:58:00 +00003388 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003389 return 1;
Georg Brandl934c90d2006-09-25 06:58:00 +00003390
3391 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3392 return 1;
3393
3394 if (strcmp(buffer, "-123"))
3395 return 1;
3396
Brett Cannon09d12362006-05-11 05:11:33 +00003397 return 0;
3398}],
3399[AC_MSG_RESULT(yes)
3400 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3401 AC_MSG_RESULT(no))
3402
Martin v. Löwis01c04012002-11-11 14:58:44 +00003403AC_CHECK_TYPE(socklen_t,,
3404 AC_DEFINE(socklen_t,int,
3405 Define to `int' if <sys/socket.h> does not define.),[
3406#ifdef HAVE_SYS_TYPES_H
3407#include <sys/types.h>
3408#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003409#ifdef HAVE_SYS_SOCKET_H
3410#include <sys/socket.h>
3411#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003412])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003413
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003414AC_SUBST(THREADHEADERS)
3415
3416for h in `(cd $srcdir;echo Python/thread_*.h)`
3417do
3418 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3419done
3420
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003421AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003422SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003423AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003424for dir in $SRCDIRS; do
3425 if test ! -d $dir; then
3426 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003427 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003428done
3429AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003430
Guido van Rossum627b2d71993-12-24 10:39:16 +00003431# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003432AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3433AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003434
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003435echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003436if test ! -f Modules/Setup
3437then
3438 cp $srcdir/Modules/Setup.dist Modules/Setup
3439fi
3440
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003441echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003442if test ! -f Modules/Setup.local
3443then
3444 echo "# Edit this file for local setup changes" >Modules/Setup.local
3445fi
3446
3447echo "creating Makefile"
3448$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3449 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003450 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003451mv config.c Modules