blob: 01d7585148ad589aa29e546920611038bb1486bd [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,
117 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
118[
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
928 else
929 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
930
931 fi
932
933
934 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000935 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000936 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
937 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
938 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000939 fi
940
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000941 # Calculate the right deployment target for this build.
942 #
943 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
944 if test ${cur_target} '>' 10.2; then
945 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000946 if test ${enable_universalsdk}; then
947 if test "${UNIVERSAL_ARCHS}" = "all"; then
948 # Ensure that the default platform for a
949 # 4-way universal build is OSX 10.5,
950 # that's the first OS release where
951 # 4-way builds make sense.
952 cur_target='10.5'
953 fi
954 else
955 if test `arch` = "i386"; then
956 # On Intel macs default to a deployment
957 # target of 10.4, that's the first OSX
958 # release with Intel support.
959 cur_target="10.4"
960 fi
961 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000962 fi
963 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
964
965 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
966 # environment with a value that is the same as what we'll use
967 # in the Makefile to ensure that we'll get the same compiler
968 # environment during configure and build time.
969 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
970 export MACOSX_DEPLOYMENT_TARGET
971 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
972
Skip Montanarodecc6a42003-01-01 20:07:49 +0000973 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000974 OSF*)
975 BASECFLAGS="$BASECFLAGS -mieee"
976 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000977 esac
978 ;;
979
980*)
981 case $ac_sys_system in
982 OpenUNIX*|UnixWare*)
983 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
984 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000985 OSF*)
986 BASECFLAGS="$BASECFLAGS -ieee -std"
987 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000988 SCO_SV*)
989 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
990 ;;
991 esac
992 ;;
993esac
994
Fred Drakee1ceaa02001-12-04 20:55:47 +0000995if test "$Py_DEBUG" = 'true'; then
996 :
997else
998 OPT="-DNDEBUG $OPT"
999fi
1000
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001001if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001002then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001003 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001004fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001005
Neal Norwitz020c46a2006-01-07 21:39:28 +00001006# disable check for icc since it seems to pass, but generates a warning
1007if test "$CC" = icc
1008then
1009 ac_cv_opt_olimit_ok=no
1010fi
1011
Guido van Rossum91922671997-10-09 20:24:13 +00001012AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1013AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1014[ac_save_cc="$CC"
1015CC="$CC -OPT:Olimit=0"
1016AC_TRY_RUN([int main() { return 0; }],
1017 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001018 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001019 ac_cv_opt_olimit_ok=no)
1020CC="$ac_save_cc"])
1021AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001022if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001023 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001024 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1025 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1026 # environment?
1027 Darwin*)
1028 ;;
1029 *)
1030 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1031 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001032 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001033else
1034 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1035 AC_CACHE_VAL(ac_cv_olimit_ok,
1036 [ac_save_cc="$CC"
1037 CC="$CC -Olimit 1500"
1038 AC_TRY_RUN([int main() { return 0; }],
1039 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001040 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001041 ac_cv_olimit_ok=no)
1042 CC="$ac_save_cc"])
1043 AC_MSG_RESULT($ac_cv_olimit_ok)
1044 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001045 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001046 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001047fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001048
Thomas Wouters89f507f2006-12-13 04:49:30 +00001049# Check whether GCC supports PyArg_ParseTuple format
1050if test "$GCC" = "yes"
1051then
1052 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1053 save_CFLAGS=$CFLAGS
1054 CFLAGS="$CFLAGS -Werror"
1055 AC_TRY_COMPILE([
1056 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1057 ],,
1058 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1059 AC_MSG_RESULT(yes),
1060 AC_MSG_RESULT(no)
1061 )
1062 CFLAGS=$save_CFLAGS
1063fi
1064
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001065# On some compilers, pthreads are available without further options
1066# (e.g. MacOS X). On some of these systems, the compiler will not
1067# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1068# So we have to see first whether pthreads are available without
1069# options before we can check whether -Kpthread improves anything.
1070AC_MSG_CHECKING(whether pthreads are available without options)
1071AC_CACHE_VAL(ac_cv_pthread_is_default,
1072[AC_TRY_RUN([
1073#include <pthread.h>
1074
1075void* routine(void* p){return NULL;}
1076
1077int main(){
1078 pthread_t p;
1079 if(pthread_create(&p,NULL,routine,NULL)!=0)
1080 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001081 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001082 return 0;
1083}
1084],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001085[
1086 ac_cv_pthread_is_default=yes
1087 ac_cv_kthread=no
1088 ac_cv_pthread=no
1089],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001090 ac_cv_pthread_is_default=no,
1091 ac_cv_pthread_is_default=no)
1092])
1093AC_MSG_RESULT($ac_cv_pthread_is_default)
1094
1095
1096if test $ac_cv_pthread_is_default = yes
1097then
1098 ac_cv_kpthread=no
1099else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001100# -Kpthread, if available, provides the right #defines
1101# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001102# Some compilers won't report that they do not support -Kpthread,
1103# so we need to run a program to see whether it really made the
1104# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001105AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1106AC_CACHE_VAL(ac_cv_kpthread,
1107[ac_save_cc="$CC"
1108CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001109AC_TRY_RUN([
1110#include <pthread.h>
1111
1112void* routine(void* p){return NULL;}
1113
1114int main(){
1115 pthread_t p;
1116 if(pthread_create(&p,NULL,routine,NULL)!=0)
1117 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001118 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001119 return 0;
1120}
1121],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001122 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001123 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001124 ac_cv_kpthread=no)
1125CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001126AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001127fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001128
Skip Montanarod8d39a02003-07-10 20:44:10 +00001129if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001130then
1131# -Kthread, if available, provides the right #defines
1132# and linker options to make pthread_create available
1133# Some compilers won't report that they do not support -Kthread,
1134# so we need to run a program to see whether it really made the
1135# function available.
1136AC_MSG_CHECKING(whether $CC accepts -Kthread)
1137AC_CACHE_VAL(ac_cv_kthread,
1138[ac_save_cc="$CC"
1139CC="$CC -Kthread"
1140AC_TRY_RUN([
1141#include <pthread.h>
1142
1143void* routine(void* p){return NULL;}
1144
1145int main(){
1146 pthread_t p;
1147 if(pthread_create(&p,NULL,routine,NULL)!=0)
1148 return 1;
1149 (void)pthread_detach(p);
1150 return 0;
1151}
1152],
1153 ac_cv_kthread=yes,
1154 ac_cv_kthread=no,
1155 ac_cv_kthread=no)
1156CC="$ac_save_cc"])
1157AC_MSG_RESULT($ac_cv_kthread)
1158fi
1159
Skip Montanarod8d39a02003-07-10 20:44:10 +00001160if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001161then
1162# -pthread, if available, provides the right #defines
1163# and linker options to make pthread_create available
1164# Some compilers won't report that they do not support -pthread,
1165# so we need to run a program to see whether it really made the
1166# function available.
1167AC_MSG_CHECKING(whether $CC accepts -pthread)
1168AC_CACHE_VAL(ac_cv_thread,
1169[ac_save_cc="$CC"
1170CC="$CC -pthread"
1171AC_TRY_RUN([
1172#include <pthread.h>
1173
1174void* routine(void* p){return NULL;}
1175
1176int main(){
1177 pthread_t p;
1178 if(pthread_create(&p,NULL,routine,NULL)!=0)
1179 return 1;
1180 (void)pthread_detach(p);
1181 return 0;
1182}
1183],
1184 ac_cv_pthread=yes,
1185 ac_cv_pthread=no,
1186 ac_cv_pthread=no)
1187CC="$ac_save_cc"])
1188AC_MSG_RESULT($ac_cv_pthread)
1189fi
1190
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001191# If we have set a CC compiler flag for thread support then
1192# check if it works for CXX, too.
1193ac_cv_cxx_thread=no
1194if test ! -z "$CXX"
1195then
1196AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1197ac_save_cxx="$CXX"
1198
1199if test "$ac_cv_kpthread" = "yes"
1200then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001201 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001202 ac_cv_cxx_thread=yes
1203elif test "$ac_cv_kthread" = "yes"
1204then
1205 CXX="$CXX -Kthread"
1206 ac_cv_cxx_thread=yes
1207elif test "$ac_cv_pthread" = "yes"
1208then
1209 CXX="$CXX -pthread"
1210 ac_cv_cxx_thread=yes
1211fi
1212
1213if test $ac_cv_cxx_thread = yes
1214then
1215 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1216 $CXX -c conftest.$ac_ext 2>&5
1217 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1218 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1219 then
1220 ac_cv_cxx_thread=yes
1221 else
1222 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001223 fi
1224 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001225fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001226AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001227fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001228CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001229
Fred Drakece81d592000-07-09 14:39:29 +00001230dnl # check for ANSI or K&R ("traditional") preprocessor
1231dnl AC_MSG_CHECKING(for C preprocessor type)
1232dnl AC_TRY_COMPILE([
1233dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1234dnl int foo;
1235dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1236dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1237dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001238
Guido van Rossum627b2d71993-12-24 10:39:16 +00001239# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001240AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001241AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1242fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001243ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001244shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001245unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001246sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1247sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001248sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001249sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001250sys/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 +00001251sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001252bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001253AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001254AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001255
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001256# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001257AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001258#ifdef HAVE_CURSES_H
1259#include <curses.h>
1260#endif
1261])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001262
Martin v. Löwis11017b12006-01-14 18:12:57 +00001263# On Linux, netlink.h requires asm/types.h
1264AC_CHECK_HEADERS(linux/netlink.h,,,[
1265#ifdef HAVE_ASM_TYPES_H
1266#include <asm/types.h>
1267#endif
1268#ifdef HAVE_SYS_SOCKET_H
1269#include <sys/socket.h>
1270#endif
1271])
1272
Guido van Rossum627b2d71993-12-24 10:39:16 +00001273# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001274was_it_defined=no
1275AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001276AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1277 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1278])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001279AC_MSG_RESULT($was_it_defined)
1280
Neal Norwitz11690112002-07-30 01:08:28 +00001281# Check whether using makedev requires defining _OSF_SOURCE
1282AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001283AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001284 [ makedev(0, 0) ],
1285 ac_cv_has_makedev=yes,
1286 ac_cv_has_makedev=no)
1287if test "$ac_cv_has_makedev" = "no"; then
1288 # we didn't link, try if _OSF_SOURCE will allow us to link
1289 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001290#define _OSF_SOURCE 1
1291#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001292 ],
1293 [ makedev(0, 0) ],
1294 ac_cv_has_makedev=yes,
1295 ac_cv_has_makedev=no)
1296 if test "$ac_cv_has_makedev" = "yes"; then
1297 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1298 fi
1299fi
1300AC_MSG_RESULT($ac_cv_has_makedev)
1301if test "$ac_cv_has_makedev" = "yes"; then
1302 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1303fi
1304
Martin v. Löwis399a6892002-10-04 10:22:02 +00001305# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1306# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1307# defined, but the compiler does not support pragma redefine_extname,
1308# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1309# structures (such as rlimit64) without declaring them. As a
1310# work-around, disable LFS on such configurations
1311
1312use_lfs=yes
1313AC_MSG_CHECKING(Solaris LFS bug)
1314AC_TRY_COMPILE([
1315#define _LARGEFILE_SOURCE 1
1316#define _FILE_OFFSET_BITS 64
1317#include <sys/resource.h>
1318],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1319AC_MSG_RESULT($sol_lfs_bug)
1320if test "$sol_lfs_bug" = "yes"; then
1321 use_lfs=no
1322fi
1323
1324if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001325# Two defines needed to enable largefile support on various platforms
1326# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001327AC_DEFINE(_LARGEFILE_SOURCE, 1,
1328[This must be defined on some systems to enable large file support.])
1329AC_DEFINE(_FILE_OFFSET_BITS, 64,
1330[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001331fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001332
Guido van Rossum300fda71996-08-19 21:58:16 +00001333# Add some code to confdefs.h so that the test for off_t works on SCO
1334cat >> confdefs.h <<\EOF
1335#if defined(SCO_DS)
1336#undef _OFF_T
1337#endif
1338EOF
1339
Guido van Rossumef2255b2000-03-10 22:30:29 +00001340# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001341AC_TYPE_MODE_T
1342AC_TYPE_OFF_T
1343AC_TYPE_PID_T
1344AC_TYPE_SIGNAL
1345AC_TYPE_SIZE_T
1346AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001347AC_TYPE_UINT32_T
1348AC_TYPE_UINT64_T
1349AC_TYPE_INT32_T
1350AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001351AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001352 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001353
Guido van Rossumef2255b2000-03-10 22:30:29 +00001354# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001355# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001356AC_CHECK_SIZEOF(int, 4)
1357AC_CHECK_SIZEOF(long, 4)
1358AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001359AC_CHECK_SIZEOF(short, 2)
1360AC_CHECK_SIZEOF(float, 4)
1361AC_CHECK_SIZEOF(double, 8)
1362AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001363AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001364AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001365
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001366AC_MSG_CHECKING(for long long support)
1367have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001368AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1369 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1370 have_long_long=yes
1371])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001372AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001373if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001374AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001375fi
1376
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001377AC_MSG_CHECKING(for long double support)
1378have_long_double=no
1379AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1380 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1381 have_long_double=yes
1382])
1383AC_MSG_RESULT($have_long_double)
1384if test "$have_long_double" = yes ; then
1385AC_CHECK_SIZEOF(long double, 16)
1386fi
1387
1388
Thomas Woutersb2137042007-02-01 18:02:27 +00001389AC_MSG_CHECKING(for _Bool support)
1390have_c99_bool=no
1391AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1392 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1393 have_c99_bool=yes
1394])
1395AC_MSG_RESULT($have_c99_bool)
1396if test "$have_c99_bool" = yes ; then
1397AC_CHECK_SIZEOF(_Bool, 1)
1398fi
1399
Thomas Wouters89f507f2006-12-13 04:49:30 +00001400AC_CHECK_TYPES(uintptr_t,
1401 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1402 [], [#ifdef HAVE_STDINT_H
1403 #include <stdint.h>
1404 #endif])
1405
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001406AC_CHECK_SIZEOF(off_t, [], [
1407#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001408#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001409#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001410])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001411
1412AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001413if test "$have_long_long" = yes -a \
1414 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1415 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001416 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1417 [Defined to enable large file support when an off_t is bigger than a long
1418 and long long is available and at least as big as an off_t. You may need
1419 to add some flags for configuration and compilation to enable this mode.
1420 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001421 AC_MSG_RESULT(yes)
1422else
1423 AC_MSG_RESULT(no)
1424fi
1425
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001426AC_CHECK_SIZEOF(time_t, [], [
1427#ifdef HAVE_SYS_TYPES_H
1428#include <sys/types.h>
1429#endif
1430#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001431#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001432#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001433])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001434
Trent Mick635f6fb2000-08-23 21:33:05 +00001435# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001436ac_save_cc="$CC"
1437if test "$ac_cv_kpthread" = "yes"
1438then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001439elif test "$ac_cv_kthread" = "yes"
1440then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001441elif test "$ac_cv_pthread" = "yes"
1442then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001443fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001444
Trent Mick635f6fb2000-08-23 21:33:05 +00001445AC_MSG_CHECKING(for pthread_t)
1446have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001447AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001448AC_MSG_RESULT($have_pthread_t)
1449if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001450 AC_CHECK_SIZEOF(pthread_t, [], [
1451#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001452#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001453#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001454 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001455fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001456CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001457
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001458AC_SUBST(OTHER_LIBTOOL_OPT)
1459case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001460 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001461 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1462 ;;
1463 Darwin/*)
1464 OTHER_LIBTOOL_OPT=""
1465 ;;
1466esac
1467
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001468
1469ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001470AC_SUBST(LIBTOOL_CRUFT)
1471case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001472 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001473 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1474 if test "${enable_universalsdk}"; then
1475 :
1476 else
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001477 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001478 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001479 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001480 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001481 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001482 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1483 if test ${gcc_version} '<' 4.0
1484 then
1485 LIBTOOL_CRUFT="-lcc_dynamic"
1486 else
1487 LIBTOOL_CRUFT=""
1488 fi
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001489 AC_TRY_RUN([[
1490 #include <unistd.h>
1491 int main(int argc, char*argv[])
1492 {
1493 if (sizeof(long) == 4) {
1494 return 0;
1495 } else {
1496 return 1;
1497 }
1498 ]], ac_osx_32bit=yes,
1499 ac_osx_32bit=no,
1500 ac_osx_32bit=no)
1501
1502 if test "${ac_osx_32bit}" = "yes"; then
1503 case `arch` in
1504 i386)
1505 MACOSX_DEFAULT_ARCH="i386"
1506 ;;
1507 ppc)
1508 MACOSX_DEFAULT_ARCH="ppc"
1509 ;;
1510 *)
1511 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1512 ;;
1513 esac
1514 else
1515 case `arch` in
1516 i386)
1517 MACOSX_DEFAULT_ARCH="x86_64"
1518 ;;
1519 ppc)
1520 MACOSX_DEFAULT_ARCH="ppc64"
1521 ;;
1522 *)
1523 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1524 ;;
1525 esac
1526
1527 #ARCH_RUN_32BIT="true"
1528 fi
1529
1530 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001531 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001532 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001533esac
1534
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001535AC_MSG_CHECKING(for --enable-framework)
1536if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001537then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001538 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001539 # -F. is needed to allow linking to the framework while
1540 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001541 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1542 [Define if you want to produce an OpenStep/Rhapsody framework
1543 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001544 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001545 if test $enable_shared = "yes"
1546 then
1547 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1548 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001549else
1550 AC_MSG_RESULT(no)
1551fi
1552
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001554case $ac_sys_system/$ac_sys_release in
1555 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001556 AC_DEFINE(WITH_DYLD, 1,
1557 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1558 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1559 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001560 AC_MSG_RESULT(always on for Darwin)
1561 ;;
1562 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001563 AC_MSG_RESULT(no)
1564 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001565esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001566
Guido van Rossumac405f61994-09-12 10:56:06 +00001567# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001568AC_SUBST(SO)
1569AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001570AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001571AC_SUBST(CCSHARED)
1572AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001573# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001574# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001575AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001576if test -z "$SO"
1577then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001578 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001579 hp*|HP*)
1580 case `uname -m` in
1581 ia64) SO=.so;;
1582 *) SO=.sl;;
1583 esac
1584 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001585 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001586 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001587 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001588else
1589 # this might also be a termcap variable, see #610332
1590 echo
1591 echo '====================================================================='
1592 echo '+ +'
1593 echo '+ WARNING: You have set SO in your environment. +'
1594 echo '+ Do you really mean to change the extension for shared libraries? +'
1595 echo '+ Continuing in 10 seconds to let you to ponder. +'
1596 echo '+ +'
1597 echo '====================================================================='
1598 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001599fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001600AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001601
Thomas Wouters477c8d52006-05-27 19:21:47 +00001602AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001603# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001604# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001605# (Shared libraries in this instance are shared modules to be loaded into
1606# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001607AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001608if test -z "$LDSHARED"
1609then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001610 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001611 AIX*)
1612 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001613 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001614 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001615 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001616 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001617 SunOS/5*)
1618 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001619 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001620 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001621 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001622 hp*|HP*)
1623 if test "$GCC" = "yes"
1624 then LDSHARED='$(CC) -shared'
1625 else LDSHARED='ld -b';
1626 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001627 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001628 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001629 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1630 if test "$enable_framework" ; then
1631 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001632 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1633 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001634 else
1635 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001636 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001637 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001638 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001639 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1640 if test "$enable_framework" ; then
1641 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001642 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1643 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001644 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001645 # No framework, use the Python app as bundle-loader
1646 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001647 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001648 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001649 Darwin/*)
1650 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1651 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001652
Georg Brandlfcaf9102008-07-16 02:17:56 +00001653 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001654 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001655 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001656 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001657 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001658 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1659 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001660 else
1661 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1662 if test "$enable_framework" ; then
1663 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001664 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1665 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001666 else
1667 # No framework, use the Python app as bundle-loader
1668 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1669 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1670 fi
1671 fi
1672 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001673 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001674 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001675 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001676 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001677 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001678 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001679 else
1680 LDSHARED="ld -Bshareable ${LDFLAGS}"
1681 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001682 OpenBSD*)
1683 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1684 then
1685 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1686 else
1687 case `uname -r` in
1688 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1689 LDSHARED="ld -Bshareable ${LDFLAGS}"
1690 ;;
1691 *)
1692 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1693 ;;
1694 esac
1695 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001696 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001697 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001698 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001699 then LDSHARED='$(CC) -shared'
1700 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001701 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001702 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001703 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001704 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001705 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001706 *) LDSHARED="ld";;
1707 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001708fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001709AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001710BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001711# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001712# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001713AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001714if test -z "$CCSHARED"
1715then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001716 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001717 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001718 then CCSHARED="-fPIC";
1719 elif test `uname -p` = sparc;
1720 then CCSHARED="-xcode=pic32";
1721 else CCSHARED="-Kpic";
1722 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001723 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001724 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001725 else CCSHARED="+z";
1726 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001727 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001728 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001729 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001730 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001731 if test "$GCC" = "yes"
1732 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001733 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001734 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001735 SCO_SV*)
1736 if test "$GCC" = "yes"
1737 then CCSHARED="-fPIC"
1738 else CCSHARED="-Kpic -belf"
1739 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001740 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001741 IRIX*/6*) case $CC in
1742 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001743 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001744 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001745 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001746 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001747fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001748AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001749# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001750# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001751AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001752if test -z "$LINKFORSHARED"
1753then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001754 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001755 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001756 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001757 LINKFORSHARED="-Wl,-E -Wl,+s";;
1758# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001759 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001760 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001761 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001762 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001763 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001764 if test "$enable_framework"
1765 then
Jack Jansenda49e192005-01-07 13:08:22 +00001766 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001767 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001768 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001769 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001770 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001771 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001772 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001773 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1774 then
1775 LINKFORSHARED="-Wl,--export-dynamic"
1776 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001777 SunOS/5*) case $CC in
1778 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001779 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001780 then
1781 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001782 fi;;
1783 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001784 CYGWIN*)
1785 if test $enable_shared = "no"
1786 then
1787 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1788 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001789 QNX*)
1790 # -Wl,-E causes the symbols to be added to the dynamic
1791 # symbol table so that they can be found when a module
1792 # is loaded. -N 2048K causes the stack size to be set
1793 # to 2048 kilobytes so that the stack doesn't overflow
1794 # when running test_compile.py.
1795 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001796 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001797fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001798AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001799
Georg Brandl93de2162008-07-16 02:21:06 +00001800
Neil Schemenauer61c51152001-01-26 16:18:16 +00001801AC_SUBST(CFLAGSFORSHARED)
1802AC_MSG_CHECKING(CFLAGSFORSHARED)
1803if test ! "$LIBRARY" = "$LDLIBRARY"
1804then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001805 case $ac_sys_system in
1806 CYGWIN*)
1807 # Cygwin needs CCSHARED when building extension DLLs
1808 # but not when building the interpreter DLL.
1809 CFLAGSFORSHARED='';;
1810 *)
1811 CFLAGSFORSHARED='$(CCSHARED)'
1812 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001813fi
1814AC_MSG_RESULT($CFLAGSFORSHARED)
1815
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001816# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1817# library (with --enable-shared).
1818# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001819# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1820# if it is not required, since it creates a dependency of the shared library
1821# to LIBS. This, in turn, means that applications linking the shared libpython
1822# don't need to link LIBS explicitly. The default should be only changed
1823# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001824AC_SUBST(SHLIBS)
1825AC_MSG_CHECKING(SHLIBS)
1826case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001827 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001828 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001829esac
1830AC_MSG_RESULT($SHLIBS)
1831
1832
Guido van Rossum627b2d71993-12-24 10:39:16 +00001833# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001834AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1835AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001836
Georg Brandleee31162008-12-07 15:15:22 +00001837# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001838if test "$with_threads" = "yes" -o -z "$with_threads"; then
1839 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1840 # posix4 on Solaris 2.6
1841 # pthread (first!) on Linux
1842fi
1843
Martin v. Löwis19d17342003-06-14 21:03:05 +00001844# check if we need libintl for locale functions
1845AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001846 [AC_DEFINE(WITH_LIBINTL, 1,
1847 [Define to 1 if libintl is needed for locale functions.])
1848 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001849
1850# checks for system dependent C++ extensions support
1851case "$ac_sys_system" in
1852 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1853 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1854 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001855 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1856 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1857 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001858 AC_MSG_RESULT(yes)],
1859 [AC_MSG_RESULT(no)]);;
1860 *) ;;
1861esac
1862
Guido van Rossum70c7f481998-03-26 18:44:10 +00001863# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001864AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001865AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001866
Guido van Rossumc5a39031996-07-31 17:35:03 +00001867AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001868AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001869 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1870[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001871AC_MSG_RESULT($withval)
1872LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001873],
1874[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001875
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001876# Check for use of the system libffi library
1877AC_MSG_CHECKING(for --with-system-ffi)
1878AC_ARG_WITH(system_ffi,
1879 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1880
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001881AC_MSG_RESULT($with_system_ffi)
1882
Matthias Klose55708cc2009-04-30 08:06:49 +00001883# Check for --with-dbmliborder
1884AC_MSG_CHECKING(for --with-dbmliborder)
1885AC_ARG_WITH(dbmliborder,
1886 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'.]),
1887[
1888if test x$with_dbmliborder = xyes
1889then
1890AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1891else
1892 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1893 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1894 then
1895 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1896 fi
1897 done
1898fi])
1899AC_MSG_RESULT($with_dbmliborder)
1900
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001901# Determine if signalmodule should be used.
1902AC_SUBST(USE_SIGNAL_MODULE)
1903AC_SUBST(SIGNAL_OBJS)
1904AC_MSG_CHECKING(for --with-signal-module)
1905AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001906 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001907
1908if test -z "$with_signal_module"
1909then with_signal_module="yes"
1910fi
1911AC_MSG_RESULT($with_signal_module)
1912
1913if test "${with_signal_module}" = "yes"; then
1914 USE_SIGNAL_MODULE=""
1915 SIGNAL_OBJS=""
1916else
1917 USE_SIGNAL_MODULE="#"
1918 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1919fi
1920
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001921# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001922AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001923USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001924
Guido van Rossum54d93d41997-01-22 20:51:58 +00001925AC_MSG_CHECKING(for --with-dec-threads)
1926AC_SUBST(LDLAST)
1927AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001928 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1929[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001930AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001931LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001932if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001933 with_thread="$withval";
1934fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001935[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001936
Martin v. Löwis11437992002-04-12 09:54:03 +00001937# Templates for things AC_DEFINEd more than once.
1938# For a single AC_DEFINE, no template is needed.
1939AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1940AH_TEMPLATE(_REENTRANT,
1941 [Define to force use of thread-safe errno, h_errno, and other functions])
1942AH_TEMPLATE(WITH_THREAD,
1943 [Define if you want to compile in rudimentary thread support])
1944
Guido van Rossum54d93d41997-01-22 20:51:58 +00001945AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001946dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001947AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001948 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001949
Barry Warsawc0d24d82000-06-29 16:12:00 +00001950# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001951dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001952AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001953 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1954 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001955
1956if test -z "$with_threads"
1957then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001958fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001959AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001960
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001961AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001962if test "$with_threads" = "no"
1963then
1964 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001965elif test "$ac_cv_pthread_is_default" = yes
1966then
1967 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001968 # Defining _REENTRANT on system with POSIX threads should not hurt.
1969 AC_DEFINE(_REENTRANT)
1970 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001971 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001972elif test "$ac_cv_kpthread" = "yes"
1973then
1974 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001975 if test "$ac_cv_cxx_thread" = "yes"; then
1976 CXX="$CXX -Kpthread"
1977 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001978 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001979 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001980 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001981elif test "$ac_cv_kthread" = "yes"
1982then
1983 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001984 if test "$ac_cv_cxx_thread" = "yes"; then
1985 CXX="$CXX -Kthread"
1986 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001987 AC_DEFINE(WITH_THREAD)
1988 posix_threads=yes
1989 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001990elif test "$ac_cv_pthread" = "yes"
1991then
1992 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001993 if test "$ac_cv_cxx_thread" = "yes"; then
1994 CXX="$CXX -pthread"
1995 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001996 AC_DEFINE(WITH_THREAD)
1997 posix_threads=yes
1998 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001999else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002000 if test ! -z "$with_threads" -a -d "$with_threads"
2001 then LDFLAGS="$LDFLAGS -L$with_threads"
2002 fi
2003 if test ! -z "$withval" -a -d "$withval"
2004 then LDFLAGS="$LDFLAGS -L$withval"
2005 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002006
2007 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002008 # define _POSIX_THREADS in unistd.h. Some apparently don't
2009 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002010 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2011 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002012 [
2013#include <unistd.h>
2014#ifdef _POSIX_THREADS
2015yes
2016#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002017 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2018 AC_MSG_RESULT($unistd_defines_pthreads)
2019
Martin v. Löwis130fb172001-07-19 11:00:41 +00002020 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002021 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2022 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002023 AC_DEFINE(HURD_C_THREADS, 1,
2024 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002025 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002026 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002027 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2028 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002029 AC_DEFINE(MACH_C_THREADS, 1,
2030 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002031 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002032 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002033 AC_ARG_WITH([pth],
2034 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2035 [AC_MSG_RESULT($withval)
2036 AC_DEFINE([WITH_THREAD])
2037 AC_DEFINE([HAVE_PTH], 1,
2038 [Define if you have GNU PTH threads.])
2039 LIBS="-lpth $LIBS"
2040 THREADOBJ="Python/thread.o"],
2041 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002042
2043 # Just looking for pthread_create in libpthread is not enough:
2044 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2045 # So we really have to include pthread.h, and then link.
2046 _libs=$LIBS
2047 LIBS="$LIBS -lpthread"
2048 AC_MSG_CHECKING([for pthread_create in -lpthread])
2049 AC_TRY_LINK([#include <pthread.h>
2050
2051void * start_routine (void *arg) { exit (0); }], [
2052pthread_create (NULL, NULL, start_routine, NULL)], [
2053 AC_MSG_RESULT(yes)
2054 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002055 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002056 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002057 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002058 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002059 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002060 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002061 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2062 AC_DEFINE(ATHEOS_THREADS, 1,
2063 [Define this if you have AtheOS threads.])
2064 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002065 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002066 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002067 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002068 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002069 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002070 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002071 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002072 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002073 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002074 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002075 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002076 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002077 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002078 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002079 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002080 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002081 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002082 ])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002083
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002084 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2085 LIBS="$LIBS -lmpc"
2086 THREADOBJ="Python/thread.o"
2087 USE_THREAD_MODULE=""])
2088
2089 if test "$posix_threads" != "yes"; then
2090 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2091 LIBS="$LIBS -lthread"
2092 THREADOBJ="Python/thread.o"
2093 USE_THREAD_MODULE=""])
2094 fi
2095
2096 if test "$USE_THREAD_MODULE" != "#"
2097 then
2098 # If the above checks didn't disable threads, (at least) OSF1
2099 # needs this '-threads' argument during linking.
2100 case $ac_sys_system in
2101 OSF1) LDLAST=-threads;;
2102 esac
2103 fi
2104fi
2105
2106if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002107 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002108 AC_DEFINE(_POSIX_THREADS, 1,
2109 [Define if you have POSIX threads,
2110 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002111 fi
2112
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002113 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2114 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002115 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2116 Defined for Solaris 2.6 bug in pthread header.)
2117 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002118 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002119 Define if the Posix semaphores do not work on your system)
2120 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002121 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2122 Define if the Posix semaphores do not work on your system)
2123 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002124 esac
2125
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002126 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2127 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2128 [AC_TRY_RUN([#include <pthread.h>
2129 void *foo(void *parm) {
2130 return NULL;
2131 }
2132 main() {
2133 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002134 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002135 if (pthread_attr_init(&attr)) exit(-1);
2136 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002137 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002138 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002139 }],
2140 ac_cv_pthread_system_supported=yes,
2141 ac_cv_pthread_system_supported=no,
2142 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002143 ])
2144 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2145 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002146 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002147 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002148 AC_CHECK_FUNCS(pthread_sigmask,
2149 [case $ac_sys_system in
2150 CYGWIN*)
2151 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2152 [Define if pthread_sigmask() does not work on your system.])
2153 ;;
2154 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002155fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002156
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002157
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002158# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002159AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002160AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002161AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002162[ --enable-ipv6 Enable ipv6 (with ipv4) support
2163 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002164[ case "$enableval" in
2165 no)
2166 AC_MSG_RESULT(no)
2167 ipv6=no
2168 ;;
2169 *) AC_MSG_RESULT(yes)
2170 AC_DEFINE(ENABLE_IPV6)
2171 ipv6=yes
2172 ;;
2173 esac ],
2174
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002175[
2176dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002177 AC_TRY_RUN([ /* AF_INET6 available check */
2178#include <sys/types.h>
2179#include <sys/socket.h>
2180main()
2181{
2182 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2183 exit(1);
2184 else
2185 exit(0);
2186}
2187],
2188 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002189 ipv6=yes,
2190 AC_MSG_RESULT(no)
2191 ipv6=no,
2192 AC_MSG_RESULT(no)
2193 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002194)
2195
2196if test "$ipv6" = "yes"; then
2197 AC_MSG_CHECKING(if RFC2553 API is available)
2198 AC_TRY_COMPILE([#include <sys/types.h>
2199#include <netinet/in.h>],
2200 [struct sockaddr_in6 x;
2201x.sin6_scope_id;],
2202 AC_MSG_RESULT(yes)
2203 ipv6=yes,
2204 AC_MSG_RESULT(no, IPv6 disabled)
2205 ipv6=no)
2206fi
2207
2208if test "$ipv6" = "yes"; then
2209 AC_DEFINE(ENABLE_IPV6)
2210fi
2211])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002212
2213ipv6type=unknown
2214ipv6lib=none
2215ipv6trylibc=no
2216
2217if test "$ipv6" = "yes"; then
2218 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002219 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2220 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002221 case $i in
2222 inria)
2223 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002224 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002225#include <netinet/in.h>
2226#ifdef IPV6_INRIA_VERSION
2227yes
2228#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002229 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002230 ;;
2231 kame)
2232 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002233 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002234#include <netinet/in.h>
2235#ifdef __KAME__
2236yes
2237#endif],
2238 [ipv6type=$i;
2239 ipv6lib=inet6
2240 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002241 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002242 ;;
2243 linux-glibc)
2244 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002245 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002246#include <features.h>
2247#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2248yes
2249#endif],
2250 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002251 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252 ;;
2253 linux-inet6)
2254 dnl http://www.v6.linux.or.jp/
2255 if test -d /usr/inet6; then
2256 ipv6type=$i
2257 ipv6lib=inet6
2258 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002259 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002260 fi
2261 ;;
2262 solaris)
2263 if test -f /etc/netconfig; then
2264 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2265 ipv6type=$i
2266 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002267 fi
2268 fi
2269 ;;
2270 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002271 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002272#include <sys/param.h>
2273#ifdef _TOSHIBA_INET6
2274yes
2275#endif],
2276 [ipv6type=$i;
2277 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002278 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002279 ;;
2280 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002281 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282#include </usr/local/v6/include/sys/v6config.h>
2283#ifdef __V6D__
2284yes
2285#endif],
2286 [ipv6type=$i;
2287 ipv6lib=v6;
2288 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002289 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002290 ;;
2291 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002292 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293#include <sys/param.h>
2294#ifdef _ZETA_MINAMI_INET6
2295yes
2296#endif],
2297 [ipv6type=$i;
2298 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002299 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002300 ;;
2301 esac
2302 if test "$ipv6type" != "unknown"; then
2303 break
2304 fi
2305 done
2306 AC_MSG_RESULT($ipv6type)
2307fi
2308
2309if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2310 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2311 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2312 echo "using lib$ipv6lib"
2313 else
2314 if test $ipv6trylibc = "yes"; then
2315 echo "using libc"
2316 else
2317 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2318 echo "You need to fetch lib$ipv6lib.a from appropriate"
2319 echo 'ipv6 kit and compile beforehand.'
2320 exit 1
2321 fi
2322 fi
2323fi
2324
Georg Brandl93de2162008-07-16 02:21:06 +00002325AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2326AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2327 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2328 AC_MSG_RESULT(yes),
2329 AC_MSG_RESULT(no)
2330)
2331
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002332# Check for --with-doc-strings
2333AC_MSG_CHECKING(for --with-doc-strings)
2334AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002335 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002336
2337if test -z "$with_doc_strings"
2338then with_doc_strings="yes"
2339fi
2340if test "$with_doc_strings" != "no"
2341then
2342 AC_DEFINE(WITH_DOC_STRINGS, 1,
2343 [Define if you want documentation strings in extension modules])
2344fi
2345AC_MSG_RESULT($with_doc_strings)
2346
Neil Schemenauera35c6882001-02-27 04:45:05 +00002347# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002348AC_MSG_CHECKING(for --with-tsc)
2349AC_ARG_WITH(tsc,
2350[ --with(out)-tsc enable/disable timestamp counter profile], [
2351if test "$withval" != no
2352then
2353 AC_DEFINE(WITH_TSC, 1,
2354 [Define to profile with the Pentium timestamp counter])
2355 AC_MSG_RESULT(yes)
2356else AC_MSG_RESULT(no)
2357fi],
2358[AC_MSG_RESULT(no)])
2359
2360# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002361AC_MSG_CHECKING(for --with-pymalloc)
2362AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002363 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002364
2365if test -z "$with_pymalloc"
2366then with_pymalloc="yes"
2367fi
2368if test "$with_pymalloc" != "no"
2369then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002370 AC_DEFINE(WITH_PYMALLOC, 1,
2371 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002372fi
2373AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002374
Barry Warsawef82cd72000-06-30 16:21:01 +00002375# Check for --with-wctype-functions
2376AC_MSG_CHECKING(for --with-wctype-functions)
2377AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002378 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2379[
Barry Warsawef82cd72000-06-30 16:21:01 +00002380if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002381then
2382 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2383 [Define if you want wctype.h functions to be used instead of the
2384 one supplied by Python itself. (see Include/unicodectype.h).])
2385 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002386else AC_MSG_RESULT(no)
2387fi],
2388[AC_MSG_RESULT(no)])
2389
Guido van Rossum68242b51996-05-28 22:53:03 +00002390# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002391AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002392DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002393
Guido van Rossume97ee181999-12-20 21:27:22 +00002394# the dlopen() function means we might want to use dynload_shlib.o. some
2395# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002396AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002397
2398# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2399# loading of modules.
2400AC_SUBST(DYNLOADFILE)
2401AC_MSG_CHECKING(DYNLOADFILE)
2402if test -z "$DYNLOADFILE"
2403then
2404 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002405 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2406 if test "$ac_cv_func_dlopen" = yes
2407 then DYNLOADFILE="dynload_shlib.o"
2408 else DYNLOADFILE="dynload_aix.o"
2409 fi
2410 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002411 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002412 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2413 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002414 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002415 *)
2416 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2417 # out any dynamic loading
2418 if test "$ac_cv_func_dlopen" = yes
2419 then DYNLOADFILE="dynload_shlib.o"
2420 else DYNLOADFILE="dynload_stub.o"
2421 fi
2422 ;;
2423 esac
2424fi
2425AC_MSG_RESULT($DYNLOADFILE)
2426if test "$DYNLOADFILE" != "dynload_stub.o"
2427then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002428 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2429 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002430fi
2431
Jack Jansenc49e5b72001-06-19 15:00:23 +00002432# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2433
2434AC_SUBST(MACHDEP_OBJS)
2435AC_MSG_CHECKING(MACHDEP_OBJS)
2436if test -z "$MACHDEP_OBJS"
2437then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002438 MACHDEP_OBJS=$extra_machdep_objs
2439else
2440 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002441fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002442AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002443
Guido van Rossum627b2d71993-12-24 10:39:16 +00002444# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002445AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2446 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002447 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002448 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002449 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002450 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002451 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002452 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2453 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002454 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002455 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002456 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002457 truncate uname unsetenv utimes waitpid wait3 wait4 \
2458 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002459
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002460# For some functions, having a definition is not sufficient, since
2461# we want to take their address.
2462AC_MSG_CHECKING(for chroot)
2463AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2464 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2465 AC_MSG_RESULT(yes),
2466 AC_MSG_RESULT(no)
2467)
2468AC_MSG_CHECKING(for link)
2469AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2470 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2471 AC_MSG_RESULT(yes),
2472 AC_MSG_RESULT(no)
2473)
2474AC_MSG_CHECKING(for symlink)
2475AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2476 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2477 AC_MSG_RESULT(yes),
2478 AC_MSG_RESULT(no)
2479)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002480AC_MSG_CHECKING(for fchdir)
2481AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2482 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2483 AC_MSG_RESULT(yes),
2484 AC_MSG_RESULT(no)
2485)
2486AC_MSG_CHECKING(for fsync)
2487AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002488 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002489 AC_MSG_RESULT(yes),
2490 AC_MSG_RESULT(no)
2491)
2492AC_MSG_CHECKING(for fdatasync)
2493AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2494 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2495 AC_MSG_RESULT(yes),
2496 AC_MSG_RESULT(no)
2497)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002498AC_MSG_CHECKING(for epoll)
2499AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2500 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2501 AC_MSG_RESULT(yes),
2502 AC_MSG_RESULT(no)
2503)
2504AC_MSG_CHECKING(for kqueue)
2505AC_TRY_COMPILE([
2506#include <sys/types.h>
2507#include <sys/event.h>
2508 ], int x=kqueue(),
2509 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2510 AC_MSG_RESULT(yes),
2511 AC_MSG_RESULT(no)
2512)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002513# On some systems (eg. FreeBSD 5), we would find a definition of the
2514# functions ctermid_r, setgroups in the library, but no prototype
2515# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2516# address to avoid compiler warnings and potential miscompilations
2517# because of the missing prototypes.
2518
2519AC_MSG_CHECKING(for ctermid_r)
2520AC_TRY_COMPILE([
2521#include "confdefs.h"
2522#include <stdio.h>
2523], void* p = ctermid_r,
2524 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2525 AC_MSG_RESULT(yes),
2526 AC_MSG_RESULT(no)
2527)
2528
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002529AC_MSG_CHECKING(for flock)
2530AC_TRY_COMPILE([
2531#include "confdefs.h"
2532#include <sys/file.h>
2533], void* p = flock,
2534 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2535 AC_MSG_RESULT(yes),
2536 AC_MSG_RESULT(no)
2537)
2538
2539AC_MSG_CHECKING(for getpagesize)
2540AC_TRY_COMPILE([
2541#include "confdefs.h"
2542#include <unistd.h>
2543], void* p = getpagesize,
2544 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2545 AC_MSG_RESULT(yes),
2546 AC_MSG_RESULT(no)
2547)
2548
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002549dnl check for true
2550AC_CHECK_PROGS(TRUE, true, /bin/true)
2551
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002552dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2553dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002554AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002555 AC_CHECK_LIB(resolv, inet_aton)
2556)
2557
Christian Heimesd0764e22007-12-04 15:00:33 +00002558# On Tru64, chflags seems to be present, but calling it will
2559# exit Python
2560AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002561AC_CACHE_VAL(ac_cv_have_chflags,
2562AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002563#include <sys/stat.h>
2564#include <unistd.h>
2565int main(int argc, char*argv[])
2566{
2567 if(chflags(argv[0], 0) != 0)
2568 return 1;
2569 return 0;
2570}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002571]], ac_cv_have_chflags=yes,
2572 ac_cv_have_chflags=no,
2573 ac_cv_have_chflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002574)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002575AC_MSG_RESULT($ac_cv_have_chflags)
2576if test $ac_cv_have_chflags = yes
2577then
2578 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2579fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002580
2581AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002582AC_CACHE_VAL(ac_cv_have_lchflags,
2583AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002584#include <sys/stat.h>
2585#include <unistd.h>
2586int main(int argc, char*argv[])
2587{
2588 if(lchflags(argv[0], 0) != 0)
2589 return 1;
2590 return 0;
2591}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002592]], ac_cv_have_lchflags=yes,
2593 ac_cv_have_lchflags=no,
2594 ac_cv_have_lchflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002595)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002596AC_MSG_RESULT($ac_cv_have_lchflags)
2597if test $ac_cv_have_lchflags = yes
2598then
2599 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2600fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002601
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002602dnl Check if system zlib has *Copy() functions
2603dnl
2604dnl On MacOSX the linker will search for dylibs on the entire linker path
2605dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2606dnl to revert to a more traditional unix behaviour and make it possible to
2607dnl override the system libz with a local static library of libz. Temporarily
2608dnl add that flag to our CFLAGS as well to ensure that we check the version
2609dnl of libz that will be used by setup.py.
2610dnl The -L/usr/local/lib is needed as wel to get the same compilation
2611dnl environment as setup.py (and leaving it out can cause configure to use the
2612dnl wrong version of the library)
2613case $ac_sys_system/$ac_sys_release in
2614Darwin/*)
2615 _CUR_CFLAGS="${CFLAGS}"
2616 _CUR_LDFLAGS="${LDFLAGS}"
2617 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2618 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2619 ;;
2620esac
2621
2622AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2623
2624case $ac_sys_system/$ac_sys_release in
2625Darwin/*)
2626 CFLAGS="${_CUR_CFLAGS}"
2627 LDFLAGS="${_CUR_LDFLAGS}"
2628 ;;
2629esac
2630
Martin v. Löwise9416172003-05-03 10:12:45 +00002631AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002632AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002633#include "confdefs.h"
2634#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002635], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002636 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2637 AC_MSG_RESULT(yes),
2638 AC_MSG_RESULT(no)
2639)
2640
2641AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002642AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002643#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002644#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002645#include <sys/socket.h>
2646#include <netinet/in.h>
2647#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002648], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002649 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2650 AC_MSG_RESULT(yes),
2651 AC_MSG_RESULT(no)
2652)
2653
2654AC_MSG_CHECKING(for inet_pton)
2655AC_TRY_COMPILE([
2656#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002657#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002658#include <sys/socket.h>
2659#include <netinet/in.h>
2660#include <arpa/inet.h>
2661], void* p = inet_pton,
2662 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2663 AC_MSG_RESULT(yes),
2664 AC_MSG_RESULT(no)
2665)
2666
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002667# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002668AC_MSG_CHECKING(for setgroups)
2669AC_TRY_COMPILE([
2670#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002671#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002672#ifdef HAVE_GRP_H
2673#include <grp.h>
2674#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002675],
2676void* p = setgroups,
2677 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2678 AC_MSG_RESULT(yes),
2679 AC_MSG_RESULT(no)
2680)
2681
Fred Drake8cef4cf2000-06-28 16:40:38 +00002682# check for openpty and forkpty
2683
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002684AC_CHECK_FUNCS(openpty,,
2685 AC_CHECK_LIB(util,openpty,
2686 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2687 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2688 )
2689)
2690AC_CHECK_FUNCS(forkpty,,
2691 AC_CHECK_LIB(util,forkpty,
2692 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2693 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2694 )
2695)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002696
Christian Heimesb186d002008-03-18 15:15:01 +00002697# Stuff for expat.
2698AC_CHECK_FUNCS(memmove)
2699
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002700# check for long file support functions
2701AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2702
Christian Heimesb186d002008-03-18 15:15:01 +00002703AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002704AC_CHECK_FUNCS(getpgrp,
2705 AC_TRY_COMPILE([#include <unistd.h>],
2706 [getpgrp(0);],
2707 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2708 [Define if getpgrp() must be called as getpgrp(0).])
2709 )
2710)
Jack Jansen150753c2003-03-29 22:07:47 +00002711AC_CHECK_FUNCS(setpgrp,
2712 AC_TRY_COMPILE([#include <unistd.h>],
2713 [setpgrp(0,0);],
2714 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2715 [Define if setpgrp() must be called as setpgrp(0, 0).])
2716 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002717)
2718AC_CHECK_FUNCS(gettimeofday,
2719 AC_TRY_COMPILE([#include <sys/time.h>],
2720 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2721 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2722 [Define if gettimeofday() does not have second (timezone) argument
2723 This is the case on Motorola V4 (R40V4.2)])
2724 )
2725)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002726
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002727AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002728AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002729#if defined(MAJOR_IN_MKDEV)
2730#include <sys/mkdev.h>
2731#elif defined(MAJOR_IN_SYSMACROS)
2732#include <sys/sysmacros.h>
2733#else
2734#include <sys/types.h>
2735#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002736],[
2737 makedev(major(0),minor(0));
2738],[
2739 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2740 [Define to 1 if you have the device macros.])
2741 AC_MSG_RESULT(yes)
2742],[
2743 AC_MSG_RESULT(no)
2744])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002745
2746# On OSF/1 V5.1, getaddrinfo is available, but a define
2747# for [no]getaddrinfo in netdb.h.
2748AC_MSG_CHECKING(for getaddrinfo)
2749AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002750#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002751#include <sys/socket.h>
2752#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002753#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002754], [getaddrinfo(NULL, NULL, NULL, NULL);],
2755have_getaddrinfo=yes,
2756have_getaddrinfo=no)
2757AC_MSG_RESULT($have_getaddrinfo)
2758if test $have_getaddrinfo = yes
2759then
2760 AC_MSG_CHECKING(getaddrinfo bug)
2761 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2762 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002763#include <sys/types.h>
2764#include <netdb.h>
2765#include <string.h>
2766#include <sys/socket.h>
2767#include <netinet/in.h>
2768
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002769int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002770{
2771 int passive, gaierr, inet4 = 0, inet6 = 0;
2772 struct addrinfo hints, *ai, *aitop;
2773 char straddr[INET6_ADDRSTRLEN], strport[16];
2774
2775 for (passive = 0; passive <= 1; passive++) {
2776 memset(&hints, 0, sizeof(hints));
2777 hints.ai_family = AF_UNSPEC;
2778 hints.ai_flags = passive ? AI_PASSIVE : 0;
2779 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002780 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002781 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2782 (void)gai_strerror(gaierr);
2783 goto bad;
2784 }
2785 for (ai = aitop; ai; ai = ai->ai_next) {
2786 if (ai->ai_addr == NULL ||
2787 ai->ai_addrlen == 0 ||
2788 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2789 straddr, sizeof(straddr), strport, sizeof(strport),
2790 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2791 goto bad;
2792 }
2793 switch (ai->ai_family) {
2794 case AF_INET:
2795 if (strcmp(strport, "54321") != 0) {
2796 goto bad;
2797 }
2798 if (passive) {
2799 if (strcmp(straddr, "0.0.0.0") != 0) {
2800 goto bad;
2801 }
2802 } else {
2803 if (strcmp(straddr, "127.0.0.1") != 0) {
2804 goto bad;
2805 }
2806 }
2807 inet4++;
2808 break;
2809 case AF_INET6:
2810 if (strcmp(strport, "54321") != 0) {
2811 goto bad;
2812 }
2813 if (passive) {
2814 if (strcmp(straddr, "::") != 0) {
2815 goto bad;
2816 }
2817 } else {
2818 if (strcmp(straddr, "::1") != 0) {
2819 goto bad;
2820 }
2821 }
2822 inet6++;
2823 break;
2824 case AF_UNSPEC:
2825 goto bad;
2826 break;
2827 default:
2828 /* another family support? */
2829 break;
2830 }
2831 }
2832 }
2833
2834 if (!(inet4 == 0 || inet4 == 2))
2835 goto bad;
2836 if (!(inet6 == 0 || inet6 == 2))
2837 goto bad;
2838
2839 if (aitop)
2840 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002841 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002842
2843 bad:
2844 if (aitop)
2845 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002846 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002847}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002848]], ac_cv_buggy_getaddrinfo=no,
2849 ac_cv_buggy_getaddrinfo=yes,
2850 ac_cv_buggy_getaddrinfo=yes))
2851fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002852
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002853if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2854then
2855 if test $ipv6 = yes
2856 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002857 echo 'Fatal: You must get working getaddrinfo() function.'
2858 echo ' or you can specify "--disable-ipv6"'.
2859 exit 1
2860 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002861else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002862 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002863fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002864AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002865
Guido van Rossum627b2d71993-12-24 10:39:16 +00002866# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002867AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002868AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002869AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002870AC_CHECK_MEMBERS([struct stat.st_rdev])
2871AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002872AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002873AC_CHECK_MEMBERS([struct stat.st_gen])
2874AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002875AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002876
2877AC_MSG_CHECKING(for time.h that defines altzone)
2878AC_CACHE_VAL(ac_cv_header_time_altzone,
2879[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2880 ac_cv_header_time_altzone=yes,
2881 ac_cv_header_time_altzone=no)])
2882AC_MSG_RESULT($ac_cv_header_time_altzone)
2883if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002884 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002885fi
2886
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002887was_it_defined=no
2888AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002889AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002890#include <sys/types.h>
2891#include <sys/select.h>
2892#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002893], [;], [
2894 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2895 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2896 (which you can't on SCO ODT 3.0).])
2897 was_it_defined=yes
2898])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002899AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002900
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002901AC_MSG_CHECKING(for addrinfo)
2902AC_CACHE_VAL(ac_cv_struct_addrinfo,
2903AC_TRY_COMPILE([
2904# include <netdb.h>],
2905 [struct addrinfo a],
2906 ac_cv_struct_addrinfo=yes,
2907 ac_cv_struct_addrinfo=no))
2908AC_MSG_RESULT($ac_cv_struct_addrinfo)
2909if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002910 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002911fi
2912
2913AC_MSG_CHECKING(for sockaddr_storage)
2914AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2915AC_TRY_COMPILE([
2916# include <sys/types.h>
2917# include <sys/socket.h>],
2918 [struct sockaddr_storage s],
2919 ac_cv_struct_sockaddr_storage=yes,
2920 ac_cv_struct_sockaddr_storage=no))
2921AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2922if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002923 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002924fi
2925
Guido van Rossum627b2d71993-12-24 10:39:16 +00002926# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002927
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002928AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002929AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002930
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002931works=no
2932AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002933AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2934 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2935)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002936AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002937
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002938works=no
2939AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002940AC_TRY_COMPILE([], [signed char c;], works=yes,
2941 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2942)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002943AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002944
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002945have_prototypes=no
2946AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002947AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2948 AC_DEFINE(HAVE_PROTOTYPES, 1,
2949 [Define if your compiler supports function prototype])
2950 have_prototypes=yes
2951])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002952AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002953
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002954works=no
2955AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002956AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002957#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002958int foo(int x, ...) {
2959 va_list va;
2960 va_start(va, x);
2961 va_arg(va, int);
2962 va_arg(va, char *);
2963 va_arg(va, double);
2964 return 0;
2965}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002966], [return foo(10, "", 3.14);], [
2967 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2968 [Define if your compiler supports variable length function prototypes
2969 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2970 works=yes
2971])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002972AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002973
Dave Cole331708b2004-08-09 04:51:41 +00002974# check for socketpair
2975AC_MSG_CHECKING(for socketpair)
2976AC_TRY_COMPILE([
2977#include <sys/types.h>
2978#include <sys/socket.h>
2979], void *x=socketpair,
2980 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2981 AC_MSG_RESULT(yes),
2982 AC_MSG_RESULT(no)
2983)
2984
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002985# check if sockaddr has sa_len member
2986AC_MSG_CHECKING(if sockaddr has sa_len member)
2987AC_TRY_COMPILE([#include <sys/types.h>
2988#include <sys/socket.h>],
2989[struct sockaddr x;
2990x.sa_len = 0;],
2991 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002992 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002993 AC_MSG_RESULT(no))
2994
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002995va_list_is_array=no
2996AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002997AC_TRY_COMPILE([
2998#ifdef HAVE_STDARG_PROTOTYPES
2999#include <stdarg.h>
3000#else
3001#include <varargs.h>
3002#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003003], [va_list list1, list2; list1 = list2;], , [
3004 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3005 va_list_is_array=yes
3006])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003007AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003008
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003009# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003010AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3011 [Define this if you have some version of gethostbyname_r()])
3012
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003013AC_CHECK_FUNC(gethostbyname_r, [
3014 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3015 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3016 OLD_CFLAGS=$CFLAGS
3017 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3018 AC_TRY_COMPILE([
3019# include <netdb.h>
3020 ], [
3021 char *name;
3022 struct hostent *he, *res;
3023 char buffer[2048];
3024 int buflen = 2048;
3025 int h_errnop;
3026
3027 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3028 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003029 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003030 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3031 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003032 AC_MSG_RESULT(yes)
3033 ], [
3034 AC_MSG_RESULT(no)
3035 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3036 AC_TRY_COMPILE([
3037# include <netdb.h>
3038 ], [
3039 char *name;
3040 struct hostent *he;
3041 char buffer[2048];
3042 int buflen = 2048;
3043 int h_errnop;
3044
3045 (void) gethostbyname_r(name, he, buffer, buflen, &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_5_ARG, 1,
3049 [Define this if you have the 5-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 3 args])
3054 AC_TRY_COMPILE([
3055# include <netdb.h>
3056 ], [
3057 char *name;
3058 struct hostent *he;
3059 struct hostent_data data;
3060
3061 (void) gethostbyname_r(name, he, &data);
3062 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003063 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003064 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3065 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003066 AC_MSG_RESULT(yes)
3067 ], [
3068 AC_MSG_RESULT(no)
3069 ])
3070 ])
3071 ])
3072 CFLAGS=$OLD_CFLAGS
3073], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003074 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003075])
3076AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3077AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3078AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003079AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003080AC_SUBST(HAVE_GETHOSTBYNAME)
3081
Guido van Rossum627b2d71993-12-24 10:39:16 +00003082# checks for system services
3083# (none yet)
3084
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003085# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003086AC_CHECK_FUNC(__fpu_control,
3087 [],
3088 [AC_CHECK_LIB(ieee, __fpu_control)
3089])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003090
Guido van Rossum93274221997-05-09 02:42:00 +00003091# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003092AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003093AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003094 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3095[
Guido van Rossum93274221997-05-09 02:42:00 +00003096if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003097then
3098 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3099 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3100 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003101else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003102fi],
3103[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003104
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003105# check for --with-libm=...
3106AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003107case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003108Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003109*) LIBM=-lm
3110esac
Guido van Rossum93274221997-05-09 02:42:00 +00003111AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003112AC_ARG_WITH(libm,
3113 AC_HELP_STRING(--with-libm=STRING, math library),
3114[
Guido van Rossum93274221997-05-09 02:42:00 +00003115if test "$withval" = no
3116then LIBM=
3117 AC_MSG_RESULT(force LIBM empty)
3118elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003119then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003120 AC_MSG_RESULT(set LIBM="$withval")
3121else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003122fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003123[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003124
3125# check for --with-libc=...
3126AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003127AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003128AC_ARG_WITH(libc,
3129 AC_HELP_STRING(--with-libc=STRING, C library),
3130[
Guido van Rossum93274221997-05-09 02:42:00 +00003131if test "$withval" = no
3132then LIBC=
3133 AC_MSG_RESULT(force LIBC empty)
3134elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003135then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003136 AC_MSG_RESULT(set LIBC="$withval")
3137else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003138fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003139[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003140
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003141# **************************************************
3142# * Check for various properties of floating point *
3143# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003144
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003145AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3146AC_CACHE_VAL(ac_cv_little_endian_double, [
3147AC_TRY_RUN([
3148#include <string.h>
3149int main() {
3150 double x = 9006104071832581.0;
3151 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3152 return 0;
3153 else
3154 return 1;
3155}
3156],
3157ac_cv_little_endian_double=yes,
3158ac_cv_little_endian_double=no,
3159ac_cv_little_endian_double=no)])
3160AC_MSG_RESULT($ac_cv_little_endian_double)
3161if test "$ac_cv_little_endian_double" = yes
3162then
3163 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3164 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3165 with the least significant byte first])
3166fi
3167
3168AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3169AC_CACHE_VAL(ac_cv_big_endian_double, [
3170AC_TRY_RUN([
3171#include <string.h>
3172int main() {
3173 double x = 9006104071832581.0;
3174 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3175 return 0;
3176 else
3177 return 1;
3178}
3179],
3180ac_cv_big_endian_double=yes,
3181ac_cv_big_endian_double=no,
3182ac_cv_big_endian_double=no)])
3183AC_MSG_RESULT($ac_cv_big_endian_double)
3184if test "$ac_cv_big_endian_double" = yes
3185then
3186 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3187 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3188 with the most significant byte first])
3189fi
3190
3191# Some ARM platforms use a mixed-endian representation for doubles.
3192# While Python doesn't currently have full support for these platforms
3193# (see e.g., issue 1762561), we can at least make sure that float <-> string
3194# conversions work.
3195AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3196AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3197AC_TRY_RUN([
3198#include <string.h>
3199int main() {
3200 double x = 9006104071832581.0;
3201 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3202 return 0;
3203 else
3204 return 1;
3205}
3206],
3207ac_cv_mixed_endian_double=yes,
3208ac_cv_mixed_endian_double=no,
3209ac_cv_mixed_endian_double=no)])
3210AC_MSG_RESULT($ac_cv_mixed_endian_double)
3211if test "$ac_cv_mixed_endian_double" = yes
3212then
3213 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3214 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3215 in ARM mixed-endian order (byte order 45670123)])
3216fi
3217
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003218# The short float repr introduced in Python 3.1 requires the
3219# correctly-rounded string <-> double conversion functions from
3220# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3221# rounding; this is a problem on x86, where the x87 FPU has a default
3222# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3223# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003224if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3225then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003226 # Check that it's okay to use gcc inline assembler to get and set
3227 # x87 control word. It should be, but you never know...
3228 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3229 AC_TRY_COMPILE([], [
3230 unsigned short cw;
3231 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3232 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3233 ],
3234 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3235 AC_MSG_RESULT($have_gcc_asm_for_x87)
3236 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003237 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003238 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3239 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003240 fi
3241fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003242
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003243# Detect whether system arithmetic is subject to x87-style double
3244# rounding issues. The result of this test has little meaning on non
3245# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3246# mode is round-to-nearest and double rounding issues are present, and
3247# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3248AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003249# $BASECFLAGS may affect the result
3250ac_save_cc="$CC"
3251CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003252AC_TRY_RUN([
3253#include <stdlib.h>
3254#include <math.h>
3255int main() {
3256 volatile double x, y, z;
3257 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3258 x = 0.99999999999999989; /* 1-2**-53 */
3259 y = 1./x;
3260 if (y != 1.)
3261 exit(0);
3262 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3263 x = 1e16;
3264 y = 2.99999;
3265 z = x + y;
3266 if (z != 1e16+4.)
3267 exit(0);
3268 /* both tests show evidence of double rounding */
3269 exit(1);
3270}
3271],
3272ac_cv_x87_double_rounding=no,
3273ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003274ac_cv_x87_double_rounding=no)
3275CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003276AC_MSG_RESULT($ac_cv_x87_double_rounding)
3277if test "$ac_cv_x87_double_rounding" = yes
3278then
3279 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3280 [Define if arithmetic is subject to x87-style double rounding issue])
3281fi
3282
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003283# ************************************
3284# * Check for mathematical functions *
3285# ************************************
3286
3287LIBS_SAVE=$LIBS
3288LIBS="$LIBS $LIBM"
3289
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003290# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3291# -0. on some architectures.
3292AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3293AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3294AC_TRY_RUN([
3295#include <math.h>
3296#include <stdlib.h>
3297int main() {
3298 /* return 0 if either negative zeros don't exist
3299 on this platform or if negative zeros exist
3300 and tanh(-0.) == -0. */
3301 if (atan2(0., -1.) == atan2(-0., -1.) ||
3302 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3303 else exit(1);
3304}
3305],
3306ac_cv_tanh_preserves_zero_sign=yes,
3307ac_cv_tanh_preserves_zero_sign=no,
3308ac_cv_tanh_preserves_zero_sign=no)])
3309AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3310if test "$ac_cv_tanh_preserves_zero_sign" = yes
3311then
3312 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3313 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3314fi
3315
Mark Dickinson9c113362009-09-05 10:36:23 +00003316AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3317AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003318AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003319
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003320LIBS=$LIBS_SAVE
3321
Mark Dickinson10683072009-04-18 21:18:19 +00003322# Multiprocessing check for broken sem_getvalue
3323AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003324AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003325AC_TRY_RUN([
3326#include <unistd.h>
3327#include <fcntl.h>
3328#include <stdio.h>
3329#include <semaphore.h>
3330#include <sys/stat.h>
3331
3332int main(void){
3333 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3334 int count;
3335 int res;
3336 if(a==SEM_FAILED){
3337 perror("sem_open");
3338 return 1;
3339
3340 }
3341 res = sem_getvalue(a, &count);
3342 sem_close(a);
3343 return res==-1 ? 1 : 0;
3344}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003345], ac_cv_broken_sem_getvalue=no,
3346 ac_cv_broken_sem_getvalue=yes,
3347 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003348)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003349AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3350if test $ac_cv_broken_sem_getvalue = yes
3351then
3352 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3353 [define to 1 if your sem_getvalue is broken.])
3354fi
Mark Dickinson10683072009-04-18 21:18:19 +00003355
Mark Dickinsonbd792642009-03-18 20:06:12 +00003356# determine what size digit to use for Python's longs
3357AC_MSG_CHECKING([digit size for Python's longs])
3358AC_ARG_ENABLE(big-digits,
3359AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3360[case $enable_big_digits in
3361yes)
3362 enable_big_digits=30 ;;
3363no)
3364 enable_big_digits=15 ;;
3365[15|30])
3366 ;;
3367*)
3368 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3369esac
3370AC_MSG_RESULT($enable_big_digits)
3371AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3372],
3373[AC_MSG_RESULT(no value specified)])
3374
Guido van Rossumef2255b2000-03-10 22:30:29 +00003375# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003376AC_CHECK_HEADER(wchar.h, [
3377 AC_DEFINE(HAVE_WCHAR_H, 1,
3378 [Define if the compiler provides a wchar.h header file.])
3379 wchar_h="yes"
3380],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003381wchar_h="no"
3382)
3383
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003384# determine wchar_t size
3385if test "$wchar_h" = yes
3386then
Guido van Rossum67b26592001-10-20 14:21:45 +00003387 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003388fi
3389
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003390AC_MSG_CHECKING(for UCS-4 tcl)
3391have_ucs4_tcl=no
3392AC_TRY_COMPILE([
3393#include <tcl.h>
3394#if TCL_UTF_MAX != 6
3395# error "NOT UCS4_TCL"
3396#endif], [], [
3397 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3398 have_ucs4_tcl=yes
3399])
3400AC_MSG_RESULT($have_ucs4_tcl)
3401
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003402# check whether wchar_t is signed or not
3403if test "$wchar_h" = yes
3404then
3405 # check whether wchar_t is signed or not
3406 AC_MSG_CHECKING(whether wchar_t is signed)
3407 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3408 AC_TRY_RUN([
3409 #include <wchar.h>
3410 int main()
3411 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003412 /* Success: exit code 0 */
3413 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003414 }
3415 ],
3416 ac_cv_wchar_t_signed=yes,
3417 ac_cv_wchar_t_signed=no,
3418 ac_cv_wchar_t_signed=yes)])
3419 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3420fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003421
Georg Brandl52d168a2008-01-07 18:10:24 +00003422AC_MSG_CHECKING(what type to use for str)
3423AC_ARG_WITH(wide-unicode,
3424 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3425[
3426if test "$withval" != no
3427then unicode_size="4"
3428else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003429fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003430],
3431[
3432case "$have_ucs4_tcl" in
3433 yes) unicode_size="4" ;;
3434 *) unicode_size="2" ;;
3435esac
3436])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003437
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003438AH_TEMPLATE(Py_UNICODE_SIZE,
3439 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003440case "$unicode_size" in
3441 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3442 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003443esac
3444
Martin v. Löwis11437992002-04-12 09:54:03 +00003445AH_TEMPLATE(PY_UNICODE_TYPE,
3446 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003447
Georg Brandl52d168a2008-01-07 18:10:24 +00003448# wchar_t is only usable if it maps to an unsigned type
3449if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003450 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003451then
3452 PY_UNICODE_TYPE="wchar_t"
3453 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3454 [Define if you have a useable wchar_t type defined in wchar.h; useable
3455 means wchar_t must be an unsigned type with at least 16 bits. (see
3456 Include/unicodeobject.h).])
3457 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3458elif test "$ac_cv_sizeof_short" = "$unicode_size"
3459then
3460 PY_UNICODE_TYPE="unsigned short"
3461 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3462elif test "$ac_cv_sizeof_long" = "$unicode_size"
3463then
3464 PY_UNICODE_TYPE="unsigned long"
3465 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3466else
3467 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003468fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003469AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003470
3471# check for endianness
3472AC_C_BIGENDIAN
3473
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003474# Check whether right shifting a negative integer extends the sign bit
3475# or fills with zeros (like the Cray J90, according to Tim Peters).
3476AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003477AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003478AC_TRY_RUN([
3479int main()
3480{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003481 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003482}
Guido van Rossum3065c942001-09-17 04:03:14 +00003483],
3484ac_cv_rshift_extends_sign=yes,
3485ac_cv_rshift_extends_sign=no,
3486ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003487AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3488if test "$ac_cv_rshift_extends_sign" = no
3489then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003490 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3491 [Define if i>>j for signed int i does not extend the sign bit
3492 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003493fi
3494
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003495# check for getc_unlocked and related locking functions
3496AC_MSG_CHECKING(for getc_unlocked() and friends)
3497AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3498AC_TRY_LINK([#include <stdio.h>],[
3499 FILE *f = fopen("/dev/null", "r");
3500 flockfile(f);
3501 getc_unlocked(f);
3502 funlockfile(f);
3503], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3504AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3505if test "$ac_cv_have_getc_unlocked" = yes
3506then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003507 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3508 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003509fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003510
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003511# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003512# save the value of LIBS so we don't actually link Python with readline
3513LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003514
3515# On some systems we need to link readline to a termcap compatible
3516# library. NOTE: Keep the precedence of listed libraries synchronised
3517# with setup.py.
3518py_cv_lib_readline=no
3519AC_MSG_CHECKING([how to link readline libs])
3520for py_libtermcap in "" ncursesw ncurses curses termcap; do
3521 if test -z "$py_libtermcap"; then
3522 READLINE_LIBS="-lreadline"
3523 else
3524 READLINE_LIBS="-lreadline -l$py_libtermcap"
3525 fi
3526 LIBS="$READLINE_LIBS $LIBS_no_readline"
3527 AC_LINK_IFELSE(
3528 [AC_LANG_CALL([],[readline])],
3529 [py_cv_lib_readline=yes])
3530 if test $py_cv_lib_readline = yes; then
3531 break
3532 fi
3533done
3534# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3535#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003536if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003537 AC_MSG_RESULT([none])
3538else
3539 AC_MSG_RESULT([$READLINE_LIBS])
3540 AC_DEFINE(HAVE_LIBREADLINE, 1,
3541 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003542fi
3543
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003544# check for readline 2.1
3545AC_CHECK_LIB(readline, rl_callback_handler_install,
3546 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003547 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003548
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003549# check for readline 2.2
3550AC_TRY_CPP([#include <readline/readline.h>],
3551have_readline=yes, have_readline=no)
3552if test $have_readline = yes
3553then
3554 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3555 [readline/readline.h],
3556 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3557 [Define if you have readline 2.2]), )
3558fi
3559
Martin v. Löwis0daad592001-09-30 21:09:59 +00003560# check for readline 4.0
3561AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003562 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003563 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003564
Thomas Wouters89d996e2007-09-08 17:39:28 +00003565# also in 4.0
3566AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3567 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003568 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003569
Guido van Rossum353ae582001-07-10 16:45:32 +00003570# check for readline 4.2
3571AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003572 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003573 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003574
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003575# also in readline 4.2
3576AC_TRY_CPP([#include <readline/readline.h>],
3577have_readline=yes, have_readline=no)
3578if test $have_readline = yes
3579then
3580 AC_EGREP_HEADER([extern int rl_catch_signals;],
3581 [readline/readline.h],
3582 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3583 [Define if you can turn off readline's signal handling.]), )
3584fi
3585
Martin v. Löwis82bca632006-02-10 20:49:30 +00003586# End of readline checks: restore LIBS
3587LIBS=$LIBS_no_readline
3588
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003589AC_MSG_CHECKING(for broken nice())
3590AC_CACHE_VAL(ac_cv_broken_nice, [
3591AC_TRY_RUN([
3592int main()
3593{
3594 int val1 = nice(1);
3595 if (val1 != -1 && val1 == nice(2))
3596 exit(0);
3597 exit(1);
3598}
Guido van Rossum3065c942001-09-17 04:03:14 +00003599],
3600ac_cv_broken_nice=yes,
3601ac_cv_broken_nice=no,
3602ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003603AC_MSG_RESULT($ac_cv_broken_nice)
3604if test "$ac_cv_broken_nice" = yes
3605then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003606 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3607 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003608fi
3609
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003610AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003611AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003612AC_TRY_RUN([
3613#include <poll.h>
3614
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003615int main()
3616{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003617 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003618 int poll_test;
3619
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003620 close (42);
3621
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003622 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003623 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003624 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003625 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003626 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003627 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003628 return 1;
3629}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003630],
3631ac_cv_broken_poll=yes,
3632ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003633ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003634AC_MSG_RESULT($ac_cv_broken_poll)
3635if test "$ac_cv_broken_poll" = yes
3636then
3637 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3638 [Define if poll() sets errno on invalid file descriptors.])
3639fi
3640
Brett Cannon43802422005-02-10 20:48:03 +00003641# Before we can test tzset, we need to check if struct tm has a tm_zone
3642# (which is not required by ISO C or UNIX spec) and/or if we support
3643# tzname[]
3644AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003645
Brett Cannon43802422005-02-10 20:48:03 +00003646# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003647AC_MSG_CHECKING(for working tzset())
3648AC_CACHE_VAL(ac_cv_working_tzset, [
3649AC_TRY_RUN([
3650#include <stdlib.h>
3651#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003652#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003653
3654#if HAVE_TZNAME
3655extern char *tzname[];
3656#endif
3657
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003658int main()
3659{
Brett Cannon18367812003-09-19 00:59:16 +00003660 /* Note that we need to ensure that not only does tzset(3)
3661 do 'something' with localtime, but it works as documented
3662 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003663 This includes making sure that tzname is set properly if
3664 tm->tm_zone does not exist since it is the alternative way
3665 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003666
3667 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003668 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003669 */
3670
Brett Cannon43802422005-02-10 20:48:03 +00003671 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003672 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3673
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003674 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003675 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003676 if (localtime(&groundhogday)->tm_hour != 0)
3677 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003678#if HAVE_TZNAME
3679 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3680 if (strcmp(tzname[0], "UTC") ||
3681 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3682 exit(1);
3683#endif
Brett Cannon18367812003-09-19 00:59:16 +00003684
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003685 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003686 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003687 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003688 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003689#if HAVE_TZNAME
3690 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3691 exit(1);
3692#endif
Brett Cannon18367812003-09-19 00:59:16 +00003693
3694 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3695 tzset();
3696 if (localtime(&groundhogday)->tm_hour != 11)
3697 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003698#if HAVE_TZNAME
3699 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3700 exit(1);
3701#endif
3702
3703#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003704 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3705 exit(1);
3706 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3707 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003708#endif
Brett Cannon18367812003-09-19 00:59:16 +00003709
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003710 exit(0);
3711}
3712],
3713ac_cv_working_tzset=yes,
3714ac_cv_working_tzset=no,
3715ac_cv_working_tzset=no)])
3716AC_MSG_RESULT($ac_cv_working_tzset)
3717if test "$ac_cv_working_tzset" = yes
3718then
3719 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3720 [Define if tzset() actually switches the local timezone in a meaningful way.])
3721fi
3722
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003723# Look for subsecond timestamps in struct stat
3724AC_MSG_CHECKING(for tv_nsec in struct stat)
3725AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3726AC_TRY_COMPILE([#include <sys/stat.h>], [
3727struct stat st;
3728st.st_mtim.tv_nsec = 1;
3729],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003730ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003731ac_cv_stat_tv_nsec=no,
3732ac_cv_stat_tv_nsec=no))
3733AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3734if test "$ac_cv_stat_tv_nsec" = yes
3735then
3736 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3737 [Define if you have struct stat.st_mtim.tv_nsec])
3738fi
3739
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003740# Look for BSD style subsecond timestamps in struct stat
3741AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3742AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3743AC_TRY_COMPILE([#include <sys/stat.h>], [
3744struct stat st;
3745st.st_mtimespec.tv_nsec = 1;
3746],
3747ac_cv_stat_tv_nsec2=yes,
3748ac_cv_stat_tv_nsec2=no,
3749ac_cv_stat_tv_nsec2=no))
3750AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3751if test "$ac_cv_stat_tv_nsec2" = yes
3752then
3753 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3754 [Define if you have struct stat.st_mtimensec])
3755fi
3756
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003757# On HP/UX 11.0, mvwdelch is a block with a return statement
3758AC_MSG_CHECKING(whether mvwdelch is an expression)
3759AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3760AC_TRY_COMPILE([#include <curses.h>], [
3761 int rtn;
3762 rtn = mvwdelch(0,0,0);
3763], ac_cv_mvwdelch_is_expression=yes,
3764 ac_cv_mvwdelch_is_expression=no,
3765 ac_cv_mvwdelch_is_expression=yes))
3766AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3767
3768if test "$ac_cv_mvwdelch_is_expression" = yes
3769then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003770 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3771 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003772fi
3773
3774AC_MSG_CHECKING(whether WINDOW has _flags)
3775AC_CACHE_VAL(ac_cv_window_has_flags,
3776AC_TRY_COMPILE([#include <curses.h>], [
3777 WINDOW *w;
3778 w->_flags = 0;
3779], ac_cv_window_has_flags=yes,
3780 ac_cv_window_has_flags=no,
3781 ac_cv_window_has_flags=no))
3782AC_MSG_RESULT($ac_cv_window_has_flags)
3783
3784
3785if test "$ac_cv_window_has_flags" = yes
3786then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003787 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3788 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003789fi
3790
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003791AC_MSG_CHECKING(for is_term_resized)
3792AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3793 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3794 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003795 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003796)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003797
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003798AC_MSG_CHECKING(for resize_term)
3799AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3800 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3801 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003802 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003803)
3804
3805AC_MSG_CHECKING(for resizeterm)
3806AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3807 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3808 AC_MSG_RESULT(yes),
3809 AC_MSG_RESULT(no)
3810)
3811
Thomas Wouters89f507f2006-12-13 04:49:30 +00003812AC_MSG_CHECKING(for /dev/ptmx)
3813
3814if test -r /dev/ptmx
3815then
3816 AC_MSG_RESULT(yes)
3817 AC_DEFINE(HAVE_DEV_PTMX, 1,
3818 [Define if we have /dev/ptmx.])
3819else
3820 AC_MSG_RESULT(no)
3821fi
3822
3823AC_MSG_CHECKING(for /dev/ptc)
3824
3825if test -r /dev/ptc
3826then
3827 AC_MSG_RESULT(yes)
3828 AC_DEFINE(HAVE_DEV_PTC, 1,
3829 [Define if we have /dev/ptc.])
3830else
3831 AC_MSG_RESULT(no)
3832fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003833
Thomas Wouters477c8d52006-05-27 19:21:47 +00003834AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003835AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003836AC_TRY_RUN([[
3837#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003838#include <stddef.h>
3839#include <string.h>
3840
Christian Heimes2c181612007-12-17 20:04:13 +00003841#ifdef HAVE_SYS_TYPES_H
3842#include <sys/types.h>
3843#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003844
3845#ifdef HAVE_SSIZE_T
3846typedef ssize_t Py_ssize_t;
3847#elif SIZEOF_VOID_P == SIZEOF_LONG
3848typedef long Py_ssize_t;
3849#else
3850typedef int Py_ssize_t;
3851#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003852
Christian Heimes2c181612007-12-17 20:04:13 +00003853int main()
3854{
3855 char buffer[256];
3856
Thomas Wouters477c8d52006-05-27 19:21:47 +00003857 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3858 return 1;
3859
Thomas Wouters89f507f2006-12-13 04:49:30 +00003860 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003861 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003862
3863 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3864 return 1;
3865
3866 if (strcmp(buffer, "-123"))
3867 return 1;
3868
Thomas Wouters477c8d52006-05-27 19:21:47 +00003869 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003870}
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003871]], ac_cv_have_size_t_format=yes,
3872 ac_cv_have_size_t_format=no,
3873 ac_cv_have_size_t_format=no)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003874)
3875AC_MSG_RESULT($ac_cv_have_size_t_format)
3876if test $ac_cv_have_size_t_format = yes
3877then
3878 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3879 [Define to printf format modifier for Py_ssize_t])
3880fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00003881
Martin v. Löwis01c04012002-11-11 14:58:44 +00003882AC_CHECK_TYPE(socklen_t,,
3883 AC_DEFINE(socklen_t,int,
3884 Define to `int' if <sys/socket.h> does not define.),[
3885#ifdef HAVE_SYS_TYPES_H
3886#include <sys/types.h>
3887#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003888#ifdef HAVE_SYS_SOCKET_H
3889#include <sys/socket.h>
3890#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003891])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003892
Antoine Pitroufff95302008-09-03 18:58:51 +00003893AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003894AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00003895AC_TRY_RUN([
3896#include<stdlib.h>
3897int main() {
3898 size_t len = -1;
3899 const char *str = "text";
3900 len = mbstowcs(NULL, str, 0);
3901 return (len != 4);
3902}
3903],
3904ac_cv_broken_mbstowcs=no,
3905ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003906ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00003907AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3908if test "$ac_cv_broken_mbstowcs" = yes
3909then
3910 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3911 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3912 wide chars that would be converted.])
3913fi
3914
Antoine Pitroub52ec782009-01-25 16:34:23 +00003915# Check for --with-computed-gotos
3916AC_MSG_CHECKING(for --with-computed-gotos)
3917AC_ARG_WITH(computed-gotos,
3918 AC_HELP_STRING(--with-computed-gotos,
3919 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3920[
3921if test "$withval" != no
3922then
3923 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3924 [Define if you want to use computed gotos in ceval.c.])
3925 AC_MSG_RESULT(yes)
3926else AC_MSG_RESULT(no)
3927fi],
3928[AC_MSG_RESULT(no)])
3929
3930
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003931AC_SUBST(THREADHEADERS)
3932
3933for h in `(cd $srcdir;echo Python/thread_*.h)`
3934do
3935 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3936done
3937
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003938AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003939SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003940AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003941for dir in $SRCDIRS; do
3942 if test ! -d $dir; then
3943 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003944 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003945done
3946AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003947
Guido van Rossum627b2d71993-12-24 10:39:16 +00003948# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003949AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003950AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003951
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003952echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003953if test ! -f Modules/Setup
3954then
3955 cp $srcdir/Modules/Setup.dist Modules/Setup
3956fi
3957
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003958echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003959if test ! -f Modules/Setup.local
3960then
3961 echo "# Edit this file for local setup changes" >Modules/Setup.local
3962fi
3963
3964echo "creating Makefile"
3965$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3966 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003967 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003968mv config.c Modules