blob: 4f2d3e01cf59f710bf4a5e19309d51ddf5587ba9 [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)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00007m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Benjamin Petersond23f8222009-04-05 19:13:16 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Thomas Wouters477c8d52006-05-27 19:21:47 +000089AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000090 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
95 ;;
96 esac
97 case $enableval in
98 no)
99 UNIVERSALSDK=
100 enable_universalsdk=
101 ;;
102 *)
103 UNIVERSALSDK=$enableval
104 ;;
105 esac
106],[
107 UNIVERSALSDK=
108 enable_universalsdk=
109])
110AC_SUBST(UNIVERSALSDK)
111
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000112AC_SUBST(ARCH_RUN_32BIT)
113
Georg Brandlfcaf9102008-07-16 02:17:56 +0000114UNIVERSAL_ARCHS="32-bit"
115AC_MSG_CHECKING(for --with-universal-archs)
116AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000117 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000118[
119 AC_MSG_RESULT($withval)
120 UNIVERSAL_ARCHS="$withval"
121],
122[
123 AC_MSG_RESULT(32-bit)
124])
125
126
127
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000128AC_ARG_WITH(framework-name,
129 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
130 specify an alternate name of the framework built with --enable-framework),
131[
132 PYTHONFRAMEWORK=${withval}
133 PYTHONFRAMEWORKDIR=${withval}.framework
134 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
135 ],[
136 PYTHONFRAMEWORK=Python
137 PYTHONFRAMEWORKDIR=Python.framework
138 PYTHONFRAMEWORKIDENTIFIER=org.python.python
139])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000140dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000141AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000142 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
143[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000144 case $enableval in
145 yes)
146 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 esac
148 case $enableval in
149 no)
150 PYTHONFRAMEWORK=
151 PYTHONFRAMEWORKDIR=no-framework
152 PYTHONFRAMEWORKPREFIX=
153 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000154 FRAMEWORKINSTALLFIRST=
155 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000156 FRAMEWORKALTINSTALLFIRST=
157 FRAMEWORKALTINSTALLLAST=
158 if test "x${prefix}" = "xNONE"; then
159 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
160 else
161 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
162 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000163 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000164 ;;
165 *)
166 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000167 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000168 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000169 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Georg Brandlfcaf9102008-07-16 02:17:56 +0000170 if test "$UNIVERSAL_ARCHS" = "all"
171 then
172 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorene3918352009-03-30 18:00:28 +0000173 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000174 else
Ronald Oussorene3918352009-03-30 18:00:28 +0000175 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000176 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
177 fi
178
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000179 if test "x${prefix}" = "xNONE" ; then
180 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
181 else
182 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
183 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000186 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000187 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000188 AC_CONFIG_FILES(Mac/Makefile)
189 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000190 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
191 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000192 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000193 ],[
194 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000196 PYTHONFRAMEWORKPREFIX=
197 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 FRAMEWORKINSTALLFIRST=
199 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000200 FRAMEWORKALTINSTALLFIRST=
201 FRAMEWORKALTINSTALLLAST=
202 if test "x${prefix}" = "xNONE" ; then
203 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
204 else
205 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
206 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000208
209 if test "$UNIVERSAL_ARCHS" = "all"
210 then
211 FRAMEWORKINSTALLLAST=update4wayuniversal
212 FRAMEWORKALTINSTALLLAST=update4wayuniversal
213 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000214])
215AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000216AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000217AC_SUBST(PYTHONFRAMEWORKDIR)
218AC_SUBST(PYTHONFRAMEWORKPREFIX)
219AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000220AC_SUBST(FRAMEWORKINSTALLFIRST)
221AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000222AC_SUBST(FRAMEWORKALTINSTALLFIRST)
223AC_SUBST(FRAMEWORKALTINSTALLLAST)
224AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000225
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000226##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000227## AC_HELP_STRING(--with-dyld,
228## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000229##
Guido van Rossumb418f891996-07-30 18:06:02 +0000230# Set name for machine-dependent library files
231AC_SUBST(MACHDEP)
232AC_MSG_CHECKING(MACHDEP)
233if test -z "$MACHDEP"
234then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000235 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000236 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
237 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000238 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000239 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000240 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000241 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000242 ac_md_system=`echo $ac_sys_system |
243 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
244 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000245 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000246 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000247
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000248 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000249 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000250 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000251 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000252 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000253 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000254 esac
255fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000256
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000257# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
258# disable features if it is defined, without any means to access these
259# features as extensions. For these systems, we skip the definition of
260# _XOPEN_SOURCE. Before adding a system to the list to gain access to
261# some feature, make sure there is no alternative way to access this
262# feature. Also, when using wildcards, make sure you have verified the
263# need for not defining _XOPEN_SOURCE on all systems matching the
264# wildcard, and that the wildcard does not include future systems
265# (which may remove their limitations).
266dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
267case $ac_sys_system/$ac_sys_release in
268 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
269 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000270 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000271 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000272 define_xopen_source=no
273 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
274 # also defined. This can be overridden by defining _BSD_SOURCE
275 # As this has a different meaning on Linux, only define it on OpenBSD
276 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
277 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000278 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
279 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
280 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000281 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 +0000282 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000283 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
284 # of union __?sigval. Reported by Stuart Bishop.
285 SunOS/5.6)
286 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000287 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
288 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000289 # Reconfirmed for 7.1.4 by Martin v. Loewis.
290 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000291 define_xopen_source=no;;
292 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000293 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000294 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000295 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000296 # On FreeBSD 4, the math functions C89 does not cover are never defined
297 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
298 FreeBSD/4.*)
299 define_xopen_source=no;;
300 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
301 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
302 # identifies itself as Darwin/7.*
303 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
304 # disables platform specific features beyond repair.
305 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
306 # has no effect, don't bother defining them
307 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000308 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000309 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
310 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
311 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000312 AIX/4)
313 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000314 AIX/5)
315 if test `uname -r` -eq 1; then
316 define_xopen_source=no
317 fi
318 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000319 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
320 # defining NI_NUMERICHOST.
321 QNX/6.3.2)
322 define_xopen_source=no
323 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000324
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000325esac
326
327if test $define_xopen_source = yes
328then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000329 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
330 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000331 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
332 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000333 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000334 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000335 AC_DEFINE(_XOPEN_SOURCE, 500,
336 Define to the level of X/Open that your system supports)
337 ;;
338 *)
339 AC_DEFINE(_XOPEN_SOURCE, 600,
340 Define to the level of X/Open that your system supports)
341 ;;
342 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000343
344 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
345 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
346 # several APIs are not declared. Since this is also needed in some
347 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000348 # except for Solaris 10, where it must not be defined,
349 # as it implies XPG4.2
350 case $ac_sys_system/$ac_sys_release in
351 SunOS/5.10)
352 ;;
353 *)
354 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
355 Define to activate Unix95-and-earlier features)
356 ;;
357 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000358
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000359 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
360
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000361fi
362
Guido van Rossum91922671997-10-09 20:24:13 +0000363#
364# SGI compilers allow the specification of the both the ABI and the
365# ISA on the command line. Depending on the values of these switches,
366# different and often incompatable code will be generated.
367#
368# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
369# thus supply support for various ABI/ISA combinations. The MACHDEP
370# variable is also adjusted.
371#
372AC_SUBST(SGI_ABI)
373if test ! -z "$SGI_ABI"
374then
375 CC="cc $SGI_ABI"
376 LDFLAGS="$SGI_ABI $LDFLAGS"
377 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
378fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000379AC_MSG_RESULT($MACHDEP)
380
Jack Jansen6b08a402004-06-03 12:41:45 +0000381# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
382# it may influence the way we can build extensions, so distutils
383# needs to check it
384AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000385AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000386CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000387EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000388
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000389AC_MSG_CHECKING(machine type as reported by uname -m)
390ac_sys_machine=`uname -m`
391AC_MSG_RESULT($ac_sys_machine)
392
Guido van Rossum627b2d71993-12-24 10:39:16 +0000393# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000394
395# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
396# for debug/optimization stuff. BASECFLAGS is for flags that are required
397# just to get things to compile and link. Users are free to override OPT
398# when running configure or make. The build should not break if they do.
399# BASECFLAGS should generally not be messed with, however.
400
401# XXX shouldn't some/most/all of this code be merged with the stuff later
402# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000403AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000404AC_ARG_WITH(gcc,
405 AC_HELP_STRING(--without-gcc,never use gcc),
406[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000407 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000408 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000409 without_gcc=yes;;
410 yes) CC=gcc
411 without_gcc=no;;
412 *) CC=$withval
413 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000414 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000415 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000416 AIX*) CC=cc_r
417 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000418 Monterey*)
419 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000420 without_gcc=;;
421 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000422 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000423AC_MSG_RESULT($without_gcc)
424
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000425# If the user switches compilers, we can't believe the cache
426if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
427then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000428 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
429(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000430fi
431
Guido van Rossum627b2d71993-12-24 10:39:16 +0000432AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000433
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000434AC_SUBST(CXX)
435AC_SUBST(MAINCC)
436AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
437AC_ARG_WITH(cxx_main,
438 AC_HELP_STRING([--with-cxx-main=<compiler>],
439 [compile main() and link python executable with C++ compiler]),
440[
441
442 case $withval in
443 no) with_cxx_main=no
444 MAINCC='$(CC)';;
445 yes) with_cxx_main=yes
446 MAINCC='$(CXX)';;
447 *) with_cxx_main=yes
448 MAINCC=$withval
449 if test -z "$CXX"
450 then
451 CXX=$withval
452 fi;;
453 esac], [
454 with_cxx_main=no
455 MAINCC='$(CC)'
456])
457AC_MSG_RESULT($with_cxx_main)
458
459preset_cxx="$CXX"
460if test -z "$CXX"
461then
462 case "$CC" in
463 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
464 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
465 esac
466 if test "$CXX" = "notfound"
467 then
468 CXX=""
469 fi
470fi
471if test -z "$CXX"
472then
473 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
474 if test "$CXX" = "notfound"
475 then
476 CXX=""
477 fi
478fi
479if test "$preset_cxx" != "$CXX"
480then
481 AC_MSG_WARN([
482
483 By default, distutils will build C++ extension modules with "$CXX".
484 If this is not intended, then set CXX on the configure command line.
485 ])
486fi
487
488
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000489# checks for UNIX variants that set C preprocessor variables
490AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000491
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000492# Check for unsupported systems
493case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000494atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000495 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
496 echo See README for details.
497 exit 1;;
498esac
499
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000500AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000501AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000502AC_ARG_WITH(suffix,
503 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
504[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000505 case $withval in
506 no) EXEEXT=;;
507 yes) EXEEXT=.exe;;
508 *) EXEEXT=$withval;;
509 esac])
510AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000511
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000512# Test whether we're running on a non-case-sensitive system, in which
513# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000514AC_SUBST(BUILDEXEEXT)
515AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000516if test ! -d CaseSensitiveTestDir; then
517mkdir CaseSensitiveTestDir
518fi
519
520if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000521then
Jack Jansen1999ef42001-12-06 21:47:20 +0000522 AC_MSG_RESULT(yes)
523 BUILDEXEEXT=.exe
524else
525 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000526 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000527fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000528rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000529
Guido van Rossumdd997f71998-10-07 19:58:26 +0000530case $MACHDEP in
531bsdos*)
532 case $CC in
533 gcc) CC="$CC -D_HAVE_BSDI";;
534 esac;;
535esac
536
Guido van Rossum84561611997-08-21 00:08:11 +0000537case $ac_sys_system in
538hp*|HP*)
539 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000540 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000541 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000542Monterey*)
543 case $CC in
544 cc) CC="$CC -Wl,-Bexport";;
545 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000546SunOS*)
547 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000548 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000549 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000550esac
551
Martin v. Löwise8964d42001-03-06 12:09:07 +0000552
Neil Schemenauer61c51152001-01-26 16:18:16 +0000553AC_SUBST(LIBRARY)
554AC_MSG_CHECKING(LIBRARY)
555if test -z "$LIBRARY"
556then
557 LIBRARY='libpython$(VERSION).a'
558fi
559AC_MSG_RESULT($LIBRARY)
560
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000561# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000562# name of the library into which to insert object files). BLDLIBRARY is also
563# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
564# is blank as the main program is not linked directly against LDLIBRARY.
565# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
566# systems without shared libraries, LDLIBRARY is the same as LIBRARY
567# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
568# DLLLIBRARY is the shared (i.e., DLL) library.
569#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000570# RUNSHARED is used to run shared python without installed libraries
571#
572# INSTSONAME is the name of the shared library that will be use to install
573# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000574AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000575AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000576AC_SUBST(BLDLIBRARY)
577AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578AC_SUBST(INSTSONAME)
579AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000580LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000581BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000582INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000583DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000584LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000585RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000586
Guido van Rossumfb842551997-08-06 23:42:07 +0000587# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000588# If CXX is set, and if it is needed to link a main function that was
589# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
590# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000591# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000592# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000593AC_SUBST(LINKCC)
594AC_MSG_CHECKING(LINKCC)
595if test -z "$LINKCC"
596then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000597 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000598 case $ac_sys_system in
599 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000600 exp_extra="\"\""
601 if test $ac_sys_release -ge 5 -o \
602 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
603 exp_extra="."
604 fi
605 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000606 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000607 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000608 QNX*)
609 # qcc must be used because the other compilers do not
610 # support -N.
611 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000612 esac
613fi
614AC_MSG_RESULT($LINKCC)
615
Tarek Ziadébe720e02009-05-09 11:55:12 +0000616# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
617# make sure we default having it set to "no": this is used by
618# distutils.unixccompiler to know if it should add --enable-new-dtags
619# to linker command lines, and failing to detect GNU ld simply results
620# in the same bahaviour as before.
621AC_SUBST(GNULD)
622AC_MSG_CHECKING(for GNU ld)
623ac_prog=ld
624if test "$GCC" = yes; then
625 ac_prog=`$CC -print-prog-name=ld`
626fi
627case `"$ac_prog" -V 2>&1 < /dev/null` in
628 *GNU*)
629 GNULD=yes;;
630 *)
631 GNULD=no;;
632esac
633AC_MSG_RESULT($GNULD)
634
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635AC_MSG_CHECKING(for --enable-shared)
636AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000637 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000638
Martin v. Löwis1142de32002-03-29 16:28:31 +0000639if test -z "$enable_shared"
640then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000641 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000642 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000643 enable_shared="yes";;
644 *)
645 enable_shared="no";;
646 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647fi
648AC_MSG_RESULT($enable_shared)
649
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000650AC_MSG_CHECKING(for --enable-profiling)
651AC_ARG_ENABLE(profiling,
652 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
653[ac_save_cc="$CC"
654 CC="$CC -pg"
655 AC_TRY_RUN([int main() { return 0; }],
656 ac_enable_profiling="yes",
657 ac_enable_profiling="no",
658 ac_enable_profiling="no")
659 CC="$ac_save_cc"])
660AC_MSG_RESULT($ac_enable_profiling)
661
662case "$ac_enable_profiling" in
663 "yes")
664 BASECFLAGS="-pg $BASECFLAGS"
665 LDFLAGS="-pg $LDFLAGS"
666 ;;
667esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000668
669AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000670
Guido van Rossumb8552162001-09-05 14:58:11 +0000671# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
672# library that we build, but we do not want to link against it (we
673# will find it with a -framework option). For this reason there is an
674# extra variable BLDLIBRARY against which Python and the extension
675# modules are linked, BLDLIBRARY. This is normally the same as
676# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000677if test "$enable_framework"
678then
679 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000680 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000681 BLDLIBRARY=''
682else
683 BLDLIBRARY='$(LDLIBRARY)'
684fi
685
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686# Other platforms follow
687if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000688 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000689 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 CYGWIN*)
691 LDLIBRARY='libpython$(VERSION).dll.a'
692 DLLLIBRARY='libpython$(VERSION).dll'
693 ;;
694 SunOS*)
695 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000696 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000697 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000698 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000699 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000700 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000701 LDLIBRARY='libpython$(VERSION).so'
702 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000703 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000704 case $ac_sys_system in
705 FreeBSD*)
706 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
707 ;;
708 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709 INSTSONAME="$LDLIBRARY".$SOVERSION
710 ;;
711 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000712 case `uname -m` in
713 ia64)
714 LDLIBRARY='libpython$(VERSION).so'
715 ;;
716 *)
717 LDLIBRARY='libpython$(VERSION).sl'
718 ;;
719 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000720 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000721 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000722 ;;
723 OSF*)
724 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000725 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000726 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000727 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000728 atheos*)
729 LDLIBRARY='libpython$(VERSION).so'
730 BLDLIBRARY='-L. -lpython$(VERSION)'
731 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
732 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000733 Darwin*)
734 LDLIBRARY='libpython$(VERSION).dylib'
735 BLDLIBRARY='-L. -lpython$(VERSION)'
736 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
737 ;;
738
Martin v. Löwis1142de32002-03-29 16:28:31 +0000739 esac
Jason Tishler30765592003-09-04 11:04:06 +0000740else # shared is disabled
741 case $ac_sys_system in
742 CYGWIN*)
743 BLDLIBRARY='$(LIBRARY)'
744 LDLIBRARY='libpython$(VERSION).dll.a'
745 ;;
746 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000747fi
748
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000749AC_MSG_RESULT($LDLIBRARY)
750
Guido van Rossum627b2d71993-12-24 10:39:16 +0000751AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000752AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000753AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000754
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000755# tweak ARFLAGS only if the user didn't set it on the command line
756AC_SUBST(ARFLAGS)
757if test -z "$ARFLAGS"
758then
759 ARFLAGS="rc"
760fi
761
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000762AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000763AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000764if test $SVNVERSION = found
765then
766 SVNVERSION="svnversion \$(srcdir)"
767else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000768 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000769fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000770
Neil Schemenauera42c8272001-03-31 00:01:55 +0000771case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000772bsdos*|hp*|HP*)
773 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000774 if test -z "$INSTALL"
775 then
776 INSTALL="${srcdir}/install-sh -c"
777 fi
778esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000779AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000780
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000781# Not every filesystem supports hard links
782AC_SUBST(LN)
783if test -z "$LN" ; then
784 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000785 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000786 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000787 *) LN=ln;;
788 esac
789fi
790
Fred Drake9f715822001-07-11 06:27:00 +0000791# Check for --with-pydebug
792AC_MSG_CHECKING(for --with-pydebug)
793AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000794 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
795[
Fred Drake9f715822001-07-11 06:27:00 +0000796if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000797then
798 AC_DEFINE(Py_DEBUG, 1,
799 [Define if you want to build an interpreter with many run-time checks.])
800 AC_MSG_RESULT(yes);
801 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000802else AC_MSG_RESULT(no); Py_DEBUG='false'
803fi],
804[AC_MSG_RESULT(no)])
805
Skip Montanarodecc6a42003-01-01 20:07:49 +0000806# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
807# merged with this chunk of code?
808
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000809# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000810# ------------------------
811# (The following bit of code is complicated enough - please keep things
812# indented properly. Just pretend you're editing Python code. ;-)
813
814# There are two parallel sets of case statements below, one that checks to
815# see if OPT was set and one that does BASECFLAGS setting based upon
816# compiler and platform. BASECFLAGS tweaks need to be made even if the
817# user set OPT.
818
819# tweak OPT based on compiler and platform, only if the user didn't set
820# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000821AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000822if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000823then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000824 case $GCC in
825 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000826 if test "$CC" != 'g++' ; then
827 STRICT_PROTO="-Wstrict-prototypes"
828 fi
Christian Heimes38053212007-12-14 01:24:44 +0000829 # For gcc 4.x we need to use -fwrapv so lets check if its supported
830 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
831 WRAP="-fwrapv"
832 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000833 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000834 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000835 if test "$Py_DEBUG" = 'true' ; then
836 # Optimization messes up debuggers, so turn it off for
837 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000838 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000839 else
Christian Heimes38053212007-12-14 01:24:44 +0000840 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000841 fi
842 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000843 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000844 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000845 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000846 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000847 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000848 SCO_SV*) OPT="$OPT -m486 -DSCO5"
849 ;;
850 esac
Fred Drake9f715822001-07-11 06:27:00 +0000851 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000853 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854 OPT="-O"
855 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000856 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857
858 # The current (beta) Monterey compiler dies with optimizations
859 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000860 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861 Monterey*)
862 OPT=""
863 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000864 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000865
Guido van Rossum4e8af441994-08-19 15:33:54 +0000866fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000867
Skip Montanarodecc6a42003-01-01 20:07:49 +0000868AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000869
870# The -arch flags for universal builds on OSX
871UNIVERSAL_ARCH_FLAGS=
872AC_SUBST(UNIVERSAL_ARCH_FLAGS)
873
Skip Montanarodecc6a42003-01-01 20:07:49 +0000874# tweak BASECFLAGS based on compiler and platform
875case $GCC in
876yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000877 # Python violates C99 rules, by casting between incompatible
878 # pointer types. GCC may generate bad code as a result of that,
879 # so use -fno-strict-aliasing if supported.
880 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
881 ac_save_cc="$CC"
882 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000883 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000884 AC_TRY_RUN([int main() { return 0; }],
885 ac_cv_no_strict_aliasing_ok=yes,
886 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000887 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000888 CC="$ac_save_cc"
889 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
890 if test $ac_cv_no_strict_aliasing_ok = yes
891 then
892 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
893 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000894
895 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
896 # support. Without this, treatment of subnormals doesn't follow
897 # the standard.
898 case $ac_sys_machine in
899 alpha*)
900 BASECFLAGS="$BASECFLAGS -mieee"
901 ;;
902 esac
903
Skip Montanarodecc6a42003-01-01 20:07:49 +0000904 case $ac_sys_system in
905 SCO_SV*)
906 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
907 ;;
908 # is there any other compiler on Darwin besides gcc?
909 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000910 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
911 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000912
913
Thomas Wouters477c8d52006-05-27 19:21:47 +0000914 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000915 UNIVERSAL_ARCH_FLAGS=""
916 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
917 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000918 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000919
920 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
921 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000922 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000923
924 elif test "$UNIVERSAL_ARCHS" = "all" ; then
925 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000926 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000927
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000928 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
929 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
930 ARCH_RUN_32BIT="arch -i386"
931
932 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
933 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
934 ARCH_RUN_32BIT="arch -i386 -ppc"
935
Georg Brandlfcaf9102008-07-16 02:17:56 +0000936 else
937 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
938
939 fi
940
941
942 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000943 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000944 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
945 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
946 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000947 fi
948
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000949 # Calculate the right deployment target for this build.
950 #
951 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
952 if test ${cur_target} '>' 10.2; then
953 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000954 if test ${enable_universalsdk}; then
955 if test "${UNIVERSAL_ARCHS}" = "all"; then
956 # Ensure that the default platform for a
957 # 4-way universal build is OSX 10.5,
958 # that's the first OS release where
959 # 4-way builds make sense.
960 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000961
962 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
963 cur_target='10.5'
964
965 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
966 cur_target='10.5'
967
968 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
969 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000970 fi
971 else
972 if test `arch` = "i386"; then
973 # On Intel macs default to a deployment
974 # target of 10.4, that's the first OSX
975 # release with Intel support.
976 cur_target="10.4"
977 fi
978 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000979 fi
980 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
981
982 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
983 # environment with a value that is the same as what we'll use
984 # in the Makefile to ensure that we'll get the same compiler
985 # environment during configure and build time.
986 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
987 export MACOSX_DEPLOYMENT_TARGET
988 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
989
Skip Montanarodecc6a42003-01-01 20:07:49 +0000990 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000991 OSF*)
992 BASECFLAGS="$BASECFLAGS -mieee"
993 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000994 esac
995 ;;
996
997*)
998 case $ac_sys_system in
999 OpenUNIX*|UnixWare*)
1000 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1001 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001002 OSF*)
1003 BASECFLAGS="$BASECFLAGS -ieee -std"
1004 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001005 SCO_SV*)
1006 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1007 ;;
1008 esac
1009 ;;
1010esac
1011
Fred Drakee1ceaa02001-12-04 20:55:47 +00001012if test "$Py_DEBUG" = 'true'; then
1013 :
1014else
1015 OPT="-DNDEBUG $OPT"
1016fi
1017
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001018if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001019then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001020 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001021fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001022
Neal Norwitz020c46a2006-01-07 21:39:28 +00001023# disable check for icc since it seems to pass, but generates a warning
1024if test "$CC" = icc
1025then
1026 ac_cv_opt_olimit_ok=no
1027fi
1028
Guido van Rossum91922671997-10-09 20:24:13 +00001029AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1030AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1031[ac_save_cc="$CC"
1032CC="$CC -OPT:Olimit=0"
1033AC_TRY_RUN([int main() { return 0; }],
1034 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001035 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001036 ac_cv_opt_olimit_ok=no)
1037CC="$ac_save_cc"])
1038AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001039if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001040 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001041 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1042 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1043 # environment?
1044 Darwin*)
1045 ;;
1046 *)
1047 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1048 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001049 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001050else
1051 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1052 AC_CACHE_VAL(ac_cv_olimit_ok,
1053 [ac_save_cc="$CC"
1054 CC="$CC -Olimit 1500"
1055 AC_TRY_RUN([int main() { return 0; }],
1056 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001057 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001058 ac_cv_olimit_ok=no)
1059 CC="$ac_save_cc"])
1060 AC_MSG_RESULT($ac_cv_olimit_ok)
1061 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001062 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001063 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001064fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001065
Thomas Wouters89f507f2006-12-13 04:49:30 +00001066# Check whether GCC supports PyArg_ParseTuple format
1067if test "$GCC" = "yes"
1068then
1069 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1070 save_CFLAGS=$CFLAGS
1071 CFLAGS="$CFLAGS -Werror"
1072 AC_TRY_COMPILE([
1073 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1074 ],,
1075 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1076 AC_MSG_RESULT(yes),
1077 AC_MSG_RESULT(no)
1078 )
1079 CFLAGS=$save_CFLAGS
1080fi
1081
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001082# On some compilers, pthreads are available without further options
1083# (e.g. MacOS X). On some of these systems, the compiler will not
1084# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1085# So we have to see first whether pthreads are available without
1086# options before we can check whether -Kpthread improves anything.
1087AC_MSG_CHECKING(whether pthreads are available without options)
1088AC_CACHE_VAL(ac_cv_pthread_is_default,
1089[AC_TRY_RUN([
1090#include <pthread.h>
1091
1092void* routine(void* p){return NULL;}
1093
1094int main(){
1095 pthread_t p;
1096 if(pthread_create(&p,NULL,routine,NULL)!=0)
1097 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001098 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001099 return 0;
1100}
1101],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001102[
1103 ac_cv_pthread_is_default=yes
1104 ac_cv_kthread=no
1105 ac_cv_pthread=no
1106],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001107 ac_cv_pthread_is_default=no,
1108 ac_cv_pthread_is_default=no)
1109])
1110AC_MSG_RESULT($ac_cv_pthread_is_default)
1111
1112
1113if test $ac_cv_pthread_is_default = yes
1114then
1115 ac_cv_kpthread=no
1116else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001117# -Kpthread, if available, provides the right #defines
1118# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001119# Some compilers won't report that they do not support -Kpthread,
1120# so we need to run a program to see whether it really made the
1121# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001122AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1123AC_CACHE_VAL(ac_cv_kpthread,
1124[ac_save_cc="$CC"
1125CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001126AC_TRY_RUN([
1127#include <pthread.h>
1128
1129void* routine(void* p){return NULL;}
1130
1131int main(){
1132 pthread_t p;
1133 if(pthread_create(&p,NULL,routine,NULL)!=0)
1134 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001135 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001136 return 0;
1137}
1138],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001139 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001140 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001141 ac_cv_kpthread=no)
1142CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001143AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001144fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001145
Skip Montanarod8d39a02003-07-10 20:44:10 +00001146if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001147then
1148# -Kthread, if available, provides the right #defines
1149# and linker options to make pthread_create available
1150# Some compilers won't report that they do not support -Kthread,
1151# so we need to run a program to see whether it really made the
1152# function available.
1153AC_MSG_CHECKING(whether $CC accepts -Kthread)
1154AC_CACHE_VAL(ac_cv_kthread,
1155[ac_save_cc="$CC"
1156CC="$CC -Kthread"
1157AC_TRY_RUN([
1158#include <pthread.h>
1159
1160void* routine(void* p){return NULL;}
1161
1162int main(){
1163 pthread_t p;
1164 if(pthread_create(&p,NULL,routine,NULL)!=0)
1165 return 1;
1166 (void)pthread_detach(p);
1167 return 0;
1168}
1169],
1170 ac_cv_kthread=yes,
1171 ac_cv_kthread=no,
1172 ac_cv_kthread=no)
1173CC="$ac_save_cc"])
1174AC_MSG_RESULT($ac_cv_kthread)
1175fi
1176
Skip Montanarod8d39a02003-07-10 20:44:10 +00001177if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001178then
1179# -pthread, if available, provides the right #defines
1180# and linker options to make pthread_create available
1181# Some compilers won't report that they do not support -pthread,
1182# so we need to run a program to see whether it really made the
1183# function available.
1184AC_MSG_CHECKING(whether $CC accepts -pthread)
1185AC_CACHE_VAL(ac_cv_thread,
1186[ac_save_cc="$CC"
1187CC="$CC -pthread"
1188AC_TRY_RUN([
1189#include <pthread.h>
1190
1191void* routine(void* p){return NULL;}
1192
1193int main(){
1194 pthread_t p;
1195 if(pthread_create(&p,NULL,routine,NULL)!=0)
1196 return 1;
1197 (void)pthread_detach(p);
1198 return 0;
1199}
1200],
1201 ac_cv_pthread=yes,
1202 ac_cv_pthread=no,
1203 ac_cv_pthread=no)
1204CC="$ac_save_cc"])
1205AC_MSG_RESULT($ac_cv_pthread)
1206fi
1207
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001208# If we have set a CC compiler flag for thread support then
1209# check if it works for CXX, too.
1210ac_cv_cxx_thread=no
1211if test ! -z "$CXX"
1212then
1213AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1214ac_save_cxx="$CXX"
1215
1216if test "$ac_cv_kpthread" = "yes"
1217then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001218 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001219 ac_cv_cxx_thread=yes
1220elif test "$ac_cv_kthread" = "yes"
1221then
1222 CXX="$CXX -Kthread"
1223 ac_cv_cxx_thread=yes
1224elif test "$ac_cv_pthread" = "yes"
1225then
1226 CXX="$CXX -pthread"
1227 ac_cv_cxx_thread=yes
1228fi
1229
1230if test $ac_cv_cxx_thread = yes
1231then
1232 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1233 $CXX -c conftest.$ac_ext 2>&5
1234 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1235 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1236 then
1237 ac_cv_cxx_thread=yes
1238 else
1239 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001240 fi
1241 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001242fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001243AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001244fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001245CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001246
Fred Drakece81d592000-07-09 14:39:29 +00001247dnl # check for ANSI or K&R ("traditional") preprocessor
1248dnl AC_MSG_CHECKING(for C preprocessor type)
1249dnl AC_TRY_COMPILE([
1250dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1251dnl int foo;
1252dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1253dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1254dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001255
Guido van Rossum627b2d71993-12-24 10:39:16 +00001256# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001257AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001258AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1259fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001260ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001261shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001262unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001263sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1264sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001265sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001266sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001267sys/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 +00001268sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001269bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001270AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001271AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001272
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001273# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001274AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001275#ifdef HAVE_CURSES_H
1276#include <curses.h>
1277#endif
1278])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001279
Martin v. Löwis11017b12006-01-14 18:12:57 +00001280# On Linux, netlink.h requires asm/types.h
1281AC_CHECK_HEADERS(linux/netlink.h,,,[
1282#ifdef HAVE_ASM_TYPES_H
1283#include <asm/types.h>
1284#endif
1285#ifdef HAVE_SYS_SOCKET_H
1286#include <sys/socket.h>
1287#endif
1288])
1289
Guido van Rossum627b2d71993-12-24 10:39:16 +00001290# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001291was_it_defined=no
1292AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001293AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1294 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1295])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001296AC_MSG_RESULT($was_it_defined)
1297
Neal Norwitz11690112002-07-30 01:08:28 +00001298# Check whether using makedev requires defining _OSF_SOURCE
1299AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001300AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001301 [ makedev(0, 0) ],
1302 ac_cv_has_makedev=yes,
1303 ac_cv_has_makedev=no)
1304if test "$ac_cv_has_makedev" = "no"; then
1305 # we didn't link, try if _OSF_SOURCE will allow us to link
1306 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001307#define _OSF_SOURCE 1
1308#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001309 ],
1310 [ makedev(0, 0) ],
1311 ac_cv_has_makedev=yes,
1312 ac_cv_has_makedev=no)
1313 if test "$ac_cv_has_makedev" = "yes"; then
1314 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1315 fi
1316fi
1317AC_MSG_RESULT($ac_cv_has_makedev)
1318if test "$ac_cv_has_makedev" = "yes"; then
1319 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1320fi
1321
Martin v. Löwis399a6892002-10-04 10:22:02 +00001322# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1323# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1324# defined, but the compiler does not support pragma redefine_extname,
1325# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1326# structures (such as rlimit64) without declaring them. As a
1327# work-around, disable LFS on such configurations
1328
1329use_lfs=yes
1330AC_MSG_CHECKING(Solaris LFS bug)
1331AC_TRY_COMPILE([
1332#define _LARGEFILE_SOURCE 1
1333#define _FILE_OFFSET_BITS 64
1334#include <sys/resource.h>
1335],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1336AC_MSG_RESULT($sol_lfs_bug)
1337if test "$sol_lfs_bug" = "yes"; then
1338 use_lfs=no
1339fi
1340
1341if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001342# Two defines needed to enable largefile support on various platforms
1343# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001344AC_DEFINE(_LARGEFILE_SOURCE, 1,
1345[This must be defined on some systems to enable large file support.])
1346AC_DEFINE(_FILE_OFFSET_BITS, 64,
1347[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001348fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001349
Guido van Rossum300fda71996-08-19 21:58:16 +00001350# Add some code to confdefs.h so that the test for off_t works on SCO
1351cat >> confdefs.h <<\EOF
1352#if defined(SCO_DS)
1353#undef _OFF_T
1354#endif
1355EOF
1356
Guido van Rossumef2255b2000-03-10 22:30:29 +00001357# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001358AC_TYPE_MODE_T
1359AC_TYPE_OFF_T
1360AC_TYPE_PID_T
1361AC_TYPE_SIGNAL
1362AC_TYPE_SIZE_T
1363AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001364AC_TYPE_UINT32_T
1365AC_TYPE_UINT64_T
1366AC_TYPE_INT32_T
1367AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001368AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001369 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001370
Guido van Rossumef2255b2000-03-10 22:30:29 +00001371# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001372# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001373AC_CHECK_SIZEOF(int, 4)
1374AC_CHECK_SIZEOF(long, 4)
1375AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001376AC_CHECK_SIZEOF(short, 2)
1377AC_CHECK_SIZEOF(float, 4)
1378AC_CHECK_SIZEOF(double, 8)
1379AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001380AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001381AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001382
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001383AC_MSG_CHECKING(for long long support)
1384have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001385AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1386 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1387 have_long_long=yes
1388])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001389AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001390if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001391AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001392fi
1393
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001394AC_MSG_CHECKING(for long double support)
1395have_long_double=no
1396AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1397 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1398 have_long_double=yes
1399])
1400AC_MSG_RESULT($have_long_double)
1401if test "$have_long_double" = yes ; then
1402AC_CHECK_SIZEOF(long double, 16)
1403fi
1404
1405
Thomas Woutersb2137042007-02-01 18:02:27 +00001406AC_MSG_CHECKING(for _Bool support)
1407have_c99_bool=no
1408AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1409 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1410 have_c99_bool=yes
1411])
1412AC_MSG_RESULT($have_c99_bool)
1413if test "$have_c99_bool" = yes ; then
1414AC_CHECK_SIZEOF(_Bool, 1)
1415fi
1416
Thomas Wouters89f507f2006-12-13 04:49:30 +00001417AC_CHECK_TYPES(uintptr_t,
1418 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1419 [], [#ifdef HAVE_STDINT_H
1420 #include <stdint.h>
1421 #endif])
1422
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001423AC_CHECK_SIZEOF(off_t, [], [
1424#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001425#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001426#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001427])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001428
1429AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001430if test "$have_long_long" = yes -a \
1431 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1432 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001433 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1434 [Defined to enable large file support when an off_t is bigger than a long
1435 and long long is available and at least as big as an off_t. You may need
1436 to add some flags for configuration and compilation to enable this mode.
1437 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001438 AC_MSG_RESULT(yes)
1439else
1440 AC_MSG_RESULT(no)
1441fi
1442
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001443AC_CHECK_SIZEOF(time_t, [], [
1444#ifdef HAVE_SYS_TYPES_H
1445#include <sys/types.h>
1446#endif
1447#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001448#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001449#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001450])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001451
Trent Mick635f6fb2000-08-23 21:33:05 +00001452# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001453ac_save_cc="$CC"
1454if test "$ac_cv_kpthread" = "yes"
1455then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001456elif test "$ac_cv_kthread" = "yes"
1457then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001458elif test "$ac_cv_pthread" = "yes"
1459then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001460fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001461
Trent Mick635f6fb2000-08-23 21:33:05 +00001462AC_MSG_CHECKING(for pthread_t)
1463have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001464AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001465AC_MSG_RESULT($have_pthread_t)
1466if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001467 AC_CHECK_SIZEOF(pthread_t, [], [
1468#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001469#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001470#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001471 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001472fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001473CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001474
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001475AC_SUBST(OTHER_LIBTOOL_OPT)
1476case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001477 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001478 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1479 ;;
1480 Darwin/*)
1481 OTHER_LIBTOOL_OPT=""
1482 ;;
1483esac
1484
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001485
1486ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001487AC_SUBST(LIBTOOL_CRUFT)
1488case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001489 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001490 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1491 if test "${enable_universalsdk}"; then
1492 :
1493 else
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001494 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001495 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001496 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001497 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001498 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001499 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1500 if test ${gcc_version} '<' 4.0
1501 then
1502 LIBTOOL_CRUFT="-lcc_dynamic"
1503 else
1504 LIBTOOL_CRUFT=""
1505 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001506 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001507 #include <unistd.h>
1508 int main(int argc, char*argv[])
1509 {
1510 if (sizeof(long) == 4) {
1511 return 0;
1512 } else {
1513 return 1;
1514 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001515 }
1516 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001517 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001518 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001519
1520 if test "${ac_osx_32bit}" = "yes"; then
1521 case `arch` in
1522 i386)
1523 MACOSX_DEFAULT_ARCH="i386"
1524 ;;
1525 ppc)
1526 MACOSX_DEFAULT_ARCH="ppc"
1527 ;;
1528 *)
1529 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1530 ;;
1531 esac
1532 else
1533 case `arch` in
1534 i386)
1535 MACOSX_DEFAULT_ARCH="x86_64"
1536 ;;
1537 ppc)
1538 MACOSX_DEFAULT_ARCH="ppc64"
1539 ;;
1540 *)
1541 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1542 ;;
1543 esac
1544
1545 #ARCH_RUN_32BIT="true"
1546 fi
1547
1548 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001549 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001550 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001551esac
1552
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553AC_MSG_CHECKING(for --enable-framework)
1554if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001555then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001556 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001557 # -F. is needed to allow linking to the framework while
1558 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001559 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1560 [Define if you want to produce an OpenStep/Rhapsody framework
1561 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001562 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001563 if test $enable_shared = "yes"
1564 then
1565 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1566 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001567else
1568 AC_MSG_RESULT(no)
1569fi
1570
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001571AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001572case $ac_sys_system/$ac_sys_release in
1573 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001574 AC_DEFINE(WITH_DYLD, 1,
1575 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1576 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1577 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001578 AC_MSG_RESULT(always on for Darwin)
1579 ;;
1580 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001581 AC_MSG_RESULT(no)
1582 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001583esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584
Guido van Rossumac405f61994-09-12 10:56:06 +00001585# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001586AC_SUBST(SO)
1587AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001588AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001589AC_SUBST(CCSHARED)
1590AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001591# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001592# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001593AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001594if test -z "$SO"
1595then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001596 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001597 hp*|HP*)
1598 case `uname -m` in
1599 ia64) SO=.so;;
1600 *) SO=.sl;;
1601 esac
1602 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001603 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001604 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001605 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001606else
1607 # this might also be a termcap variable, see #610332
1608 echo
1609 echo '====================================================================='
1610 echo '+ +'
1611 echo '+ WARNING: You have set SO in your environment. +'
1612 echo '+ Do you really mean to change the extension for shared libraries? +'
1613 echo '+ Continuing in 10 seconds to let you to ponder. +'
1614 echo '+ +'
1615 echo '====================================================================='
1616 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001617fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001618AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001619
Thomas Wouters477c8d52006-05-27 19:21:47 +00001620AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001621# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001622# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001623# (Shared libraries in this instance are shared modules to be loaded into
1624# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001625AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001626if test -z "$LDSHARED"
1627then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001628 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001629 AIX*)
1630 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001631 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001632 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001633 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001634 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001635 SunOS/5*)
1636 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001637 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001638 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001639 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001640 hp*|HP*)
1641 if test "$GCC" = "yes"
1642 then LDSHARED='$(CC) -shared'
1643 else LDSHARED='ld -b';
1644 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001645 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001646 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001647 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1648 if test "$enable_framework" ; then
1649 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001650 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1651 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001652 else
1653 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001654 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001655 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001656 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001657 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1658 if test "$enable_framework" ; then
1659 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001660 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1661 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001662 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001663 # No framework, use the Python app as bundle-loader
1664 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001665 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001666 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001667 Darwin/*)
1668 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1669 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001670
Georg Brandlfcaf9102008-07-16 02:17:56 +00001671 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001672 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001673 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001674 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001675 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001676 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1677 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001678 else
1679 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1680 if test "$enable_framework" ; then
1681 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001682 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1683 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001684 else
1685 # No framework, use the Python app as bundle-loader
1686 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1687 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1688 fi
1689 fi
1690 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001691 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001692 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001693 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001694 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001695 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001696 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001697 else
1698 LDSHARED="ld -Bshareable ${LDFLAGS}"
1699 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001700 OpenBSD*)
1701 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1702 then
1703 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1704 else
1705 case `uname -r` in
1706 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1707 LDSHARED="ld -Bshareable ${LDFLAGS}"
1708 ;;
1709 *)
1710 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1711 ;;
1712 esac
1713 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001714 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001715 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001716 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001717 then LDSHARED='$(CC) -shared'
1718 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001719 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001720 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001721 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001722 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001723 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001724 *) LDSHARED="ld";;
1725 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001726fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001727AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001728BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001729# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001730# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001731AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001732if test -z "$CCSHARED"
1733then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001734 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001735 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001736 then CCSHARED="-fPIC";
1737 elif test `uname -p` = sparc;
1738 then CCSHARED="-xcode=pic32";
1739 else CCSHARED="-Kpic";
1740 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001741 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001742 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001743 else CCSHARED="+z";
1744 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001745 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001746 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001747 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001748 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001749 if test "$GCC" = "yes"
1750 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001751 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001752 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001753 SCO_SV*)
1754 if test "$GCC" = "yes"
1755 then CCSHARED="-fPIC"
1756 else CCSHARED="-Kpic -belf"
1757 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001758 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001759 IRIX*/6*) case $CC in
1760 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001761 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001762 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001763 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001764 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001765fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001766AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001767# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001768# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001769AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001770if test -z "$LINKFORSHARED"
1771then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001772 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001773 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001774 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001775 LINKFORSHARED="-Wl,-E -Wl,+s";;
1776# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001777 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001778 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001779 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001780 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001781 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001782 if test "$enable_framework"
1783 then
Jack Jansenda49e192005-01-07 13:08:22 +00001784 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001785 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001786 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001787 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001788 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001789 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001790 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001791 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1792 then
1793 LINKFORSHARED="-Wl,--export-dynamic"
1794 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001795 SunOS/5*) case $CC in
1796 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001797 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001798 then
1799 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001800 fi;;
1801 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001802 CYGWIN*)
1803 if test $enable_shared = "no"
1804 then
1805 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1806 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001807 QNX*)
1808 # -Wl,-E causes the symbols to be added to the dynamic
1809 # symbol table so that they can be found when a module
1810 # is loaded. -N 2048K causes the stack size to be set
1811 # to 2048 kilobytes so that the stack doesn't overflow
1812 # when running test_compile.py.
1813 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001814 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001815fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001816AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001817
Georg Brandl93de2162008-07-16 02:21:06 +00001818
Neil Schemenauer61c51152001-01-26 16:18:16 +00001819AC_SUBST(CFLAGSFORSHARED)
1820AC_MSG_CHECKING(CFLAGSFORSHARED)
1821if test ! "$LIBRARY" = "$LDLIBRARY"
1822then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001823 case $ac_sys_system in
1824 CYGWIN*)
1825 # Cygwin needs CCSHARED when building extension DLLs
1826 # but not when building the interpreter DLL.
1827 CFLAGSFORSHARED='';;
1828 *)
1829 CFLAGSFORSHARED='$(CCSHARED)'
1830 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001831fi
1832AC_MSG_RESULT($CFLAGSFORSHARED)
1833
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001834# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1835# library (with --enable-shared).
1836# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001837# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1838# if it is not required, since it creates a dependency of the shared library
1839# to LIBS. This, in turn, means that applications linking the shared libpython
1840# don't need to link LIBS explicitly. The default should be only changed
1841# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001842AC_SUBST(SHLIBS)
1843AC_MSG_CHECKING(SHLIBS)
1844case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001845 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001846 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001847esac
1848AC_MSG_RESULT($SHLIBS)
1849
1850
Guido van Rossum627b2d71993-12-24 10:39:16 +00001851# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001852AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1853AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001854
Georg Brandleee31162008-12-07 15:15:22 +00001855# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001856if test "$with_threads" = "yes" -o -z "$with_threads"; then
1857 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1858 # posix4 on Solaris 2.6
1859 # pthread (first!) on Linux
1860fi
1861
Martin v. Löwis19d17342003-06-14 21:03:05 +00001862# check if we need libintl for locale functions
1863AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001864 [AC_DEFINE(WITH_LIBINTL, 1,
1865 [Define to 1 if libintl is needed for locale functions.])
1866 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001867
1868# checks for system dependent C++ extensions support
1869case "$ac_sys_system" in
1870 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1871 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1872 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001873 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1874 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1875 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001876 AC_MSG_RESULT(yes)],
1877 [AC_MSG_RESULT(no)]);;
1878 *) ;;
1879esac
1880
Guido van Rossum70c7f481998-03-26 18:44:10 +00001881# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001882AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001883AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001884
Guido van Rossumc5a39031996-07-31 17:35:03 +00001885AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001886AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001887 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1888[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001889AC_MSG_RESULT($withval)
1890LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001891],
1892[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001893
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001894# Check for use of the system libffi library
1895AC_MSG_CHECKING(for --with-system-ffi)
1896AC_ARG_WITH(system_ffi,
1897 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1898
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001899AC_MSG_RESULT($with_system_ffi)
1900
Matthias Klose55708cc2009-04-30 08:06:49 +00001901# Check for --with-dbmliborder
1902AC_MSG_CHECKING(for --with-dbmliborder)
1903AC_ARG_WITH(dbmliborder,
1904 AC_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
1905[
1906if test x$with_dbmliborder = xyes
1907then
1908AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1909else
1910 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1911 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1912 then
1913 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1914 fi
1915 done
1916fi])
1917AC_MSG_RESULT($with_dbmliborder)
1918
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001919# Determine if signalmodule should be used.
1920AC_SUBST(USE_SIGNAL_MODULE)
1921AC_SUBST(SIGNAL_OBJS)
1922AC_MSG_CHECKING(for --with-signal-module)
1923AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001924 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001925
1926if test -z "$with_signal_module"
1927then with_signal_module="yes"
1928fi
1929AC_MSG_RESULT($with_signal_module)
1930
1931if test "${with_signal_module}" = "yes"; then
1932 USE_SIGNAL_MODULE=""
1933 SIGNAL_OBJS=""
1934else
1935 USE_SIGNAL_MODULE="#"
1936 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1937fi
1938
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001939# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001940AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001941USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001942
Guido van Rossum54d93d41997-01-22 20:51:58 +00001943AC_MSG_CHECKING(for --with-dec-threads)
1944AC_SUBST(LDLAST)
1945AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001946 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1947[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001948AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001949LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001950if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001951 with_thread="$withval";
1952fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001953[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001954
Martin v. Löwis11437992002-04-12 09:54:03 +00001955# Templates for things AC_DEFINEd more than once.
1956# For a single AC_DEFINE, no template is needed.
1957AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1958AH_TEMPLATE(_REENTRANT,
1959 [Define to force use of thread-safe errno, h_errno, and other functions])
1960AH_TEMPLATE(WITH_THREAD,
1961 [Define if you want to compile in rudimentary thread support])
1962
Guido van Rossum54d93d41997-01-22 20:51:58 +00001963AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001965AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001966 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001967
Barry Warsawc0d24d82000-06-29 16:12:00 +00001968# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001969dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001970AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001971 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1972 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001973
1974if test -z "$with_threads"
1975then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001976fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001977AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001978
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001979AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001980if test "$with_threads" = "no"
1981then
1982 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001983elif test "$ac_cv_pthread_is_default" = yes
1984then
1985 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001986 # Defining _REENTRANT on system with POSIX threads should not hurt.
1987 AC_DEFINE(_REENTRANT)
1988 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001989 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001990elif test "$ac_cv_kpthread" = "yes"
1991then
1992 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001993 if test "$ac_cv_cxx_thread" = "yes"; then
1994 CXX="$CXX -Kpthread"
1995 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001996 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001997 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001998 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001999elif test "$ac_cv_kthread" = "yes"
2000then
2001 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002002 if test "$ac_cv_cxx_thread" = "yes"; then
2003 CXX="$CXX -Kthread"
2004 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002005 AC_DEFINE(WITH_THREAD)
2006 posix_threads=yes
2007 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002008elif test "$ac_cv_pthread" = "yes"
2009then
2010 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002011 if test "$ac_cv_cxx_thread" = "yes"; then
2012 CXX="$CXX -pthread"
2013 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002014 AC_DEFINE(WITH_THREAD)
2015 posix_threads=yes
2016 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002017else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002018 if test ! -z "$with_threads" -a -d "$with_threads"
2019 then LDFLAGS="$LDFLAGS -L$with_threads"
2020 fi
2021 if test ! -z "$withval" -a -d "$withval"
2022 then LDFLAGS="$LDFLAGS -L$withval"
2023 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002024
2025 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002026 # define _POSIX_THREADS in unistd.h. Some apparently don't
2027 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002028 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2029 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002030 [
2031#include <unistd.h>
2032#ifdef _POSIX_THREADS
2033yes
2034#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002035 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2036 AC_MSG_RESULT($unistd_defines_pthreads)
2037
Martin v. Löwis130fb172001-07-19 11:00:41 +00002038 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002039 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2040 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002041 AC_DEFINE(HURD_C_THREADS, 1,
2042 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002043 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002044 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002045 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2046 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002047 AC_DEFINE(MACH_C_THREADS, 1,
2048 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002049 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002050 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002051 AC_ARG_WITH([pth],
2052 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2053 [AC_MSG_RESULT($withval)
2054 AC_DEFINE([WITH_THREAD])
2055 AC_DEFINE([HAVE_PTH], 1,
2056 [Define if you have GNU PTH threads.])
2057 LIBS="-lpth $LIBS"
2058 THREADOBJ="Python/thread.o"],
2059 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002060
2061 # Just looking for pthread_create in libpthread is not enough:
2062 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2063 # So we really have to include pthread.h, and then link.
2064 _libs=$LIBS
2065 LIBS="$LIBS -lpthread"
2066 AC_MSG_CHECKING([for pthread_create in -lpthread])
2067 AC_TRY_LINK([#include <pthread.h>
2068
2069void * start_routine (void *arg) { exit (0); }], [
2070pthread_create (NULL, NULL, start_routine, NULL)], [
2071 AC_MSG_RESULT(yes)
2072 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002073 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002074 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002075 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002076 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002077 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002078 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002079 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2080 AC_DEFINE(ATHEOS_THREADS, 1,
2081 [Define this if you have AtheOS threads.])
2082 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002083 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002084 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002085 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002086 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002087 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002088 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002089 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002090 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002091 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002092 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002093 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002094 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002095 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002096 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002097 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002098 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002099 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002100 ])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002101
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002102 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2103 LIBS="$LIBS -lmpc"
2104 THREADOBJ="Python/thread.o"
2105 USE_THREAD_MODULE=""])
2106
2107 if test "$posix_threads" != "yes"; then
2108 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2109 LIBS="$LIBS -lthread"
2110 THREADOBJ="Python/thread.o"
2111 USE_THREAD_MODULE=""])
2112 fi
2113
2114 if test "$USE_THREAD_MODULE" != "#"
2115 then
2116 # If the above checks didn't disable threads, (at least) OSF1
2117 # needs this '-threads' argument during linking.
2118 case $ac_sys_system in
2119 OSF1) LDLAST=-threads;;
2120 esac
2121 fi
2122fi
2123
2124if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002125 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002126 AC_DEFINE(_POSIX_THREADS, 1,
2127 [Define if you have POSIX threads,
2128 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002129 fi
2130
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002131 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2132 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002133 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2134 Defined for Solaris 2.6 bug in pthread header.)
2135 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002136 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002137 Define if the Posix semaphores do not work on your system)
2138 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002139 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2140 Define if the Posix semaphores do not work on your system)
2141 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002142 esac
2143
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002144 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2145 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2146 [AC_TRY_RUN([#include <pthread.h>
2147 void *foo(void *parm) {
2148 return NULL;
2149 }
2150 main() {
2151 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002152 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002153 if (pthread_attr_init(&attr)) exit(-1);
2154 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002155 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002156 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002157 }],
2158 ac_cv_pthread_system_supported=yes,
2159 ac_cv_pthread_system_supported=no,
2160 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002161 ])
2162 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2163 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002164 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002165 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002166 AC_CHECK_FUNCS(pthread_sigmask,
2167 [case $ac_sys_system in
2168 CYGWIN*)
2169 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2170 [Define if pthread_sigmask() does not work on your system.])
2171 ;;
2172 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002173fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002174
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002175
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002176# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002177AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002178AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002179AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002180[ --enable-ipv6 Enable ipv6 (with ipv4) support
2181 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002182[ case "$enableval" in
2183 no)
2184 AC_MSG_RESULT(no)
2185 ipv6=no
2186 ;;
2187 *) AC_MSG_RESULT(yes)
2188 AC_DEFINE(ENABLE_IPV6)
2189 ipv6=yes
2190 ;;
2191 esac ],
2192
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002193[
2194dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002195 AC_TRY_RUN([ /* AF_INET6 available check */
2196#include <sys/types.h>
2197#include <sys/socket.h>
2198main()
2199{
2200 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2201 exit(1);
2202 else
2203 exit(0);
2204}
2205],
2206 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002207 ipv6=yes,
2208 AC_MSG_RESULT(no)
2209 ipv6=no,
2210 AC_MSG_RESULT(no)
2211 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002212)
2213
2214if test "$ipv6" = "yes"; then
2215 AC_MSG_CHECKING(if RFC2553 API is available)
2216 AC_TRY_COMPILE([#include <sys/types.h>
2217#include <netinet/in.h>],
2218 [struct sockaddr_in6 x;
2219x.sin6_scope_id;],
2220 AC_MSG_RESULT(yes)
2221 ipv6=yes,
2222 AC_MSG_RESULT(no, IPv6 disabled)
2223 ipv6=no)
2224fi
2225
2226if test "$ipv6" = "yes"; then
2227 AC_DEFINE(ENABLE_IPV6)
2228fi
2229])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002230
2231ipv6type=unknown
2232ipv6lib=none
2233ipv6trylibc=no
2234
2235if test "$ipv6" = "yes"; then
2236 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002237 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2238 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002239 case $i in
2240 inria)
2241 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002242 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002243#include <netinet/in.h>
2244#ifdef IPV6_INRIA_VERSION
2245yes
2246#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002247 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002248 ;;
2249 kame)
2250 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002251 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252#include <netinet/in.h>
2253#ifdef __KAME__
2254yes
2255#endif],
2256 [ipv6type=$i;
2257 ipv6lib=inet6
2258 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002259 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002260 ;;
2261 linux-glibc)
2262 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002263 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002264#include <features.h>
2265#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2266yes
2267#endif],
2268 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002269 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002270 ;;
2271 linux-inet6)
2272 dnl http://www.v6.linux.or.jp/
2273 if test -d /usr/inet6; then
2274 ipv6type=$i
2275 ipv6lib=inet6
2276 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002277 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002278 fi
2279 ;;
2280 solaris)
2281 if test -f /etc/netconfig; then
2282 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2283 ipv6type=$i
2284 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285 fi
2286 fi
2287 ;;
2288 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002289 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002290#include <sys/param.h>
2291#ifdef _TOSHIBA_INET6
2292yes
2293#endif],
2294 [ipv6type=$i;
2295 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002296 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002297 ;;
2298 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002299 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002300#include </usr/local/v6/include/sys/v6config.h>
2301#ifdef __V6D__
2302yes
2303#endif],
2304 [ipv6type=$i;
2305 ipv6lib=v6;
2306 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002307 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002308 ;;
2309 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002310 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311#include <sys/param.h>
2312#ifdef _ZETA_MINAMI_INET6
2313yes
2314#endif],
2315 [ipv6type=$i;
2316 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002317 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318 ;;
2319 esac
2320 if test "$ipv6type" != "unknown"; then
2321 break
2322 fi
2323 done
2324 AC_MSG_RESULT($ipv6type)
2325fi
2326
2327if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2328 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2329 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2330 echo "using lib$ipv6lib"
2331 else
2332 if test $ipv6trylibc = "yes"; then
2333 echo "using libc"
2334 else
2335 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2336 echo "You need to fetch lib$ipv6lib.a from appropriate"
2337 echo 'ipv6 kit and compile beforehand.'
2338 exit 1
2339 fi
2340 fi
2341fi
2342
Georg Brandl93de2162008-07-16 02:21:06 +00002343AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2344AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2345 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2346 AC_MSG_RESULT(yes),
2347 AC_MSG_RESULT(no)
2348)
2349
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002350# Check for --with-doc-strings
2351AC_MSG_CHECKING(for --with-doc-strings)
2352AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002353 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002354
2355if test -z "$with_doc_strings"
2356then with_doc_strings="yes"
2357fi
2358if test "$with_doc_strings" != "no"
2359then
2360 AC_DEFINE(WITH_DOC_STRINGS, 1,
2361 [Define if you want documentation strings in extension modules])
2362fi
2363AC_MSG_RESULT($with_doc_strings)
2364
Neil Schemenauera35c6882001-02-27 04:45:05 +00002365# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002366AC_MSG_CHECKING(for --with-tsc)
2367AC_ARG_WITH(tsc,
2368[ --with(out)-tsc enable/disable timestamp counter profile], [
2369if test "$withval" != no
2370then
2371 AC_DEFINE(WITH_TSC, 1,
2372 [Define to profile with the Pentium timestamp counter])
2373 AC_MSG_RESULT(yes)
2374else AC_MSG_RESULT(no)
2375fi],
2376[AC_MSG_RESULT(no)])
2377
2378# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002379AC_MSG_CHECKING(for --with-pymalloc)
2380AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002381 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002382
2383if test -z "$with_pymalloc"
2384then with_pymalloc="yes"
2385fi
2386if test "$with_pymalloc" != "no"
2387then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002388 AC_DEFINE(WITH_PYMALLOC, 1,
2389 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002390fi
2391AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002392
Barry Warsawef82cd72000-06-30 16:21:01 +00002393# Check for --with-wctype-functions
2394AC_MSG_CHECKING(for --with-wctype-functions)
2395AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002396 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2397[
Barry Warsawef82cd72000-06-30 16:21:01 +00002398if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002399then
2400 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2401 [Define if you want wctype.h functions to be used instead of the
2402 one supplied by Python itself. (see Include/unicodectype.h).])
2403 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002404else AC_MSG_RESULT(no)
2405fi],
2406[AC_MSG_RESULT(no)])
2407
Guido van Rossum68242b51996-05-28 22:53:03 +00002408# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002409AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002410DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002411
Guido van Rossume97ee181999-12-20 21:27:22 +00002412# the dlopen() function means we might want to use dynload_shlib.o. some
2413# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002414AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002415
2416# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2417# loading of modules.
2418AC_SUBST(DYNLOADFILE)
2419AC_MSG_CHECKING(DYNLOADFILE)
2420if test -z "$DYNLOADFILE"
2421then
2422 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002423 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2424 if test "$ac_cv_func_dlopen" = yes
2425 then DYNLOADFILE="dynload_shlib.o"
2426 else DYNLOADFILE="dynload_aix.o"
2427 fi
2428 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002429 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002430 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2431 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002432 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002433 *)
2434 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2435 # out any dynamic loading
2436 if test "$ac_cv_func_dlopen" = yes
2437 then DYNLOADFILE="dynload_shlib.o"
2438 else DYNLOADFILE="dynload_stub.o"
2439 fi
2440 ;;
2441 esac
2442fi
2443AC_MSG_RESULT($DYNLOADFILE)
2444if test "$DYNLOADFILE" != "dynload_stub.o"
2445then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002446 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2447 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002448fi
2449
Jack Jansenc49e5b72001-06-19 15:00:23 +00002450# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2451
2452AC_SUBST(MACHDEP_OBJS)
2453AC_MSG_CHECKING(MACHDEP_OBJS)
2454if test -z "$MACHDEP_OBJS"
2455then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002456 MACHDEP_OBJS=$extra_machdep_objs
2457else
2458 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002459fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002460AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002461
Guido van Rossum627b2d71993-12-24 10:39:16 +00002462# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002463AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2464 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002465 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002466 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002467 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002468 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002469 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002470 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2471 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002472 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002473 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002474 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002475 truncate uname unsetenv utimes waitpid wait3 wait4 \
2476 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002477
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002478# For some functions, having a definition is not sufficient, since
2479# we want to take their address.
2480AC_MSG_CHECKING(for chroot)
2481AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2482 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2483 AC_MSG_RESULT(yes),
2484 AC_MSG_RESULT(no)
2485)
2486AC_MSG_CHECKING(for link)
2487AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2488 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2489 AC_MSG_RESULT(yes),
2490 AC_MSG_RESULT(no)
2491)
2492AC_MSG_CHECKING(for symlink)
2493AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2494 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2495 AC_MSG_RESULT(yes),
2496 AC_MSG_RESULT(no)
2497)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002498AC_MSG_CHECKING(for fchdir)
2499AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2500 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2501 AC_MSG_RESULT(yes),
2502 AC_MSG_RESULT(no)
2503)
2504AC_MSG_CHECKING(for fsync)
2505AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002506 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002507 AC_MSG_RESULT(yes),
2508 AC_MSG_RESULT(no)
2509)
2510AC_MSG_CHECKING(for fdatasync)
2511AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2512 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2513 AC_MSG_RESULT(yes),
2514 AC_MSG_RESULT(no)
2515)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002516AC_MSG_CHECKING(for epoll)
2517AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2518 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2519 AC_MSG_RESULT(yes),
2520 AC_MSG_RESULT(no)
2521)
2522AC_MSG_CHECKING(for kqueue)
2523AC_TRY_COMPILE([
2524#include <sys/types.h>
2525#include <sys/event.h>
2526 ], int x=kqueue(),
2527 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002531# On some systems (eg. FreeBSD 5), we would find a definition of the
2532# functions ctermid_r, setgroups in the library, but no prototype
2533# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2534# address to avoid compiler warnings and potential miscompilations
2535# because of the missing prototypes.
2536
2537AC_MSG_CHECKING(for ctermid_r)
2538AC_TRY_COMPILE([
2539#include "confdefs.h"
2540#include <stdio.h>
2541], void* p = ctermid_r,
2542 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2543 AC_MSG_RESULT(yes),
2544 AC_MSG_RESULT(no)
2545)
2546
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002547AC_MSG_CHECKING(for flock)
2548AC_TRY_COMPILE([
2549#include "confdefs.h"
2550#include <sys/file.h>
2551], void* p = flock,
2552 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2553 AC_MSG_RESULT(yes),
2554 AC_MSG_RESULT(no)
2555)
2556
2557AC_MSG_CHECKING(for getpagesize)
2558AC_TRY_COMPILE([
2559#include "confdefs.h"
2560#include <unistd.h>
2561], void* p = getpagesize,
2562 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2563 AC_MSG_RESULT(yes),
2564 AC_MSG_RESULT(no)
2565)
2566
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002567dnl check for true
2568AC_CHECK_PROGS(TRUE, true, /bin/true)
2569
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002570dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2571dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002572AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002573 AC_CHECK_LIB(resolv, inet_aton)
2574)
2575
Christian Heimesd0764e22007-12-04 15:00:33 +00002576# On Tru64, chflags seems to be present, but calling it will
2577# exit Python
2578AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002579AC_CACHE_VAL(ac_cv_have_chflags,
2580AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002581#include <sys/stat.h>
2582#include <unistd.h>
2583int main(int argc, char*argv[])
2584{
2585 if(chflags(argv[0], 0) != 0)
2586 return 1;
2587 return 0;
2588}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002589]], ac_cv_have_chflags=yes,
2590 ac_cv_have_chflags=no,
2591 ac_cv_have_chflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002592)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002593AC_MSG_RESULT($ac_cv_have_chflags)
2594if test $ac_cv_have_chflags = yes
2595then
2596 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2597fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002598
2599AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002600AC_CACHE_VAL(ac_cv_have_lchflags,
2601AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002602#include <sys/stat.h>
2603#include <unistd.h>
2604int main(int argc, char*argv[])
2605{
2606 if(lchflags(argv[0], 0) != 0)
2607 return 1;
2608 return 0;
2609}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002610]], ac_cv_have_lchflags=yes,
2611 ac_cv_have_lchflags=no,
2612 ac_cv_have_lchflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002613)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002614AC_MSG_RESULT($ac_cv_have_lchflags)
2615if test $ac_cv_have_lchflags = yes
2616then
2617 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2618fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002619
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002620dnl Check if system zlib has *Copy() functions
2621dnl
2622dnl On MacOSX the linker will search for dylibs on the entire linker path
2623dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2624dnl to revert to a more traditional unix behaviour and make it possible to
2625dnl override the system libz with a local static library of libz. Temporarily
2626dnl add that flag to our CFLAGS as well to ensure that we check the version
2627dnl of libz that will be used by setup.py.
2628dnl The -L/usr/local/lib is needed as wel to get the same compilation
2629dnl environment as setup.py (and leaving it out can cause configure to use the
2630dnl wrong version of the library)
2631case $ac_sys_system/$ac_sys_release in
2632Darwin/*)
2633 _CUR_CFLAGS="${CFLAGS}"
2634 _CUR_LDFLAGS="${LDFLAGS}"
2635 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2636 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2637 ;;
2638esac
2639
2640AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2641
2642case $ac_sys_system/$ac_sys_release in
2643Darwin/*)
2644 CFLAGS="${_CUR_CFLAGS}"
2645 LDFLAGS="${_CUR_LDFLAGS}"
2646 ;;
2647esac
2648
Martin v. Löwise9416172003-05-03 10:12:45 +00002649AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002650AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002651#include "confdefs.h"
2652#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002653], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002654 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2655 AC_MSG_RESULT(yes),
2656 AC_MSG_RESULT(no)
2657)
2658
2659AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002660AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002661#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002662#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002663#include <sys/socket.h>
2664#include <netinet/in.h>
2665#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002666], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002667 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2668 AC_MSG_RESULT(yes),
2669 AC_MSG_RESULT(no)
2670)
2671
2672AC_MSG_CHECKING(for inet_pton)
2673AC_TRY_COMPILE([
2674#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002675#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002676#include <sys/socket.h>
2677#include <netinet/in.h>
2678#include <arpa/inet.h>
2679], void* p = inet_pton,
2680 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2681 AC_MSG_RESULT(yes),
2682 AC_MSG_RESULT(no)
2683)
2684
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002685# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002686AC_MSG_CHECKING(for setgroups)
2687AC_TRY_COMPILE([
2688#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002689#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002690#ifdef HAVE_GRP_H
2691#include <grp.h>
2692#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002693],
2694void* p = setgroups,
2695 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2696 AC_MSG_RESULT(yes),
2697 AC_MSG_RESULT(no)
2698)
2699
Fred Drake8cef4cf2000-06-28 16:40:38 +00002700# check for openpty and forkpty
2701
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002702AC_CHECK_FUNCS(openpty,,
2703 AC_CHECK_LIB(util,openpty,
2704 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2705 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2706 )
2707)
2708AC_CHECK_FUNCS(forkpty,,
2709 AC_CHECK_LIB(util,forkpty,
2710 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2711 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2712 )
2713)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002714
Christian Heimesb186d002008-03-18 15:15:01 +00002715# Stuff for expat.
2716AC_CHECK_FUNCS(memmove)
2717
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002718# check for long file support functions
2719AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2720
Christian Heimesb186d002008-03-18 15:15:01 +00002721AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002722AC_CHECK_FUNCS(getpgrp,
2723 AC_TRY_COMPILE([#include <unistd.h>],
2724 [getpgrp(0);],
2725 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2726 [Define if getpgrp() must be called as getpgrp(0).])
2727 )
2728)
Jack Jansen150753c2003-03-29 22:07:47 +00002729AC_CHECK_FUNCS(setpgrp,
2730 AC_TRY_COMPILE([#include <unistd.h>],
2731 [setpgrp(0,0);],
2732 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2733 [Define if setpgrp() must be called as setpgrp(0, 0).])
2734 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002735)
2736AC_CHECK_FUNCS(gettimeofday,
2737 AC_TRY_COMPILE([#include <sys/time.h>],
2738 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2739 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2740 [Define if gettimeofday() does not have second (timezone) argument
2741 This is the case on Motorola V4 (R40V4.2)])
2742 )
2743)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002744
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002745AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002746AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002747#if defined(MAJOR_IN_MKDEV)
2748#include <sys/mkdev.h>
2749#elif defined(MAJOR_IN_SYSMACROS)
2750#include <sys/sysmacros.h>
2751#else
2752#include <sys/types.h>
2753#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002754],[
2755 makedev(major(0),minor(0));
2756],[
2757 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2758 [Define to 1 if you have the device macros.])
2759 AC_MSG_RESULT(yes)
2760],[
2761 AC_MSG_RESULT(no)
2762])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002763
2764# On OSF/1 V5.1, getaddrinfo is available, but a define
2765# for [no]getaddrinfo in netdb.h.
2766AC_MSG_CHECKING(for getaddrinfo)
2767AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002768#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002769#include <sys/socket.h>
2770#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002771#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002772], [getaddrinfo(NULL, NULL, NULL, NULL);],
2773have_getaddrinfo=yes,
2774have_getaddrinfo=no)
2775AC_MSG_RESULT($have_getaddrinfo)
2776if test $have_getaddrinfo = yes
2777then
2778 AC_MSG_CHECKING(getaddrinfo bug)
2779 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2780 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002781#include <sys/types.h>
2782#include <netdb.h>
2783#include <string.h>
2784#include <sys/socket.h>
2785#include <netinet/in.h>
2786
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002787int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002788{
2789 int passive, gaierr, inet4 = 0, inet6 = 0;
2790 struct addrinfo hints, *ai, *aitop;
2791 char straddr[INET6_ADDRSTRLEN], strport[16];
2792
2793 for (passive = 0; passive <= 1; passive++) {
2794 memset(&hints, 0, sizeof(hints));
2795 hints.ai_family = AF_UNSPEC;
2796 hints.ai_flags = passive ? AI_PASSIVE : 0;
2797 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002798 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002799 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2800 (void)gai_strerror(gaierr);
2801 goto bad;
2802 }
2803 for (ai = aitop; ai; ai = ai->ai_next) {
2804 if (ai->ai_addr == NULL ||
2805 ai->ai_addrlen == 0 ||
2806 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2807 straddr, sizeof(straddr), strport, sizeof(strport),
2808 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2809 goto bad;
2810 }
2811 switch (ai->ai_family) {
2812 case AF_INET:
2813 if (strcmp(strport, "54321") != 0) {
2814 goto bad;
2815 }
2816 if (passive) {
2817 if (strcmp(straddr, "0.0.0.0") != 0) {
2818 goto bad;
2819 }
2820 } else {
2821 if (strcmp(straddr, "127.0.0.1") != 0) {
2822 goto bad;
2823 }
2824 }
2825 inet4++;
2826 break;
2827 case AF_INET6:
2828 if (strcmp(strport, "54321") != 0) {
2829 goto bad;
2830 }
2831 if (passive) {
2832 if (strcmp(straddr, "::") != 0) {
2833 goto bad;
2834 }
2835 } else {
2836 if (strcmp(straddr, "::1") != 0) {
2837 goto bad;
2838 }
2839 }
2840 inet6++;
2841 break;
2842 case AF_UNSPEC:
2843 goto bad;
2844 break;
2845 default:
2846 /* another family support? */
2847 break;
2848 }
2849 }
2850 }
2851
2852 if (!(inet4 == 0 || inet4 == 2))
2853 goto bad;
2854 if (!(inet6 == 0 || inet6 == 2))
2855 goto bad;
2856
2857 if (aitop)
2858 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002859 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002860
2861 bad:
2862 if (aitop)
2863 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002864 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002865}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002866]], ac_cv_buggy_getaddrinfo=no,
2867 ac_cv_buggy_getaddrinfo=yes,
2868 ac_cv_buggy_getaddrinfo=yes))
2869fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002870
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002871if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2872then
2873 if test $ipv6 = yes
2874 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002875 echo 'Fatal: You must get working getaddrinfo() function.'
2876 echo ' or you can specify "--disable-ipv6"'.
2877 exit 1
2878 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002879else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002880 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002881fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002882AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002883
Guido van Rossum627b2d71993-12-24 10:39:16 +00002884# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002885AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002886AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002887AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002888AC_CHECK_MEMBERS([struct stat.st_rdev])
2889AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002890AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002891AC_CHECK_MEMBERS([struct stat.st_gen])
2892AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002893AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002894
2895AC_MSG_CHECKING(for time.h that defines altzone)
2896AC_CACHE_VAL(ac_cv_header_time_altzone,
2897[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2898 ac_cv_header_time_altzone=yes,
2899 ac_cv_header_time_altzone=no)])
2900AC_MSG_RESULT($ac_cv_header_time_altzone)
2901if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002903fi
2904
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002905was_it_defined=no
2906AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002907AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002908#include <sys/types.h>
2909#include <sys/select.h>
2910#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002911], [;], [
2912 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2913 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2914 (which you can't on SCO ODT 3.0).])
2915 was_it_defined=yes
2916])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002917AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002918
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002919AC_MSG_CHECKING(for addrinfo)
2920AC_CACHE_VAL(ac_cv_struct_addrinfo,
2921AC_TRY_COMPILE([
2922# include <netdb.h>],
2923 [struct addrinfo a],
2924 ac_cv_struct_addrinfo=yes,
2925 ac_cv_struct_addrinfo=no))
2926AC_MSG_RESULT($ac_cv_struct_addrinfo)
2927if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002928 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002929fi
2930
2931AC_MSG_CHECKING(for sockaddr_storage)
2932AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2933AC_TRY_COMPILE([
2934# include <sys/types.h>
2935# include <sys/socket.h>],
2936 [struct sockaddr_storage s],
2937 ac_cv_struct_sockaddr_storage=yes,
2938 ac_cv_struct_sockaddr_storage=no))
2939AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2940if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002941 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002942fi
2943
Guido van Rossum627b2d71993-12-24 10:39:16 +00002944# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002945
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002946AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002947AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002948
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002949works=no
2950AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002951AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2952 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2953)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002954AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002955
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002956works=no
2957AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002958AC_TRY_COMPILE([], [signed char c;], works=yes,
2959 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2960)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002961AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002962
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002963have_prototypes=no
2964AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002965AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2966 AC_DEFINE(HAVE_PROTOTYPES, 1,
2967 [Define if your compiler supports function prototype])
2968 have_prototypes=yes
2969])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002970AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002971
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002972works=no
2973AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002974AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002975#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002976int foo(int x, ...) {
2977 va_list va;
2978 va_start(va, x);
2979 va_arg(va, int);
2980 va_arg(va, char *);
2981 va_arg(va, double);
2982 return 0;
2983}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002984], [return foo(10, "", 3.14);], [
2985 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2986 [Define if your compiler supports variable length function prototypes
2987 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2988 works=yes
2989])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002990AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002991
Dave Cole331708b2004-08-09 04:51:41 +00002992# check for socketpair
2993AC_MSG_CHECKING(for socketpair)
2994AC_TRY_COMPILE([
2995#include <sys/types.h>
2996#include <sys/socket.h>
2997], void *x=socketpair,
2998 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2999 AC_MSG_RESULT(yes),
3000 AC_MSG_RESULT(no)
3001)
3002
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003003# check if sockaddr has sa_len member
3004AC_MSG_CHECKING(if sockaddr has sa_len member)
3005AC_TRY_COMPILE([#include <sys/types.h>
3006#include <sys/socket.h>],
3007[struct sockaddr x;
3008x.sa_len = 0;],
3009 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003010 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003011 AC_MSG_RESULT(no))
3012
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003013va_list_is_array=no
3014AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003015AC_TRY_COMPILE([
3016#ifdef HAVE_STDARG_PROTOTYPES
3017#include <stdarg.h>
3018#else
3019#include <varargs.h>
3020#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003021], [va_list list1, list2; list1 = list2;], , [
3022 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3023 va_list_is_array=yes
3024])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003025AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003026
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003027# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003028AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3029 [Define this if you have some version of gethostbyname_r()])
3030
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003031AC_CHECK_FUNC(gethostbyname_r, [
3032 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3033 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3034 OLD_CFLAGS=$CFLAGS
3035 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3036 AC_TRY_COMPILE([
3037# include <netdb.h>
3038 ], [
3039 char *name;
3040 struct hostent *he, *res;
3041 char buffer[2048];
3042 int buflen = 2048;
3043 int h_errnop;
3044
3045 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3046 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003047 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3049 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003050 AC_MSG_RESULT(yes)
3051 ], [
3052 AC_MSG_RESULT(no)
3053 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3054 AC_TRY_COMPILE([
3055# include <netdb.h>
3056 ], [
3057 char *name;
3058 struct hostent *he;
3059 char buffer[2048];
3060 int buflen = 2048;
3061 int h_errnop;
3062
3063 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3064 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003065 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003066 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3067 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003068 AC_MSG_RESULT(yes)
3069 ], [
3070 AC_MSG_RESULT(no)
3071 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3072 AC_TRY_COMPILE([
3073# include <netdb.h>
3074 ], [
3075 char *name;
3076 struct hostent *he;
3077 struct hostent_data data;
3078
3079 (void) gethostbyname_r(name, he, &data);
3080 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003081 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003082 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3083 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003084 AC_MSG_RESULT(yes)
3085 ], [
3086 AC_MSG_RESULT(no)
3087 ])
3088 ])
3089 ])
3090 CFLAGS=$OLD_CFLAGS
3091], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003092 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003093])
3094AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3095AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3096AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003097AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003098AC_SUBST(HAVE_GETHOSTBYNAME)
3099
Guido van Rossum627b2d71993-12-24 10:39:16 +00003100# checks for system services
3101# (none yet)
3102
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003103# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003104AC_CHECK_FUNC(__fpu_control,
3105 [],
3106 [AC_CHECK_LIB(ieee, __fpu_control)
3107])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003108
Guido van Rossum93274221997-05-09 02:42:00 +00003109# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003110AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003111AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003112 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3113[
Guido van Rossum93274221997-05-09 02:42:00 +00003114if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003115then
3116 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3117 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3118 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003119else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003120fi],
3121[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003122
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003123# check for --with-libm=...
3124AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003125case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003126Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003127*) LIBM=-lm
3128esac
Guido van Rossum93274221997-05-09 02:42:00 +00003129AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003130AC_ARG_WITH(libm,
3131 AC_HELP_STRING(--with-libm=STRING, math library),
3132[
Guido van Rossum93274221997-05-09 02:42:00 +00003133if test "$withval" = no
3134then LIBM=
3135 AC_MSG_RESULT(force LIBM empty)
3136elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003137then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003138 AC_MSG_RESULT(set LIBM="$withval")
3139else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003140fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003141[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003142
3143# check for --with-libc=...
3144AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003145AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003146AC_ARG_WITH(libc,
3147 AC_HELP_STRING(--with-libc=STRING, C library),
3148[
Guido van Rossum93274221997-05-09 02:42:00 +00003149if test "$withval" = no
3150then LIBC=
3151 AC_MSG_RESULT(force LIBC empty)
3152elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003153then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003154 AC_MSG_RESULT(set LIBC="$withval")
3155else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003156fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003157[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003158
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003159# **************************************************
3160# * Check for various properties of floating point *
3161# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003162
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003163AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3164AC_CACHE_VAL(ac_cv_little_endian_double, [
3165AC_TRY_RUN([
3166#include <string.h>
3167int main() {
3168 double x = 9006104071832581.0;
3169 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3170 return 0;
3171 else
3172 return 1;
3173}
3174],
3175ac_cv_little_endian_double=yes,
3176ac_cv_little_endian_double=no,
3177ac_cv_little_endian_double=no)])
3178AC_MSG_RESULT($ac_cv_little_endian_double)
3179if test "$ac_cv_little_endian_double" = yes
3180then
3181 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3182 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3183 with the least significant byte first])
3184fi
3185
3186AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3187AC_CACHE_VAL(ac_cv_big_endian_double, [
3188AC_TRY_RUN([
3189#include <string.h>
3190int main() {
3191 double x = 9006104071832581.0;
3192 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3193 return 0;
3194 else
3195 return 1;
3196}
3197],
3198ac_cv_big_endian_double=yes,
3199ac_cv_big_endian_double=no,
3200ac_cv_big_endian_double=no)])
3201AC_MSG_RESULT($ac_cv_big_endian_double)
3202if test "$ac_cv_big_endian_double" = yes
3203then
3204 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3205 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3206 with the most significant byte first])
3207fi
3208
3209# Some ARM platforms use a mixed-endian representation for doubles.
3210# While Python doesn't currently have full support for these platforms
3211# (see e.g., issue 1762561), we can at least make sure that float <-> string
3212# conversions work.
3213AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3214AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3215AC_TRY_RUN([
3216#include <string.h>
3217int main() {
3218 double x = 9006104071832581.0;
3219 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3220 return 0;
3221 else
3222 return 1;
3223}
3224],
3225ac_cv_mixed_endian_double=yes,
3226ac_cv_mixed_endian_double=no,
3227ac_cv_mixed_endian_double=no)])
3228AC_MSG_RESULT($ac_cv_mixed_endian_double)
3229if test "$ac_cv_mixed_endian_double" = yes
3230then
3231 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3232 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3233 in ARM mixed-endian order (byte order 45670123)])
3234fi
3235
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003236# The short float repr introduced in Python 3.1 requires the
3237# correctly-rounded string <-> double conversion functions from
3238# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3239# rounding; this is a problem on x86, where the x87 FPU has a default
3240# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3241# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003242if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3243then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003244 # Check that it's okay to use gcc inline assembler to get and set
3245 # x87 control word. It should be, but you never know...
3246 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3247 AC_TRY_COMPILE([], [
3248 unsigned short cw;
3249 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3250 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3251 ],
3252 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3253 AC_MSG_RESULT($have_gcc_asm_for_x87)
3254 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003255 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003256 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3257 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003258 fi
3259fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003260
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003261# Detect whether system arithmetic is subject to x87-style double
3262# rounding issues. The result of this test has little meaning on non
3263# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3264# mode is round-to-nearest and double rounding issues are present, and
3265# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3266AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003267# $BASECFLAGS may affect the result
3268ac_save_cc="$CC"
3269CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003270AC_TRY_RUN([
3271#include <stdlib.h>
3272#include <math.h>
3273int main() {
3274 volatile double x, y, z;
3275 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3276 x = 0.99999999999999989; /* 1-2**-53 */
3277 y = 1./x;
3278 if (y != 1.)
3279 exit(0);
3280 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3281 x = 1e16;
3282 y = 2.99999;
3283 z = x + y;
3284 if (z != 1e16+4.)
3285 exit(0);
3286 /* both tests show evidence of double rounding */
3287 exit(1);
3288}
3289],
3290ac_cv_x87_double_rounding=no,
3291ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003292ac_cv_x87_double_rounding=no)
3293CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003294AC_MSG_RESULT($ac_cv_x87_double_rounding)
3295if test "$ac_cv_x87_double_rounding" = yes
3296then
3297 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3298 [Define if arithmetic is subject to x87-style double rounding issue])
3299fi
3300
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003301# ************************************
3302# * Check for mathematical functions *
3303# ************************************
3304
3305LIBS_SAVE=$LIBS
3306LIBS="$LIBS $LIBM"
3307
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003308# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3309# -0. on some architectures.
3310AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3311AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3312AC_TRY_RUN([
3313#include <math.h>
3314#include <stdlib.h>
3315int main() {
3316 /* return 0 if either negative zeros don't exist
3317 on this platform or if negative zeros exist
3318 and tanh(-0.) == -0. */
3319 if (atan2(0., -1.) == atan2(-0., -1.) ||
3320 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3321 else exit(1);
3322}
3323],
3324ac_cv_tanh_preserves_zero_sign=yes,
3325ac_cv_tanh_preserves_zero_sign=no,
3326ac_cv_tanh_preserves_zero_sign=no)])
3327AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3328if test "$ac_cv_tanh_preserves_zero_sign" = yes
3329then
3330 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3331 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3332fi
3333
Mark Dickinson9c113362009-09-05 10:36:23 +00003334AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3335AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003336AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003337
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003338LIBS=$LIBS_SAVE
3339
Mark Dickinson10683072009-04-18 21:18:19 +00003340# Multiprocessing check for broken sem_getvalue
3341AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003342AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003343AC_TRY_RUN([
3344#include <unistd.h>
3345#include <fcntl.h>
3346#include <stdio.h>
3347#include <semaphore.h>
3348#include <sys/stat.h>
3349
3350int main(void){
3351 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3352 int count;
3353 int res;
3354 if(a==SEM_FAILED){
3355 perror("sem_open");
3356 return 1;
3357
3358 }
3359 res = sem_getvalue(a, &count);
3360 sem_close(a);
3361 return res==-1 ? 1 : 0;
3362}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003363], ac_cv_broken_sem_getvalue=no,
3364 ac_cv_broken_sem_getvalue=yes,
3365 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003366)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003367AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3368if test $ac_cv_broken_sem_getvalue = yes
3369then
3370 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3371 [define to 1 if your sem_getvalue is broken.])
3372fi
Mark Dickinson10683072009-04-18 21:18:19 +00003373
Mark Dickinsonbd792642009-03-18 20:06:12 +00003374# determine what size digit to use for Python's longs
3375AC_MSG_CHECKING([digit size for Python's longs])
3376AC_ARG_ENABLE(big-digits,
3377AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3378[case $enable_big_digits in
3379yes)
3380 enable_big_digits=30 ;;
3381no)
3382 enable_big_digits=15 ;;
3383[15|30])
3384 ;;
3385*)
3386 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3387esac
3388AC_MSG_RESULT($enable_big_digits)
3389AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3390],
3391[AC_MSG_RESULT(no value specified)])
3392
Guido van Rossumef2255b2000-03-10 22:30:29 +00003393# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003394AC_CHECK_HEADER(wchar.h, [
3395 AC_DEFINE(HAVE_WCHAR_H, 1,
3396 [Define if the compiler provides a wchar.h header file.])
3397 wchar_h="yes"
3398],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003399wchar_h="no"
3400)
3401
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003402# determine wchar_t size
3403if test "$wchar_h" = yes
3404then
Guido van Rossum67b26592001-10-20 14:21:45 +00003405 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003406fi
3407
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003408AC_MSG_CHECKING(for UCS-4 tcl)
3409have_ucs4_tcl=no
3410AC_TRY_COMPILE([
3411#include <tcl.h>
3412#if TCL_UTF_MAX != 6
3413# error "NOT UCS4_TCL"
3414#endif], [], [
3415 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3416 have_ucs4_tcl=yes
3417])
3418AC_MSG_RESULT($have_ucs4_tcl)
3419
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003420# check whether wchar_t is signed or not
3421if test "$wchar_h" = yes
3422then
3423 # check whether wchar_t is signed or not
3424 AC_MSG_CHECKING(whether wchar_t is signed)
3425 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3426 AC_TRY_RUN([
3427 #include <wchar.h>
3428 int main()
3429 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003430 /* Success: exit code 0 */
3431 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003432 }
3433 ],
3434 ac_cv_wchar_t_signed=yes,
3435 ac_cv_wchar_t_signed=no,
3436 ac_cv_wchar_t_signed=yes)])
3437 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3438fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003439
Georg Brandl52d168a2008-01-07 18:10:24 +00003440AC_MSG_CHECKING(what type to use for str)
3441AC_ARG_WITH(wide-unicode,
3442 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3443[
3444if test "$withval" != no
3445then unicode_size="4"
3446else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003447fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003448],
3449[
3450case "$have_ucs4_tcl" in
3451 yes) unicode_size="4" ;;
3452 *) unicode_size="2" ;;
3453esac
3454])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003455
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003456AH_TEMPLATE(Py_UNICODE_SIZE,
3457 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003458case "$unicode_size" in
3459 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3460 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003461esac
3462
Martin v. Löwis11437992002-04-12 09:54:03 +00003463AH_TEMPLATE(PY_UNICODE_TYPE,
3464 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003465
Georg Brandl52d168a2008-01-07 18:10:24 +00003466# wchar_t is only usable if it maps to an unsigned type
3467if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003468 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003469then
3470 PY_UNICODE_TYPE="wchar_t"
3471 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3472 [Define if you have a useable wchar_t type defined in wchar.h; useable
3473 means wchar_t must be an unsigned type with at least 16 bits. (see
3474 Include/unicodeobject.h).])
3475 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3476elif test "$ac_cv_sizeof_short" = "$unicode_size"
3477then
3478 PY_UNICODE_TYPE="unsigned short"
3479 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3480elif test "$ac_cv_sizeof_long" = "$unicode_size"
3481then
3482 PY_UNICODE_TYPE="unsigned long"
3483 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3484else
3485 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003486fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003487AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003488
3489# check for endianness
3490AC_C_BIGENDIAN
3491
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003492# Check whether right shifting a negative integer extends the sign bit
3493# or fills with zeros (like the Cray J90, according to Tim Peters).
3494AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003495AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003496AC_TRY_RUN([
3497int main()
3498{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003499 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003500}
Guido van Rossum3065c942001-09-17 04:03:14 +00003501],
3502ac_cv_rshift_extends_sign=yes,
3503ac_cv_rshift_extends_sign=no,
3504ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003505AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3506if test "$ac_cv_rshift_extends_sign" = no
3507then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003508 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3509 [Define if i>>j for signed int i does not extend the sign bit
3510 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003511fi
3512
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003513# check for getc_unlocked and related locking functions
3514AC_MSG_CHECKING(for getc_unlocked() and friends)
3515AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3516AC_TRY_LINK([#include <stdio.h>],[
3517 FILE *f = fopen("/dev/null", "r");
3518 flockfile(f);
3519 getc_unlocked(f);
3520 funlockfile(f);
3521], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3522AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3523if test "$ac_cv_have_getc_unlocked" = yes
3524then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003525 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3526 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003527fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003528
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003529# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003530# save the value of LIBS so we don't actually link Python with readline
3531LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003532
3533# On some systems we need to link readline to a termcap compatible
3534# library. NOTE: Keep the precedence of listed libraries synchronised
3535# with setup.py.
3536py_cv_lib_readline=no
3537AC_MSG_CHECKING([how to link readline libs])
3538for py_libtermcap in "" ncursesw ncurses curses termcap; do
3539 if test -z "$py_libtermcap"; then
3540 READLINE_LIBS="-lreadline"
3541 else
3542 READLINE_LIBS="-lreadline -l$py_libtermcap"
3543 fi
3544 LIBS="$READLINE_LIBS $LIBS_no_readline"
3545 AC_LINK_IFELSE(
3546 [AC_LANG_CALL([],[readline])],
3547 [py_cv_lib_readline=yes])
3548 if test $py_cv_lib_readline = yes; then
3549 break
3550 fi
3551done
3552# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3553#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003554if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003555 AC_MSG_RESULT([none])
3556else
3557 AC_MSG_RESULT([$READLINE_LIBS])
3558 AC_DEFINE(HAVE_LIBREADLINE, 1,
3559 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003560fi
3561
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003562# check for readline 2.1
3563AC_CHECK_LIB(readline, rl_callback_handler_install,
3564 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003565 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003566
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003567# check for readline 2.2
3568AC_TRY_CPP([#include <readline/readline.h>],
3569have_readline=yes, have_readline=no)
3570if test $have_readline = yes
3571then
3572 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3573 [readline/readline.h],
3574 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3575 [Define if you have readline 2.2]), )
3576fi
3577
Martin v. Löwis0daad592001-09-30 21:09:59 +00003578# check for readline 4.0
3579AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003580 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003581 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003582
Thomas Wouters89d996e2007-09-08 17:39:28 +00003583# also in 4.0
3584AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3585 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003586 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003587
Guido van Rossum353ae582001-07-10 16:45:32 +00003588# check for readline 4.2
3589AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003590 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003591 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003592
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003593# also in readline 4.2
3594AC_TRY_CPP([#include <readline/readline.h>],
3595have_readline=yes, have_readline=no)
3596if test $have_readline = yes
3597then
3598 AC_EGREP_HEADER([extern int rl_catch_signals;],
3599 [readline/readline.h],
3600 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3601 [Define if you can turn off readline's signal handling.]), )
3602fi
3603
Martin v. Löwis82bca632006-02-10 20:49:30 +00003604# End of readline checks: restore LIBS
3605LIBS=$LIBS_no_readline
3606
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003607AC_MSG_CHECKING(for broken nice())
3608AC_CACHE_VAL(ac_cv_broken_nice, [
3609AC_TRY_RUN([
3610int main()
3611{
3612 int val1 = nice(1);
3613 if (val1 != -1 && val1 == nice(2))
3614 exit(0);
3615 exit(1);
3616}
Guido van Rossum3065c942001-09-17 04:03:14 +00003617],
3618ac_cv_broken_nice=yes,
3619ac_cv_broken_nice=no,
3620ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003621AC_MSG_RESULT($ac_cv_broken_nice)
3622if test "$ac_cv_broken_nice" = yes
3623then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003624 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3625 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003626fi
3627
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003628AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003629AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003630AC_TRY_RUN([
3631#include <poll.h>
3632
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003633int main()
3634{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003635 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003636 int poll_test;
3637
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003638 close (42);
3639
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003640 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003641 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003642 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003643 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003644 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003645 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003646 return 1;
3647}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003648],
3649ac_cv_broken_poll=yes,
3650ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003651ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003652AC_MSG_RESULT($ac_cv_broken_poll)
3653if test "$ac_cv_broken_poll" = yes
3654then
3655 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3656 [Define if poll() sets errno on invalid file descriptors.])
3657fi
3658
Brett Cannon43802422005-02-10 20:48:03 +00003659# Before we can test tzset, we need to check if struct tm has a tm_zone
3660# (which is not required by ISO C or UNIX spec) and/or if we support
3661# tzname[]
3662AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003663
Brett Cannon43802422005-02-10 20:48:03 +00003664# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003665AC_MSG_CHECKING(for working tzset())
3666AC_CACHE_VAL(ac_cv_working_tzset, [
3667AC_TRY_RUN([
3668#include <stdlib.h>
3669#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003670#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003671
3672#if HAVE_TZNAME
3673extern char *tzname[];
3674#endif
3675
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003676int main()
3677{
Brett Cannon18367812003-09-19 00:59:16 +00003678 /* Note that we need to ensure that not only does tzset(3)
3679 do 'something' with localtime, but it works as documented
3680 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003681 This includes making sure that tzname is set properly if
3682 tm->tm_zone does not exist since it is the alternative way
3683 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003684
3685 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003686 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003687 */
3688
Brett Cannon43802422005-02-10 20:48:03 +00003689 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003690 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3691
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003692 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003693 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003694 if (localtime(&groundhogday)->tm_hour != 0)
3695 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003696#if HAVE_TZNAME
3697 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3698 if (strcmp(tzname[0], "UTC") ||
3699 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3700 exit(1);
3701#endif
Brett Cannon18367812003-09-19 00:59:16 +00003702
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003703 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003704 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003705 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003706 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003707#if HAVE_TZNAME
3708 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3709 exit(1);
3710#endif
Brett Cannon18367812003-09-19 00:59:16 +00003711
3712 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3713 tzset();
3714 if (localtime(&groundhogday)->tm_hour != 11)
3715 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003716#if HAVE_TZNAME
3717 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3718 exit(1);
3719#endif
3720
3721#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003722 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3723 exit(1);
3724 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3725 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003726#endif
Brett Cannon18367812003-09-19 00:59:16 +00003727
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003728 exit(0);
3729}
3730],
3731ac_cv_working_tzset=yes,
3732ac_cv_working_tzset=no,
3733ac_cv_working_tzset=no)])
3734AC_MSG_RESULT($ac_cv_working_tzset)
3735if test "$ac_cv_working_tzset" = yes
3736then
3737 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3738 [Define if tzset() actually switches the local timezone in a meaningful way.])
3739fi
3740
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003741# Look for subsecond timestamps in struct stat
3742AC_MSG_CHECKING(for tv_nsec in struct stat)
3743AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3744AC_TRY_COMPILE([#include <sys/stat.h>], [
3745struct stat st;
3746st.st_mtim.tv_nsec = 1;
3747],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003748ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003749ac_cv_stat_tv_nsec=no,
3750ac_cv_stat_tv_nsec=no))
3751AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3752if test "$ac_cv_stat_tv_nsec" = yes
3753then
3754 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3755 [Define if you have struct stat.st_mtim.tv_nsec])
3756fi
3757
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003758# Look for BSD style subsecond timestamps in struct stat
3759AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3760AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3761AC_TRY_COMPILE([#include <sys/stat.h>], [
3762struct stat st;
3763st.st_mtimespec.tv_nsec = 1;
3764],
3765ac_cv_stat_tv_nsec2=yes,
3766ac_cv_stat_tv_nsec2=no,
3767ac_cv_stat_tv_nsec2=no))
3768AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3769if test "$ac_cv_stat_tv_nsec2" = yes
3770then
3771 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3772 [Define if you have struct stat.st_mtimensec])
3773fi
3774
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003775# On HP/UX 11.0, mvwdelch is a block with a return statement
3776AC_MSG_CHECKING(whether mvwdelch is an expression)
3777AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3778AC_TRY_COMPILE([#include <curses.h>], [
3779 int rtn;
3780 rtn = mvwdelch(0,0,0);
3781], ac_cv_mvwdelch_is_expression=yes,
3782 ac_cv_mvwdelch_is_expression=no,
3783 ac_cv_mvwdelch_is_expression=yes))
3784AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3785
3786if test "$ac_cv_mvwdelch_is_expression" = yes
3787then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003788 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3789 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003790fi
3791
3792AC_MSG_CHECKING(whether WINDOW has _flags)
3793AC_CACHE_VAL(ac_cv_window_has_flags,
3794AC_TRY_COMPILE([#include <curses.h>], [
3795 WINDOW *w;
3796 w->_flags = 0;
3797], ac_cv_window_has_flags=yes,
3798 ac_cv_window_has_flags=no,
3799 ac_cv_window_has_flags=no))
3800AC_MSG_RESULT($ac_cv_window_has_flags)
3801
3802
3803if test "$ac_cv_window_has_flags" = yes
3804then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003805 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3806 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003807fi
3808
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003809AC_MSG_CHECKING(for is_term_resized)
3810AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3811 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3812 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003813 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003814)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003815
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003816AC_MSG_CHECKING(for resize_term)
3817AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3818 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3819 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003820 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003821)
3822
3823AC_MSG_CHECKING(for resizeterm)
3824AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3825 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3826 AC_MSG_RESULT(yes),
3827 AC_MSG_RESULT(no)
3828)
3829
Thomas Wouters89f507f2006-12-13 04:49:30 +00003830AC_MSG_CHECKING(for /dev/ptmx)
3831
3832if test -r /dev/ptmx
3833then
3834 AC_MSG_RESULT(yes)
3835 AC_DEFINE(HAVE_DEV_PTMX, 1,
3836 [Define if we have /dev/ptmx.])
3837else
3838 AC_MSG_RESULT(no)
3839fi
3840
3841AC_MSG_CHECKING(for /dev/ptc)
3842
3843if test -r /dev/ptc
3844then
3845 AC_MSG_RESULT(yes)
3846 AC_DEFINE(HAVE_DEV_PTC, 1,
3847 [Define if we have /dev/ptc.])
3848else
3849 AC_MSG_RESULT(no)
3850fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003851
Thomas Wouters477c8d52006-05-27 19:21:47 +00003852AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003853AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003854AC_TRY_RUN([[
3855#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003856#include <stddef.h>
3857#include <string.h>
3858
Christian Heimes2c181612007-12-17 20:04:13 +00003859#ifdef HAVE_SYS_TYPES_H
3860#include <sys/types.h>
3861#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003862
3863#ifdef HAVE_SSIZE_T
3864typedef ssize_t Py_ssize_t;
3865#elif SIZEOF_VOID_P == SIZEOF_LONG
3866typedef long Py_ssize_t;
3867#else
3868typedef int Py_ssize_t;
3869#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003870
Christian Heimes2c181612007-12-17 20:04:13 +00003871int main()
3872{
3873 char buffer[256];
3874
Thomas Wouters477c8d52006-05-27 19:21:47 +00003875 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3876 return 1;
3877
Thomas Wouters89f507f2006-12-13 04:49:30 +00003878 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003879 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003880
3881 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3882 return 1;
3883
3884 if (strcmp(buffer, "-123"))
3885 return 1;
3886
Thomas Wouters477c8d52006-05-27 19:21:47 +00003887 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003888}
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003889]], ac_cv_have_size_t_format=yes,
3890 ac_cv_have_size_t_format=no,
3891 ac_cv_have_size_t_format=no)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003892)
3893AC_MSG_RESULT($ac_cv_have_size_t_format)
3894if test $ac_cv_have_size_t_format = yes
3895then
3896 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3897 [Define to printf format modifier for Py_ssize_t])
3898fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00003899
Martin v. Löwis01c04012002-11-11 14:58:44 +00003900AC_CHECK_TYPE(socklen_t,,
3901 AC_DEFINE(socklen_t,int,
3902 Define to `int' if <sys/socket.h> does not define.),[
3903#ifdef HAVE_SYS_TYPES_H
3904#include <sys/types.h>
3905#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003906#ifdef HAVE_SYS_SOCKET_H
3907#include <sys/socket.h>
3908#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003909])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003910
Antoine Pitroufff95302008-09-03 18:58:51 +00003911AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003912AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00003913AC_TRY_RUN([
3914#include<stdlib.h>
3915int main() {
3916 size_t len = -1;
3917 const char *str = "text";
3918 len = mbstowcs(NULL, str, 0);
3919 return (len != 4);
3920}
3921],
3922ac_cv_broken_mbstowcs=no,
3923ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003924ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00003925AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3926if test "$ac_cv_broken_mbstowcs" = yes
3927then
3928 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3929 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3930 wide chars that would be converted.])
3931fi
3932
Antoine Pitroub52ec782009-01-25 16:34:23 +00003933# Check for --with-computed-gotos
3934AC_MSG_CHECKING(for --with-computed-gotos)
3935AC_ARG_WITH(computed-gotos,
3936 AC_HELP_STRING(--with-computed-gotos,
3937 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3938[
3939if test "$withval" != no
3940then
3941 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3942 [Define if you want to use computed gotos in ceval.c.])
3943 AC_MSG_RESULT(yes)
3944else AC_MSG_RESULT(no)
3945fi],
3946[AC_MSG_RESULT(no)])
3947
3948
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003949AC_SUBST(THREADHEADERS)
3950
3951for h in `(cd $srcdir;echo Python/thread_*.h)`
3952do
3953 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3954done
3955
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003956AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003957SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003958AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003959for dir in $SRCDIRS; do
3960 if test ! -d $dir; then
3961 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003962 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003963done
3964AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003965
Guido van Rossum627b2d71993-12-24 10:39:16 +00003966# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003967AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003968AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003969
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003970echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003971if test ! -f Modules/Setup
3972then
3973 cp $srcdir/Modules/Setup.dist Modules/Setup
3974fi
3975
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003976echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003977if test ! -f Modules/Setup.local
3978then
3979 echo "# Edit this file for local setup changes" >Modules/Setup.local
3980fi
3981
3982echo "creating Makefile"
3983$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3984 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003985 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003986mv config.c Modules