blob: 58ceea6dd44972b961599524cdc9c4000a03e530 [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
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
146 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
147 specify an alternate name of the framework built with --enable-framework),
148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
183 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
192 else
193 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
194 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000196
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000197 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000199 AC_CONFIG_FILES(Mac/Makefile)
200 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000220])
221AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000222AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223AC_SUBST(PYTHONFRAMEWORKDIR)
224AC_SUBST(PYTHONFRAMEWORKPREFIX)
225AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226AC_SUBST(FRAMEWORKINSTALLFIRST)
227AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000228AC_SUBST(FRAMEWORKALTINSTALLFIRST)
229AC_SUBST(FRAMEWORKALTINSTALLLAST)
230AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000232##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000233## AC_HELP_STRING(--with-dyld,
234## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000235##
Guido van Rossumb418f891996-07-30 18:06:02 +0000236# Set name for machine-dependent library files
237AC_SUBST(MACHDEP)
238AC_MSG_CHECKING(MACHDEP)
239if test -z "$MACHDEP"
240then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000242 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000243 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000245 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_md_system=`echo $ac_sys_system |
249 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
250 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000251 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000252 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000254 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000255 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000256 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000257 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000258 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000259 esac
260fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000261
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000262# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
263# disable features if it is defined, without any means to access these
264# features as extensions. For these systems, we skip the definition of
265# _XOPEN_SOURCE. Before adding a system to the list to gain access to
266# some feature, make sure there is no alternative way to access this
267# feature. Also, when using wildcards, make sure you have verified the
268# need for not defining _XOPEN_SOURCE on all systems matching the
269# wildcard, and that the wildcard does not include future systems
270# (which may remove their limitations).
271dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
272case $ac_sys_system/$ac_sys_release in
273 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
274 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000275 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000276 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000277 define_xopen_source=no
278 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
279 # also defined. This can be overridden by defining _BSD_SOURCE
280 # As this has a different meaning on Linux, only define it on OpenBSD
281 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
282 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000283 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
284 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
285 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000286 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 +0000287 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000288 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
289 # of union __?sigval. Reported by Stuart Bishop.
290 SunOS/5.6)
291 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000292 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
293 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000294 # Reconfirmed for 7.1.4 by Martin v. Loewis.
295 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000296 define_xopen_source=no;;
297 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000298 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000299 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000300 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000301 # On FreeBSD 4, the math functions C89 does not cover are never defined
302 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
303 FreeBSD/4.*)
304 define_xopen_source=no;;
305 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
306 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
307 # identifies itself as Darwin/7.*
308 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
309 # disables platform specific features beyond repair.
310 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
311 # has no effect, don't bother defining them
312 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000313 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000314 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
315 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
316 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000317 AIX/4)
318 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000319 AIX/5)
320 if test `uname -r` -eq 1; then
321 define_xopen_source=no
322 fi
323 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000324 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
325 # defining NI_NUMERICHOST.
326 QNX/6.3.2)
327 define_xopen_source=no
328 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000329
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000330esac
331
332if test $define_xopen_source = yes
333then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000334 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
335 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000336 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
337 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000338 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000339 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000340 AC_DEFINE(_XOPEN_SOURCE, 500,
341 Define to the level of X/Open that your system supports)
342 ;;
343 *)
344 AC_DEFINE(_XOPEN_SOURCE, 600,
345 Define to the level of X/Open that your system supports)
346 ;;
347 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000348
349 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
350 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
351 # several APIs are not declared. Since this is also needed in some
352 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000353 # except for Solaris 10, where it must not be defined,
354 # as it implies XPG4.2
355 case $ac_sys_system/$ac_sys_release in
356 SunOS/5.10)
357 ;;
358 *)
359 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
360 Define to activate Unix95-and-earlier features)
361 ;;
362 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000363
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000364 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
365
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000366fi
367
Guido van Rossum91922671997-10-09 20:24:13 +0000368#
369# SGI compilers allow the specification of the both the ABI and the
370# ISA on the command line. Depending on the values of these switches,
371# different and often incompatable code will be generated.
372#
373# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
374# thus supply support for various ABI/ISA combinations. The MACHDEP
375# variable is also adjusted.
376#
377AC_SUBST(SGI_ABI)
378if test ! -z "$SGI_ABI"
379then
380 CC="cc $SGI_ABI"
381 LDFLAGS="$SGI_ABI $LDFLAGS"
382 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
383fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000384AC_MSG_RESULT($MACHDEP)
385
Jack Jansen6b08a402004-06-03 12:41:45 +0000386# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
387# it may influence the way we can build extensions, so distutils
388# needs to check it
389AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000390AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000391CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000392EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000393
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000394AC_MSG_CHECKING(machine type as reported by uname -m)
395ac_sys_machine=`uname -m`
396AC_MSG_RESULT($ac_sys_machine)
397
Guido van Rossum627b2d71993-12-24 10:39:16 +0000398# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000399
400# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
401# for debug/optimization stuff. BASECFLAGS is for flags that are required
402# just to get things to compile and link. Users are free to override OPT
403# when running configure or make. The build should not break if they do.
404# BASECFLAGS should generally not be messed with, however.
405
406# XXX shouldn't some/most/all of this code be merged with the stuff later
407# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000408AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000409AC_ARG_WITH(gcc,
410 AC_HELP_STRING(--without-gcc,never use gcc),
411[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000412 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000413 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000414 without_gcc=yes;;
415 yes) CC=gcc
416 without_gcc=no;;
417 *) CC=$withval
418 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000419 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000420 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000421 AIX*) CC=cc_r
422 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000423 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000424 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000425AC_MSG_RESULT($without_gcc)
426
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000427# If the user switches compilers, we can't believe the cache
428if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
429then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000430 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
431(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000432fi
433
Guido van Rossum627b2d71993-12-24 10:39:16 +0000434AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000435
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000436AC_SUBST(CXX)
437AC_SUBST(MAINCC)
438AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
439AC_ARG_WITH(cxx_main,
440 AC_HELP_STRING([--with-cxx-main=<compiler>],
441 [compile main() and link python executable with C++ compiler]),
442[
443
444 case $withval in
445 no) with_cxx_main=no
446 MAINCC='$(CC)';;
447 yes) with_cxx_main=yes
448 MAINCC='$(CXX)';;
449 *) with_cxx_main=yes
450 MAINCC=$withval
451 if test -z "$CXX"
452 then
453 CXX=$withval
454 fi;;
455 esac], [
456 with_cxx_main=no
457 MAINCC='$(CC)'
458])
459AC_MSG_RESULT($with_cxx_main)
460
461preset_cxx="$CXX"
462if test -z "$CXX"
463then
464 case "$CC" in
465 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
466 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
467 esac
468 if test "$CXX" = "notfound"
469 then
470 CXX=""
471 fi
472fi
473if test -z "$CXX"
474then
475 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
476 if test "$CXX" = "notfound"
477 then
478 CXX=""
479 fi
480fi
481if test "$preset_cxx" != "$CXX"
482then
483 AC_MSG_WARN([
484
485 By default, distutils will build C++ extension modules with "$CXX".
486 If this is not intended, then set CXX on the configure command line.
487 ])
488fi
489
490
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000491# checks for UNIX variants that set C preprocessor variables
492AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000493
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000494# Check for unsupported systems
495case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000496atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000497 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
498 echo See README for details.
499 exit 1;;
500esac
501
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000502AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000503AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000504AC_ARG_WITH(suffix,
505 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
506[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000507 case $withval in
508 no) EXEEXT=;;
509 yes) EXEEXT=.exe;;
510 *) EXEEXT=$withval;;
511 esac])
512AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000513
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000514# Test whether we're running on a non-case-sensitive system, in which
515# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000516AC_SUBST(BUILDEXEEXT)
517AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000518if test ! -d CaseSensitiveTestDir; then
519mkdir CaseSensitiveTestDir
520fi
521
522if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000523then
Jack Jansen1999ef42001-12-06 21:47:20 +0000524 AC_MSG_RESULT(yes)
525 BUILDEXEEXT=.exe
526else
527 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000528 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000529fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000530rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000531
Guido van Rossumdd997f71998-10-07 19:58:26 +0000532case $MACHDEP in
533bsdos*)
534 case $CC in
535 gcc) CC="$CC -D_HAVE_BSDI";;
536 esac;;
537esac
538
Guido van Rossum84561611997-08-21 00:08:11 +0000539case $ac_sys_system in
540hp*|HP*)
541 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000542 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000543 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000544SunOS*)
545 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000546 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000547 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000548esac
549
Martin v. Löwise8964d42001-03-06 12:09:07 +0000550
Neil Schemenauer61c51152001-01-26 16:18:16 +0000551AC_SUBST(LIBRARY)
552AC_MSG_CHECKING(LIBRARY)
553if test -z "$LIBRARY"
554then
555 LIBRARY='libpython$(VERSION).a'
556fi
557AC_MSG_RESULT($LIBRARY)
558
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000559# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000560# name of the library into which to insert object files). BLDLIBRARY is also
561# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
562# is blank as the main program is not linked directly against LDLIBRARY.
563# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
564# systems without shared libraries, LDLIBRARY is the same as LIBRARY
565# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
566# DLLLIBRARY is the shared (i.e., DLL) library.
567#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000568# RUNSHARED is used to run shared python without installed libraries
569#
570# INSTSONAME is the name of the shared library that will be use to install
571# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000572AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000573AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000574AC_SUBST(BLDLIBRARY)
575AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576AC_SUBST(INSTSONAME)
577AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000578LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000579BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000580INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000581DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000583RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584
Guido van Rossumfb842551997-08-06 23:42:07 +0000585# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000586# If CXX is set, and if it is needed to link a main function that was
587# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
588# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000589# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000590# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000591AC_SUBST(LINKCC)
592AC_MSG_CHECKING(LINKCC)
593if test -z "$LINKCC"
594then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000595 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000596 case $ac_sys_system in
597 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000598 exp_extra="\"\""
599 if test $ac_sys_release -ge 5 -o \
600 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
601 exp_extra="."
602 fi
603 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000604 QNX*)
605 # qcc must be used because the other compilers do not
606 # support -N.
607 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000608 esac
609fi
610AC_MSG_RESULT($LINKCC)
611
Tarek Ziadébe720e02009-05-09 11:55:12 +0000612# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
613# make sure we default having it set to "no": this is used by
614# distutils.unixccompiler to know if it should add --enable-new-dtags
615# to linker command lines, and failing to detect GNU ld simply results
616# in the same bahaviour as before.
617AC_SUBST(GNULD)
618AC_MSG_CHECKING(for GNU ld)
619ac_prog=ld
620if test "$GCC" = yes; then
621 ac_prog=`$CC -print-prog-name=ld`
622fi
623case `"$ac_prog" -V 2>&1 < /dev/null` in
624 *GNU*)
625 GNULD=yes;;
626 *)
627 GNULD=no;;
628esac
629AC_MSG_RESULT($GNULD)
630
Martin v. Löwis1142de32002-03-29 16:28:31 +0000631AC_MSG_CHECKING(for --enable-shared)
632AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000633 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000634
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635if test -z "$enable_shared"
636then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000637 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000638 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000639 enable_shared="yes";;
640 *)
641 enable_shared="no";;
642 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643fi
644AC_MSG_RESULT($enable_shared)
645
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000646AC_MSG_CHECKING(for --enable-profiling)
647AC_ARG_ENABLE(profiling,
648 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
649[ac_save_cc="$CC"
650 CC="$CC -pg"
651 AC_TRY_RUN([int main() { return 0; }],
652 ac_enable_profiling="yes",
653 ac_enable_profiling="no",
654 ac_enable_profiling="no")
655 CC="$ac_save_cc"])
656AC_MSG_RESULT($ac_enable_profiling)
657
658case "$ac_enable_profiling" in
659 "yes")
660 BASECFLAGS="-pg $BASECFLAGS"
661 LDFLAGS="-pg $LDFLAGS"
662 ;;
663esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664
665AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000666
Guido van Rossumb8552162001-09-05 14:58:11 +0000667# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
668# library that we build, but we do not want to link against it (we
669# will find it with a -framework option). For this reason there is an
670# extra variable BLDLIBRARY against which Python and the extension
671# modules are linked, BLDLIBRARY. This is normally the same as
672# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000673if test "$enable_framework"
674then
675 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000676 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000677 BLDLIBRARY=''
678else
679 BLDLIBRARY='$(LDLIBRARY)'
680fi
681
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682# Other platforms follow
683if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000684 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000685 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686 CYGWIN*)
687 LDLIBRARY='libpython$(VERSION).dll.a'
688 DLLLIBRARY='libpython$(VERSION).dll'
689 ;;
690 SunOS*)
691 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000692 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000693 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000694 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000695 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000696 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 LDLIBRARY='libpython$(VERSION).so'
698 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000699 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000700 case $ac_sys_system in
701 FreeBSD*)
702 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
703 ;;
704 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000705 INSTSONAME="$LDLIBRARY".$SOVERSION
706 ;;
707 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000708 case `uname -m` in
709 ia64)
710 LDLIBRARY='libpython$(VERSION).so'
711 ;;
712 *)
713 LDLIBRARY='libpython$(VERSION).sl'
714 ;;
715 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000716 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000717 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718 ;;
719 OSF*)
720 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000721 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000722 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000723 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000724 Darwin*)
725 LDLIBRARY='libpython$(VERSION).dylib'
726 BLDLIBRARY='-L. -lpython$(VERSION)'
727 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
728 ;;
729
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 esac
Jason Tishler30765592003-09-04 11:04:06 +0000731else # shared is disabled
732 case $ac_sys_system in
733 CYGWIN*)
734 BLDLIBRARY='$(LIBRARY)'
735 LDLIBRARY='libpython$(VERSION).dll.a'
736 ;;
737 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000738fi
739
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000740AC_MSG_RESULT($LDLIBRARY)
741
Guido van Rossum627b2d71993-12-24 10:39:16 +0000742AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000743AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000744AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000745
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000746# tweak ARFLAGS only if the user didn't set it on the command line
747AC_SUBST(ARFLAGS)
748if test -z "$ARFLAGS"
749then
750 ARFLAGS="rc"
751fi
752
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000753AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000754AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000755if test $SVNVERSION = found
756then
757 SVNVERSION="svnversion \$(srcdir)"
758else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000759 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000760fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000761
Neil Schemenauera42c8272001-03-31 00:01:55 +0000762case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000763bsdos*|hp*|HP*)
764 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000765 if test -z "$INSTALL"
766 then
767 INSTALL="${srcdir}/install-sh -c"
768 fi
769esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000770AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000771
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000772# Not every filesystem supports hard links
773AC_SUBST(LN)
774if test -z "$LN" ; then
775 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000776 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000777 *) LN=ln;;
778 esac
779fi
780
Fred Drake9f715822001-07-11 06:27:00 +0000781# Check for --with-pydebug
782AC_MSG_CHECKING(for --with-pydebug)
783AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000784 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
785[
Fred Drake9f715822001-07-11 06:27:00 +0000786if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000787then
788 AC_DEFINE(Py_DEBUG, 1,
789 [Define if you want to build an interpreter with many run-time checks.])
790 AC_MSG_RESULT(yes);
791 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000792else AC_MSG_RESULT(no); Py_DEBUG='false'
793fi],
794[AC_MSG_RESULT(no)])
795
Skip Montanarodecc6a42003-01-01 20:07:49 +0000796# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
797# merged with this chunk of code?
798
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000799# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000800# ------------------------
801# (The following bit of code is complicated enough - please keep things
802# indented properly. Just pretend you're editing Python code. ;-)
803
804# There are two parallel sets of case statements below, one that checks to
805# see if OPT was set and one that does BASECFLAGS setting based upon
806# compiler and platform. BASECFLAGS tweaks need to be made even if the
807# user set OPT.
808
809# tweak OPT based on compiler and platform, only if the user didn't set
810# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000811AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000812if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000813then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000814 case $GCC in
815 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000816 if test "$CC" != 'g++' ; then
817 STRICT_PROTO="-Wstrict-prototypes"
818 fi
Christian Heimes38053212007-12-14 01:24:44 +0000819 # For gcc 4.x we need to use -fwrapv so lets check if its supported
820 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
821 WRAP="-fwrapv"
822 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000824 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000825 if test "$Py_DEBUG" = 'true' ; then
826 # Optimization messes up debuggers, so turn it off for
827 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000828 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000829 else
Christian Heimes38053212007-12-14 01:24:44 +0000830 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000831 fi
832 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000833 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000834 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000836 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000837 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000838 SCO_SV*) OPT="$OPT -m486 -DSCO5"
839 ;;
840 esac
Fred Drake9f715822001-07-11 06:27:00 +0000841 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000843 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844 OPT="-O"
845 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000846 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000847fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000848
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000850
851# The -arch flags for universal builds on OSX
852UNIVERSAL_ARCH_FLAGS=
853AC_SUBST(UNIVERSAL_ARCH_FLAGS)
854
Skip Montanarodecc6a42003-01-01 20:07:49 +0000855# tweak BASECFLAGS based on compiler and platform
856case $GCC in
857yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000858 # Python violates C99 rules, by casting between incompatible
859 # pointer types. GCC may generate bad code as a result of that,
860 # so use -fno-strict-aliasing if supported.
861 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
862 ac_save_cc="$CC"
863 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000864 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +0000865 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000866 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000867 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000868 CC="$ac_save_cc"
869 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
870 if test $ac_cv_no_strict_aliasing_ok = yes
871 then
872 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
873 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000874
875 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
876 # support. Without this, treatment of subnormals doesn't follow
877 # the standard.
878 case $ac_sys_machine in
879 alpha*)
880 BASECFLAGS="$BASECFLAGS -mieee"
881 ;;
882 esac
883
Skip Montanarodecc6a42003-01-01 20:07:49 +0000884 case $ac_sys_system in
885 SCO_SV*)
886 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
887 ;;
888 # is there any other compiler on Darwin besides gcc?
889 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000890 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
891 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000892
893
Thomas Wouters477c8d52006-05-27 19:21:47 +0000894 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000895 UNIVERSAL_ARCH_FLAGS=""
896 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
897 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000898 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000899 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000900
901 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
902 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000903 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000904 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000905
906 elif test "$UNIVERSAL_ARCHS" = "all" ; then
907 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000908 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000909 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000910
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000911 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
912 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000913 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000914 ARCH_RUN_32BIT="arch -i386"
915
916 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
917 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000918 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
919 ARCH_RUN_32BIT="arch -i386 -ppc7400"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000920
Georg Brandlfcaf9102008-07-16 02:17:56 +0000921 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000922 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000923
924 fi
925
926
927 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000928 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000929 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
930 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
931 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000932 fi
933
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000934 # Calculate the right deployment target for this build.
935 #
936 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
937 if test ${cur_target} '>' 10.2; then
938 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000939 if test ${enable_universalsdk}; then
940 if test "${UNIVERSAL_ARCHS}" = "all"; then
941 # Ensure that the default platform for a
942 # 4-way universal build is OSX 10.5,
943 # that's the first OS release where
944 # 4-way builds make sense.
945 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000946
947 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
948 cur_target='10.5'
949
950 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
951 cur_target='10.5'
952
953 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
954 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000955 fi
956 else
957 if test `arch` = "i386"; then
958 # On Intel macs default to a deployment
959 # target of 10.4, that's the first OSX
960 # release with Intel support.
961 cur_target="10.4"
962 fi
963 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000964 fi
965 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
966
967 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
968 # environment with a value that is the same as what we'll use
969 # in the Makefile to ensure that we'll get the same compiler
970 # environment during configure and build time.
971 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
972 export MACOSX_DEPLOYMENT_TARGET
973 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
974
Skip Montanarodecc6a42003-01-01 20:07:49 +0000975 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000976 OSF*)
977 BASECFLAGS="$BASECFLAGS -mieee"
978 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000979 esac
980 ;;
981
982*)
983 case $ac_sys_system in
984 OpenUNIX*|UnixWare*)
985 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
986 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000987 OSF*)
988 BASECFLAGS="$BASECFLAGS -ieee -std"
989 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000990 SCO_SV*)
991 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
992 ;;
993 esac
994 ;;
995esac
996
Fred Drakee1ceaa02001-12-04 20:55:47 +0000997if test "$Py_DEBUG" = 'true'; then
998 :
999else
1000 OPT="-DNDEBUG $OPT"
1001fi
1002
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001003if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001004then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001005 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001006fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001007
Neal Norwitz020c46a2006-01-07 21:39:28 +00001008# disable check for icc since it seems to pass, but generates a warning
1009if test "$CC" = icc
1010then
1011 ac_cv_opt_olimit_ok=no
1012fi
1013
Guido van Rossum91922671997-10-09 20:24:13 +00001014AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1015AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1016[ac_save_cc="$CC"
1017CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001018AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001019 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001020 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001021 )
Guido van Rossum91922671997-10-09 20:24:13 +00001022CC="$ac_save_cc"])
1023AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001024if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001025 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001026 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1027 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1028 # environment?
1029 Darwin*)
1030 ;;
1031 *)
1032 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1033 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001034 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001035else
1036 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1037 AC_CACHE_VAL(ac_cv_olimit_ok,
1038 [ac_save_cc="$CC"
1039 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001040 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001041 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001042 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001043 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001044 CC="$ac_save_cc"])
1045 AC_MSG_RESULT($ac_cv_olimit_ok)
1046 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001047 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001048 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001049fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001050
Thomas Wouters89f507f2006-12-13 04:49:30 +00001051# Check whether GCC supports PyArg_ParseTuple format
1052if test "$GCC" = "yes"
1053then
1054 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1055 save_CFLAGS=$CFLAGS
1056 CFLAGS="$CFLAGS -Werror"
1057 AC_TRY_COMPILE([
1058 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1059 ],,
1060 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1061 AC_MSG_RESULT(yes),
1062 AC_MSG_RESULT(no)
1063 )
1064 CFLAGS=$save_CFLAGS
1065fi
1066
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001067# On some compilers, pthreads are available without further options
1068# (e.g. MacOS X). On some of these systems, the compiler will not
1069# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1070# So we have to see first whether pthreads are available without
1071# options before we can check whether -Kpthread improves anything.
1072AC_MSG_CHECKING(whether pthreads are available without options)
1073AC_CACHE_VAL(ac_cv_pthread_is_default,
1074[AC_TRY_RUN([
1075#include <pthread.h>
1076
1077void* routine(void* p){return NULL;}
1078
1079int main(){
1080 pthread_t p;
1081 if(pthread_create(&p,NULL,routine,NULL)!=0)
1082 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001083 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001084 return 0;
1085}
1086],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001087[
1088 ac_cv_pthread_is_default=yes
1089 ac_cv_kthread=no
1090 ac_cv_pthread=no
1091],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001092 ac_cv_pthread_is_default=no,
1093 ac_cv_pthread_is_default=no)
1094])
1095AC_MSG_RESULT($ac_cv_pthread_is_default)
1096
1097
1098if test $ac_cv_pthread_is_default = yes
1099then
1100 ac_cv_kpthread=no
1101else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001102# -Kpthread, if available, provides the right #defines
1103# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001104# Some compilers won't report that they do not support -Kpthread,
1105# so we need to run a program to see whether it really made the
1106# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001107AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1108AC_CACHE_VAL(ac_cv_kpthread,
1109[ac_save_cc="$CC"
1110CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001111AC_TRY_RUN([
1112#include <pthread.h>
1113
1114void* routine(void* p){return NULL;}
1115
1116int main(){
1117 pthread_t p;
1118 if(pthread_create(&p,NULL,routine,NULL)!=0)
1119 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001120 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001121 return 0;
1122}
1123],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001124 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001125 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001126 ac_cv_kpthread=no)
1127CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001128AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001129fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001130
Skip Montanarod8d39a02003-07-10 20:44:10 +00001131if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001132then
1133# -Kthread, if available, provides the right #defines
1134# and linker options to make pthread_create available
1135# Some compilers won't report that they do not support -Kthread,
1136# so we need to run a program to see whether it really made the
1137# function available.
1138AC_MSG_CHECKING(whether $CC accepts -Kthread)
1139AC_CACHE_VAL(ac_cv_kthread,
1140[ac_save_cc="$CC"
1141CC="$CC -Kthread"
1142AC_TRY_RUN([
1143#include <pthread.h>
1144
1145void* routine(void* p){return NULL;}
1146
1147int main(){
1148 pthread_t p;
1149 if(pthread_create(&p,NULL,routine,NULL)!=0)
1150 return 1;
1151 (void)pthread_detach(p);
1152 return 0;
1153}
1154],
1155 ac_cv_kthread=yes,
1156 ac_cv_kthread=no,
1157 ac_cv_kthread=no)
1158CC="$ac_save_cc"])
1159AC_MSG_RESULT($ac_cv_kthread)
1160fi
1161
Skip Montanarod8d39a02003-07-10 20:44:10 +00001162if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001163then
1164# -pthread, if available, provides the right #defines
1165# and linker options to make pthread_create available
1166# Some compilers won't report that they do not support -pthread,
1167# so we need to run a program to see whether it really made the
1168# function available.
1169AC_MSG_CHECKING(whether $CC accepts -pthread)
1170AC_CACHE_VAL(ac_cv_thread,
1171[ac_save_cc="$CC"
1172CC="$CC -pthread"
1173AC_TRY_RUN([
1174#include <pthread.h>
1175
1176void* routine(void* p){return NULL;}
1177
1178int main(){
1179 pthread_t p;
1180 if(pthread_create(&p,NULL,routine,NULL)!=0)
1181 return 1;
1182 (void)pthread_detach(p);
1183 return 0;
1184}
1185],
1186 ac_cv_pthread=yes,
1187 ac_cv_pthread=no,
1188 ac_cv_pthread=no)
1189CC="$ac_save_cc"])
1190AC_MSG_RESULT($ac_cv_pthread)
1191fi
1192
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001193# If we have set a CC compiler flag for thread support then
1194# check if it works for CXX, too.
1195ac_cv_cxx_thread=no
1196if test ! -z "$CXX"
1197then
1198AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1199ac_save_cxx="$CXX"
1200
1201if test "$ac_cv_kpthread" = "yes"
1202then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001203 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001204 ac_cv_cxx_thread=yes
1205elif test "$ac_cv_kthread" = "yes"
1206then
1207 CXX="$CXX -Kthread"
1208 ac_cv_cxx_thread=yes
1209elif test "$ac_cv_pthread" = "yes"
1210then
1211 CXX="$CXX -pthread"
1212 ac_cv_cxx_thread=yes
1213fi
1214
1215if test $ac_cv_cxx_thread = yes
1216then
1217 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1218 $CXX -c conftest.$ac_ext 2>&5
1219 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1220 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1221 then
1222 ac_cv_cxx_thread=yes
1223 else
1224 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001225 fi
1226 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001227fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001228AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001229fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001230CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001231
Fred Drakece81d592000-07-09 14:39:29 +00001232dnl # check for ANSI or K&R ("traditional") preprocessor
1233dnl AC_MSG_CHECKING(for C preprocessor type)
1234dnl AC_TRY_COMPILE([
1235dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1236dnl int foo;
1237dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1238dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1239dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001240
Guido van Rossum627b2d71993-12-24 10:39:16 +00001241# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001242AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001243AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1244fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001245ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001246shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001247unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001248sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1249sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001250sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001251sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001252sys/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 +00001253sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001254bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001255AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001256AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001257
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001258# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001259AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001260#ifdef HAVE_CURSES_H
1261#include <curses.h>
1262#endif
1263])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001264
Martin v. Löwis11017b12006-01-14 18:12:57 +00001265# On Linux, netlink.h requires asm/types.h
1266AC_CHECK_HEADERS(linux/netlink.h,,,[
1267#ifdef HAVE_ASM_TYPES_H
1268#include <asm/types.h>
1269#endif
1270#ifdef HAVE_SYS_SOCKET_H
1271#include <sys/socket.h>
1272#endif
1273])
1274
Guido van Rossum627b2d71993-12-24 10:39:16 +00001275# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001276was_it_defined=no
1277AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001278AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1279 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1280])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001281AC_MSG_RESULT($was_it_defined)
1282
Neal Norwitz11690112002-07-30 01:08:28 +00001283# Check whether using makedev requires defining _OSF_SOURCE
1284AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001285AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001286 [ makedev(0, 0) ],
1287 ac_cv_has_makedev=yes,
1288 ac_cv_has_makedev=no)
1289if test "$ac_cv_has_makedev" = "no"; then
1290 # we didn't link, try if _OSF_SOURCE will allow us to link
1291 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001292#define _OSF_SOURCE 1
1293#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001294 ],
1295 [ makedev(0, 0) ],
1296 ac_cv_has_makedev=yes,
1297 ac_cv_has_makedev=no)
1298 if test "$ac_cv_has_makedev" = "yes"; then
1299 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1300 fi
1301fi
1302AC_MSG_RESULT($ac_cv_has_makedev)
1303if test "$ac_cv_has_makedev" = "yes"; then
1304 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1305fi
1306
Martin v. Löwis399a6892002-10-04 10:22:02 +00001307# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1308# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1309# defined, but the compiler does not support pragma redefine_extname,
1310# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1311# structures (such as rlimit64) without declaring them. As a
1312# work-around, disable LFS on such configurations
1313
1314use_lfs=yes
1315AC_MSG_CHECKING(Solaris LFS bug)
1316AC_TRY_COMPILE([
1317#define _LARGEFILE_SOURCE 1
1318#define _FILE_OFFSET_BITS 64
1319#include <sys/resource.h>
1320],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1321AC_MSG_RESULT($sol_lfs_bug)
1322if test "$sol_lfs_bug" = "yes"; then
1323 use_lfs=no
1324fi
1325
1326if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001327# Two defines needed to enable largefile support on various platforms
1328# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001329AC_DEFINE(_LARGEFILE_SOURCE, 1,
1330[This must be defined on some systems to enable large file support.])
1331AC_DEFINE(_FILE_OFFSET_BITS, 64,
1332[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001333fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001334
Guido van Rossum300fda71996-08-19 21:58:16 +00001335# Add some code to confdefs.h so that the test for off_t works on SCO
1336cat >> confdefs.h <<\EOF
1337#if defined(SCO_DS)
1338#undef _OFF_T
1339#endif
1340EOF
1341
Guido van Rossumef2255b2000-03-10 22:30:29 +00001342# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001343AC_TYPE_MODE_T
1344AC_TYPE_OFF_T
1345AC_TYPE_PID_T
1346AC_TYPE_SIGNAL
1347AC_TYPE_SIZE_T
1348AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001349AC_TYPE_UINT32_T
1350AC_TYPE_UINT64_T
1351AC_TYPE_INT32_T
1352AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001353AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001354 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001355
Guido van Rossumef2255b2000-03-10 22:30:29 +00001356# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001357# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001358AC_CHECK_SIZEOF(int, 4)
1359AC_CHECK_SIZEOF(long, 4)
1360AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001361AC_CHECK_SIZEOF(short, 2)
1362AC_CHECK_SIZEOF(float, 4)
1363AC_CHECK_SIZEOF(double, 8)
1364AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001365AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001366AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001367
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001368AC_MSG_CHECKING(for long long support)
1369have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001370AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1371 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1372 have_long_long=yes
1373])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001374AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001375if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001376AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001377fi
1378
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001379AC_MSG_CHECKING(for long double support)
1380have_long_double=no
1381AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1382 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1383 have_long_double=yes
1384])
1385AC_MSG_RESULT($have_long_double)
1386if test "$have_long_double" = yes ; then
1387AC_CHECK_SIZEOF(long double, 16)
1388fi
1389
1390
Thomas Woutersb2137042007-02-01 18:02:27 +00001391AC_MSG_CHECKING(for _Bool support)
1392have_c99_bool=no
1393AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1394 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1395 have_c99_bool=yes
1396])
1397AC_MSG_RESULT($have_c99_bool)
1398if test "$have_c99_bool" = yes ; then
1399AC_CHECK_SIZEOF(_Bool, 1)
1400fi
1401
Thomas Wouters89f507f2006-12-13 04:49:30 +00001402AC_CHECK_TYPES(uintptr_t,
1403 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1404 [], [#ifdef HAVE_STDINT_H
1405 #include <stdint.h>
1406 #endif])
1407
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001408AC_CHECK_SIZEOF(off_t, [], [
1409#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001410#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001411#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001412])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001413
1414AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001415if test "$have_long_long" = yes
1416then
1417if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001418 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001419 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1420 [Defined to enable large file support when an off_t is bigger than a long
1421 and long long is available and at least as big as an off_t. You may need
1422 to add some flags for configuration and compilation to enable this mode.
1423 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001424 AC_MSG_RESULT(yes)
1425else
1426 AC_MSG_RESULT(no)
1427fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001428else
1429 AC_MSG_RESULT(no)
1430fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001431
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001432AC_CHECK_SIZEOF(time_t, [], [
1433#ifdef HAVE_SYS_TYPES_H
1434#include <sys/types.h>
1435#endif
1436#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001437#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001438#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001439])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001440
Trent Mick635f6fb2000-08-23 21:33:05 +00001441# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001442ac_save_cc="$CC"
1443if test "$ac_cv_kpthread" = "yes"
1444then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001445elif test "$ac_cv_kthread" = "yes"
1446then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001447elif test "$ac_cv_pthread" = "yes"
1448then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001449fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001450
Trent Mick635f6fb2000-08-23 21:33:05 +00001451AC_MSG_CHECKING(for pthread_t)
1452have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001453AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001454AC_MSG_RESULT($have_pthread_t)
1455if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001456 AC_CHECK_SIZEOF(pthread_t, [], [
1457#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001458#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001459#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001460 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001461fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001462CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001463
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001464AC_SUBST(OTHER_LIBTOOL_OPT)
1465case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001466 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001467 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1468 ;;
1469 Darwin/*)
1470 OTHER_LIBTOOL_OPT=""
1471 ;;
1472esac
1473
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001474
1475ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001476AC_SUBST(LIBTOOL_CRUFT)
1477case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001478 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001479 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1480 if test "${enable_universalsdk}"; then
1481 :
1482 else
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001483 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001484 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001485 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001486 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001487 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001488 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001489 if test ${gcc_version} '<' 4.0
1490 then
1491 LIBTOOL_CRUFT="-lcc_dynamic"
1492 else
1493 LIBTOOL_CRUFT=""
1494 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001495 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001496 #include <unistd.h>
1497 int main(int argc, char*argv[])
1498 {
1499 if (sizeof(long) == 4) {
1500 return 0;
1501 } else {
1502 return 1;
1503 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001504 }
1505 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001506 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001507 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001508
1509 if test "${ac_osx_32bit}" = "yes"; then
1510 case `arch` in
1511 i386)
1512 MACOSX_DEFAULT_ARCH="i386"
1513 ;;
1514 ppc)
1515 MACOSX_DEFAULT_ARCH="ppc"
1516 ;;
1517 *)
1518 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1519 ;;
1520 esac
1521 else
1522 case `arch` in
1523 i386)
1524 MACOSX_DEFAULT_ARCH="x86_64"
1525 ;;
1526 ppc)
1527 MACOSX_DEFAULT_ARCH="ppc64"
1528 ;;
1529 *)
1530 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1531 ;;
1532 esac
1533
1534 #ARCH_RUN_32BIT="true"
1535 fi
1536
1537 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001538 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001539 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001540esac
1541
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001542AC_MSG_CHECKING(for --enable-framework)
1543if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001544then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001545 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001546 # -F. is needed to allow linking to the framework while
1547 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001548 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1549 [Define if you want to produce an OpenStep/Rhapsody framework
1550 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001551 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001552 if test $enable_shared = "yes"
1553 then
1554 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1555 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001556else
1557 AC_MSG_RESULT(no)
1558fi
1559
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001560AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001561case $ac_sys_system/$ac_sys_release in
1562 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001563 AC_DEFINE(WITH_DYLD, 1,
1564 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1565 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1566 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001567 AC_MSG_RESULT(always on for Darwin)
1568 ;;
1569 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001570 AC_MSG_RESULT(no)
1571 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001572esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001573
Guido van Rossumac405f61994-09-12 10:56:06 +00001574# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001575AC_SUBST(SO)
1576AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001577AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001578AC_SUBST(CCSHARED)
1579AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001580# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001581# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001582AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001583if test -z "$SO"
1584then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001585 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001586 hp*|HP*)
1587 case `uname -m` in
1588 ia64) SO=.so;;
1589 *) SO=.sl;;
1590 esac
1591 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001592 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001593 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001594 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001595else
1596 # this might also be a termcap variable, see #610332
1597 echo
1598 echo '====================================================================='
1599 echo '+ +'
1600 echo '+ WARNING: You have set SO in your environment. +'
1601 echo '+ Do you really mean to change the extension for shared libraries? +'
1602 echo '+ Continuing in 10 seconds to let you to ponder. +'
1603 echo '+ +'
1604 echo '====================================================================='
1605 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001606fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001607AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001608
Thomas Wouters477c8d52006-05-27 19:21:47 +00001609AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001610# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001611# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001612# (Shared libraries in this instance are shared modules to be loaded into
1613# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001614AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001615if test -z "$LDSHARED"
1616then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001617 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001618 AIX*)
1619 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001620 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001621 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001622 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001623 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001624 SunOS/5*)
1625 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001626 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001627 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001628 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001629 hp*|HP*)
1630 if test "$GCC" = "yes"
1631 then LDSHARED='$(CC) -shared'
1632 else LDSHARED='ld -b';
1633 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001634 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001635 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001636 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1637 if test "$enable_framework" ; then
1638 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001639 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1640 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001641 else
1642 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001643 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001644 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001645 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001646 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1647 if test "$enable_framework" ; then
1648 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001649 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1650 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001651 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001652 # No framework, use the Python app as bundle-loader
1653 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001654 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001655 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001656 Darwin/*)
1657 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1658 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001659
Georg Brandlfcaf9102008-07-16 02:17:56 +00001660 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001661 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001662 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001663 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001664 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001665 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1666 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001667 else
1668 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1669 if test "$enable_framework" ; then
1670 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001671 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1672 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001673 else
1674 # No framework, use the Python app as bundle-loader
1675 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1676 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1677 fi
1678 fi
1679 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001680 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001681 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001682 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001683 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001684 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001685 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001686 else
1687 LDSHARED="ld -Bshareable ${LDFLAGS}"
1688 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001689 OpenBSD*)
1690 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1691 then
1692 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1693 else
1694 case `uname -r` in
1695 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1696 LDSHARED="ld -Bshareable ${LDFLAGS}"
1697 ;;
1698 *)
1699 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1700 ;;
1701 esac
1702 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001703 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001704 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001705 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001706 then LDSHARED='$(CC) -shared'
1707 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001708 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001709 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001710 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001711 *) LDSHARED="ld";;
1712 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001713fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001714AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001715BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001716# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001717# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001718AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001719if test -z "$CCSHARED"
1720then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001721 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001722 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001723 then CCSHARED="-fPIC";
1724 elif test `uname -p` = sparc;
1725 then CCSHARED="-xcode=pic32";
1726 else CCSHARED="-Kpic";
1727 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001728 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001729 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001730 else CCSHARED="+z";
1731 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001732 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001733 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001734 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001735 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001736 if test "$GCC" = "yes"
1737 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001738 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001739 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001740 SCO_SV*)
1741 if test "$GCC" = "yes"
1742 then CCSHARED="-fPIC"
1743 else CCSHARED="-Kpic -belf"
1744 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001745 IRIX*/6*) case $CC in
1746 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001747 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001748 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001749 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001750fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001751AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001752# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001753# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001754AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001755if test -z "$LINKFORSHARED"
1756then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001757 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001758 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001759 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001760 LINKFORSHARED="-Wl,-E -Wl,+s";;
1761# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001762 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001763 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001764 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001765 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001766 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001767 if test "$enable_framework"
1768 then
Jack Jansenda49e192005-01-07 13:08:22 +00001769 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001770 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001771 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001772 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001773 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001774 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001775 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001776 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1777 then
1778 LINKFORSHARED="-Wl,--export-dynamic"
1779 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001780 SunOS/5*) case $CC in
1781 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001782 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001783 then
1784 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001785 fi;;
1786 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001787 CYGWIN*)
1788 if test $enable_shared = "no"
1789 then
1790 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1791 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001792 QNX*)
1793 # -Wl,-E causes the symbols to be added to the dynamic
1794 # symbol table so that they can be found when a module
1795 # is loaded. -N 2048K causes the stack size to be set
1796 # to 2048 kilobytes so that the stack doesn't overflow
1797 # when running test_compile.py.
1798 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001799 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001800fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001801AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001802
Georg Brandl93de2162008-07-16 02:21:06 +00001803
Neil Schemenauer61c51152001-01-26 16:18:16 +00001804AC_SUBST(CFLAGSFORSHARED)
1805AC_MSG_CHECKING(CFLAGSFORSHARED)
1806if test ! "$LIBRARY" = "$LDLIBRARY"
1807then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001808 case $ac_sys_system in
1809 CYGWIN*)
1810 # Cygwin needs CCSHARED when building extension DLLs
1811 # but not when building the interpreter DLL.
1812 CFLAGSFORSHARED='';;
1813 *)
1814 CFLAGSFORSHARED='$(CCSHARED)'
1815 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001816fi
1817AC_MSG_RESULT($CFLAGSFORSHARED)
1818
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001819# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1820# library (with --enable-shared).
1821# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001822# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1823# if it is not required, since it creates a dependency of the shared library
1824# to LIBS. This, in turn, means that applications linking the shared libpython
1825# don't need to link LIBS explicitly. The default should be only changed
1826# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001827AC_SUBST(SHLIBS)
1828AC_MSG_CHECKING(SHLIBS)
1829case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001830 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001831 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001832esac
1833AC_MSG_RESULT($SHLIBS)
1834
1835
Guido van Rossum627b2d71993-12-24 10:39:16 +00001836# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001837AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1838AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001839
Georg Brandleee31162008-12-07 15:15:22 +00001840# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001841if test "$with_threads" = "yes" -o -z "$with_threads"; then
1842 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1843 # posix4 on Solaris 2.6
1844 # pthread (first!) on Linux
1845fi
1846
Martin v. Löwis19d17342003-06-14 21:03:05 +00001847# check if we need libintl for locale functions
1848AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001849 [AC_DEFINE(WITH_LIBINTL, 1,
1850 [Define to 1 if libintl is needed for locale functions.])
1851 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001852
1853# checks for system dependent C++ extensions support
1854case "$ac_sys_system" in
1855 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1856 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1857 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001858 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1859 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1860 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001861 AC_MSG_RESULT(yes)],
1862 [AC_MSG_RESULT(no)]);;
1863 *) ;;
1864esac
1865
Guido van Rossum70c7f481998-03-26 18:44:10 +00001866# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001867AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001868AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001869
Guido van Rossumc5a39031996-07-31 17:35:03 +00001870AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001871AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001872 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1873[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001874AC_MSG_RESULT($withval)
1875LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001876],
1877[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001878
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001879# Check for use of the system expat library
1880AC_MSG_CHECKING(for --with-system-expat)
1881AC_ARG_WITH(system_expat,
1882 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1883
1884AC_MSG_RESULT($with_system_expat)
1885
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001886# Check for use of the system libffi library
1887AC_MSG_CHECKING(for --with-system-ffi)
1888AC_ARG_WITH(system_ffi,
1889 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1890
Benjamin Petersond78735d2010-01-01 16:04:23 +00001891if test "$with_system_ffi" = "yes"; then
1892 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1893 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1894else
1895 LIBFFI_INCLUDEDIR=""
1896fi
1897AC_SUBST(LIBFFI_INCLUDEDIR)
1898
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001899AC_MSG_RESULT($with_system_ffi)
1900
Matthias Klose55708cc2009-04-30 08:06:49 +00001901# Check for --with-dbmliborder
1902AC_MSG_CHECKING(for --with-dbmliborder)
1903AC_ARG_WITH(dbmliborder,
1904 AC_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
1905[
1906if test x$with_dbmliborder = xyes
1907then
1908AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1909else
1910 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1911 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1912 then
1913 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1914 fi
1915 done
1916fi])
1917AC_MSG_RESULT($with_dbmliborder)
1918
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001919# Determine if signalmodule should be used.
1920AC_SUBST(USE_SIGNAL_MODULE)
1921AC_SUBST(SIGNAL_OBJS)
1922AC_MSG_CHECKING(for --with-signal-module)
1923AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001924 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001925
1926if test -z "$with_signal_module"
1927then with_signal_module="yes"
1928fi
1929AC_MSG_RESULT($with_signal_module)
1930
1931if test "${with_signal_module}" = "yes"; then
1932 USE_SIGNAL_MODULE=""
1933 SIGNAL_OBJS=""
1934else
1935 USE_SIGNAL_MODULE="#"
1936 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1937fi
1938
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001939# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001940AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001941USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001942
Guido van Rossum54d93d41997-01-22 20:51:58 +00001943AC_MSG_CHECKING(for --with-dec-threads)
1944AC_SUBST(LDLAST)
1945AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001946 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1947[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001948AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001949LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001950if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001951 with_thread="$withval";
1952fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001953[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001954
Martin v. Löwis11437992002-04-12 09:54:03 +00001955# Templates for things AC_DEFINEd more than once.
1956# For a single AC_DEFINE, no template is needed.
1957AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1958AH_TEMPLATE(_REENTRANT,
1959 [Define to force use of thread-safe errno, h_errno, and other functions])
1960AH_TEMPLATE(WITH_THREAD,
1961 [Define if you want to compile in rudimentary thread support])
1962
Guido van Rossum54d93d41997-01-22 20:51:58 +00001963AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001965AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001966 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001967
Barry Warsawc0d24d82000-06-29 16:12:00 +00001968# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001969dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001970AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001971 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1972 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001973
1974if test -z "$with_threads"
1975then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001976fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001977AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001978
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001979AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001980if test "$with_threads" = "no"
1981then
1982 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001983elif test "$ac_cv_pthread_is_default" = yes
1984then
1985 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001986 # Defining _REENTRANT on system with POSIX threads should not hurt.
1987 AC_DEFINE(_REENTRANT)
1988 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001989 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001990elif test "$ac_cv_kpthread" = "yes"
1991then
1992 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001993 if test "$ac_cv_cxx_thread" = "yes"; then
1994 CXX="$CXX -Kpthread"
1995 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001996 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001997 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001998 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001999elif test "$ac_cv_kthread" = "yes"
2000then
2001 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002002 if test "$ac_cv_cxx_thread" = "yes"; then
2003 CXX="$CXX -Kthread"
2004 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002005 AC_DEFINE(WITH_THREAD)
2006 posix_threads=yes
2007 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002008elif test "$ac_cv_pthread" = "yes"
2009then
2010 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002011 if test "$ac_cv_cxx_thread" = "yes"; then
2012 CXX="$CXX -pthread"
2013 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002014 AC_DEFINE(WITH_THREAD)
2015 posix_threads=yes
2016 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002017else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002018 if test ! -z "$with_threads" -a -d "$with_threads"
2019 then LDFLAGS="$LDFLAGS -L$with_threads"
2020 fi
2021 if test ! -z "$withval" -a -d "$withval"
2022 then LDFLAGS="$LDFLAGS -L$withval"
2023 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002024
2025 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002026 # define _POSIX_THREADS in unistd.h. Some apparently don't
2027 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002028 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2029 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002030 [
2031#include <unistd.h>
2032#ifdef _POSIX_THREADS
2033yes
2034#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002035 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2036 AC_MSG_RESULT($unistd_defines_pthreads)
2037
Martin v. Löwis130fb172001-07-19 11:00:41 +00002038 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002039 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2040 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002041 AC_DEFINE(HURD_C_THREADS, 1,
2042 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002043 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002044 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002045 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2046 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002047 AC_DEFINE(MACH_C_THREADS, 1,
2048 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002049 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002050 # Just looking for pthread_create in libpthread is not enough:
2051 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2052 # So we really have to include pthread.h, and then link.
2053 _libs=$LIBS
2054 LIBS="$LIBS -lpthread"
2055 AC_MSG_CHECKING([for pthread_create in -lpthread])
2056 AC_TRY_LINK([#include <pthread.h>
2057
2058void * start_routine (void *arg) { exit (0); }], [
2059pthread_create (NULL, NULL, start_routine, NULL)], [
2060 AC_MSG_RESULT(yes)
2061 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002062 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002063 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002064 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002065 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002066 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002067 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002068 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002069 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002070 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002071 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002072 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002073 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002074 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002075 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002076 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002077 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002078 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002079 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002080 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002081 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002082 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002083 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002084 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002085 ])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002086
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002087 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2088 LIBS="$LIBS -lmpc"
2089 THREADOBJ="Python/thread.o"
2090 USE_THREAD_MODULE=""])
2091
2092 if test "$posix_threads" != "yes"; then
2093 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2094 LIBS="$LIBS -lthread"
2095 THREADOBJ="Python/thread.o"
2096 USE_THREAD_MODULE=""])
2097 fi
2098
2099 if test "$USE_THREAD_MODULE" != "#"
2100 then
2101 # If the above checks didn't disable threads, (at least) OSF1
2102 # needs this '-threads' argument during linking.
2103 case $ac_sys_system in
2104 OSF1) LDLAST=-threads;;
2105 esac
2106 fi
2107fi
2108
2109if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002110 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002111 AC_DEFINE(_POSIX_THREADS, 1,
2112 [Define if you have POSIX threads,
2113 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002114 fi
2115
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002116 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2117 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002118 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2119 Defined for Solaris 2.6 bug in pthread header.)
2120 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002121 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002122 Define if the Posix semaphores do not work on your system)
2123 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002124 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2125 Define if the Posix semaphores do not work on your system)
2126 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002127 esac
2128
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002129 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2130 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2131 [AC_TRY_RUN([#include <pthread.h>
2132 void *foo(void *parm) {
2133 return NULL;
2134 }
2135 main() {
2136 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002137 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002138 if (pthread_attr_init(&attr)) exit(-1);
2139 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002140 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002141 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002142 }],
2143 ac_cv_pthread_system_supported=yes,
2144 ac_cv_pthread_system_supported=no,
2145 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002146 ])
2147 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2148 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002149 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002150 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002151 AC_CHECK_FUNCS(pthread_sigmask,
2152 [case $ac_sys_system in
2153 CYGWIN*)
2154 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2155 [Define if pthread_sigmask() does not work on your system.])
2156 ;;
2157 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002158fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002159
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002160
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002161# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002162AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002163AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002164AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002165[ --enable-ipv6 Enable ipv6 (with ipv4) support
2166 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002167[ case "$enableval" in
2168 no)
2169 AC_MSG_RESULT(no)
2170 ipv6=no
2171 ;;
2172 *) AC_MSG_RESULT(yes)
2173 AC_DEFINE(ENABLE_IPV6)
2174 ipv6=yes
2175 ;;
2176 esac ],
2177
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002178[
2179dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002180 AC_TRY_RUN([ /* AF_INET6 available check */
2181#include <sys/types.h>
2182#include <sys/socket.h>
2183main()
2184{
2185 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2186 exit(1);
2187 else
2188 exit(0);
2189}
2190],
2191 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002192 ipv6=yes,
2193 AC_MSG_RESULT(no)
2194 ipv6=no,
2195 AC_MSG_RESULT(no)
2196 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002197)
2198
2199if test "$ipv6" = "yes"; then
2200 AC_MSG_CHECKING(if RFC2553 API is available)
2201 AC_TRY_COMPILE([#include <sys/types.h>
2202#include <netinet/in.h>],
2203 [struct sockaddr_in6 x;
2204x.sin6_scope_id;],
2205 AC_MSG_RESULT(yes)
2206 ipv6=yes,
2207 AC_MSG_RESULT(no, IPv6 disabled)
2208 ipv6=no)
2209fi
2210
2211if test "$ipv6" = "yes"; then
2212 AC_DEFINE(ENABLE_IPV6)
2213fi
2214])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002215
2216ipv6type=unknown
2217ipv6lib=none
2218ipv6trylibc=no
2219
2220if test "$ipv6" = "yes"; then
2221 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002222 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2223 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002224 case $i in
2225 inria)
2226 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002227 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002228#include <netinet/in.h>
2229#ifdef IPV6_INRIA_VERSION
2230yes
2231#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002232 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002233 ;;
2234 kame)
2235 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002236 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002237#include <netinet/in.h>
2238#ifdef __KAME__
2239yes
2240#endif],
2241 [ipv6type=$i;
2242 ipv6lib=inet6
2243 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002244 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245 ;;
2246 linux-glibc)
2247 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002248 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002249#include <features.h>
2250#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2251yes
2252#endif],
2253 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002254 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002255 ;;
2256 linux-inet6)
2257 dnl http://www.v6.linux.or.jp/
2258 if test -d /usr/inet6; then
2259 ipv6type=$i
2260 ipv6lib=inet6
2261 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002262 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263 fi
2264 ;;
2265 solaris)
2266 if test -f /etc/netconfig; then
2267 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2268 ipv6type=$i
2269 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002270 fi
2271 fi
2272 ;;
2273 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002274 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002275#include <sys/param.h>
2276#ifdef _TOSHIBA_INET6
2277yes
2278#endif],
2279 [ipv6type=$i;
2280 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002281 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282 ;;
2283 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002284 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285#include </usr/local/v6/include/sys/v6config.h>
2286#ifdef __V6D__
2287yes
2288#endif],
2289 [ipv6type=$i;
2290 ipv6lib=v6;
2291 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002292 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293 ;;
2294 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002295 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002296#include <sys/param.h>
2297#ifdef _ZETA_MINAMI_INET6
2298yes
2299#endif],
2300 [ipv6type=$i;
2301 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002302 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303 ;;
2304 esac
2305 if test "$ipv6type" != "unknown"; then
2306 break
2307 fi
2308 done
2309 AC_MSG_RESULT($ipv6type)
2310fi
2311
2312if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2313 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2314 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2315 echo "using lib$ipv6lib"
2316 else
2317 if test $ipv6trylibc = "yes"; then
2318 echo "using libc"
2319 else
2320 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2321 echo "You need to fetch lib$ipv6lib.a from appropriate"
2322 echo 'ipv6 kit and compile beforehand.'
2323 exit 1
2324 fi
2325 fi
2326fi
2327
Georg Brandl93de2162008-07-16 02:21:06 +00002328AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2329AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2330 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2331 AC_MSG_RESULT(yes),
2332 AC_MSG_RESULT(no)
2333)
2334
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002335# Check for --with-doc-strings
2336AC_MSG_CHECKING(for --with-doc-strings)
2337AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002338 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002339
2340if test -z "$with_doc_strings"
2341then with_doc_strings="yes"
2342fi
2343if test "$with_doc_strings" != "no"
2344then
2345 AC_DEFINE(WITH_DOC_STRINGS, 1,
2346 [Define if you want documentation strings in extension modules])
2347fi
2348AC_MSG_RESULT($with_doc_strings)
2349
Neil Schemenauera35c6882001-02-27 04:45:05 +00002350# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002351AC_MSG_CHECKING(for --with-tsc)
2352AC_ARG_WITH(tsc,
2353[ --with(out)-tsc enable/disable timestamp counter profile], [
2354if test "$withval" != no
2355then
2356 AC_DEFINE(WITH_TSC, 1,
2357 [Define to profile with the Pentium timestamp counter])
2358 AC_MSG_RESULT(yes)
2359else AC_MSG_RESULT(no)
2360fi],
2361[AC_MSG_RESULT(no)])
2362
2363# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002364AC_MSG_CHECKING(for --with-pymalloc)
2365AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002366 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002367
2368if test -z "$with_pymalloc"
2369then with_pymalloc="yes"
2370fi
2371if test "$with_pymalloc" != "no"
2372then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002373 AC_DEFINE(WITH_PYMALLOC, 1,
2374 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002375fi
2376AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002377
Benjamin Peterson05159c42009-12-03 03:01:27 +00002378# Check for Valgrind support
2379AC_MSG_CHECKING([for --with-valgrind])
2380AC_ARG_WITH([valgrind],
2381 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2382 with_valgrind=no)
2383AC_MSG_RESULT([$with_valgrind])
2384if test "$with_valgrind" != no; then
2385 AC_CHECK_HEADER([valgrind/valgrind.h],
2386 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2387 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2388 )
2389fi
2390
Barry Warsawef82cd72000-06-30 16:21:01 +00002391# Check for --with-wctype-functions
2392AC_MSG_CHECKING(for --with-wctype-functions)
2393AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002394 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2395[
Barry Warsawef82cd72000-06-30 16:21:01 +00002396if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002397then
2398 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2399 [Define if you want wctype.h functions to be used instead of the
2400 one supplied by Python itself. (see Include/unicodectype.h).])
2401 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002402else AC_MSG_RESULT(no)
2403fi],
2404[AC_MSG_RESULT(no)])
2405
Guido van Rossum68242b51996-05-28 22:53:03 +00002406# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002407AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002408DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002409
Guido van Rossume97ee181999-12-20 21:27:22 +00002410# the dlopen() function means we might want to use dynload_shlib.o. some
2411# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002412AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002413
2414# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2415# loading of modules.
2416AC_SUBST(DYNLOADFILE)
2417AC_MSG_CHECKING(DYNLOADFILE)
2418if test -z "$DYNLOADFILE"
2419then
2420 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002421 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2422 if test "$ac_cv_func_dlopen" = yes
2423 then DYNLOADFILE="dynload_shlib.o"
2424 else DYNLOADFILE="dynload_aix.o"
2425 fi
2426 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002427 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002428 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2429 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002430 *)
2431 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2432 # out any dynamic loading
2433 if test "$ac_cv_func_dlopen" = yes
2434 then DYNLOADFILE="dynload_shlib.o"
2435 else DYNLOADFILE="dynload_stub.o"
2436 fi
2437 ;;
2438 esac
2439fi
2440AC_MSG_RESULT($DYNLOADFILE)
2441if test "$DYNLOADFILE" != "dynload_stub.o"
2442then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002443 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2444 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002445fi
2446
Jack Jansenc49e5b72001-06-19 15:00:23 +00002447# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2448
2449AC_SUBST(MACHDEP_OBJS)
2450AC_MSG_CHECKING(MACHDEP_OBJS)
2451if test -z "$MACHDEP_OBJS"
2452then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002453 MACHDEP_OBJS=$extra_machdep_objs
2454else
2455 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002456fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002457AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002458
Guido van Rossum627b2d71993-12-24 10:39:16 +00002459# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002460AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2461 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002462 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002463 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002464 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002465 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002466 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002467 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2468 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002469 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2470 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002471 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002472 truncate uname unsetenv utimes waitpid wait3 wait4 \
2473 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002474
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002475# For some functions, having a definition is not sufficient, since
2476# we want to take their address.
2477AC_MSG_CHECKING(for chroot)
2478AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2479 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2480 AC_MSG_RESULT(yes),
2481 AC_MSG_RESULT(no)
2482)
2483AC_MSG_CHECKING(for link)
2484AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2485 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2486 AC_MSG_RESULT(yes),
2487 AC_MSG_RESULT(no)
2488)
2489AC_MSG_CHECKING(for symlink)
2490AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2491 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2492 AC_MSG_RESULT(yes),
2493 AC_MSG_RESULT(no)
2494)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002495AC_MSG_CHECKING(for fchdir)
2496AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2497 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2498 AC_MSG_RESULT(yes),
2499 AC_MSG_RESULT(no)
2500)
2501AC_MSG_CHECKING(for fsync)
2502AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002503 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002504 AC_MSG_RESULT(yes),
2505 AC_MSG_RESULT(no)
2506)
2507AC_MSG_CHECKING(for fdatasync)
2508AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2509 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2510 AC_MSG_RESULT(yes),
2511 AC_MSG_RESULT(no)
2512)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002513AC_MSG_CHECKING(for epoll)
2514AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2515 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2516 AC_MSG_RESULT(yes),
2517 AC_MSG_RESULT(no)
2518)
2519AC_MSG_CHECKING(for kqueue)
2520AC_TRY_COMPILE([
2521#include <sys/types.h>
2522#include <sys/event.h>
2523 ], int x=kqueue(),
2524 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2525 AC_MSG_RESULT(yes),
2526 AC_MSG_RESULT(no)
2527)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002528# On some systems (eg. FreeBSD 5), we would find a definition of the
2529# functions ctermid_r, setgroups in the library, but no prototype
2530# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2531# address to avoid compiler warnings and potential miscompilations
2532# because of the missing prototypes.
2533
2534AC_MSG_CHECKING(for ctermid_r)
2535AC_TRY_COMPILE([
2536#include "confdefs.h"
2537#include <stdio.h>
2538], void* p = ctermid_r,
2539 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2540 AC_MSG_RESULT(yes),
2541 AC_MSG_RESULT(no)
2542)
2543
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002544AC_MSG_CHECKING(for flock)
2545AC_TRY_COMPILE([
2546#include "confdefs.h"
2547#include <sys/file.h>
2548], void* p = flock,
2549 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2550 AC_MSG_RESULT(yes),
2551 AC_MSG_RESULT(no)
2552)
2553
2554AC_MSG_CHECKING(for getpagesize)
2555AC_TRY_COMPILE([
2556#include "confdefs.h"
2557#include <unistd.h>
2558], void* p = getpagesize,
2559 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2560 AC_MSG_RESULT(yes),
2561 AC_MSG_RESULT(no)
2562)
2563
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002564dnl check for true
2565AC_CHECK_PROGS(TRUE, true, /bin/true)
2566
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002567dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2568dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002569AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002570 AC_CHECK_LIB(resolv, inet_aton)
2571)
2572
Christian Heimesd0764e22007-12-04 15:00:33 +00002573# On Tru64, chflags seems to be present, but calling it will
2574# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002575AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002576AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002577#include <sys/stat.h>
2578#include <unistd.h>
2579int main(int argc, char*argv[])
2580{
2581 if(chflags(argv[0], 0) != 0)
2582 return 1;
2583 return 0;
2584}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002585]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002586 ac_cv_have_chflags=no,
2587 ac_cv_have_chflags=cross)
2588])
2589if test "$ac_cv_have_chflags" = cross ; then
2590 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2591fi
2592if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002593 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2594fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002595
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002596AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002597AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002598#include <sys/stat.h>
2599#include <unistd.h>
2600int main(int argc, char*argv[])
2601{
2602 if(lchflags(argv[0], 0) != 0)
2603 return 1;
2604 return 0;
2605}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002606]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002607 ac_cv_have_lchflags=no,
2608 ac_cv_have_lchflags=cross)
2609])
2610if test "$ac_cv_have_lchflags" = cross ; then
2611 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2612fi
2613if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002614 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2615fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002616
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002617dnl Check if system zlib has *Copy() functions
2618dnl
2619dnl On MacOSX the linker will search for dylibs on the entire linker path
2620dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2621dnl to revert to a more traditional unix behaviour and make it possible to
2622dnl override the system libz with a local static library of libz. Temporarily
2623dnl add that flag to our CFLAGS as well to ensure that we check the version
2624dnl of libz that will be used by setup.py.
2625dnl The -L/usr/local/lib is needed as wel to get the same compilation
2626dnl environment as setup.py (and leaving it out can cause configure to use the
2627dnl wrong version of the library)
2628case $ac_sys_system/$ac_sys_release in
2629Darwin/*)
2630 _CUR_CFLAGS="${CFLAGS}"
2631 _CUR_LDFLAGS="${LDFLAGS}"
2632 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2633 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2634 ;;
2635esac
2636
2637AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2638
2639case $ac_sys_system/$ac_sys_release in
2640Darwin/*)
2641 CFLAGS="${_CUR_CFLAGS}"
2642 LDFLAGS="${_CUR_LDFLAGS}"
2643 ;;
2644esac
2645
Martin v. Löwise9416172003-05-03 10:12:45 +00002646AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002647AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002648#include "confdefs.h"
2649#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002650], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002651 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2652 AC_MSG_RESULT(yes),
2653 AC_MSG_RESULT(no)
2654)
2655
2656AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002657AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002658#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002659#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002660#include <sys/socket.h>
2661#include <netinet/in.h>
2662#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002663], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002664 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2665 AC_MSG_RESULT(yes),
2666 AC_MSG_RESULT(no)
2667)
2668
2669AC_MSG_CHECKING(for inet_pton)
2670AC_TRY_COMPILE([
2671#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002672#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002673#include <sys/socket.h>
2674#include <netinet/in.h>
2675#include <arpa/inet.h>
2676], void* p = inet_pton,
2677 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2678 AC_MSG_RESULT(yes),
2679 AC_MSG_RESULT(no)
2680)
2681
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002682# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002683AC_MSG_CHECKING(for setgroups)
2684AC_TRY_COMPILE([
2685#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002686#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002687#ifdef HAVE_GRP_H
2688#include <grp.h>
2689#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002690],
2691void* p = setgroups,
2692 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2693 AC_MSG_RESULT(yes),
2694 AC_MSG_RESULT(no)
2695)
2696
Fred Drake8cef4cf2000-06-28 16:40:38 +00002697# check for openpty and forkpty
2698
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002699AC_CHECK_FUNCS(openpty,,
2700 AC_CHECK_LIB(util,openpty,
2701 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2702 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2703 )
2704)
2705AC_CHECK_FUNCS(forkpty,,
2706 AC_CHECK_LIB(util,forkpty,
2707 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2708 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2709 )
2710)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002711
Christian Heimesb186d002008-03-18 15:15:01 +00002712# Stuff for expat.
2713AC_CHECK_FUNCS(memmove)
2714
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002715# check for long file support functions
2716AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2717
Christian Heimesb186d002008-03-18 15:15:01 +00002718AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002719AC_CHECK_FUNCS(getpgrp,
2720 AC_TRY_COMPILE([#include <unistd.h>],
2721 [getpgrp(0);],
2722 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2723 [Define if getpgrp() must be called as getpgrp(0).])
2724 )
2725)
Jack Jansen150753c2003-03-29 22:07:47 +00002726AC_CHECK_FUNCS(setpgrp,
2727 AC_TRY_COMPILE([#include <unistd.h>],
2728 [setpgrp(0,0);],
2729 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2730 [Define if setpgrp() must be called as setpgrp(0, 0).])
2731 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002732)
2733AC_CHECK_FUNCS(gettimeofday,
2734 AC_TRY_COMPILE([#include <sys/time.h>],
2735 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2736 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2737 [Define if gettimeofday() does not have second (timezone) argument
2738 This is the case on Motorola V4 (R40V4.2)])
2739 )
2740)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002741
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002742AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002743AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002744#if defined(MAJOR_IN_MKDEV)
2745#include <sys/mkdev.h>
2746#elif defined(MAJOR_IN_SYSMACROS)
2747#include <sys/sysmacros.h>
2748#else
2749#include <sys/types.h>
2750#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002751],[
2752 makedev(major(0),minor(0));
2753],[
2754 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2755 [Define to 1 if you have the device macros.])
2756 AC_MSG_RESULT(yes)
2757],[
2758 AC_MSG_RESULT(no)
2759])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002760
2761# On OSF/1 V5.1, getaddrinfo is available, but a define
2762# for [no]getaddrinfo in netdb.h.
2763AC_MSG_CHECKING(for getaddrinfo)
2764AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002765#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002766#include <sys/socket.h>
2767#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002768#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002769], [getaddrinfo(NULL, NULL, NULL, NULL);],
2770have_getaddrinfo=yes,
2771have_getaddrinfo=no)
2772AC_MSG_RESULT($have_getaddrinfo)
2773if test $have_getaddrinfo = yes
2774then
2775 AC_MSG_CHECKING(getaddrinfo bug)
2776 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2777 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002778#include <sys/types.h>
2779#include <netdb.h>
2780#include <string.h>
2781#include <sys/socket.h>
2782#include <netinet/in.h>
2783
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002784int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002785{
2786 int passive, gaierr, inet4 = 0, inet6 = 0;
2787 struct addrinfo hints, *ai, *aitop;
2788 char straddr[INET6_ADDRSTRLEN], strport[16];
2789
2790 for (passive = 0; passive <= 1; passive++) {
2791 memset(&hints, 0, sizeof(hints));
2792 hints.ai_family = AF_UNSPEC;
2793 hints.ai_flags = passive ? AI_PASSIVE : 0;
2794 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002795 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002796 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2797 (void)gai_strerror(gaierr);
2798 goto bad;
2799 }
2800 for (ai = aitop; ai; ai = ai->ai_next) {
2801 if (ai->ai_addr == NULL ||
2802 ai->ai_addrlen == 0 ||
2803 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2804 straddr, sizeof(straddr), strport, sizeof(strport),
2805 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2806 goto bad;
2807 }
2808 switch (ai->ai_family) {
2809 case AF_INET:
2810 if (strcmp(strport, "54321") != 0) {
2811 goto bad;
2812 }
2813 if (passive) {
2814 if (strcmp(straddr, "0.0.0.0") != 0) {
2815 goto bad;
2816 }
2817 } else {
2818 if (strcmp(straddr, "127.0.0.1") != 0) {
2819 goto bad;
2820 }
2821 }
2822 inet4++;
2823 break;
2824 case AF_INET6:
2825 if (strcmp(strport, "54321") != 0) {
2826 goto bad;
2827 }
2828 if (passive) {
2829 if (strcmp(straddr, "::") != 0) {
2830 goto bad;
2831 }
2832 } else {
2833 if (strcmp(straddr, "::1") != 0) {
2834 goto bad;
2835 }
2836 }
2837 inet6++;
2838 break;
2839 case AF_UNSPEC:
2840 goto bad;
2841 break;
2842 default:
2843 /* another family support? */
2844 break;
2845 }
2846 }
2847 }
2848
2849 if (!(inet4 == 0 || inet4 == 2))
2850 goto bad;
2851 if (!(inet6 == 0 || inet6 == 2))
2852 goto bad;
2853
2854 if (aitop)
2855 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002856 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002857
2858 bad:
2859 if (aitop)
2860 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002861 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002862}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002863]], ac_cv_buggy_getaddrinfo=no,
2864 ac_cv_buggy_getaddrinfo=yes,
2865 ac_cv_buggy_getaddrinfo=yes))
2866fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002867
Mark Dickinson2df5d282009-12-31 21:22:50 +00002868if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002869then
2870 if test $ipv6 = yes
2871 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002872 echo 'Fatal: You must get working getaddrinfo() function.'
2873 echo ' or you can specify "--disable-ipv6"'.
2874 exit 1
2875 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002876else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002877 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002878fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002879AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002880
Guido van Rossum627b2d71993-12-24 10:39:16 +00002881# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002882AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002883AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002884AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002885AC_CHECK_MEMBERS([struct stat.st_rdev])
2886AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002887AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002888AC_CHECK_MEMBERS([struct stat.st_gen])
2889AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002890AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002891
2892AC_MSG_CHECKING(for time.h that defines altzone)
2893AC_CACHE_VAL(ac_cv_header_time_altzone,
2894[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2895 ac_cv_header_time_altzone=yes,
2896 ac_cv_header_time_altzone=no)])
2897AC_MSG_RESULT($ac_cv_header_time_altzone)
2898if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002899 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002900fi
2901
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002902was_it_defined=no
2903AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002904AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002905#include <sys/types.h>
2906#include <sys/select.h>
2907#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002908], [;], [
2909 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2910 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2911 (which you can't on SCO ODT 3.0).])
2912 was_it_defined=yes
2913])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002914AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002915
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002916AC_MSG_CHECKING(for addrinfo)
2917AC_CACHE_VAL(ac_cv_struct_addrinfo,
2918AC_TRY_COMPILE([
2919# include <netdb.h>],
2920 [struct addrinfo a],
2921 ac_cv_struct_addrinfo=yes,
2922 ac_cv_struct_addrinfo=no))
2923AC_MSG_RESULT($ac_cv_struct_addrinfo)
2924if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002925 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002926fi
2927
2928AC_MSG_CHECKING(for sockaddr_storage)
2929AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2930AC_TRY_COMPILE([
2931# include <sys/types.h>
2932# include <sys/socket.h>],
2933 [struct sockaddr_storage s],
2934 ac_cv_struct_sockaddr_storage=yes,
2935 ac_cv_struct_sockaddr_storage=no))
2936AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2937if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002938 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002939fi
2940
Guido van Rossum627b2d71993-12-24 10:39:16 +00002941# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002942
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002943AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002944AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002945
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002946works=no
2947AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002948AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2949 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2950)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002951AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002952
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002953works=no
2954AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002955AC_TRY_COMPILE([], [signed char c;], works=yes,
2956 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2957)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002958AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002959
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002960have_prototypes=no
2961AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002962AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2963 AC_DEFINE(HAVE_PROTOTYPES, 1,
2964 [Define if your compiler supports function prototype])
2965 have_prototypes=yes
2966])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002967AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002968
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002969works=no
2970AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002971AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002972#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002973int foo(int x, ...) {
2974 va_list va;
2975 va_start(va, x);
2976 va_arg(va, int);
2977 va_arg(va, char *);
2978 va_arg(va, double);
2979 return 0;
2980}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002981], [return foo(10, "", 3.14);], [
2982 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2983 [Define if your compiler supports variable length function prototypes
2984 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2985 works=yes
2986])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002987AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002988
Dave Cole331708b2004-08-09 04:51:41 +00002989# check for socketpair
2990AC_MSG_CHECKING(for socketpair)
2991AC_TRY_COMPILE([
2992#include <sys/types.h>
2993#include <sys/socket.h>
2994], void *x=socketpair,
2995 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2996 AC_MSG_RESULT(yes),
2997 AC_MSG_RESULT(no)
2998)
2999
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003000# check if sockaddr has sa_len member
3001AC_MSG_CHECKING(if sockaddr has sa_len member)
3002AC_TRY_COMPILE([#include <sys/types.h>
3003#include <sys/socket.h>],
3004[struct sockaddr x;
3005x.sa_len = 0;],
3006 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003007 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003008 AC_MSG_RESULT(no))
3009
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003010va_list_is_array=no
3011AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003012AC_TRY_COMPILE([
3013#ifdef HAVE_STDARG_PROTOTYPES
3014#include <stdarg.h>
3015#else
3016#include <varargs.h>
3017#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003018], [va_list list1, list2; list1 = list2;], , [
3019 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3020 va_list_is_array=yes
3021])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003022AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003023
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003024# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003025AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3026 [Define this if you have some version of gethostbyname_r()])
3027
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003028AC_CHECK_FUNC(gethostbyname_r, [
3029 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3030 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3031 OLD_CFLAGS=$CFLAGS
3032 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3033 AC_TRY_COMPILE([
3034# include <netdb.h>
3035 ], [
3036 char *name;
3037 struct hostent *he, *res;
3038 char buffer[2048];
3039 int buflen = 2048;
3040 int h_errnop;
3041
3042 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3043 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003044 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003045 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3046 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003047 AC_MSG_RESULT(yes)
3048 ], [
3049 AC_MSG_RESULT(no)
3050 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3051 AC_TRY_COMPILE([
3052# include <netdb.h>
3053 ], [
3054 char *name;
3055 struct hostent *he;
3056 char buffer[2048];
3057 int buflen = 2048;
3058 int h_errnop;
3059
3060 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3061 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003062 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003063 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3064 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003065 AC_MSG_RESULT(yes)
3066 ], [
3067 AC_MSG_RESULT(no)
3068 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3069 AC_TRY_COMPILE([
3070# include <netdb.h>
3071 ], [
3072 char *name;
3073 struct hostent *he;
3074 struct hostent_data data;
3075
3076 (void) gethostbyname_r(name, he, &data);
3077 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003078 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003079 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3080 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003081 AC_MSG_RESULT(yes)
3082 ], [
3083 AC_MSG_RESULT(no)
3084 ])
3085 ])
3086 ])
3087 CFLAGS=$OLD_CFLAGS
3088], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003089 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003090])
3091AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3092AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3093AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003094AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003095AC_SUBST(HAVE_GETHOSTBYNAME)
3096
Guido van Rossum627b2d71993-12-24 10:39:16 +00003097# checks for system services
3098# (none yet)
3099
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003100# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003101AC_CHECK_FUNC(__fpu_control,
3102 [],
3103 [AC_CHECK_LIB(ieee, __fpu_control)
3104])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003105
Guido van Rossum93274221997-05-09 02:42:00 +00003106# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003107AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003108AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003109 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3110[
Guido van Rossum93274221997-05-09 02:42:00 +00003111if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003112then
3113 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3114 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3115 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003116else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003117fi],
3118[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003119
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003120# check for --with-libm=...
3121AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003122case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003123Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003124*) LIBM=-lm
3125esac
Guido van Rossum93274221997-05-09 02:42:00 +00003126AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003127AC_ARG_WITH(libm,
3128 AC_HELP_STRING(--with-libm=STRING, math library),
3129[
Guido van Rossum93274221997-05-09 02:42:00 +00003130if test "$withval" = no
3131then LIBM=
3132 AC_MSG_RESULT(force LIBM empty)
3133elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003134then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003135 AC_MSG_RESULT(set LIBM="$withval")
3136else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003137fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003138[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003139
3140# check for --with-libc=...
3141AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003142AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003143AC_ARG_WITH(libc,
3144 AC_HELP_STRING(--with-libc=STRING, C library),
3145[
Guido van Rossum93274221997-05-09 02:42:00 +00003146if test "$withval" = no
3147then LIBC=
3148 AC_MSG_RESULT(force LIBC empty)
3149elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003150then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003151 AC_MSG_RESULT(set LIBC="$withval")
3152else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003153fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003154[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003155
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003156# **************************************************
3157# * Check for various properties of floating point *
3158# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003159
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003160AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3161AC_CACHE_VAL(ac_cv_little_endian_double, [
3162AC_TRY_RUN([
3163#include <string.h>
3164int main() {
3165 double x = 9006104071832581.0;
3166 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3167 return 0;
3168 else
3169 return 1;
3170}
3171],
3172ac_cv_little_endian_double=yes,
3173ac_cv_little_endian_double=no,
3174ac_cv_little_endian_double=no)])
3175AC_MSG_RESULT($ac_cv_little_endian_double)
3176if test "$ac_cv_little_endian_double" = yes
3177then
3178 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3179 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3180 with the least significant byte first])
3181fi
3182
3183AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3184AC_CACHE_VAL(ac_cv_big_endian_double, [
3185AC_TRY_RUN([
3186#include <string.h>
3187int main() {
3188 double x = 9006104071832581.0;
3189 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3190 return 0;
3191 else
3192 return 1;
3193}
3194],
3195ac_cv_big_endian_double=yes,
3196ac_cv_big_endian_double=no,
3197ac_cv_big_endian_double=no)])
3198AC_MSG_RESULT($ac_cv_big_endian_double)
3199if test "$ac_cv_big_endian_double" = yes
3200then
3201 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3202 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3203 with the most significant byte first])
3204fi
3205
3206# Some ARM platforms use a mixed-endian representation for doubles.
3207# While Python doesn't currently have full support for these platforms
3208# (see e.g., issue 1762561), we can at least make sure that float <-> string
3209# conversions work.
3210AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3211AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3212AC_TRY_RUN([
3213#include <string.h>
3214int main() {
3215 double x = 9006104071832581.0;
3216 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3217 return 0;
3218 else
3219 return 1;
3220}
3221],
3222ac_cv_mixed_endian_double=yes,
3223ac_cv_mixed_endian_double=no,
3224ac_cv_mixed_endian_double=no)])
3225AC_MSG_RESULT($ac_cv_mixed_endian_double)
3226if test "$ac_cv_mixed_endian_double" = yes
3227then
3228 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3229 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3230 in ARM mixed-endian order (byte order 45670123)])
3231fi
3232
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003233# The short float repr introduced in Python 3.1 requires the
3234# correctly-rounded string <-> double conversion functions from
3235# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3236# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003237# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003238# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003239
3240# This inline assembler syntax may also work for suncc and icc,
3241# so we try it on all platforms.
3242
3243AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3244AC_TRY_COMPILE([], [
3245 unsigned short cw;
3246 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3247 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3248],
3249[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3250AC_MSG_RESULT($have_gcc_asm_for_x87)
3251if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003252then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003253 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3254 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003255fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003256
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003257# Detect whether system arithmetic is subject to x87-style double
3258# rounding issues. The result of this test has little meaning on non
3259# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3260# mode is round-to-nearest and double rounding issues are present, and
3261# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3262AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003263# $BASECFLAGS may affect the result
3264ac_save_cc="$CC"
3265CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003266AC_TRY_RUN([
3267#include <stdlib.h>
3268#include <math.h>
3269int main() {
3270 volatile double x, y, z;
3271 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3272 x = 0.99999999999999989; /* 1-2**-53 */
3273 y = 1./x;
3274 if (y != 1.)
3275 exit(0);
3276 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3277 x = 1e16;
3278 y = 2.99999;
3279 z = x + y;
3280 if (z != 1e16+4.)
3281 exit(0);
3282 /* both tests show evidence of double rounding */
3283 exit(1);
3284}
3285],
3286ac_cv_x87_double_rounding=no,
3287ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003288ac_cv_x87_double_rounding=no)
3289CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003290AC_MSG_RESULT($ac_cv_x87_double_rounding)
3291if test "$ac_cv_x87_double_rounding" = yes
3292then
3293 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3294 [Define if arithmetic is subject to x87-style double rounding issue])
3295fi
3296
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003297# ************************************
3298# * Check for mathematical functions *
3299# ************************************
3300
3301LIBS_SAVE=$LIBS
3302LIBS="$LIBS $LIBM"
3303
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003304# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3305# -0. on some architectures.
3306AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3307AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3308AC_TRY_RUN([
3309#include <math.h>
3310#include <stdlib.h>
3311int main() {
3312 /* return 0 if either negative zeros don't exist
3313 on this platform or if negative zeros exist
3314 and tanh(-0.) == -0. */
3315 if (atan2(0., -1.) == atan2(-0., -1.) ||
3316 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3317 else exit(1);
3318}
3319],
3320ac_cv_tanh_preserves_zero_sign=yes,
3321ac_cv_tanh_preserves_zero_sign=no,
3322ac_cv_tanh_preserves_zero_sign=no)])
3323AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3324if test "$ac_cv_tanh_preserves_zero_sign" = yes
3325then
3326 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3327 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3328fi
3329
Mark Dickinson9c113362009-09-05 10:36:23 +00003330AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3331AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003332AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003333
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003334LIBS=$LIBS_SAVE
3335
Mark Dickinsona614f042009-11-28 12:48:43 +00003336# For multiprocessing module, check that sem_open
3337# actually works. For FreeBSD versions <= 7.2,
3338# the kernel module that provides POSIX semaphores
3339# isn't loaded by default, so an attempt to call
3340# sem_open results in a 'Signal 12' error.
3341AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3342AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3343AC_TRY_RUN([
3344#include <unistd.h>
3345#include <fcntl.h>
3346#include <stdio.h>
3347#include <semaphore.h>
3348#include <sys/stat.h>
3349
3350int main(void) {
3351 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3352 if (a == SEM_FAILED) {
3353 perror("sem_open");
3354 return 1;
3355 }
3356 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003357 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003358 return 0;
3359}
3360], ac_cv_posix_semaphores_enabled=yes,
3361 ac_cv_posix_semaphores_enabled=no,
3362 ac_cv_posix_semaphores_enabled=yes)
3363)
3364AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3365if test $ac_cv_posix_semaphores_enabled = no
3366then
3367 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3368 [Define if POSIX semaphores aren't enabled on your system])
3369fi
3370
Mark Dickinson10683072009-04-18 21:18:19 +00003371# Multiprocessing check for broken sem_getvalue
3372AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003373AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003374AC_TRY_RUN([
3375#include <unistd.h>
3376#include <fcntl.h>
3377#include <stdio.h>
3378#include <semaphore.h>
3379#include <sys/stat.h>
3380
3381int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003382 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003383 int count;
3384 int res;
3385 if(a==SEM_FAILED){
3386 perror("sem_open");
3387 return 1;
3388
3389 }
3390 res = sem_getvalue(a, &count);
3391 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003392 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003393 return res==-1 ? 1 : 0;
3394}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003395], ac_cv_broken_sem_getvalue=no,
3396 ac_cv_broken_sem_getvalue=yes,
3397 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003398)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003399AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3400if test $ac_cv_broken_sem_getvalue = yes
3401then
3402 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3403 [define to 1 if your sem_getvalue is broken.])
3404fi
Mark Dickinson10683072009-04-18 21:18:19 +00003405
Mark Dickinsonbd792642009-03-18 20:06:12 +00003406# determine what size digit to use for Python's longs
3407AC_MSG_CHECKING([digit size for Python's longs])
3408AC_ARG_ENABLE(big-digits,
3409AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3410[case $enable_big_digits in
3411yes)
3412 enable_big_digits=30 ;;
3413no)
3414 enable_big_digits=15 ;;
3415[15|30])
3416 ;;
3417*)
3418 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3419esac
3420AC_MSG_RESULT($enable_big_digits)
3421AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3422],
3423[AC_MSG_RESULT(no value specified)])
3424
Guido van Rossumef2255b2000-03-10 22:30:29 +00003425# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003426AC_CHECK_HEADER(wchar.h, [
3427 AC_DEFINE(HAVE_WCHAR_H, 1,
3428 [Define if the compiler provides a wchar.h header file.])
3429 wchar_h="yes"
3430],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003431wchar_h="no"
3432)
3433
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003434# determine wchar_t size
3435if test "$wchar_h" = yes
3436then
Guido van Rossum67b26592001-10-20 14:21:45 +00003437 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003438fi
3439
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003440AC_MSG_CHECKING(for UCS-4 tcl)
3441have_ucs4_tcl=no
3442AC_TRY_COMPILE([
3443#include <tcl.h>
3444#if TCL_UTF_MAX != 6
3445# error "NOT UCS4_TCL"
3446#endif], [], [
3447 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3448 have_ucs4_tcl=yes
3449])
3450AC_MSG_RESULT($have_ucs4_tcl)
3451
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003452# check whether wchar_t is signed or not
3453if test "$wchar_h" = yes
3454then
3455 # check whether wchar_t is signed or not
3456 AC_MSG_CHECKING(whether wchar_t is signed)
3457 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3458 AC_TRY_RUN([
3459 #include <wchar.h>
3460 int main()
3461 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003462 /* Success: exit code 0 */
3463 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003464 }
3465 ],
3466 ac_cv_wchar_t_signed=yes,
3467 ac_cv_wchar_t_signed=no,
3468 ac_cv_wchar_t_signed=yes)])
3469 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3470fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003471
Georg Brandl52d168a2008-01-07 18:10:24 +00003472AC_MSG_CHECKING(what type to use for str)
3473AC_ARG_WITH(wide-unicode,
3474 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3475[
3476if test "$withval" != no
3477then unicode_size="4"
3478else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003479fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003480],
3481[
3482case "$have_ucs4_tcl" in
3483 yes) unicode_size="4" ;;
3484 *) unicode_size="2" ;;
3485esac
3486])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003487
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003488AH_TEMPLATE(Py_UNICODE_SIZE,
3489 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003490case "$unicode_size" in
3491 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3492 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003493esac
3494
Martin v. Löwis11437992002-04-12 09:54:03 +00003495AH_TEMPLATE(PY_UNICODE_TYPE,
3496 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003497
Georg Brandl52d168a2008-01-07 18:10:24 +00003498# wchar_t is only usable if it maps to an unsigned type
3499if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003500 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003501then
3502 PY_UNICODE_TYPE="wchar_t"
3503 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3504 [Define if you have a useable wchar_t type defined in wchar.h; useable
3505 means wchar_t must be an unsigned type with at least 16 bits. (see
3506 Include/unicodeobject.h).])
3507 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3508elif test "$ac_cv_sizeof_short" = "$unicode_size"
3509then
3510 PY_UNICODE_TYPE="unsigned short"
3511 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3512elif test "$ac_cv_sizeof_long" = "$unicode_size"
3513then
3514 PY_UNICODE_TYPE="unsigned long"
3515 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3516else
3517 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003518fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003519AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003520
3521# check for endianness
3522AC_C_BIGENDIAN
3523
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003524# Check whether right shifting a negative integer extends the sign bit
3525# or fills with zeros (like the Cray J90, according to Tim Peters).
3526AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003527AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003528AC_TRY_RUN([
3529int main()
3530{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003531 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003532}
Guido van Rossum3065c942001-09-17 04:03:14 +00003533],
3534ac_cv_rshift_extends_sign=yes,
3535ac_cv_rshift_extends_sign=no,
3536ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003537AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3538if test "$ac_cv_rshift_extends_sign" = no
3539then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003540 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3541 [Define if i>>j for signed int i does not extend the sign bit
3542 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003543fi
3544
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003545# check for getc_unlocked and related locking functions
3546AC_MSG_CHECKING(for getc_unlocked() and friends)
3547AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3548AC_TRY_LINK([#include <stdio.h>],[
3549 FILE *f = fopen("/dev/null", "r");
3550 flockfile(f);
3551 getc_unlocked(f);
3552 funlockfile(f);
3553], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3554AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3555if test "$ac_cv_have_getc_unlocked" = yes
3556then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003557 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3558 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003559fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003560
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003561# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003562# save the value of LIBS so we don't actually link Python with readline
3563LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003564
3565# On some systems we need to link readline to a termcap compatible
3566# library. NOTE: Keep the precedence of listed libraries synchronised
3567# with setup.py.
3568py_cv_lib_readline=no
3569AC_MSG_CHECKING([how to link readline libs])
3570for py_libtermcap in "" ncursesw ncurses curses termcap; do
3571 if test -z "$py_libtermcap"; then
3572 READLINE_LIBS="-lreadline"
3573 else
3574 READLINE_LIBS="-lreadline -l$py_libtermcap"
3575 fi
3576 LIBS="$READLINE_LIBS $LIBS_no_readline"
3577 AC_LINK_IFELSE(
3578 [AC_LANG_CALL([],[readline])],
3579 [py_cv_lib_readline=yes])
3580 if test $py_cv_lib_readline = yes; then
3581 break
3582 fi
3583done
3584# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3585#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003586if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003587 AC_MSG_RESULT([none])
3588else
3589 AC_MSG_RESULT([$READLINE_LIBS])
3590 AC_DEFINE(HAVE_LIBREADLINE, 1,
3591 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003592fi
3593
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003594# check for readline 2.1
3595AC_CHECK_LIB(readline, rl_callback_handler_install,
3596 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003597 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003598
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003599# check for readline 2.2
3600AC_TRY_CPP([#include <readline/readline.h>],
3601have_readline=yes, have_readline=no)
3602if test $have_readline = yes
3603then
3604 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3605 [readline/readline.h],
3606 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3607 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003608 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3609 [readline/readline.h],
3610 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3611 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003612fi
3613
Martin v. Löwis0daad592001-09-30 21:09:59 +00003614# check for readline 4.0
3615AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003616 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003617 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003618
Thomas Wouters89d996e2007-09-08 17:39:28 +00003619# also in 4.0
3620AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3621 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003622 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003623
Guido van Rossum353ae582001-07-10 16:45:32 +00003624# check for readline 4.2
3625AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003626 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003627 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003628
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003629# also in readline 4.2
3630AC_TRY_CPP([#include <readline/readline.h>],
3631have_readline=yes, have_readline=no)
3632if test $have_readline = yes
3633then
3634 AC_EGREP_HEADER([extern int rl_catch_signals;],
3635 [readline/readline.h],
3636 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3637 [Define if you can turn off readline's signal handling.]), )
3638fi
3639
Martin v. Löwis82bca632006-02-10 20:49:30 +00003640# End of readline checks: restore LIBS
3641LIBS=$LIBS_no_readline
3642
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003643AC_MSG_CHECKING(for broken nice())
3644AC_CACHE_VAL(ac_cv_broken_nice, [
3645AC_TRY_RUN([
3646int main()
3647{
3648 int val1 = nice(1);
3649 if (val1 != -1 && val1 == nice(2))
3650 exit(0);
3651 exit(1);
3652}
Guido van Rossum3065c942001-09-17 04:03:14 +00003653],
3654ac_cv_broken_nice=yes,
3655ac_cv_broken_nice=no,
3656ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003657AC_MSG_RESULT($ac_cv_broken_nice)
3658if test "$ac_cv_broken_nice" = yes
3659then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003660 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3661 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003662fi
3663
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003664AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003665AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003666AC_TRY_RUN([
3667#include <poll.h>
3668
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003669int main()
3670{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003671 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003672 int poll_test;
3673
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003674 close (42);
3675
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003676 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003677 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003678 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003679 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003680 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003681 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003682 return 1;
3683}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003684],
3685ac_cv_broken_poll=yes,
3686ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003687ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003688AC_MSG_RESULT($ac_cv_broken_poll)
3689if test "$ac_cv_broken_poll" = yes
3690then
3691 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3692 [Define if poll() sets errno on invalid file descriptors.])
3693fi
3694
Brett Cannon43802422005-02-10 20:48:03 +00003695# Before we can test tzset, we need to check if struct tm has a tm_zone
3696# (which is not required by ISO C or UNIX spec) and/or if we support
3697# tzname[]
3698AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003699
Brett Cannon43802422005-02-10 20:48:03 +00003700# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003701AC_MSG_CHECKING(for working tzset())
3702AC_CACHE_VAL(ac_cv_working_tzset, [
3703AC_TRY_RUN([
3704#include <stdlib.h>
3705#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003706#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003707
3708#if HAVE_TZNAME
3709extern char *tzname[];
3710#endif
3711
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003712int main()
3713{
Brett Cannon18367812003-09-19 00:59:16 +00003714 /* Note that we need to ensure that not only does tzset(3)
3715 do 'something' with localtime, but it works as documented
3716 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003717 This includes making sure that tzname is set properly if
3718 tm->tm_zone does not exist since it is the alternative way
3719 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003720
3721 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003722 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003723 */
3724
Brett Cannon43802422005-02-10 20:48:03 +00003725 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003726 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3727
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003728 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003729 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003730 if (localtime(&groundhogday)->tm_hour != 0)
3731 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003732#if HAVE_TZNAME
3733 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3734 if (strcmp(tzname[0], "UTC") ||
3735 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3736 exit(1);
3737#endif
Brett Cannon18367812003-09-19 00:59:16 +00003738
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003739 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003740 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003741 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003742 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003743#if HAVE_TZNAME
3744 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3745 exit(1);
3746#endif
Brett Cannon18367812003-09-19 00:59:16 +00003747
3748 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3749 tzset();
3750 if (localtime(&groundhogday)->tm_hour != 11)
3751 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003752#if HAVE_TZNAME
3753 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3754 exit(1);
3755#endif
3756
3757#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003758 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3759 exit(1);
3760 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3761 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003762#endif
Brett Cannon18367812003-09-19 00:59:16 +00003763
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003764 exit(0);
3765}
3766],
3767ac_cv_working_tzset=yes,
3768ac_cv_working_tzset=no,
3769ac_cv_working_tzset=no)])
3770AC_MSG_RESULT($ac_cv_working_tzset)
3771if test "$ac_cv_working_tzset" = yes
3772then
3773 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3774 [Define if tzset() actually switches the local timezone in a meaningful way.])
3775fi
3776
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003777# Look for subsecond timestamps in struct stat
3778AC_MSG_CHECKING(for tv_nsec in struct stat)
3779AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3780AC_TRY_COMPILE([#include <sys/stat.h>], [
3781struct stat st;
3782st.st_mtim.tv_nsec = 1;
3783],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003784ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003785ac_cv_stat_tv_nsec=no,
3786ac_cv_stat_tv_nsec=no))
3787AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3788if test "$ac_cv_stat_tv_nsec" = yes
3789then
3790 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3791 [Define if you have struct stat.st_mtim.tv_nsec])
3792fi
3793
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003794# Look for BSD style subsecond timestamps in struct stat
3795AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3796AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3797AC_TRY_COMPILE([#include <sys/stat.h>], [
3798struct stat st;
3799st.st_mtimespec.tv_nsec = 1;
3800],
3801ac_cv_stat_tv_nsec2=yes,
3802ac_cv_stat_tv_nsec2=no,
3803ac_cv_stat_tv_nsec2=no))
3804AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3805if test "$ac_cv_stat_tv_nsec2" = yes
3806then
3807 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3808 [Define if you have struct stat.st_mtimensec])
3809fi
3810
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003811# On HP/UX 11.0, mvwdelch is a block with a return statement
3812AC_MSG_CHECKING(whether mvwdelch is an expression)
3813AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3814AC_TRY_COMPILE([#include <curses.h>], [
3815 int rtn;
3816 rtn = mvwdelch(0,0,0);
3817], ac_cv_mvwdelch_is_expression=yes,
3818 ac_cv_mvwdelch_is_expression=no,
3819 ac_cv_mvwdelch_is_expression=yes))
3820AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3821
3822if test "$ac_cv_mvwdelch_is_expression" = yes
3823then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003824 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3825 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003826fi
3827
3828AC_MSG_CHECKING(whether WINDOW has _flags)
3829AC_CACHE_VAL(ac_cv_window_has_flags,
3830AC_TRY_COMPILE([#include <curses.h>], [
3831 WINDOW *w;
3832 w->_flags = 0;
3833], ac_cv_window_has_flags=yes,
3834 ac_cv_window_has_flags=no,
3835 ac_cv_window_has_flags=no))
3836AC_MSG_RESULT($ac_cv_window_has_flags)
3837
3838
3839if test "$ac_cv_window_has_flags" = yes
3840then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003841 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3842 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003843fi
3844
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003845AC_MSG_CHECKING(for is_term_resized)
3846AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3847 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3848 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003849 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003850)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003851
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003852AC_MSG_CHECKING(for resize_term)
3853AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3854 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3855 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003856 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003857)
3858
3859AC_MSG_CHECKING(for resizeterm)
3860AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3861 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3862 AC_MSG_RESULT(yes),
3863 AC_MSG_RESULT(no)
3864)
3865
Thomas Wouters89f507f2006-12-13 04:49:30 +00003866AC_MSG_CHECKING(for /dev/ptmx)
3867
3868if test -r /dev/ptmx
3869then
3870 AC_MSG_RESULT(yes)
3871 AC_DEFINE(HAVE_DEV_PTMX, 1,
3872 [Define if we have /dev/ptmx.])
3873else
3874 AC_MSG_RESULT(no)
3875fi
3876
3877AC_MSG_CHECKING(for /dev/ptc)
3878
3879if test -r /dev/ptc
3880then
3881 AC_MSG_RESULT(yes)
3882 AC_DEFINE(HAVE_DEV_PTC, 1,
3883 [Define if we have /dev/ptc.])
3884else
3885 AC_MSG_RESULT(no)
3886fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003887
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003888if test "$have_long_long" = yes
3889then
3890 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3891 AC_CACHE_VAL(ac_cv_have_long_long_format,
3892 AC_TRY_RUN([[
3893 #include <stdio.h>
3894 #include <stddef.h>
3895 #include <string.h>
3896
3897 #ifdef HAVE_SYS_TYPES_H
3898 #include <sys/types.h>
3899 #endif
3900
3901 int main()
3902 {
3903 char buffer[256];
3904
3905 if (sprintf(buffer, "%lld", (long long)123) < 0)
3906 return 1;
3907 if (strcmp(buffer, "123"))
3908 return 1;
3909
3910 if (sprintf(buffer, "%lld", (long long)-123) < 0)
3911 return 1;
3912 if (strcmp(buffer, "-123"))
3913 return 1;
3914
3915 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3916 return 1;
3917 if (strcmp(buffer, "123"))
3918 return 1;
3919
3920 return 0;
3921 }
3922 ]], ac_cv_have_long_long_format=yes,
3923 ac_cv_have_long_long_format=no,
3924 ac_cv_have_long_long_format=no)
3925 )
3926 AC_MSG_RESULT($ac_cv_have_long_long_format)
3927fi
3928
Mark Dickinson89d7d412009-12-31 20:50:59 +00003929if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003930then
3931 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
3932 [Define to printf format modifier for long long type])
3933fi
3934
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00003935if test $ac_sys_system = Darwin
3936then
3937 LIBS="$LIBS -framework CoreFoundation"
3938fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003939
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003940AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
3941AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003942#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003943#include <stddef.h>
3944#include <string.h>
3945
Christian Heimes2c181612007-12-17 20:04:13 +00003946#ifdef HAVE_SYS_TYPES_H
3947#include <sys/types.h>
3948#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003949
3950#ifdef HAVE_SSIZE_T
3951typedef ssize_t Py_ssize_t;
3952#elif SIZEOF_VOID_P == SIZEOF_LONG
3953typedef long Py_ssize_t;
3954#else
3955typedef int Py_ssize_t;
3956#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003957
Christian Heimes2c181612007-12-17 20:04:13 +00003958int main()
3959{
3960 char buffer[256];
3961
Thomas Wouters477c8d52006-05-27 19:21:47 +00003962 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3963 return 1;
3964
Thomas Wouters89f507f2006-12-13 04:49:30 +00003965 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003966 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003967
3968 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3969 return 1;
3970
3971 if (strcmp(buffer, "-123"))
3972 return 1;
3973
Thomas Wouters477c8d52006-05-27 19:21:47 +00003974 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003975}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003976], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003977 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003978 [ac_cv_have_size_t_format="cross -- assuming yes"]
3979)])
3980if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003981 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3982 [Define to printf format modifier for Py_ssize_t])
3983fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00003984
Martin v. Löwis01c04012002-11-11 14:58:44 +00003985AC_CHECK_TYPE(socklen_t,,
3986 AC_DEFINE(socklen_t,int,
3987 Define to `int' if <sys/socket.h> does not define.),[
3988#ifdef HAVE_SYS_TYPES_H
3989#include <sys/types.h>
3990#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003991#ifdef HAVE_SYS_SOCKET_H
3992#include <sys/socket.h>
3993#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003994])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003995
Antoine Pitroufff95302008-09-03 18:58:51 +00003996AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003997AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00003998AC_TRY_RUN([
3999#include<stdlib.h>
4000int main() {
4001 size_t len = -1;
4002 const char *str = "text";
4003 len = mbstowcs(NULL, str, 0);
4004 return (len != 4);
4005}
4006],
4007ac_cv_broken_mbstowcs=no,
4008ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004009ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004010AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4011if test "$ac_cv_broken_mbstowcs" = yes
4012then
4013 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4014 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4015 wide chars that would be converted.])
4016fi
4017
Antoine Pitroub52ec782009-01-25 16:34:23 +00004018# Check for --with-computed-gotos
4019AC_MSG_CHECKING(for --with-computed-gotos)
4020AC_ARG_WITH(computed-gotos,
4021 AC_HELP_STRING(--with-computed-gotos,
4022 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4023[
4024if test "$withval" != no
4025then
4026 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4027 [Define if you want to use computed gotos in ceval.c.])
4028 AC_MSG_RESULT(yes)
4029else AC_MSG_RESULT(no)
4030fi],
4031[AC_MSG_RESULT(no)])
4032
4033
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004034AC_SUBST(THREADHEADERS)
4035
4036for h in `(cd $srcdir;echo Python/thread_*.h)`
4037do
4038 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4039done
4040
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004041AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004042SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004043AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004044for dir in $SRCDIRS; do
4045 if test ! -d $dir; then
4046 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004047 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004048done
4049AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004050
Guido van Rossum627b2d71993-12-24 10:39:16 +00004051# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004052AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004053AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004054
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004055echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004056if test ! -f Modules/Setup
4057then
4058 cp $srcdir/Modules/Setup.dist Modules/Setup
4059fi
4060
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004061echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004062if test ! -f Modules/Setup.local
4063then
4064 echo "# Edit this file for local setup changes" >Modules/Setup.local
4065fi
4066
4067echo "creating Makefile"
4068$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4069 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004070 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004071mv config.c Modules