blob: 1a54981aeecc078d9fb9089efa9d3204fda2d3b7 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Christian Heimes70e5cab2008-12-03 18:18:23 +00007m4_define(PYTHON_VERSION, 3.1)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Georg Brandlfcaf9102008-07-16 02:17:56 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Thomas Wouters477c8d52006-05-27 19:21:47 +000072AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Benjamin Peterson6794aa32008-07-16 20:33:37 +000095ARCH_RUN_32BIT=
96AC_SUBST(ARCH_RUN_32BIT)
97
Georg Brandlfcaf9102008-07-16 02:17:56 +000098UNIVERSAL_ARCHS="32-bit"
99AC_MSG_CHECKING(for --with-universal-archs)
100AC_ARG_WITH(universal-archs,
101 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
102[
103 AC_MSG_RESULT($withval)
104 UNIVERSAL_ARCHS="$withval"
105],
106[
107 AC_MSG_RESULT(32-bit)
108])
109
110
111
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000112AC_ARG_WITH(framework-name,
113 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
114 specify an alternate name of the framework built with --enable-framework),
115[
116 PYTHONFRAMEWORK=${withval}
117 PYTHONFRAMEWORKDIR=${withval}.framework
118 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
119 ],[
120 PYTHONFRAMEWORK=Python
121 PYTHONFRAMEWORKDIR=Python.framework
122 PYTHONFRAMEWORKIDENTIFIER=org.python.python
123])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000124dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000126 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
127[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000128 case $enableval in
129 yes)
130 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000131 esac
132 case $enableval in
133 no)
134 PYTHONFRAMEWORK=
135 PYTHONFRAMEWORKDIR=no-framework
136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
142 if test "x${prefix}" = "xNONE"; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000148 ;;
149 *)
150 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000151 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000152 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000153 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
154 if test "$UNIVERSAL_ARCHS" = "all"
155 then
156 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorene3918352009-03-30 18:00:28 +0000157 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000158 else
Ronald Oussorene3918352009-03-30 18:00:28 +0000159 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000160 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
161 fi
162
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000163 if test "x${prefix}" = "xNONE" ; then
164 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
165 else
166 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
167 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000168 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000170 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000172 AC_CONFIG_FILES(Mac/Makefile)
173 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000174 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
175 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000176 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000177 ],[
178 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000179 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000180 PYTHONFRAMEWORKPREFIX=
181 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000182 FRAMEWORKINSTALLFIRST=
183 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000184 FRAMEWORKALTINSTALLFIRST=
185 FRAMEWORKALTINSTALLLAST=
186 if test "x${prefix}" = "xNONE" ; then
187 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
188 else
189 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
190 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000191 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000192
193 if test "$UNIVERSAL_ARCHS" = "all"
194 then
195 FRAMEWORKINSTALLLAST=update4wayuniversal
196 FRAMEWORKALTINSTALLLAST=update4wayuniversal
197 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198])
199AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000200AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000201AC_SUBST(PYTHONFRAMEWORKDIR)
202AC_SUBST(PYTHONFRAMEWORKPREFIX)
203AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000204AC_SUBST(FRAMEWORKINSTALLFIRST)
205AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000206AC_SUBST(FRAMEWORKALTINSTALLFIRST)
207AC_SUBST(FRAMEWORKALTINSTALLLAST)
208AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000209
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000210##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000211## AC_HELP_STRING(--with-dyld,
212## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000213##
Guido van Rossumb418f891996-07-30 18:06:02 +0000214# Set name for machine-dependent library files
215AC_SUBST(MACHDEP)
216AC_MSG_CHECKING(MACHDEP)
217if test -z "$MACHDEP"
218then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000219 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000220 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
221 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000222 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000223 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000224 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000225 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000226 ac_md_system=`echo $ac_sys_system |
227 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
228 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000229 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000230 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000232 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000233 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000234 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000235 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000236 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000237 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000238 esac
239fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000240
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000241# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
242# disable features if it is defined, without any means to access these
243# features as extensions. For these systems, we skip the definition of
244# _XOPEN_SOURCE. Before adding a system to the list to gain access to
245# some feature, make sure there is no alternative way to access this
246# feature. Also, when using wildcards, make sure you have verified the
247# need for not defining _XOPEN_SOURCE on all systems matching the
248# wildcard, and that the wildcard does not include future systems
249# (which may remove their limitations).
250dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
251case $ac_sys_system/$ac_sys_release in
252 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
253 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000254 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000255 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000256 define_xopen_source=no
257 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
258 # also defined. This can be overridden by defining _BSD_SOURCE
259 # As this has a different meaning on Linux, only define it on OpenBSD
260 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
261 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000262 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
263 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
264 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000265 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000266 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000267 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
268 # of union __?sigval. Reported by Stuart Bishop.
269 SunOS/5.6)
270 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000271 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
272 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000273 # Reconfirmed for 7.1.4 by Martin v. Loewis.
274 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000275 define_xopen_source=no;;
276 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000277 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000278 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000279 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000280 # On FreeBSD 4, the math functions C89 does not cover are never defined
281 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
282 FreeBSD/4.*)
283 define_xopen_source=no;;
284 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
285 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
286 # identifies itself as Darwin/7.*
287 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
288 # disables platform specific features beyond repair.
289 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
290 # has no effect, don't bother defining them
291 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000292 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000293 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
294 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
295 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000296 AIX/4)
297 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000298 AIX/5)
299 if test `uname -r` -eq 1; then
300 define_xopen_source=no
301 fi
302 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000303 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
304 # defining NI_NUMERICHOST.
305 QNX/6.3.2)
306 define_xopen_source=no
307 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000308
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000309esac
310
311if test $define_xopen_source = yes
312then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000313 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
314 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000315 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
316 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000317 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000318 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000319 AC_DEFINE(_XOPEN_SOURCE, 500,
320 Define to the level of X/Open that your system supports)
321 ;;
322 *)
323 AC_DEFINE(_XOPEN_SOURCE, 600,
324 Define to the level of X/Open that your system supports)
325 ;;
326 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000327
328 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
329 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
330 # several APIs are not declared. Since this is also needed in some
331 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000332 # except for Solaris 10, where it must not be defined,
333 # as it implies XPG4.2
334 case $ac_sys_system/$ac_sys_release in
335 SunOS/5.10)
336 ;;
337 *)
338 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
339 Define to activate Unix95-and-earlier features)
340 ;;
341 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000342
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000343 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
344
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000345fi
346
Guido van Rossum91922671997-10-09 20:24:13 +0000347#
348# SGI compilers allow the specification of the both the ABI and the
349# ISA on the command line. Depending on the values of these switches,
350# different and often incompatable code will be generated.
351#
352# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
353# thus supply support for various ABI/ISA combinations. The MACHDEP
354# variable is also adjusted.
355#
356AC_SUBST(SGI_ABI)
357if test ! -z "$SGI_ABI"
358then
359 CC="cc $SGI_ABI"
360 LDFLAGS="$SGI_ABI $LDFLAGS"
361 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
362fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000363AC_MSG_RESULT($MACHDEP)
364
Jack Jansen6b08a402004-06-03 12:41:45 +0000365# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
366# it may influence the way we can build extensions, so distutils
367# needs to check it
368AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000369AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000370CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000371EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000372
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000373AC_MSG_CHECKING(machine type as reported by uname -m)
374ac_sys_machine=`uname -m`
375AC_MSG_RESULT($ac_sys_machine)
376
Guido van Rossum627b2d71993-12-24 10:39:16 +0000377# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000378
379# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
380# for debug/optimization stuff. BASECFLAGS is for flags that are required
381# just to get things to compile and link. Users are free to override OPT
382# when running configure or make. The build should not break if they do.
383# BASECFLAGS should generally not be messed with, however.
384
385# XXX shouldn't some/most/all of this code be merged with the stuff later
386# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000387AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000388AC_ARG_WITH(gcc,
389 AC_HELP_STRING(--without-gcc,never use gcc),
390[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000391 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000392 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000393 without_gcc=yes;;
394 yes) CC=gcc
395 without_gcc=no;;
396 *) CC=$withval
397 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000398 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000399 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000400 AIX*) CC=cc_r
401 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000402 Monterey*)
403 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000404 without_gcc=;;
405 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000406 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000407AC_MSG_RESULT($without_gcc)
408
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000409# If the user switches compilers, we can't believe the cache
410if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
411then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000412 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
413(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000414fi
415
Guido van Rossum627b2d71993-12-24 10:39:16 +0000416AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000417
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000418AC_SUBST(CXX)
419AC_SUBST(MAINCC)
420AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
421AC_ARG_WITH(cxx_main,
422 AC_HELP_STRING([--with-cxx-main=<compiler>],
423 [compile main() and link python executable with C++ compiler]),
424[
425
426 case $withval in
427 no) with_cxx_main=no
428 MAINCC='$(CC)';;
429 yes) with_cxx_main=yes
430 MAINCC='$(CXX)';;
431 *) with_cxx_main=yes
432 MAINCC=$withval
433 if test -z "$CXX"
434 then
435 CXX=$withval
436 fi;;
437 esac], [
438 with_cxx_main=no
439 MAINCC='$(CC)'
440])
441AC_MSG_RESULT($with_cxx_main)
442
443preset_cxx="$CXX"
444if test -z "$CXX"
445then
446 case "$CC" in
447 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
448 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
449 esac
450 if test "$CXX" = "notfound"
451 then
452 CXX=""
453 fi
454fi
455if test -z "$CXX"
456then
457 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
458 if test "$CXX" = "notfound"
459 then
460 CXX=""
461 fi
462fi
463if test "$preset_cxx" != "$CXX"
464then
465 AC_MSG_WARN([
466
467 By default, distutils will build C++ extension modules with "$CXX".
468 If this is not intended, then set CXX on the configure command line.
469 ])
470fi
471
472
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000473# checks for UNIX variants that set C preprocessor variables
474AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000475
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000476# Check for unsupported systems
477case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000478atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000479 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
480 echo See README for details.
481 exit 1;;
482esac
483
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000484AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000485AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000486AC_ARG_WITH(suffix,
487 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
488[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000489 case $withval in
490 no) EXEEXT=;;
491 yes) EXEEXT=.exe;;
492 *) EXEEXT=$withval;;
493 esac])
494AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000495
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000496# Test whether we're running on a non-case-sensitive system, in which
497# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000498AC_SUBST(BUILDEXEEXT)
499AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000500if test ! -d CaseSensitiveTestDir; then
501mkdir CaseSensitiveTestDir
502fi
503
504if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000505then
Jack Jansen1999ef42001-12-06 21:47:20 +0000506 AC_MSG_RESULT(yes)
507 BUILDEXEEXT=.exe
508else
509 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000510 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000511fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000512rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000513
Guido van Rossumdd997f71998-10-07 19:58:26 +0000514case $MACHDEP in
515bsdos*)
516 case $CC in
517 gcc) CC="$CC -D_HAVE_BSDI";;
518 esac;;
519esac
520
Guido van Rossum84561611997-08-21 00:08:11 +0000521case $ac_sys_system in
522hp*|HP*)
523 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000524 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000525 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000526Monterey*)
527 case $CC in
528 cc) CC="$CC -Wl,-Bexport";;
529 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000530SunOS*)
531 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000532 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000533 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000534esac
535
Martin v. Löwise8964d42001-03-06 12:09:07 +0000536
Neil Schemenauer61c51152001-01-26 16:18:16 +0000537AC_SUBST(LIBRARY)
538AC_MSG_CHECKING(LIBRARY)
539if test -z "$LIBRARY"
540then
541 LIBRARY='libpython$(VERSION).a'
542fi
543AC_MSG_RESULT($LIBRARY)
544
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000545# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000546# name of the library into which to insert object files). BLDLIBRARY is also
547# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
548# is blank as the main program is not linked directly against LDLIBRARY.
549# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
550# systems without shared libraries, LDLIBRARY is the same as LIBRARY
551# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
552# DLLLIBRARY is the shared (i.e., DLL) library.
553#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000554# RUNSHARED is used to run shared python without installed libraries
555#
556# INSTSONAME is the name of the shared library that will be use to install
557# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000558AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000559AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000560AC_SUBST(BLDLIBRARY)
561AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000562AC_SUBST(INSTSONAME)
563AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000564LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000565BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000566INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000567DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000568LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000569RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000570
Guido van Rossumfb842551997-08-06 23:42:07 +0000571# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000572# If CXX is set, and if it is needed to link a main function that was
573# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
574# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000575# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000576# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000577AC_SUBST(LINKCC)
578AC_MSG_CHECKING(LINKCC)
579if test -z "$LINKCC"
580then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000581 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000582 case $ac_sys_system in
583 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000584 exp_extra="\"\""
585 if test $ac_sys_release -ge 5 -o \
586 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
587 exp_extra="."
588 fi
589 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000590 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000591 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000592 QNX*)
593 # qcc must be used because the other compilers do not
594 # support -N.
595 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000596 esac
597fi
598AC_MSG_RESULT($LINKCC)
599
Martin v. Löwis1142de32002-03-29 16:28:31 +0000600AC_MSG_CHECKING(for --enable-shared)
601AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000602 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000603
Martin v. Löwis1142de32002-03-29 16:28:31 +0000604if test -z "$enable_shared"
605then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000606 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000607 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000608 enable_shared="yes";;
609 *)
610 enable_shared="no";;
611 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000612fi
613AC_MSG_RESULT($enable_shared)
614
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000615AC_MSG_CHECKING(for --enable-profiling)
616AC_ARG_ENABLE(profiling,
617 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
618[ac_save_cc="$CC"
619 CC="$CC -pg"
620 AC_TRY_RUN([int main() { return 0; }],
621 ac_enable_profiling="yes",
622 ac_enable_profiling="no",
623 ac_enable_profiling="no")
624 CC="$ac_save_cc"])
625AC_MSG_RESULT($ac_enable_profiling)
626
627case "$ac_enable_profiling" in
628 "yes")
629 BASECFLAGS="-pg $BASECFLAGS"
630 LDFLAGS="-pg $LDFLAGS"
631 ;;
632esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000633
634AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000635
Guido van Rossumb8552162001-09-05 14:58:11 +0000636# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
637# library that we build, but we do not want to link against it (we
638# will find it with a -framework option). For this reason there is an
639# extra variable BLDLIBRARY against which Python and the extension
640# modules are linked, BLDLIBRARY. This is normally the same as
641# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000642if test "$enable_framework"
643then
644 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000645 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000646 BLDLIBRARY=''
647else
648 BLDLIBRARY='$(LDLIBRARY)'
649fi
650
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651# Other platforms follow
652if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000653 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000654 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000655 CYGWIN*)
656 LDLIBRARY='libpython$(VERSION).dll.a'
657 DLLLIBRARY='libpython$(VERSION).dll'
658 ;;
659 SunOS*)
660 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000661 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000662 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000663 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000665 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000666 LDLIBRARY='libpython$(VERSION).so'
667 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000668 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000669 case $ac_sys_system in
670 FreeBSD*)
671 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
672 ;;
673 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000674 INSTSONAME="$LDLIBRARY".$SOVERSION
675 ;;
676 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000677 case `uname -m` in
678 ia64)
679 LDLIBRARY='libpython$(VERSION).so'
680 ;;
681 *)
682 LDLIBRARY='libpython$(VERSION).sl'
683 ;;
684 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000685 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000686 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000687 ;;
688 OSF*)
689 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000690 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000691 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000692 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000693 atheos*)
694 LDLIBRARY='libpython$(VERSION).so'
695 BLDLIBRARY='-L. -lpython$(VERSION)'
696 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
697 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000698 Darwin*)
699 LDLIBRARY='libpython$(VERSION).dylib'
700 BLDLIBRARY='-L. -lpython$(VERSION)'
701 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
702 ;;
703
Martin v. Löwis1142de32002-03-29 16:28:31 +0000704 esac
Jason Tishler30765592003-09-04 11:04:06 +0000705else # shared is disabled
706 case $ac_sys_system in
707 CYGWIN*)
708 BLDLIBRARY='$(LIBRARY)'
709 LDLIBRARY='libpython$(VERSION).dll.a'
710 ;;
711 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000712fi
713
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000714AC_MSG_RESULT($LDLIBRARY)
715
Guido van Rossum627b2d71993-12-24 10:39:16 +0000716AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000717AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000718AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000719
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000720AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000721AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000722if test $SVNVERSION = found
723then
724 SVNVERSION="svnversion \$(srcdir)"
725else
726 SVNVERSION="echo exported"
727fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000728
Neil Schemenauera42c8272001-03-31 00:01:55 +0000729case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000730bsdos*|hp*|HP*)
731 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000732 if test -z "$INSTALL"
733 then
734 INSTALL="${srcdir}/install-sh -c"
735 fi
736esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000737AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000738
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000739# Not every filesystem supports hard links
740AC_SUBST(LN)
741if test -z "$LN" ; then
742 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000743 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000744 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000745 *) LN=ln;;
746 esac
747fi
748
Fred Drake9f715822001-07-11 06:27:00 +0000749# Check for --with-pydebug
750AC_MSG_CHECKING(for --with-pydebug)
751AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000752 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
753[
Fred Drake9f715822001-07-11 06:27:00 +0000754if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000755then
756 AC_DEFINE(Py_DEBUG, 1,
757 [Define if you want to build an interpreter with many run-time checks.])
758 AC_MSG_RESULT(yes);
759 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000760else AC_MSG_RESULT(no); Py_DEBUG='false'
761fi],
762[AC_MSG_RESULT(no)])
763
Skip Montanarodecc6a42003-01-01 20:07:49 +0000764# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
765# merged with this chunk of code?
766
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000767# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768# ------------------------
769# (The following bit of code is complicated enough - please keep things
770# indented properly. Just pretend you're editing Python code. ;-)
771
772# There are two parallel sets of case statements below, one that checks to
773# see if OPT was set and one that does BASECFLAGS setting based upon
774# compiler and platform. BASECFLAGS tweaks need to be made even if the
775# user set OPT.
776
777# tweak OPT based on compiler and platform, only if the user didn't set
778# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000779AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000780if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000781then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000782 case $GCC in
783 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000784 if test "$CC" != 'g++' ; then
785 STRICT_PROTO="-Wstrict-prototypes"
786 fi
Christian Heimes38053212007-12-14 01:24:44 +0000787 # For gcc 4.x we need to use -fwrapv so lets check if its supported
788 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
789 WRAP="-fwrapv"
790 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000791 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000792 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000793 if test "$Py_DEBUG" = 'true' ; then
794 # Optimization messes up debuggers, so turn it off for
795 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000796 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000797 else
Christian Heimes38053212007-12-14 01:24:44 +0000798 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000799 fi
800 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000801 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000802 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000803 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000804 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000805 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000806 SCO_SV*) OPT="$OPT -m486 -DSCO5"
807 ;;
808 esac
Fred Drake9f715822001-07-11 06:27:00 +0000809 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000810
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000811 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812 OPT="-O"
813 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000814 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000815
816 # The current (beta) Monterey compiler dies with optimizations
817 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000818 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000819 Monterey*)
820 OPT=""
821 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000822 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823
Guido van Rossum4e8af441994-08-19 15:33:54 +0000824fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000825
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000827
828# The -arch flags for universal builds on OSX
829UNIVERSAL_ARCH_FLAGS=
830AC_SUBST(UNIVERSAL_ARCH_FLAGS)
831
Skip Montanarodecc6a42003-01-01 20:07:49 +0000832# tweak BASECFLAGS based on compiler and platform
833case $GCC in
834yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000835 # Python violates C99 rules, by casting between incompatible
836 # pointer types. GCC may generate bad code as a result of that,
837 # so use -fno-strict-aliasing if supported.
838 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
839 ac_save_cc="$CC"
840 CC="$CC -fno-strict-aliasing"
841 AC_TRY_RUN([int main() { return 0; }],
842 ac_cv_no_strict_aliasing_ok=yes,
843 ac_cv_no_strict_aliasing_ok=no,
844 ac_cv_no_strict_aliasing_ok=no)
845 CC="$ac_save_cc"
846 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
847 if test $ac_cv_no_strict_aliasing_ok = yes
848 then
849 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
850 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000851
852 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
853 # support. Without this, treatment of subnormals doesn't follow
854 # the standard.
855 case $ac_sys_machine in
856 alpha*)
857 BASECFLAGS="$BASECFLAGS -mieee"
858 ;;
859 esac
860
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861 case $ac_sys_system in
862 SCO_SV*)
863 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
864 ;;
865 # is there any other compiler on Darwin besides gcc?
866 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000867 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
868 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000869
870
Thomas Wouters477c8d52006-05-27 19:21:47 +0000871 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000872 UNIVERSAL_ARCH_FLAGS=""
873 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
874 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000875 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000876
877 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
878 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
879
880 elif test "$UNIVERSAL_ARCHS" = "all" ; then
881 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000882 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000883
884 else
885 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
886
887 fi
888
889
890 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000891 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000892 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
893 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
894 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000895 fi
896
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000897 # Calculate the right deployment target for this build.
898 #
899 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
900 if test ${cur_target} '>' 10.2; then
901 cur_target=10.3
902 fi
903 if test "${UNIVERSAL_ARCHS}" = "all"; then
904 # Ensure that the default platform for a 4-way
905 # universal build is OSX 10.5, that's the first
906 # OS release where 4-way builds make sense.
907 cur_target='10.5'
908 fi
909 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
910
911 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
912 # environment with a value that is the same as what we'll use
913 # in the Makefile to ensure that we'll get the same compiler
914 # environment during configure and build time.
915 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
916 export MACOSX_DEPLOYMENT_TARGET
917 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
918
Skip Montanarodecc6a42003-01-01 20:07:49 +0000919 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000920 OSF*)
921 BASECFLAGS="$BASECFLAGS -mieee"
922 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000923 esac
924 ;;
925
926*)
927 case $ac_sys_system in
928 OpenUNIX*|UnixWare*)
929 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
930 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000931 OSF*)
932 BASECFLAGS="$BASECFLAGS -ieee -std"
933 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000934 SCO_SV*)
935 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
936 ;;
937 esac
938 ;;
939esac
940
Fred Drakee1ceaa02001-12-04 20:55:47 +0000941if test "$Py_DEBUG" = 'true'; then
942 :
943else
944 OPT="-DNDEBUG $OPT"
945fi
946
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000947if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000948then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000949 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000950fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000951
Neal Norwitz020c46a2006-01-07 21:39:28 +0000952# disable check for icc since it seems to pass, but generates a warning
953if test "$CC" = icc
954then
955 ac_cv_opt_olimit_ok=no
956fi
957
Guido van Rossum91922671997-10-09 20:24:13 +0000958AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
959AC_CACHE_VAL(ac_cv_opt_olimit_ok,
960[ac_save_cc="$CC"
961CC="$CC -OPT:Olimit=0"
962AC_TRY_RUN([int main() { return 0; }],
963 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000964 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000965 ac_cv_opt_olimit_ok=no)
966CC="$ac_save_cc"])
967AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000968if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000969 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000970 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
971 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
972 # environment?
973 Darwin*)
974 ;;
975 *)
976 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
977 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000978 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000979else
980 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
981 AC_CACHE_VAL(ac_cv_olimit_ok,
982 [ac_save_cc="$CC"
983 CC="$CC -Olimit 1500"
984 AC_TRY_RUN([int main() { return 0; }],
985 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000986 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000987 ac_cv_olimit_ok=no)
988 CC="$ac_save_cc"])
989 AC_MSG_RESULT($ac_cv_olimit_ok)
990 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000991 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000992 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000993fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000994
Thomas Wouters89f507f2006-12-13 04:49:30 +0000995# Check whether GCC supports PyArg_ParseTuple format
996if test "$GCC" = "yes"
997then
998 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
999 save_CFLAGS=$CFLAGS
1000 CFLAGS="$CFLAGS -Werror"
1001 AC_TRY_COMPILE([
1002 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1003 ],,
1004 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1005 AC_MSG_RESULT(yes),
1006 AC_MSG_RESULT(no)
1007 )
1008 CFLAGS=$save_CFLAGS
1009fi
1010
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001011# On some compilers, pthreads are available without further options
1012# (e.g. MacOS X). On some of these systems, the compiler will not
1013# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1014# So we have to see first whether pthreads are available without
1015# options before we can check whether -Kpthread improves anything.
1016AC_MSG_CHECKING(whether pthreads are available without options)
1017AC_CACHE_VAL(ac_cv_pthread_is_default,
1018[AC_TRY_RUN([
1019#include <pthread.h>
1020
1021void* routine(void* p){return NULL;}
1022
1023int main(){
1024 pthread_t p;
1025 if(pthread_create(&p,NULL,routine,NULL)!=0)
1026 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001027 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001028 return 0;
1029}
1030],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001031[
1032 ac_cv_pthread_is_default=yes
1033 ac_cv_kthread=no
1034 ac_cv_pthread=no
1035],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001036 ac_cv_pthread_is_default=no,
1037 ac_cv_pthread_is_default=no)
1038])
1039AC_MSG_RESULT($ac_cv_pthread_is_default)
1040
1041
1042if test $ac_cv_pthread_is_default = yes
1043then
1044 ac_cv_kpthread=no
1045else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001046# -Kpthread, if available, provides the right #defines
1047# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001048# Some compilers won't report that they do not support -Kpthread,
1049# so we need to run a program to see whether it really made the
1050# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001051AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1052AC_CACHE_VAL(ac_cv_kpthread,
1053[ac_save_cc="$CC"
1054CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001055AC_TRY_RUN([
1056#include <pthread.h>
1057
1058void* routine(void* p){return NULL;}
1059
1060int main(){
1061 pthread_t p;
1062 if(pthread_create(&p,NULL,routine,NULL)!=0)
1063 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001064 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001065 return 0;
1066}
1067],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001068 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001069 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001070 ac_cv_kpthread=no)
1071CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001072AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001073fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001074
Skip Montanarod8d39a02003-07-10 20:44:10 +00001075if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001076then
1077# -Kthread, if available, provides the right #defines
1078# and linker options to make pthread_create available
1079# Some compilers won't report that they do not support -Kthread,
1080# so we need to run a program to see whether it really made the
1081# function available.
1082AC_MSG_CHECKING(whether $CC accepts -Kthread)
1083AC_CACHE_VAL(ac_cv_kthread,
1084[ac_save_cc="$CC"
1085CC="$CC -Kthread"
1086AC_TRY_RUN([
1087#include <pthread.h>
1088
1089void* routine(void* p){return NULL;}
1090
1091int main(){
1092 pthread_t p;
1093 if(pthread_create(&p,NULL,routine,NULL)!=0)
1094 return 1;
1095 (void)pthread_detach(p);
1096 return 0;
1097}
1098],
1099 ac_cv_kthread=yes,
1100 ac_cv_kthread=no,
1101 ac_cv_kthread=no)
1102CC="$ac_save_cc"])
1103AC_MSG_RESULT($ac_cv_kthread)
1104fi
1105
Skip Montanarod8d39a02003-07-10 20:44:10 +00001106if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001107then
1108# -pthread, if available, provides the right #defines
1109# and linker options to make pthread_create available
1110# Some compilers won't report that they do not support -pthread,
1111# so we need to run a program to see whether it really made the
1112# function available.
1113AC_MSG_CHECKING(whether $CC accepts -pthread)
1114AC_CACHE_VAL(ac_cv_thread,
1115[ac_save_cc="$CC"
1116CC="$CC -pthread"
1117AC_TRY_RUN([
1118#include <pthread.h>
1119
1120void* routine(void* p){return NULL;}
1121
1122int main(){
1123 pthread_t p;
1124 if(pthread_create(&p,NULL,routine,NULL)!=0)
1125 return 1;
1126 (void)pthread_detach(p);
1127 return 0;
1128}
1129],
1130 ac_cv_pthread=yes,
1131 ac_cv_pthread=no,
1132 ac_cv_pthread=no)
1133CC="$ac_save_cc"])
1134AC_MSG_RESULT($ac_cv_pthread)
1135fi
1136
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001137# If we have set a CC compiler flag for thread support then
1138# check if it works for CXX, too.
1139ac_cv_cxx_thread=no
1140if test ! -z "$CXX"
1141then
1142AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1143ac_save_cxx="$CXX"
1144
1145if test "$ac_cv_kpthread" = "yes"
1146then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001147 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001148 ac_cv_cxx_thread=yes
1149elif test "$ac_cv_kthread" = "yes"
1150then
1151 CXX="$CXX -Kthread"
1152 ac_cv_cxx_thread=yes
1153elif test "$ac_cv_pthread" = "yes"
1154then
1155 CXX="$CXX -pthread"
1156 ac_cv_cxx_thread=yes
1157fi
1158
1159if test $ac_cv_cxx_thread = yes
1160then
1161 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1162 $CXX -c conftest.$ac_ext 2>&5
1163 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1164 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1165 then
1166 ac_cv_cxx_thread=yes
1167 else
1168 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001169 fi
1170 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001171fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001172AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001173fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001174CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001175
Fred Drakece81d592000-07-09 14:39:29 +00001176dnl # check for ANSI or K&R ("traditional") preprocessor
1177dnl AC_MSG_CHECKING(for C preprocessor type)
1178dnl AC_TRY_COMPILE([
1179dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1180dnl int foo;
1181dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1182dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1183dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001184
Guido van Rossum627b2d71993-12-24 10:39:16 +00001185# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001186AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001187AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1188fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001189ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001190shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001191unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001192sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1193sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001194sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001195sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001196sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001197sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001198bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001199AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001200AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001201
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001202# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001203AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001204#ifdef HAVE_CURSES_H
1205#include <curses.h>
1206#endif
1207])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001208
Martin v. Löwis11017b12006-01-14 18:12:57 +00001209# On Linux, netlink.h requires asm/types.h
1210AC_CHECK_HEADERS(linux/netlink.h,,,[
1211#ifdef HAVE_ASM_TYPES_H
1212#include <asm/types.h>
1213#endif
1214#ifdef HAVE_SYS_SOCKET_H
1215#include <sys/socket.h>
1216#endif
1217])
1218
Guido van Rossum627b2d71993-12-24 10:39:16 +00001219# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001220was_it_defined=no
1221AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001222AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1223 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1224])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001225AC_MSG_RESULT($was_it_defined)
1226
Neal Norwitz11690112002-07-30 01:08:28 +00001227# Check whether using makedev requires defining _OSF_SOURCE
1228AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001229AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001230 [ makedev(0, 0) ],
1231 ac_cv_has_makedev=yes,
1232 ac_cv_has_makedev=no)
1233if test "$ac_cv_has_makedev" = "no"; then
1234 # we didn't link, try if _OSF_SOURCE will allow us to link
1235 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001236#define _OSF_SOURCE 1
1237#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001238 ],
1239 [ makedev(0, 0) ],
1240 ac_cv_has_makedev=yes,
1241 ac_cv_has_makedev=no)
1242 if test "$ac_cv_has_makedev" = "yes"; then
1243 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1244 fi
1245fi
1246AC_MSG_RESULT($ac_cv_has_makedev)
1247if test "$ac_cv_has_makedev" = "yes"; then
1248 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1249fi
1250
Martin v. Löwis399a6892002-10-04 10:22:02 +00001251# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1252# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1253# defined, but the compiler does not support pragma redefine_extname,
1254# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1255# structures (such as rlimit64) without declaring them. As a
1256# work-around, disable LFS on such configurations
1257
1258use_lfs=yes
1259AC_MSG_CHECKING(Solaris LFS bug)
1260AC_TRY_COMPILE([
1261#define _LARGEFILE_SOURCE 1
1262#define _FILE_OFFSET_BITS 64
1263#include <sys/resource.h>
1264],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1265AC_MSG_RESULT($sol_lfs_bug)
1266if test "$sol_lfs_bug" = "yes"; then
1267 use_lfs=no
1268fi
1269
1270if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001271# Two defines needed to enable largefile support on various platforms
1272# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001273AC_DEFINE(_LARGEFILE_SOURCE, 1,
1274[This must be defined on some systems to enable large file support.])
1275AC_DEFINE(_FILE_OFFSET_BITS, 64,
1276[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001277fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001278
Guido van Rossum300fda71996-08-19 21:58:16 +00001279# Add some code to confdefs.h so that the test for off_t works on SCO
1280cat >> confdefs.h <<\EOF
1281#if defined(SCO_DS)
1282#undef _OFF_T
1283#endif
1284EOF
1285
Guido van Rossumef2255b2000-03-10 22:30:29 +00001286# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001287AC_TYPE_MODE_T
1288AC_TYPE_OFF_T
1289AC_TYPE_PID_T
1290AC_TYPE_SIGNAL
1291AC_TYPE_SIZE_T
1292AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001293AC_TYPE_UINT32_T
1294AC_TYPE_UINT64_T
1295AC_TYPE_INT32_T
1296AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001297AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001298 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001299
Guido van Rossumef2255b2000-03-10 22:30:29 +00001300# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001301# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001302AC_CHECK_SIZEOF(int, 4)
1303AC_CHECK_SIZEOF(long, 4)
1304AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001305AC_CHECK_SIZEOF(short, 2)
1306AC_CHECK_SIZEOF(float, 4)
1307AC_CHECK_SIZEOF(double, 8)
1308AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001309AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001310AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001311
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001312AC_MSG_CHECKING(for long long support)
1313have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001314AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1315 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1316 have_long_long=yes
1317])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001318AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001319if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001320AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001321fi
1322
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001323AC_MSG_CHECKING(for long double support)
1324have_long_double=no
1325AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1326 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1327 have_long_double=yes
1328])
1329AC_MSG_RESULT($have_long_double)
1330if test "$have_long_double" = yes ; then
1331AC_CHECK_SIZEOF(long double, 16)
1332fi
1333
1334
Thomas Woutersb2137042007-02-01 18:02:27 +00001335AC_MSG_CHECKING(for _Bool support)
1336have_c99_bool=no
1337AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1338 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1339 have_c99_bool=yes
1340])
1341AC_MSG_RESULT($have_c99_bool)
1342if test "$have_c99_bool" = yes ; then
1343AC_CHECK_SIZEOF(_Bool, 1)
1344fi
1345
Thomas Wouters89f507f2006-12-13 04:49:30 +00001346AC_CHECK_TYPES(uintptr_t,
1347 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1348 [], [#ifdef HAVE_STDINT_H
1349 #include <stdint.h>
1350 #endif])
1351
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001352
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001353# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1354AC_MSG_CHECKING(size of off_t)
1355AC_CACHE_VAL(ac_cv_sizeof_off_t,
1356[AC_TRY_RUN([#include <stdio.h>
1357#include <sys/types.h>
1358main()
1359{
1360 FILE *f=fopen("conftestval", "w");
1361 if (!f) exit(1);
1362 fprintf(f, "%d\n", sizeof(off_t));
1363 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001364}],
1365ac_cv_sizeof_off_t=`cat conftestval`,
1366ac_cv_sizeof_off_t=0,
1367ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001368])
1369AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001370AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1371[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001372
1373AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001374if test "$have_long_long" = yes -a \
1375 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1376 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001377 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1378 [Defined to enable large file support when an off_t is bigger than a long
1379 and long long is available and at least as big as an off_t. You may need
1380 to add some flags for configuration and compilation to enable this mode.
1381 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001382 AC_MSG_RESULT(yes)
1383else
1384 AC_MSG_RESULT(no)
1385fi
1386
Fred Drakea3f6e912000-06-29 20:44:47 +00001387# AC_CHECK_SIZEOF() doesn't include <time.h>.
1388AC_MSG_CHECKING(size of time_t)
1389AC_CACHE_VAL(ac_cv_sizeof_time_t,
1390[AC_TRY_RUN([#include <stdio.h>
1391#include <time.h>
1392main()
1393{
1394 FILE *f=fopen("conftestval", "w");
1395 if (!f) exit(1);
1396 fprintf(f, "%d\n", sizeof(time_t));
1397 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001398}],
1399ac_cv_sizeof_time_t=`cat conftestval`,
1400ac_cv_sizeof_time_t=0,
1401ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001402])
1403AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001404AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1405[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001406
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001407
Trent Mick635f6fb2000-08-23 21:33:05 +00001408# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001409ac_save_cc="$CC"
1410if test "$ac_cv_kpthread" = "yes"
1411then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001412elif test "$ac_cv_kthread" = "yes"
1413then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001414elif test "$ac_cv_pthread" = "yes"
1415then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001416fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001417AC_MSG_CHECKING(for pthread_t)
1418have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001419AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001420AC_MSG_RESULT($have_pthread_t)
1421if test "$have_pthread_t" = yes ; then
1422 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1423 AC_MSG_CHECKING(size of pthread_t)
1424 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1425 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001426#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001427 main()
1428 {
1429 FILE *f=fopen("conftestval", "w");
1430 if (!f) exit(1);
1431 fprintf(f, "%d\n", sizeof(pthread_t));
1432 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001433 }],
1434 ac_cv_sizeof_pthread_t=`cat conftestval`,
1435 ac_cv_sizeof_pthread_t=0,
1436 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001437 ])
1438 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001439 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1440 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001441fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001442CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001443
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001444
Georg Brandl93de2162008-07-16 02:21:06 +00001445
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001446AC_SUBST(OTHER_LIBTOOL_OPT)
1447case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001448 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001449 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1450 ;;
1451 Darwin/*)
1452 OTHER_LIBTOOL_OPT=""
1453 ;;
1454esac
1455
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001456AC_SUBST(LIBTOOL_CRUFT)
1457case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001458 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001459 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1460 if test "${enable_universalsdk}"; then
1461 :
1462 else
1463 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1464 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001465 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001466 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001467 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001468 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1469 if test ${gcc_version} '<' 4.0
1470 then
1471 LIBTOOL_CRUFT="-lcc_dynamic"
1472 else
1473 LIBTOOL_CRUFT=""
1474 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001475 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001476 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001477 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001478esac
1479
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001480AC_MSG_CHECKING(for --enable-framework)
1481if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001482then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001483 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001484 # -F. is needed to allow linking to the framework while
1485 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001486 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1487 [Define if you want to produce an OpenStep/Rhapsody framework
1488 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001489 AC_MSG_RESULT(yes)
1490else
1491 AC_MSG_RESULT(no)
1492fi
1493
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001494AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001495case $ac_sys_system/$ac_sys_release in
1496 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001497 AC_DEFINE(WITH_DYLD, 1,
1498 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1499 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1500 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001501 AC_MSG_RESULT(always on for Darwin)
1502 ;;
1503 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001504 AC_MSG_RESULT(no)
1505 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001506esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001507
Guido van Rossumac405f61994-09-12 10:56:06 +00001508# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001509AC_SUBST(SO)
1510AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001511AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001512AC_SUBST(CCSHARED)
1513AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001514# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001515# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001516AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001517if test -z "$SO"
1518then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001519 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001520 hp*|HP*)
1521 case `uname -m` in
1522 ia64) SO=.so;;
1523 *) SO=.sl;;
1524 esac
1525 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001526 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001527 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001528 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001529else
1530 # this might also be a termcap variable, see #610332
1531 echo
1532 echo '====================================================================='
1533 echo '+ +'
1534 echo '+ WARNING: You have set SO in your environment. +'
1535 echo '+ Do you really mean to change the extension for shared libraries? +'
1536 echo '+ Continuing in 10 seconds to let you to ponder. +'
1537 echo '+ +'
1538 echo '====================================================================='
1539 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001540fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001541AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001542
Thomas Wouters477c8d52006-05-27 19:21:47 +00001543AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001544# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001545# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001546# (Shared libraries in this instance are shared modules to be loaded into
1547# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001548AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001549if test -z "$LDSHARED"
1550then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001551 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001552 AIX*)
1553 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001554 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001555 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001556 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001557 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001558 SunOS/5*)
1559 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001560 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001561 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001562 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001563 hp*|HP*)
1564 if test "$GCC" = "yes"
1565 then LDSHARED='$(CC) -shared'
1566 else LDSHARED='ld -b';
1567 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001568 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001569 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001570 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1571 if test "$enable_framework" ; then
1572 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001573 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1574 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001575 else
1576 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001577 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001578 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001579 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001580 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1581 if test "$enable_framework" ; then
1582 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001583 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1584 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001585 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001586 # No framework, use the Python app as bundle-loader
1587 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001588 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001589 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001590 Darwin/*)
1591 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1592 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001593
Georg Brandlfcaf9102008-07-16 02:17:56 +00001594 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001595 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001596 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001597 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001598 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001599 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1600 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001601 else
1602 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1603 if test "$enable_framework" ; then
1604 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001605 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1606 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001607 else
1608 # No framework, use the Python app as bundle-loader
1609 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1610 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1611 fi
1612 fi
1613 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001614 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001615 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001616 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001617 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001618 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001619 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001620 else
1621 LDSHARED="ld -Bshareable ${LDFLAGS}"
1622 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001623 OpenBSD*)
1624 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1625 then
1626 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1627 else
1628 case `uname -r` in
1629 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1630 LDSHARED="ld -Bshareable ${LDFLAGS}"
1631 ;;
1632 *)
1633 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1634 ;;
1635 esac
1636 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001637 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001638 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001639 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001640 then LDSHARED='$(CC) -shared'
1641 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001642 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001643 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001644 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001645 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001646 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001647 *) LDSHARED="ld";;
1648 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001649fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001650AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001651BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001652# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001653# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001654AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001655if test -z "$CCSHARED"
1656then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001657 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001658 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001659 then CCSHARED="-fPIC";
1660 elif test `uname -p` = sparc;
1661 then CCSHARED="-xcode=pic32";
1662 else CCSHARED="-Kpic";
1663 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001664 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001665 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001666 else CCSHARED="+z";
1667 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001668 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001669 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001670 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001671 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001672 if test "$GCC" = "yes"
1673 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001674 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001675 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001676 SCO_SV*)
1677 if test "$GCC" = "yes"
1678 then CCSHARED="-fPIC"
1679 else CCSHARED="-Kpic -belf"
1680 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001681 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001682 IRIX*/6*) case $CC in
1683 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001684 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001685 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001686 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001687 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001688fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001689AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001690# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001691# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001692AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001693if test -z "$LINKFORSHARED"
1694then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001695 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001696 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001697 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001698 LINKFORSHARED="-Wl,-E -Wl,+s";;
1699# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001700 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001701 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001702 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001703 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001704 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1705 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001706 # not used by the core itself but which needs to be in the core so
1707 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001708 # -prebind is no longer used, because it actually seems to give a
1709 # slowdown in stead of a speedup, maybe due to the large number of
1710 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001711
1712 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001713 if test "$enable_framework"
1714 then
Jack Jansenda49e192005-01-07 13:08:22 +00001715 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001716 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001717 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001718 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001719 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001720 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001721 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001722 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1723 then
1724 LINKFORSHARED="-Wl,--export-dynamic"
1725 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001726 SunOS/5*) case $CC in
1727 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001728 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001729 then
1730 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001731 fi;;
1732 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001733 CYGWIN*)
1734 if test $enable_shared = "no"
1735 then
1736 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1737 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001738 QNX*)
1739 # -Wl,-E causes the symbols to be added to the dynamic
1740 # symbol table so that they can be found when a module
1741 # is loaded. -N 2048K causes the stack size to be set
1742 # to 2048 kilobytes so that the stack doesn't overflow
1743 # when running test_compile.py.
1744 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001745 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001746fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001747AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001748
Georg Brandl93de2162008-07-16 02:21:06 +00001749
Neil Schemenauer61c51152001-01-26 16:18:16 +00001750AC_SUBST(CFLAGSFORSHARED)
1751AC_MSG_CHECKING(CFLAGSFORSHARED)
1752if test ! "$LIBRARY" = "$LDLIBRARY"
1753then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001754 case $ac_sys_system in
1755 CYGWIN*)
1756 # Cygwin needs CCSHARED when building extension DLLs
1757 # but not when building the interpreter DLL.
1758 CFLAGSFORSHARED='';;
1759 *)
1760 CFLAGSFORSHARED='$(CCSHARED)'
1761 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001762fi
1763AC_MSG_RESULT($CFLAGSFORSHARED)
1764
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001765# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1766# library (with --enable-shared).
1767# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001768# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1769# if it is not required, since it creates a dependency of the shared library
1770# to LIBS. This, in turn, means that applications linking the shared libpython
1771# don't need to link LIBS explicitly. The default should be only changed
1772# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001773AC_SUBST(SHLIBS)
1774AC_MSG_CHECKING(SHLIBS)
1775case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001776 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001777 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001778esac
1779AC_MSG_RESULT($SHLIBS)
1780
1781
Guido van Rossum627b2d71993-12-24 10:39:16 +00001782# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001783AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1784AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001785
Georg Brandleee31162008-12-07 15:15:22 +00001786# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001787if test "$with_threads" = "yes" -o -z "$with_threads"; then
1788 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1789 # posix4 on Solaris 2.6
1790 # pthread (first!) on Linux
1791fi
1792
Martin v. Löwis19d17342003-06-14 21:03:05 +00001793# check if we need libintl for locale functions
1794AC_CHECK_LIB(intl, textdomain,
1795 AC_DEFINE(WITH_LIBINTL, 1,
1796 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001797
1798# checks for system dependent C++ extensions support
1799case "$ac_sys_system" in
1800 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1801 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1802 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001803 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1804 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1805 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001806 AC_MSG_RESULT(yes)],
1807 [AC_MSG_RESULT(no)]);;
1808 *) ;;
1809esac
1810
Guido van Rossum70c7f481998-03-26 18:44:10 +00001811# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001812AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001813AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001814
Guido van Rossumc5a39031996-07-31 17:35:03 +00001815AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001816AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001817 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1818[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001819AC_MSG_RESULT($withval)
1820LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001821],
1822[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001823
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001824# Check for use of the system libffi library
1825AC_MSG_CHECKING(for --with-system-ffi)
1826AC_ARG_WITH(system_ffi,
1827 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1828
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001829AC_MSG_RESULT($with_system_ffi)
1830
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001831# Determine if signalmodule should be used.
1832AC_SUBST(USE_SIGNAL_MODULE)
1833AC_SUBST(SIGNAL_OBJS)
1834AC_MSG_CHECKING(for --with-signal-module)
1835AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001836 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001837
1838if test -z "$with_signal_module"
1839then with_signal_module="yes"
1840fi
1841AC_MSG_RESULT($with_signal_module)
1842
1843if test "${with_signal_module}" = "yes"; then
1844 USE_SIGNAL_MODULE=""
1845 SIGNAL_OBJS=""
1846else
1847 USE_SIGNAL_MODULE="#"
1848 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1849fi
1850
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001851# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001852AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001853USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001854
Guido van Rossum54d93d41997-01-22 20:51:58 +00001855AC_MSG_CHECKING(for --with-dec-threads)
1856AC_SUBST(LDLAST)
1857AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001858 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1859[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001860AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001861LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001862if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001863 with_thread="$withval";
1864fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001865[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001866
Martin v. Löwis11437992002-04-12 09:54:03 +00001867# Templates for things AC_DEFINEd more than once.
1868# For a single AC_DEFINE, no template is needed.
1869AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1870AH_TEMPLATE(_REENTRANT,
1871 [Define to force use of thread-safe errno, h_errno, and other functions])
1872AH_TEMPLATE(WITH_THREAD,
1873 [Define if you want to compile in rudimentary thread support])
1874
Guido van Rossum54d93d41997-01-22 20:51:58 +00001875AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001876dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001877AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001878 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001879
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001880# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001881dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001882AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001883 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1884 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001885
1886if test -z "$with_threads"
1887then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001888fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001889AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001890
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001891AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001892if test "$with_threads" = "no"
1893then
1894 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001895elif test "$ac_cv_pthread_is_default" = yes
1896then
1897 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001898 # Defining _REENTRANT on system with POSIX threads should not hurt.
1899 AC_DEFINE(_REENTRANT)
1900 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001901 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001902elif test "$ac_cv_kpthread" = "yes"
1903then
1904 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001905 if test "$ac_cv_cxx_thread" = "yes"; then
1906 CXX="$CXX -Kpthread"
1907 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001908 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001909 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001910 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001911elif test "$ac_cv_kthread" = "yes"
1912then
1913 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001914 if test "$ac_cv_cxx_thread" = "yes"; then
1915 CXX="$CXX -Kthread"
1916 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001917 AC_DEFINE(WITH_THREAD)
1918 posix_threads=yes
1919 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001920elif test "$ac_cv_pthread" = "yes"
1921then
1922 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001923 if test "$ac_cv_cxx_thread" = "yes"; then
1924 CXX="$CXX -pthread"
1925 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001926 AC_DEFINE(WITH_THREAD)
1927 posix_threads=yes
1928 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001929else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001930 if test ! -z "$with_threads" -a -d "$with_threads"
1931 then LDFLAGS="$LDFLAGS -L$with_threads"
1932 fi
1933 if test ! -z "$withval" -a -d "$withval"
1934 then LDFLAGS="$LDFLAGS -L$withval"
1935 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001936
1937 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001938 # define _POSIX_THREADS in unistd.h. Some apparently don't
1939 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001940 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1941 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001942 [
1943#include <unistd.h>
1944#ifdef _POSIX_THREADS
1945yes
1946#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001947 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1948 AC_MSG_RESULT($unistd_defines_pthreads)
1949
Martin v. Löwis130fb172001-07-19 11:00:41 +00001950 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001951 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1952 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001953 AC_DEFINE(HURD_C_THREADS, 1,
1954 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001955 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001956 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001957 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1958 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001959 AC_DEFINE(MACH_C_THREADS, 1,
1960 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001961 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001962 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001963 AC_ARG_WITH([pth],
1964 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1965 [AC_MSG_RESULT($withval)
1966 AC_DEFINE([WITH_THREAD])
1967 AC_DEFINE([HAVE_PTH], 1,
1968 [Define if you have GNU PTH threads.])
1969 LIBS="-lpth $LIBS"
1970 THREADOBJ="Python/thread.o"],
1971 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001972
1973 # Just looking for pthread_create in libpthread is not enough:
1974 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1975 # So we really have to include pthread.h, and then link.
1976 _libs=$LIBS
1977 LIBS="$LIBS -lpthread"
1978 AC_MSG_CHECKING([for pthread_create in -lpthread])
1979 AC_TRY_LINK([#include <pthread.h>
1980
1981void * start_routine (void *arg) { exit (0); }], [
1982pthread_create (NULL, NULL, start_routine, NULL)], [
1983 AC_MSG_RESULT(yes)
1984 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001985 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001986 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001987 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001988 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001989 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001990 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001991 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1992 AC_DEFINE(ATHEOS_THREADS, 1,
1993 [Define this if you have AtheOS threads.])
1994 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001995 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001996 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001997 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001998 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001999 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002000 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002001 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002002 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002003 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002004 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002005 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002006 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002007 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002008 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002009 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002010 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002011 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002012 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002013
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002014 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2015 LIBS="$LIBS -lmpc"
2016 THREADOBJ="Python/thread.o"
2017 USE_THREAD_MODULE=""])
2018
2019 if test "$posix_threads" != "yes"; then
2020 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2021 LIBS="$LIBS -lthread"
2022 THREADOBJ="Python/thread.o"
2023 USE_THREAD_MODULE=""])
2024 fi
2025
2026 if test "$USE_THREAD_MODULE" != "#"
2027 then
2028 # If the above checks didn't disable threads, (at least) OSF1
2029 # needs this '-threads' argument during linking.
2030 case $ac_sys_system in
2031 OSF1) LDLAST=-threads;;
2032 esac
2033 fi
2034fi
2035
2036if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002037 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002038 AC_DEFINE(_POSIX_THREADS, 1,
2039 [Define if you have POSIX threads,
2040 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002041 fi
2042
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002043 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2044 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002045 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2046 Defined for Solaris 2.6 bug in pthread header.)
2047 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002048 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002049 Define if the Posix semaphores do not work on your system)
2050 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002051 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2052 Define if the Posix semaphores do not work on your system)
2053 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002054 esac
2055
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002056 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2057 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2058 [AC_TRY_RUN([#include <pthread.h>
2059 void *foo(void *parm) {
2060 return NULL;
2061 }
2062 main() {
2063 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002064 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002065 if (pthread_attr_init(&attr)) exit(-1);
2066 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002067 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002068 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002069 }],
2070 ac_cv_pthread_system_supported=yes,
2071 ac_cv_pthread_system_supported=no,
2072 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002073 ])
2074 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2075 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002076 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002077 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002078 AC_CHECK_FUNCS(pthread_sigmask,
2079 [case $ac_sys_system in
2080 CYGWIN*)
2081 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2082 [Define if pthread_sigmask() does not work on your system.])
2083 ;;
2084 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002085fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002086
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002087
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002088# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002089AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002090AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002091AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002092[ --enable-ipv6 Enable ipv6 (with ipv4) support
2093 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002094[ case "$enableval" in
2095 no)
2096 AC_MSG_RESULT(no)
2097 ipv6=no
2098 ;;
2099 *) AC_MSG_RESULT(yes)
2100 AC_DEFINE(ENABLE_IPV6)
2101 ipv6=yes
2102 ;;
2103 esac ],
2104
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002105[
2106dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002107 AC_TRY_RUN([ /* AF_INET6 available check */
2108#include <sys/types.h>
2109#include <sys/socket.h>
2110main()
2111{
2112 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2113 exit(1);
2114 else
2115 exit(0);
2116}
2117],
2118 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002119 ipv6=yes,
2120 AC_MSG_RESULT(no)
2121 ipv6=no,
2122 AC_MSG_RESULT(no)
2123 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002124)
2125
2126if test "$ipv6" = "yes"; then
2127 AC_MSG_CHECKING(if RFC2553 API is available)
2128 AC_TRY_COMPILE([#include <sys/types.h>
2129#include <netinet/in.h>],
2130 [struct sockaddr_in6 x;
2131x.sin6_scope_id;],
2132 AC_MSG_RESULT(yes)
2133 ipv6=yes,
2134 AC_MSG_RESULT(no, IPv6 disabled)
2135 ipv6=no)
2136fi
2137
2138if test "$ipv6" = "yes"; then
2139 AC_DEFINE(ENABLE_IPV6)
2140fi
2141])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002142
2143ipv6type=unknown
2144ipv6lib=none
2145ipv6trylibc=no
2146
2147if test "$ipv6" = "yes"; then
2148 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002149 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2150 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002151 case $i in
2152 inria)
2153 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002154 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002155#include <netinet/in.h>
2156#ifdef IPV6_INRIA_VERSION
2157yes
2158#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002159 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002160 ;;
2161 kame)
2162 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002163 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002164#include <netinet/in.h>
2165#ifdef __KAME__
2166yes
2167#endif],
2168 [ipv6type=$i;
2169 ipv6lib=inet6
2170 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002171 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002172 ;;
2173 linux-glibc)
2174 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002175 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002176#include <features.h>
2177#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2178yes
2179#endif],
2180 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002181 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002182 ;;
2183 linux-inet6)
2184 dnl http://www.v6.linux.or.jp/
2185 if test -d /usr/inet6; then
2186 ipv6type=$i
2187 ipv6lib=inet6
2188 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002189 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002190 fi
2191 ;;
2192 solaris)
2193 if test -f /etc/netconfig; then
2194 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2195 ipv6type=$i
2196 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002197 fi
2198 fi
2199 ;;
2200 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002201 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002202#include <sys/param.h>
2203#ifdef _TOSHIBA_INET6
2204yes
2205#endif],
2206 [ipv6type=$i;
2207 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002208 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002209 ;;
2210 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002211 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002212#include </usr/local/v6/include/sys/v6config.h>
2213#ifdef __V6D__
2214yes
2215#endif],
2216 [ipv6type=$i;
2217 ipv6lib=v6;
2218 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002219 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002220 ;;
2221 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002222 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002223#include <sys/param.h>
2224#ifdef _ZETA_MINAMI_INET6
2225yes
2226#endif],
2227 [ipv6type=$i;
2228 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002229 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002230 ;;
2231 esac
2232 if test "$ipv6type" != "unknown"; then
2233 break
2234 fi
2235 done
2236 AC_MSG_RESULT($ipv6type)
2237fi
2238
2239if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2240 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2241 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2242 echo "using lib$ipv6lib"
2243 else
2244 if test $ipv6trylibc = "yes"; then
2245 echo "using libc"
2246 else
2247 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2248 echo "You need to fetch lib$ipv6lib.a from appropriate"
2249 echo 'ipv6 kit and compile beforehand.'
2250 exit 1
2251 fi
2252 fi
2253fi
2254
Georg Brandl93de2162008-07-16 02:21:06 +00002255AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2256AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2257 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2258 AC_MSG_RESULT(yes),
2259 AC_MSG_RESULT(no)
2260)
2261
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002262# Check for --with-doc-strings
2263AC_MSG_CHECKING(for --with-doc-strings)
2264AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002265 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002266
2267if test -z "$with_doc_strings"
2268then with_doc_strings="yes"
2269fi
2270if test "$with_doc_strings" != "no"
2271then
2272 AC_DEFINE(WITH_DOC_STRINGS, 1,
2273 [Define if you want documentation strings in extension modules])
2274fi
2275AC_MSG_RESULT($with_doc_strings)
2276
Neil Schemenauera35c6882001-02-27 04:45:05 +00002277# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002278AC_MSG_CHECKING(for --with-tsc)
2279AC_ARG_WITH(tsc,
2280[ --with(out)-tsc enable/disable timestamp counter profile], [
2281if test "$withval" != no
2282then
2283 AC_DEFINE(WITH_TSC, 1,
2284 [Define to profile with the Pentium timestamp counter])
2285 AC_MSG_RESULT(yes)
2286else AC_MSG_RESULT(no)
2287fi],
2288[AC_MSG_RESULT(no)])
2289
2290# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002291AC_MSG_CHECKING(for --with-pymalloc)
2292AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002293 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002294
2295if test -z "$with_pymalloc"
2296then with_pymalloc="yes"
2297fi
2298if test "$with_pymalloc" != "no"
2299then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002300 AC_DEFINE(WITH_PYMALLOC, 1,
2301 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002302fi
2303AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002304
Barry Warsawef82cd72000-06-30 16:21:01 +00002305# Check for --with-wctype-functions
2306AC_MSG_CHECKING(for --with-wctype-functions)
2307AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002308 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2309[
Barry Warsawef82cd72000-06-30 16:21:01 +00002310if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002311then
2312 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2313 [Define if you want wctype.h functions to be used instead of the
2314 one supplied by Python itself. (see Include/unicodectype.h).])
2315 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002316else AC_MSG_RESULT(no)
2317fi],
2318[AC_MSG_RESULT(no)])
2319
Guido van Rossum68242b51996-05-28 22:53:03 +00002320# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002321AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002322DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002323
Guido van Rossume97ee181999-12-20 21:27:22 +00002324# the dlopen() function means we might want to use dynload_shlib.o. some
2325# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002326AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002327
2328# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2329# loading of modules.
2330AC_SUBST(DYNLOADFILE)
2331AC_MSG_CHECKING(DYNLOADFILE)
2332if test -z "$DYNLOADFILE"
2333then
2334 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002335 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2336 if test "$ac_cv_func_dlopen" = yes
2337 then DYNLOADFILE="dynload_shlib.o"
2338 else DYNLOADFILE="dynload_aix.o"
2339 fi
2340 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002341 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002342 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2343 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002344 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002345 *)
2346 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2347 # out any dynamic loading
2348 if test "$ac_cv_func_dlopen" = yes
2349 then DYNLOADFILE="dynload_shlib.o"
2350 else DYNLOADFILE="dynload_stub.o"
2351 fi
2352 ;;
2353 esac
2354fi
2355AC_MSG_RESULT($DYNLOADFILE)
2356if test "$DYNLOADFILE" != "dynload_stub.o"
2357then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002358 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2359 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002360fi
2361
Jack Jansenc49e5b72001-06-19 15:00:23 +00002362# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2363
2364AC_SUBST(MACHDEP_OBJS)
2365AC_MSG_CHECKING(MACHDEP_OBJS)
2366if test -z "$MACHDEP_OBJS"
2367then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002368 MACHDEP_OBJS=$extra_machdep_objs
2369else
2370 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002371fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002372AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002373
Guido van Rossum627b2d71993-12-24 10:39:16 +00002374# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002375AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2376 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002377 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002378 getpriority getpwent getspnam getspent getsid getwd \
Christian Heimesd0764e22007-12-04 15:00:33 +00002379 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002380 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002381 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002382 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002383 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002384 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002385 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis92fab752008-03-08 10:40:41 +00002386 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002387
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002388# For some functions, having a definition is not sufficient, since
2389# we want to take their address.
2390AC_MSG_CHECKING(for chroot)
2391AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2392 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2393 AC_MSG_RESULT(yes),
2394 AC_MSG_RESULT(no)
2395)
2396AC_MSG_CHECKING(for link)
2397AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2398 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2399 AC_MSG_RESULT(yes),
2400 AC_MSG_RESULT(no)
2401)
2402AC_MSG_CHECKING(for symlink)
2403AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2404 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2405 AC_MSG_RESULT(yes),
2406 AC_MSG_RESULT(no)
2407)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002408AC_MSG_CHECKING(for fchdir)
2409AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2410 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2411 AC_MSG_RESULT(yes),
2412 AC_MSG_RESULT(no)
2413)
2414AC_MSG_CHECKING(for fsync)
2415AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002416 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002417 AC_MSG_RESULT(yes),
2418 AC_MSG_RESULT(no)
2419)
2420AC_MSG_CHECKING(for fdatasync)
2421AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2422 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2423 AC_MSG_RESULT(yes),
2424 AC_MSG_RESULT(no)
2425)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002426AC_MSG_CHECKING(for epoll)
2427AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2428 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2429 AC_MSG_RESULT(yes),
2430 AC_MSG_RESULT(no)
2431)
2432AC_MSG_CHECKING(for kqueue)
2433AC_TRY_COMPILE([
2434#include <sys/types.h>
2435#include <sys/event.h>
2436 ], int x=kqueue(),
2437 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2438 AC_MSG_RESULT(yes),
2439 AC_MSG_RESULT(no)
2440)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002441# On some systems (eg. FreeBSD 5), we would find a definition of the
2442# functions ctermid_r, setgroups in the library, but no prototype
2443# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2444# address to avoid compiler warnings and potential miscompilations
2445# because of the missing prototypes.
2446
2447AC_MSG_CHECKING(for ctermid_r)
2448AC_TRY_COMPILE([
2449#include "confdefs.h"
2450#include <stdio.h>
2451], void* p = ctermid_r,
2452 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2453 AC_MSG_RESULT(yes),
2454 AC_MSG_RESULT(no)
2455)
2456
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002457AC_MSG_CHECKING(for flock)
2458AC_TRY_COMPILE([
2459#include "confdefs.h"
2460#include <sys/file.h>
2461], void* p = flock,
2462 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2463 AC_MSG_RESULT(yes),
2464 AC_MSG_RESULT(no)
2465)
2466
2467AC_MSG_CHECKING(for getpagesize)
2468AC_TRY_COMPILE([
2469#include "confdefs.h"
2470#include <unistd.h>
2471], void* p = getpagesize,
2472 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2473 AC_MSG_RESULT(yes),
2474 AC_MSG_RESULT(no)
2475)
2476
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002477dnl check for true
2478AC_CHECK_PROGS(TRUE, true, /bin/true)
2479
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002480dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2481dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002482AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002483 AC_CHECK_LIB(resolv, inet_aton)
2484)
2485
Christian Heimesd0764e22007-12-04 15:00:33 +00002486# On Tru64, chflags seems to be present, but calling it will
2487# exit Python
2488AC_MSG_CHECKING(for chflags)
2489AC_TRY_RUN([
2490#include <sys/stat.h>
2491#include <unistd.h>
2492int main(int argc, char*argv[])
2493{
2494 if(chflags(argv[0], 0) != 0)
2495 return 1;
2496 return 0;
2497}
2498],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2499 AC_MSG_RESULT(yes),
2500 AC_MSG_RESULT(no)
2501)
2502
2503AC_MSG_CHECKING(for lchflags)
2504AC_TRY_RUN([
2505#include <sys/stat.h>
2506#include <unistd.h>
2507int main(int argc, char*argv[])
2508{
2509 if(lchflags(argv[0], 0) != 0)
2510 return 1;
2511 return 0;
2512}
2513],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2514 AC_MSG_RESULT(yes),
2515 AC_MSG_RESULT(no)
2516)
2517
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002518dnl Check if system zlib has *Copy() functions
2519dnl
2520dnl On MacOSX the linker will search for dylibs on the entire linker path
2521dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2522dnl to revert to a more traditional unix behaviour and make it possible to
2523dnl override the system libz with a local static library of libz. Temporarily
2524dnl add that flag to our CFLAGS as well to ensure that we check the version
2525dnl of libz that will be used by setup.py.
2526dnl The -L/usr/local/lib is needed as wel to get the same compilation
2527dnl environment as setup.py (and leaving it out can cause configure to use the
2528dnl wrong version of the library)
2529case $ac_sys_system/$ac_sys_release in
2530Darwin/*)
2531 _CUR_CFLAGS="${CFLAGS}"
2532 _CUR_LDFLAGS="${LDFLAGS}"
2533 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2534 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2535 ;;
2536esac
2537
2538AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2539
2540case $ac_sys_system/$ac_sys_release in
2541Darwin/*)
2542 CFLAGS="${_CUR_CFLAGS}"
2543 LDFLAGS="${_CUR_LDFLAGS}"
2544 ;;
2545esac
2546
Martin v. Löwise9416172003-05-03 10:12:45 +00002547AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002548AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002549#include "confdefs.h"
2550#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002551], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002552 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2553 AC_MSG_RESULT(yes),
2554 AC_MSG_RESULT(no)
2555)
2556
2557AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002558AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002559#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002560#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002561#include <sys/socket.h>
2562#include <netinet/in.h>
2563#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002564], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002565 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no)
2568)
2569
2570AC_MSG_CHECKING(for inet_pton)
2571AC_TRY_COMPILE([
2572#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002573#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002574#include <sys/socket.h>
2575#include <netinet/in.h>
2576#include <arpa/inet.h>
2577], void* p = inet_pton,
2578 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2579 AC_MSG_RESULT(yes),
2580 AC_MSG_RESULT(no)
2581)
2582
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002583# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002584AC_MSG_CHECKING(for setgroups)
2585AC_TRY_COMPILE([
2586#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002587#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002588#ifdef HAVE_GRP_H
2589#include <grp.h>
2590#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002591],
2592void* p = setgroups,
2593 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2594 AC_MSG_RESULT(yes),
2595 AC_MSG_RESULT(no)
2596)
2597
Fred Drake8cef4cf2000-06-28 16:40:38 +00002598# check for openpty and forkpty
2599
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002600AC_CHECK_FUNCS(openpty,,
2601 AC_CHECK_LIB(util,openpty,
2602 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2603 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2604 )
2605)
2606AC_CHECK_FUNCS(forkpty,,
2607 AC_CHECK_LIB(util,forkpty,
2608 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2609 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2610 )
2611)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002612
Christian Heimesb186d002008-03-18 15:15:01 +00002613# Stuff for expat.
2614AC_CHECK_FUNCS(memmove)
2615
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002616# check for long file support functions
2617AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2618
Christian Heimesb186d002008-03-18 15:15:01 +00002619AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002620AC_CHECK_FUNCS(getpgrp,
2621 AC_TRY_COMPILE([#include <unistd.h>],
2622 [getpgrp(0);],
2623 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2624 [Define if getpgrp() must be called as getpgrp(0).])
2625 )
2626)
Jack Jansen150753c2003-03-29 22:07:47 +00002627AC_CHECK_FUNCS(setpgrp,
2628 AC_TRY_COMPILE([#include <unistd.h>],
2629 [setpgrp(0,0);],
2630 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2631 [Define if setpgrp() must be called as setpgrp(0, 0).])
2632 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002633)
2634AC_CHECK_FUNCS(gettimeofday,
2635 AC_TRY_COMPILE([#include <sys/time.h>],
2636 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2637 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2638 [Define if gettimeofday() does not have second (timezone) argument
2639 This is the case on Motorola V4 (R40V4.2)])
2640 )
2641)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002642
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002643AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002644AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002645#if defined(MAJOR_IN_MKDEV)
2646#include <sys/mkdev.h>
2647#elif defined(MAJOR_IN_SYSMACROS)
2648#include <sys/sysmacros.h>
2649#else
2650#include <sys/types.h>
2651#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002652],[
2653 makedev(major(0),minor(0));
2654],[
2655 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2656 [Define to 1 if you have the device macros.])
2657 AC_MSG_RESULT(yes)
2658],[
2659 AC_MSG_RESULT(no)
2660])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002661
2662# On OSF/1 V5.1, getaddrinfo is available, but a define
2663# for [no]getaddrinfo in netdb.h.
2664AC_MSG_CHECKING(for getaddrinfo)
2665AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002666#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002667#include <sys/socket.h>
2668#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002669#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002670],[
2671getaddrinfo(NULL, NULL, NULL, NULL);
2672], [
2673AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002674AC_MSG_CHECKING(getaddrinfo bug)
2675AC_TRY_RUN([
2676#include <sys/types.h>
2677#include <netdb.h>
2678#include <string.h>
2679#include <sys/socket.h>
2680#include <netinet/in.h>
2681
2682main()
2683{
2684 int passive, gaierr, inet4 = 0, inet6 = 0;
2685 struct addrinfo hints, *ai, *aitop;
2686 char straddr[INET6_ADDRSTRLEN], strport[16];
2687
2688 for (passive = 0; passive <= 1; passive++) {
2689 memset(&hints, 0, sizeof(hints));
2690 hints.ai_family = AF_UNSPEC;
2691 hints.ai_flags = passive ? AI_PASSIVE : 0;
2692 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002693 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002694 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2695 (void)gai_strerror(gaierr);
2696 goto bad;
2697 }
2698 for (ai = aitop; ai; ai = ai->ai_next) {
2699 if (ai->ai_addr == NULL ||
2700 ai->ai_addrlen == 0 ||
2701 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2702 straddr, sizeof(straddr), strport, sizeof(strport),
2703 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2704 goto bad;
2705 }
2706 switch (ai->ai_family) {
2707 case AF_INET:
2708 if (strcmp(strport, "54321") != 0) {
2709 goto bad;
2710 }
2711 if (passive) {
2712 if (strcmp(straddr, "0.0.0.0") != 0) {
2713 goto bad;
2714 }
2715 } else {
2716 if (strcmp(straddr, "127.0.0.1") != 0) {
2717 goto bad;
2718 }
2719 }
2720 inet4++;
2721 break;
2722 case AF_INET6:
2723 if (strcmp(strport, "54321") != 0) {
2724 goto bad;
2725 }
2726 if (passive) {
2727 if (strcmp(straddr, "::") != 0) {
2728 goto bad;
2729 }
2730 } else {
2731 if (strcmp(straddr, "::1") != 0) {
2732 goto bad;
2733 }
2734 }
2735 inet6++;
2736 break;
2737 case AF_UNSPEC:
2738 goto bad;
2739 break;
2740 default:
2741 /* another family support? */
2742 break;
2743 }
2744 }
2745 }
2746
2747 if (!(inet4 == 0 || inet4 == 2))
2748 goto bad;
2749 if (!(inet6 == 0 || inet6 == 2))
2750 goto bad;
2751
2752 if (aitop)
2753 freeaddrinfo(aitop);
2754 exit(0);
2755
2756 bad:
2757 if (aitop)
2758 freeaddrinfo(aitop);
2759 exit(1);
2760}
2761],
2762AC_MSG_RESULT(good)
2763buggygetaddrinfo=no,
2764AC_MSG_RESULT(buggy)
2765buggygetaddrinfo=yes,
2766AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002767buggygetaddrinfo=yes)], [
2768AC_MSG_RESULT(no)
2769buggygetaddrinfo=yes
2770])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002771
2772if test "$buggygetaddrinfo" = "yes"; then
2773 if test "$ipv6" = "yes"; then
2774 echo 'Fatal: You must get working getaddrinfo() function.'
2775 echo ' or you can specify "--disable-ipv6"'.
2776 exit 1
2777 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002778else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002779 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002780fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002781AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002782
Guido van Rossum627b2d71993-12-24 10:39:16 +00002783# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002784AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002785AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002786AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002787AC_CHECK_MEMBERS([struct stat.st_rdev])
2788AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002789AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002790AC_CHECK_MEMBERS([struct stat.st_gen])
2791AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002792AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002793
2794AC_MSG_CHECKING(for time.h that defines altzone)
2795AC_CACHE_VAL(ac_cv_header_time_altzone,
2796[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2797 ac_cv_header_time_altzone=yes,
2798 ac_cv_header_time_altzone=no)])
2799AC_MSG_RESULT($ac_cv_header_time_altzone)
2800if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002801 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002802fi
2803
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002804was_it_defined=no
2805AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002806AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002807#include <sys/types.h>
2808#include <sys/select.h>
2809#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002810], [;], [
2811 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2812 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2813 (which you can't on SCO ODT 3.0).])
2814 was_it_defined=yes
2815])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002816AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002817
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002818AC_MSG_CHECKING(for addrinfo)
2819AC_CACHE_VAL(ac_cv_struct_addrinfo,
2820AC_TRY_COMPILE([
2821# include <netdb.h>],
2822 [struct addrinfo a],
2823 ac_cv_struct_addrinfo=yes,
2824 ac_cv_struct_addrinfo=no))
2825AC_MSG_RESULT($ac_cv_struct_addrinfo)
2826if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002828fi
2829
2830AC_MSG_CHECKING(for sockaddr_storage)
2831AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2832AC_TRY_COMPILE([
2833# include <sys/types.h>
2834# include <sys/socket.h>],
2835 [struct sockaddr_storage s],
2836 ac_cv_struct_sockaddr_storage=yes,
2837 ac_cv_struct_sockaddr_storage=no))
2838AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2839if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002841fi
2842
Guido van Rossum627b2d71993-12-24 10:39:16 +00002843# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002844
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002845AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002846AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002847
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002848works=no
2849AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002850AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2851 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2852)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002853AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002854
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002855works=no
2856AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002857AC_TRY_COMPILE([], [signed char c;], works=yes,
2858 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2859)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002860AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002861
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002862have_prototypes=no
2863AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002864AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2865 AC_DEFINE(HAVE_PROTOTYPES, 1,
2866 [Define if your compiler supports function prototype])
2867 have_prototypes=yes
2868])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002869AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002870
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002871works=no
2872AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002873AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002874#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002875int foo(int x, ...) {
2876 va_list va;
2877 va_start(va, x);
2878 va_arg(va, int);
2879 va_arg(va, char *);
2880 va_arg(va, double);
2881 return 0;
2882}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002883], [return foo(10, "", 3.14);], [
2884 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2885 [Define if your compiler supports variable length function prototypes
2886 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2887 works=yes
2888])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002889AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002890
Dave Cole331708b2004-08-09 04:51:41 +00002891# check for socketpair
2892AC_MSG_CHECKING(for socketpair)
2893AC_TRY_COMPILE([
2894#include <sys/types.h>
2895#include <sys/socket.h>
2896], void *x=socketpair,
2897 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2898 AC_MSG_RESULT(yes),
2899 AC_MSG_RESULT(no)
2900)
2901
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002902# check if sockaddr has sa_len member
2903AC_MSG_CHECKING(if sockaddr has sa_len member)
2904AC_TRY_COMPILE([#include <sys/types.h>
2905#include <sys/socket.h>],
2906[struct sockaddr x;
2907x.sa_len = 0;],
2908 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002909 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002910 AC_MSG_RESULT(no))
2911
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002912va_list_is_array=no
2913AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002914AC_TRY_COMPILE([
2915#ifdef HAVE_STDARG_PROTOTYPES
2916#include <stdarg.h>
2917#else
2918#include <varargs.h>
2919#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002920], [va_list list1, list2; list1 = list2;], , [
2921 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2922 va_list_is_array=yes
2923])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002924AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002926# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002927AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2928 [Define this if you have some version of gethostbyname_r()])
2929
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002930AC_CHECK_FUNC(gethostbyname_r, [
2931 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2932 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2933 OLD_CFLAGS=$CFLAGS
2934 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2935 AC_TRY_COMPILE([
2936# include <netdb.h>
2937 ], [
2938 char *name;
2939 struct hostent *he, *res;
2940 char buffer[2048];
2941 int buflen = 2048;
2942 int h_errnop;
2943
2944 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2945 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002946 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002947 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2948 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002949 AC_MSG_RESULT(yes)
2950 ], [
2951 AC_MSG_RESULT(no)
2952 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2953 AC_TRY_COMPILE([
2954# include <netdb.h>
2955 ], [
2956 char *name;
2957 struct hostent *he;
2958 char buffer[2048];
2959 int buflen = 2048;
2960 int h_errnop;
2961
2962 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2963 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002964 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002965 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2966 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002967 AC_MSG_RESULT(yes)
2968 ], [
2969 AC_MSG_RESULT(no)
2970 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2971 AC_TRY_COMPILE([
2972# include <netdb.h>
2973 ], [
2974 char *name;
2975 struct hostent *he;
2976 struct hostent_data data;
2977
2978 (void) gethostbyname_r(name, he, &data);
2979 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002980 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002981 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2982 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002983 AC_MSG_RESULT(yes)
2984 ], [
2985 AC_MSG_RESULT(no)
2986 ])
2987 ])
2988 ])
2989 CFLAGS=$OLD_CFLAGS
2990], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002991 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002992])
2993AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2994AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2995AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002996AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002997AC_SUBST(HAVE_GETHOSTBYNAME)
2998
Guido van Rossum627b2d71993-12-24 10:39:16 +00002999# checks for system services
3000# (none yet)
3001
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003003AC_CHECK_FUNC(__fpu_control,
3004 [],
3005 [AC_CHECK_LIB(ieee, __fpu_control)
3006])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003007
Guido van Rossum93274221997-05-09 02:42:00 +00003008# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003009AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003010AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003011 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3012[
Guido van Rossum93274221997-05-09 02:42:00 +00003013if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014then
3015 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3016 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3017 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003018else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003019fi],
3020[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003021
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003022# check for --with-libm=...
3023AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003024case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003025Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003026*) LIBM=-lm
3027esac
Guido van Rossum93274221997-05-09 02:42:00 +00003028AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003029AC_ARG_WITH(libm,
3030 AC_HELP_STRING(--with-libm=STRING, math library),
3031[
Guido van Rossum93274221997-05-09 02:42:00 +00003032if test "$withval" = no
3033then LIBM=
3034 AC_MSG_RESULT(force LIBM empty)
3035elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003036then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003037 AC_MSG_RESULT(set LIBM="$withval")
3038else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003039fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003040[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003041
3042# check for --with-libc=...
3043AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003044AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003045AC_ARG_WITH(libc,
3046 AC_HELP_STRING(--with-libc=STRING, C library),
3047[
Guido van Rossum93274221997-05-09 02:42:00 +00003048if test "$withval" = no
3049then LIBC=
3050 AC_MSG_RESULT(force LIBC empty)
3051elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003052then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003053 AC_MSG_RESULT(set LIBC="$withval")
3054else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003055fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003056[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003057
Christian Heimes99170a52007-12-19 02:07:34 +00003058# ************************************
3059# * Check for mathematical functions *
3060# ************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003061
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003062LIBS_SAVE=$LIBS
3063LIBS="$LIBS $LIBM"
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003064
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003065# Detect whether system arithmetic is subject to x87-style double
3066# rounding issues. The result of this test has little meaning on non
3067# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3068# mode is round-to-nearest and double rounding issues are present, and
3069# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3070AC_MSG_CHECKING(for x87-style double rounding)
3071AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3072AC_TRY_RUN([
3073#include <stdlib.h>
3074#include <math.h>
3075int main() {
3076 volatile double x, y, z;
3077 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3078 x = 0.99999999999999989; /* 1-2**-53 */
3079 y = 1./x;
3080 if (y != 1.)
3081 exit(0);
3082 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3083 x = 1e16;
3084 y = 2.99999;
3085 z = x + y;
3086 if (z != 1e16+4.)
3087 exit(0);
3088 /* both tests show evidence of double rounding */
3089 exit(1);
3090}
3091],
3092ac_cv_x87_double_rounding=no,
3093ac_cv_x87_double_rounding=yes,
3094ac_cv_x87_double_rounding=no)])
3095AC_MSG_RESULT($ac_cv_x87_double_rounding)
3096if test "$ac_cv_x87_double_rounding" = yes
3097then
3098 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3099 [Define if arithmetic is subject to x87-style double rounding issue])
3100fi
3101
3102
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003103# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3104# -0. on some architectures.
3105AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3106AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3107AC_TRY_RUN([
3108#include <math.h>
3109#include <stdlib.h>
3110int main() {
3111 /* return 0 if either negative zeros don't exist
3112 on this platform or if negative zeros exist
3113 and tanh(-0.) == -0. */
3114 if (atan2(0., -1.) == atan2(-0., -1.) ||
3115 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3116 else exit(1);
3117}
3118],
3119ac_cv_tanh_preserves_zero_sign=yes,
3120ac_cv_tanh_preserves_zero_sign=no,
3121ac_cv_tanh_preserves_zero_sign=no)])
3122AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3123if test "$ac_cv_tanh_preserves_zero_sign" = yes
3124then
3125 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3126 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3127fi
3128
Mark Dickinson0f632572009-01-05 17:10:09 +00003129AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003130AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003131
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003132LIBS=$LIBS_SAVE
3133
Mark Dickinsonbd792642009-03-18 20:06:12 +00003134# determine what size digit to use for Python's longs
3135AC_MSG_CHECKING([digit size for Python's longs])
3136AC_ARG_ENABLE(big-digits,
3137AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3138[case $enable_big_digits in
3139yes)
3140 enable_big_digits=30 ;;
3141no)
3142 enable_big_digits=15 ;;
3143[15|30])
3144 ;;
3145*)
3146 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3147esac
3148AC_MSG_RESULT($enable_big_digits)
3149AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3150],
3151[AC_MSG_RESULT(no value specified)])
3152
Guido van Rossumef2255b2000-03-10 22:30:29 +00003153# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003154AC_CHECK_HEADER(wchar.h, [
3155 AC_DEFINE(HAVE_WCHAR_H, 1,
3156 [Define if the compiler provides a wchar.h header file.])
3157 wchar_h="yes"
3158],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003159wchar_h="no"
3160)
3161
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003162# determine wchar_t size
3163if test "$wchar_h" = yes
3164then
Guido van Rossum67b26592001-10-20 14:21:45 +00003165 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003166fi
3167
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003168AC_MSG_CHECKING(for UCS-4 tcl)
3169have_ucs4_tcl=no
3170AC_TRY_COMPILE([
3171#include <tcl.h>
3172#if TCL_UTF_MAX != 6
3173# error "NOT UCS4_TCL"
3174#endif], [], [
3175 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3176 have_ucs4_tcl=yes
3177])
3178AC_MSG_RESULT($have_ucs4_tcl)
3179
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003180# check whether wchar_t is signed or not
3181if test "$wchar_h" = yes
3182then
3183 # check whether wchar_t is signed or not
3184 AC_MSG_CHECKING(whether wchar_t is signed)
3185 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3186 AC_TRY_RUN([
3187 #include <wchar.h>
3188 int main()
3189 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003190 /* Success: exit code 0 */
3191 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003192 }
3193 ],
3194 ac_cv_wchar_t_signed=yes,
3195 ac_cv_wchar_t_signed=no,
3196 ac_cv_wchar_t_signed=yes)])
3197 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3198fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003199
Georg Brandl52d168a2008-01-07 18:10:24 +00003200AC_MSG_CHECKING(what type to use for str)
3201AC_ARG_WITH(wide-unicode,
3202 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3203[
3204if test "$withval" != no
3205then unicode_size="4"
3206else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003207fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003208],
3209[
3210case "$have_ucs4_tcl" in
3211 yes) unicode_size="4" ;;
3212 *) unicode_size="2" ;;
3213esac
3214])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003215
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003216AH_TEMPLATE(Py_UNICODE_SIZE,
3217 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003218case "$unicode_size" in
3219 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3220 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003221esac
3222
Martin v. Löwis11437992002-04-12 09:54:03 +00003223AH_TEMPLATE(PY_UNICODE_TYPE,
3224 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003225
Georg Brandl52d168a2008-01-07 18:10:24 +00003226# wchar_t is only usable if it maps to an unsigned type
3227if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003228 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003229then
3230 PY_UNICODE_TYPE="wchar_t"
3231 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3232 [Define if you have a useable wchar_t type defined in wchar.h; useable
3233 means wchar_t must be an unsigned type with at least 16 bits. (see
3234 Include/unicodeobject.h).])
3235 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3236elif test "$ac_cv_sizeof_short" = "$unicode_size"
3237then
3238 PY_UNICODE_TYPE="unsigned short"
3239 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3240elif test "$ac_cv_sizeof_long" = "$unicode_size"
3241then
3242 PY_UNICODE_TYPE="unsigned long"
3243 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3244else
3245 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003246fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003247AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003248
3249# check for endianness
3250AC_C_BIGENDIAN
3251
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003252# Check whether right shifting a negative integer extends the sign bit
3253# or fills with zeros (like the Cray J90, according to Tim Peters).
3254AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003255AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003256AC_TRY_RUN([
3257int main()
3258{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003259 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003260}
Guido van Rossum3065c942001-09-17 04:03:14 +00003261],
3262ac_cv_rshift_extends_sign=yes,
3263ac_cv_rshift_extends_sign=no,
3264ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003265AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3266if test "$ac_cv_rshift_extends_sign" = no
3267then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003268 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3269 [Define if i>>j for signed int i does not extend the sign bit
3270 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003271fi
3272
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003273# check for getc_unlocked and related locking functions
3274AC_MSG_CHECKING(for getc_unlocked() and friends)
3275AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3276AC_TRY_LINK([#include <stdio.h>],[
3277 FILE *f = fopen("/dev/null", "r");
3278 flockfile(f);
3279 getc_unlocked(f);
3280 funlockfile(f);
3281], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3282AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3283if test "$ac_cv_have_getc_unlocked" = yes
3284then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003285 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3286 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003287fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003288
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003289# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003290# save the value of LIBS so we don't actually link Python with readline
3291LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003292
3293# On some systems we need to link readline to a termcap compatible
3294# library. NOTE: Keep the precedence of listed libraries synchronised
3295# with setup.py.
3296py_cv_lib_readline=no
3297AC_MSG_CHECKING([how to link readline libs])
3298for py_libtermcap in "" ncursesw ncurses curses termcap; do
3299 if test -z "$py_libtermcap"; then
3300 READLINE_LIBS="-lreadline"
3301 else
3302 READLINE_LIBS="-lreadline -l$py_libtermcap"
3303 fi
3304 LIBS="$READLINE_LIBS $LIBS_no_readline"
3305 AC_LINK_IFELSE(
3306 [AC_LANG_CALL([],[readline])],
3307 [py_cv_lib_readline=yes])
3308 if test $py_cv_lib_readline = yes; then
3309 break
3310 fi
3311done
3312# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3313#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003314if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003315 AC_MSG_RESULT([none])
3316else
3317 AC_MSG_RESULT([$READLINE_LIBS])
3318 AC_DEFINE(HAVE_LIBREADLINE, 1,
3319 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003320fi
3321
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003322# check for readline 2.1
3323AC_CHECK_LIB(readline, rl_callback_handler_install,
3324 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003325 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003326
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003327# check for readline 2.2
3328AC_TRY_CPP([#include <readline/readline.h>],
3329have_readline=yes, have_readline=no)
3330if test $have_readline = yes
3331then
3332 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3333 [readline/readline.h],
3334 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3335 [Define if you have readline 2.2]), )
3336fi
3337
Martin v. Löwis0daad592001-09-30 21:09:59 +00003338# check for readline 4.0
3339AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003340 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003341 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003342
Thomas Wouters89d996e2007-09-08 17:39:28 +00003343# also in 4.0
3344AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3345 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003346 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003347
Guido van Rossum353ae582001-07-10 16:45:32 +00003348# check for readline 4.2
3349AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003350 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003351 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003352
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003353# also in readline 4.2
3354AC_TRY_CPP([#include <readline/readline.h>],
3355have_readline=yes, have_readline=no)
3356if test $have_readline = yes
3357then
3358 AC_EGREP_HEADER([extern int rl_catch_signals;],
3359 [readline/readline.h],
3360 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3361 [Define if you can turn off readline's signal handling.]), )
3362fi
3363
Martin v. Löwis82bca632006-02-10 20:49:30 +00003364# End of readline checks: restore LIBS
3365LIBS=$LIBS_no_readline
3366
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003367AC_MSG_CHECKING(for broken nice())
3368AC_CACHE_VAL(ac_cv_broken_nice, [
3369AC_TRY_RUN([
3370int main()
3371{
3372 int val1 = nice(1);
3373 if (val1 != -1 && val1 == nice(2))
3374 exit(0);
3375 exit(1);
3376}
Guido van Rossum3065c942001-09-17 04:03:14 +00003377],
3378ac_cv_broken_nice=yes,
3379ac_cv_broken_nice=no,
3380ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003381AC_MSG_RESULT($ac_cv_broken_nice)
3382if test "$ac_cv_broken_nice" = yes
3383then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003384 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3385 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003386fi
3387
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003388AC_MSG_CHECKING(for broken poll())
3389AC_TRY_RUN([
3390#include <poll.h>
3391
3392int main (void)
3393 {
3394 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3395
3396 close (42);
3397
3398 int poll_test = poll (&poll_struct, 1, 0);
3399
3400 if (poll_test < 0)
3401 {
3402 exit(0);
3403 }
3404 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3405 {
3406 exit(0);
3407 }
3408 else
3409 {
3410 exit(1);
3411 }
3412 }
3413],
3414ac_cv_broken_poll=yes,
3415ac_cv_broken_poll=no,
3416ac_cv_broken_poll=no)
3417AC_MSG_RESULT($ac_cv_broken_poll)
3418if test "$ac_cv_broken_poll" = yes
3419then
3420 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3421 [Define if poll() sets errno on invalid file descriptors.])
3422fi
3423
Brett Cannon43802422005-02-10 20:48:03 +00003424# Before we can test tzset, we need to check if struct tm has a tm_zone
3425# (which is not required by ISO C or UNIX spec) and/or if we support
3426# tzname[]
3427AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003428
Brett Cannon43802422005-02-10 20:48:03 +00003429# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003430AC_MSG_CHECKING(for working tzset())
3431AC_CACHE_VAL(ac_cv_working_tzset, [
3432AC_TRY_RUN([
3433#include <stdlib.h>
3434#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003435#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003436
3437#if HAVE_TZNAME
3438extern char *tzname[];
3439#endif
3440
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003441int main()
3442{
Brett Cannon18367812003-09-19 00:59:16 +00003443 /* Note that we need to ensure that not only does tzset(3)
3444 do 'something' with localtime, but it works as documented
3445 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003446 This includes making sure that tzname is set properly if
3447 tm->tm_zone does not exist since it is the alternative way
3448 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003449
3450 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003451 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003452 */
3453
Brett Cannon43802422005-02-10 20:48:03 +00003454 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003455 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3456
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003457 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003458 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003459 if (localtime(&groundhogday)->tm_hour != 0)
3460 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003461#if HAVE_TZNAME
3462 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3463 if (strcmp(tzname[0], "UTC") ||
3464 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3465 exit(1);
3466#endif
Brett Cannon18367812003-09-19 00:59:16 +00003467
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003468 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003469 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003470 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003471 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003472#if HAVE_TZNAME
3473 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3474 exit(1);
3475#endif
Brett Cannon18367812003-09-19 00:59:16 +00003476
3477 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3478 tzset();
3479 if (localtime(&groundhogday)->tm_hour != 11)
3480 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003481#if HAVE_TZNAME
3482 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3483 exit(1);
3484#endif
3485
3486#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003487 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3488 exit(1);
3489 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3490 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003491#endif
Brett Cannon18367812003-09-19 00:59:16 +00003492
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003493 exit(0);
3494}
3495],
3496ac_cv_working_tzset=yes,
3497ac_cv_working_tzset=no,
3498ac_cv_working_tzset=no)])
3499AC_MSG_RESULT($ac_cv_working_tzset)
3500if test "$ac_cv_working_tzset" = yes
3501then
3502 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3503 [Define if tzset() actually switches the local timezone in a meaningful way.])
3504fi
3505
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003506# Look for subsecond timestamps in struct stat
3507AC_MSG_CHECKING(for tv_nsec in struct stat)
3508AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3509AC_TRY_COMPILE([#include <sys/stat.h>], [
3510struct stat st;
3511st.st_mtim.tv_nsec = 1;
3512],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003513ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003514ac_cv_stat_tv_nsec=no,
3515ac_cv_stat_tv_nsec=no))
3516AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3517if test "$ac_cv_stat_tv_nsec" = yes
3518then
3519 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3520 [Define if you have struct stat.st_mtim.tv_nsec])
3521fi
3522
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003523# Look for BSD style subsecond timestamps in struct stat
3524AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3525AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3526AC_TRY_COMPILE([#include <sys/stat.h>], [
3527struct stat st;
3528st.st_mtimespec.tv_nsec = 1;
3529],
3530ac_cv_stat_tv_nsec2=yes,
3531ac_cv_stat_tv_nsec2=no,
3532ac_cv_stat_tv_nsec2=no))
3533AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3534if test "$ac_cv_stat_tv_nsec2" = yes
3535then
3536 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3537 [Define if you have struct stat.st_mtimensec])
3538fi
3539
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003540# On HP/UX 11.0, mvwdelch is a block with a return statement
3541AC_MSG_CHECKING(whether mvwdelch is an expression)
3542AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3543AC_TRY_COMPILE([#include <curses.h>], [
3544 int rtn;
3545 rtn = mvwdelch(0,0,0);
3546], ac_cv_mvwdelch_is_expression=yes,
3547 ac_cv_mvwdelch_is_expression=no,
3548 ac_cv_mvwdelch_is_expression=yes))
3549AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3550
3551if test "$ac_cv_mvwdelch_is_expression" = yes
3552then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003553 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3554 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003555fi
3556
3557AC_MSG_CHECKING(whether WINDOW has _flags)
3558AC_CACHE_VAL(ac_cv_window_has_flags,
3559AC_TRY_COMPILE([#include <curses.h>], [
3560 WINDOW *w;
3561 w->_flags = 0;
3562], ac_cv_window_has_flags=yes,
3563 ac_cv_window_has_flags=no,
3564 ac_cv_window_has_flags=no))
3565AC_MSG_RESULT($ac_cv_window_has_flags)
3566
3567
3568if test "$ac_cv_window_has_flags" = yes
3569then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003570 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3571 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003572fi
3573
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003574AC_MSG_CHECKING(for is_term_resized)
3575AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3576 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3577 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003578 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003579)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003580
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003581AC_MSG_CHECKING(for resize_term)
3582AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3583 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3584 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003585 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003586)
3587
3588AC_MSG_CHECKING(for resizeterm)
3589AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3590 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3591 AC_MSG_RESULT(yes),
3592 AC_MSG_RESULT(no)
3593)
3594
Thomas Wouters89f507f2006-12-13 04:49:30 +00003595AC_MSG_CHECKING(for /dev/ptmx)
3596
3597if test -r /dev/ptmx
3598then
3599 AC_MSG_RESULT(yes)
3600 AC_DEFINE(HAVE_DEV_PTMX, 1,
3601 [Define if we have /dev/ptmx.])
3602else
3603 AC_MSG_RESULT(no)
3604fi
3605
3606AC_MSG_CHECKING(for /dev/ptc)
3607
3608if test -r /dev/ptc
3609then
3610 AC_MSG_RESULT(yes)
3611 AC_DEFINE(HAVE_DEV_PTC, 1,
3612 [Define if we have /dev/ptc.])
3613else
3614 AC_MSG_RESULT(no)
3615fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003616
Thomas Wouters477c8d52006-05-27 19:21:47 +00003617AC_MSG_CHECKING(for %zd printf() format support)
3618AC_TRY_RUN([#include <stdio.h>
3619#include <stddef.h>
3620#include <string.h>
3621
Christian Heimes2c181612007-12-17 20:04:13 +00003622#ifdef HAVE_SYS_TYPES_H
3623#include <sys/types.h>
3624#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003625
3626#ifdef HAVE_SSIZE_T
3627typedef ssize_t Py_ssize_t;
3628#elif SIZEOF_VOID_P == SIZEOF_LONG
3629typedef long Py_ssize_t;
3630#else
3631typedef int Py_ssize_t;
3632#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003633
Christian Heimes2c181612007-12-17 20:04:13 +00003634int main()
3635{
3636 char buffer[256];
3637
Thomas Wouters477c8d52006-05-27 19:21:47 +00003638 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3639 return 1;
3640
Thomas Wouters89f507f2006-12-13 04:49:30 +00003641 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003642 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003643
3644 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3645 return 1;
3646
3647 if (strcmp(buffer, "-123"))
3648 return 1;
3649
Thomas Wouters477c8d52006-05-27 19:21:47 +00003650 return 0;
3651}],
3652[AC_MSG_RESULT(yes)
3653 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3654 AC_MSG_RESULT(no))
3655
Martin v. Löwis01c04012002-11-11 14:58:44 +00003656AC_CHECK_TYPE(socklen_t,,
3657 AC_DEFINE(socklen_t,int,
3658 Define to `int' if <sys/socket.h> does not define.),[
3659#ifdef HAVE_SYS_TYPES_H
3660#include <sys/types.h>
3661#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003662#ifdef HAVE_SYS_SOCKET_H
3663#include <sys/socket.h>
3664#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003665])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003666
Antoine Pitroufff95302008-09-03 18:58:51 +00003667AC_MSG_CHECKING(for broken mbstowcs)
3668AC_TRY_RUN([
3669#include<stdlib.h>
3670int main() {
3671 size_t len = -1;
3672 const char *str = "text";
3673 len = mbstowcs(NULL, str, 0);
3674 return (len != 4);
3675}
3676],
3677ac_cv_broken_mbstowcs=no,
3678ac_cv_broken_mbstowcs=yes,
3679ac_cv_broken_mbstowcs=no)
3680AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3681if test "$ac_cv_broken_mbstowcs" = yes
3682then
3683 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3684 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3685 wide chars that would be converted.])
3686fi
3687
Antoine Pitroub52ec782009-01-25 16:34:23 +00003688# Check for --with-computed-gotos
3689AC_MSG_CHECKING(for --with-computed-gotos)
3690AC_ARG_WITH(computed-gotos,
3691 AC_HELP_STRING(--with-computed-gotos,
3692 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3693[
3694if test "$withval" != no
3695then
3696 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3697 [Define if you want to use computed gotos in ceval.c.])
3698 AC_MSG_RESULT(yes)
3699else AC_MSG_RESULT(no)
3700fi],
3701[AC_MSG_RESULT(no)])
3702
3703
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003704AC_SUBST(THREADHEADERS)
3705
3706for h in `(cd $srcdir;echo Python/thread_*.h)`
3707do
3708 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3709done
3710
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003711AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003712SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003713AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003714for dir in $SRCDIRS; do
3715 if test ! -d $dir; then
3716 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003717 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003718done
3719AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003720
Guido van Rossum627b2d71993-12-24 10:39:16 +00003721# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003722AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3723AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003724
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003725echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003726if test ! -f Modules/Setup
3727then
3728 cp $srcdir/Modules/Setup.dist Modules/Setup
3729fi
3730
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003731echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003732if test ! -f Modules/Setup.local
3733then
3734 echo "# Edit this file for local setup changes" >Modules/Setup.local
3735fi
3736
3737echo "creating Makefile"
3738$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3739 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003740 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003741mv config.c Modules