blob: a7a08147c1ff6eacbcf054556124ef82e91b7d9b [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson98b1b022008-11-30 14:43: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)
Martin v. Löwis174440b2008-10-03 08:59:41 +00007m4_define(PYTHON_VERSION, 2.7)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalotti130ae152009-07-18 00:31:06 +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 Brandl464432d2009-05-20 18:24:08 +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
Georg Brandlbcd64a32009-03-31 21:45:18 +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
Ronald Oussoren5640ce22008-06-05 12:58:24 +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 Oussoren3c0a1262010-01-17 19:27:57 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Ronald Oussoren988117f2006-04-29 11:31:35 +000090AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren3c0a1262010-01-17 19:27:57 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000113 ;;
114 esac
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000115
Ronald Oussoren988117f2006-04-29 11:31:35 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren23d92532009-09-07 06:12:00 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000138 if test "${enable_universalsdk}" ; then
139 :
140 else
141 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
142 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000143],
144[
145 AC_MSG_RESULT(32-bit)
146])
147
148
149
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000150AC_ARG_WITH(framework-name,
151 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
152 specify an alternate name of the framework built with --enable-framework),
153[
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000154 if test "${enable_framework}"; then
155 :
156 else
157 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
158 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000159 PYTHONFRAMEWORK=${withval}
160 PYTHONFRAMEWORKDIR=${withval}.framework
161 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
162 ],[
163 PYTHONFRAMEWORK=Python
164 PYTHONFRAMEWORKDIR=Python.framework
165 PYTHONFRAMEWORKIDENTIFIER=org.python.python
166])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000167dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000168AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000169 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
170[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000171 case $enableval in
172 yes)
173 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000174 esac
175 case $enableval in
176 no)
177 PYTHONFRAMEWORK=
178 PYTHONFRAMEWORKDIR=no-framework
179 PYTHONFRAMEWORKPREFIX=
180 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000181 FRAMEWORKINSTALLFIRST=
182 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000183 FRAMEWORKALTINSTALLFIRST=
184 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000185 if test "x${prefix}" = "xNONE"; then
186 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
187 else
188 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
189 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000190 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000191 ;;
192 *)
193 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000194 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000195 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000196 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000197 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
198 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000199
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000200 if test "x${prefix}" = "xNONE" ; then
201 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
202 else
203 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
204 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000205 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000206
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000207 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000208 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000209 AC_CONFIG_FILES(Mac/Makefile)
210 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
211 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000212 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
213 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000214 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000215 ],[
216 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000217 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 PYTHONFRAMEWORKPREFIX=
219 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000220 FRAMEWORKINSTALLFIRST=
221 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000222 FRAMEWORKALTINSTALLFIRST=
223 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000224 if test "x${prefix}" = "xNONE" ; then
225 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
226 else
227 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
228 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000229 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000230
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000231])
232AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000233AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000234AC_SUBST(PYTHONFRAMEWORKDIR)
235AC_SUBST(PYTHONFRAMEWORKPREFIX)
236AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000237AC_SUBST(FRAMEWORKINSTALLFIRST)
238AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000239AC_SUBST(FRAMEWORKALTINSTALLFIRST)
240AC_SUBST(FRAMEWORKALTINSTALLLAST)
241AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000242
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000243##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000244## AC_HELP_STRING(--with-dyld,
245## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000246##
Guido van Rossumb418f891996-07-30 18:06:02 +0000247# Set name for machine-dependent library files
248AC_SUBST(MACHDEP)
249AC_MSG_CHECKING(MACHDEP)
250if test -z "$MACHDEP"
251then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000252 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000253 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000254 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000255 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000256 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000257 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000258 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000259 ac_md_system=`echo $ac_sys_system |
260 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
261 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000262 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000263 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000264
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000265 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000266 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000267 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000268 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000269 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000270 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000271 esac
272fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000273
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000274# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
275# disable features if it is defined, without any means to access these
276# features as extensions. For these systems, we skip the definition of
277# _XOPEN_SOURCE. Before adding a system to the list to gain access to
278# some feature, make sure there is no alternative way to access this
279# feature. Also, when using wildcards, make sure you have verified the
280# need for not defining _XOPEN_SOURCE on all systems matching the
281# wildcard, and that the wildcard does not include future systems
282# (which may remove their limitations).
283dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
284case $ac_sys_system/$ac_sys_release in
285 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
286 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000287 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis7875ef62010-02-15 21:41:12 +0000288 # In addition, Stefan Krah confirms that issue #1244610 exists through
289 # OpenBSD 4.6, but is fixed in 4.7.
290 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000291 define_xopen_source=no
292 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
293 # also defined. This can be overridden by defining _BSD_SOURCE
294 # As this has a different meaning on Linux, only define it on OpenBSD
295 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
296 ;;
Martin v. Löwis7875ef62010-02-15 21:41:12 +0000297 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis5e2dd862010-02-15 08:32:00 +0000298 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
299 # also defined. This can be overridden by defining _BSD_SOURCE
300 # As this has a different meaning on Linux, only define it on OpenBSD
301 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
302 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000303 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
304 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
305 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000306 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000307 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000308 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
309 # of union __?sigval. Reported by Stuart Bishop.
310 SunOS/5.6)
311 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000312 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
313 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000314 # Reconfirmed for 7.1.4 by Martin v. Loewis.
315 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000316 define_xopen_source=no;;
317 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000318 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000319 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000320 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000321 # On FreeBSD 4, the math functions C89 does not cover are never defined
322 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
323 FreeBSD/4.*)
324 define_xopen_source=no;;
325 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
326 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
327 # identifies itself as Darwin/7.*
328 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
329 # disables platform specific features beyond repair.
330 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
331 # has no effect, don't bother defining them
332 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000333 define_xopen_source=no;;
Ronald Oussorena55af9a2010-01-17 16:25:57 +0000334 Darwin/1@<:@0-9@:>@.*)
335 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000336 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
337 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
338 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000339 AIX/4)
340 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000341 AIX/5)
342 if test `uname -r` -eq 1; then
343 define_xopen_source=no
344 fi
345 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000346 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
347 # defining NI_NUMERICHOST.
348 QNX/6.3.2)
349 define_xopen_source=no
350 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000351
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000352esac
353
354if test $define_xopen_source = yes
355then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000356 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
357 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000358 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
359 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000360 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000361 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000362 AC_DEFINE(_XOPEN_SOURCE, 500,
363 Define to the level of X/Open that your system supports)
364 ;;
365 *)
366 AC_DEFINE(_XOPEN_SOURCE, 600,
367 Define to the level of X/Open that your system supports)
368 ;;
369 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000370
371 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
372 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
373 # several APIs are not declared. Since this is also needed in some
374 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000375 # except for Solaris 10, where it must not be defined,
376 # as it implies XPG4.2
377 case $ac_sys_system/$ac_sys_release in
378 SunOS/5.10)
379 ;;
380 *)
381 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
382 Define to activate Unix95-and-earlier features)
383 ;;
384 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000385
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000386 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
387
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000388fi
389
Guido van Rossum91922671997-10-09 20:24:13 +0000390#
391# SGI compilers allow the specification of the both the ABI and the
392# ISA on the command line. Depending on the values of these switches,
393# different and often incompatable code will be generated.
394#
395# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
396# thus supply support for various ABI/ISA combinations. The MACHDEP
397# variable is also adjusted.
398#
399AC_SUBST(SGI_ABI)
400if test ! -z "$SGI_ABI"
401then
402 CC="cc $SGI_ABI"
403 LDFLAGS="$SGI_ABI $LDFLAGS"
404 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
405fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000406AC_MSG_RESULT($MACHDEP)
407
Jack Jansen83f898c2002-12-30 22:23:40 +0000408# And add extra plat-mac for darwin
409AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000410AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000411AC_MSG_CHECKING(EXTRAPLATDIR)
412if test -z "$EXTRAPLATDIR"
413then
414 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000415 darwin)
416 EXTRAPLATDIR="\$(PLATMACDIRS)"
417 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
418 ;;
419 *)
420 EXTRAPLATDIR=""
421 EXTRAMACHDEPPATH=""
422 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000423 esac
424fi
425AC_MSG_RESULT($EXTRAPLATDIR)
426
Jack Jansen6b08a402004-06-03 12:41:45 +0000427# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
428# it may influence the way we can build extensions, so distutils
429# needs to check it
430AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000431AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000432CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000433EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000434
Mark Dickinson65134662008-04-25 16:11:04 +0000435AC_MSG_CHECKING(machine type as reported by uname -m)
436ac_sys_machine=`uname -m`
437AC_MSG_RESULT($ac_sys_machine)
438
Guido van Rossum627b2d71993-12-24 10:39:16 +0000439# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000440
441# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
442# for debug/optimization stuff. BASECFLAGS is for flags that are required
443# just to get things to compile and link. Users are free to override OPT
444# when running configure or make. The build should not break if they do.
445# BASECFLAGS should generally not be messed with, however.
446
447# XXX shouldn't some/most/all of this code be merged with the stuff later
448# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000449AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000450AC_ARG_WITH(gcc,
451 AC_HELP_STRING(--without-gcc,never use gcc),
452[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000453 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000454 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000455 without_gcc=yes;;
456 yes) CC=gcc
457 without_gcc=no;;
458 *) CC=$withval
459 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000460 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000461 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000462 AIX*) CC=cc_r
463 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000464 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000465 case $BE_HOST_CPU in
466 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000467 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000468 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000469 BASECFLAGS="$BASECFLAGS -export pragma"
470 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000471 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000472 ;;
473 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000474 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000475 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000476 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000477 ;;
478 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000479 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000480 ;;
481 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000482 AR="\$(srcdir)/Modules/ar_beos"
483 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000484 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000485 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000486 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000487AC_MSG_RESULT($without_gcc)
488
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000489# If the user switches compilers, we can't believe the cache
490if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
491then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000492 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
493(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000494fi
495
Victor Stinner6cbf90f2010-03-25 00:21:53 +0000496save_CFLAGS=$CFLAGS
Guido van Rossum627b2d71993-12-24 10:39:16 +0000497AC_PROG_CC
Victor Stinner6cbf90f2010-03-25 00:21:53 +0000498CFLAGS=$save_CFLAGS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000499
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000500AC_SUBST(CXX)
501AC_SUBST(MAINCC)
502AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
503AC_ARG_WITH(cxx_main,
504 AC_HELP_STRING([--with-cxx-main=<compiler>],
505 [compile main() and link python executable with C++ compiler]),
506[
507
508 case $withval in
509 no) with_cxx_main=no
510 MAINCC='$(CC)';;
511 yes) with_cxx_main=yes
512 MAINCC='$(CXX)';;
513 *) with_cxx_main=yes
514 MAINCC=$withval
515 if test -z "$CXX"
516 then
517 CXX=$withval
518 fi;;
519 esac], [
520 with_cxx_main=no
521 MAINCC='$(CC)'
522])
523AC_MSG_RESULT($with_cxx_main)
524
525preset_cxx="$CXX"
526if test -z "$CXX"
527then
528 case "$CC" in
529 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
530 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
531 esac
532 if test "$CXX" = "notfound"
533 then
534 CXX=""
535 fi
536fi
537if test -z "$CXX"
538then
539 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
540 if test "$CXX" = "notfound"
541 then
542 CXX=""
543 fi
544fi
545if test "$preset_cxx" != "$CXX"
546then
547 AC_MSG_WARN([
548
549 By default, distutils will build C++ extension modules with "$CXX".
550 If this is not intended, then set CXX on the configure command line.
551 ])
552fi
553
554
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000555# checks for UNIX variants that set C preprocessor variables
556AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000557
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000558# Check for unsupported systems
559case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000560atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000561 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
562 echo See README for details.
563 exit 1;;
564esac
565
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000566AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000567AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000568AC_ARG_WITH(suffix,
569 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
570[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000571 case $withval in
572 no) EXEEXT=;;
573 yes) EXEEXT=.exe;;
574 *) EXEEXT=$withval;;
575 esac])
576AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000577
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000578# Test whether we're running on a non-case-sensitive system, in which
579# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000580AC_SUBST(BUILDEXEEXT)
581AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000582if test ! -d CaseSensitiveTestDir; then
583mkdir CaseSensitiveTestDir
584fi
585
586if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000587then
Jack Jansen1999ef42001-12-06 21:47:20 +0000588 AC_MSG_RESULT(yes)
589 BUILDEXEEXT=.exe
590else
591 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000592 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000593fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000594rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000595
Guido van Rossumdd997f71998-10-07 19:58:26 +0000596case $MACHDEP in
597bsdos*)
598 case $CC in
599 gcc) CC="$CC -D_HAVE_BSDI";;
600 esac;;
601esac
602
Guido van Rossum84561611997-08-21 00:08:11 +0000603case $ac_sys_system in
604hp*|HP*)
605 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000606 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000607 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000608SunOS*)
609 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000610 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000611 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000612esac
613
Martin v. Löwise8964d42001-03-06 12:09:07 +0000614
Neil Schemenauer61c51152001-01-26 16:18:16 +0000615AC_SUBST(LIBRARY)
616AC_MSG_CHECKING(LIBRARY)
617if test -z "$LIBRARY"
618then
619 LIBRARY='libpython$(VERSION).a'
620fi
621AC_MSG_RESULT($LIBRARY)
622
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000623# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000624# name of the library into which to insert object files). BLDLIBRARY is also
625# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
626# is blank as the main program is not linked directly against LDLIBRARY.
627# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
628# systems without shared libraries, LDLIBRARY is the same as LIBRARY
629# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
630# DLLLIBRARY is the shared (i.e., DLL) library.
631#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000632# RUNSHARED is used to run shared python without installed libraries
633#
634# INSTSONAME is the name of the shared library that will be use to install
635# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000636AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000637AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000638AC_SUBST(BLDLIBRARY)
639AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640AC_SUBST(INSTSONAME)
641AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000642LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000643BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000644INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000645DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000646LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000648
Guido van Rossumfb842551997-08-06 23:42:07 +0000649# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000650# If CXX is set, and if it is needed to link a main function that was
651# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
652# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000653# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000654# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000655AC_SUBST(LINKCC)
656AC_MSG_CHECKING(LINKCC)
657if test -z "$LINKCC"
658then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000659 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000660 case $ac_sys_system in
661 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000662 exp_extra="\"\""
663 if test $ac_sys_release -ge 5 -o \
664 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
665 exp_extra="."
666 fi
667 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000668 QNX*)
669 # qcc must be used because the other compilers do not
670 # support -N.
671 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000672 esac
673fi
674AC_MSG_RESULT($LINKCC)
675
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000676# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
677# make sure we default having it set to "no": this is used by
678# distutils.unixccompiler to know if it should add --enable-new-dtags
679# to linker command lines, and failing to detect GNU ld simply results
680# in the same bahaviour as before.
681AC_SUBST(GNULD)
682AC_MSG_CHECKING(for GNU ld)
683ac_prog=ld
684if test "$GCC" = yes; then
685 ac_prog=`$CC -print-prog-name=ld`
686fi
687case `"$ac_prog" -V 2>&1 < /dev/null` in
688 *GNU*)
689 GNULD=yes;;
690 *)
691 GNULD=no;;
692esac
693AC_MSG_RESULT($GNULD)
694
Martin v. Löwis1142de32002-03-29 16:28:31 +0000695AC_MSG_CHECKING(for --enable-shared)
696AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000697 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000698
Martin v. Löwis1142de32002-03-29 16:28:31 +0000699if test -z "$enable_shared"
700then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000701 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000702 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000703 enable_shared="yes";;
704 *)
705 enable_shared="no";;
706 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707fi
708AC_MSG_RESULT($enable_shared)
709
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000710AC_MSG_CHECKING(for --enable-profiling)
711AC_ARG_ENABLE(profiling,
712 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
713[ac_save_cc="$CC"
714 CC="$CC -pg"
715 AC_TRY_RUN([int main() { return 0; }],
716 ac_enable_profiling="yes",
717 ac_enable_profiling="no",
718 ac_enable_profiling="no")
719 CC="$ac_save_cc"])
720AC_MSG_RESULT($ac_enable_profiling)
721
722case "$ac_enable_profiling" in
723 "yes")
724 BASECFLAGS="-pg $BASECFLAGS"
725 LDFLAGS="-pg $LDFLAGS"
726 ;;
727esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728
729AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000730
Guido van Rossumb8552162001-09-05 14:58:11 +0000731# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
732# library that we build, but we do not want to link against it (we
733# will find it with a -framework option). For this reason there is an
734# extra variable BLDLIBRARY against which Python and the extension
735# modules are linked, BLDLIBRARY. This is normally the same as
736# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000737if test "$enable_framework"
738then
739 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000740 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000741 BLDLIBRARY=''
742else
743 BLDLIBRARY='$(LDLIBRARY)'
744fi
745
Martin v. Löwis1142de32002-03-29 16:28:31 +0000746# Other platforms follow
747if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000748 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000749 case $ac_sys_system in
750 BeOS*)
751 LDLIBRARY='libpython$(VERSION).so'
752 ;;
753 CYGWIN*)
754 LDLIBRARY='libpython$(VERSION).dll.a'
755 DLLLIBRARY='libpython$(VERSION).dll'
756 ;;
757 SunOS*)
758 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000759 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000760 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000761 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000762 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000763 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000764 LDLIBRARY='libpython$(VERSION).so'
765 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000766 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000767 case $ac_sys_system in
768 FreeBSD*)
769 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
770 ;;
771 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000772 INSTSONAME="$LDLIBRARY".$SOVERSION
773 ;;
774 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000775 case `uname -m` in
776 ia64)
777 LDLIBRARY='libpython$(VERSION).so'
778 ;;
779 *)
780 LDLIBRARY='libpython$(VERSION).sl'
781 ;;
782 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000783 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000784 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000785 ;;
786 OSF*)
787 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000788 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000789 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000790 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000791 atheos*)
792 LDLIBRARY='libpython$(VERSION).so'
793 BLDLIBRARY='-L. -lpython$(VERSION)'
794 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
795 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000796 Darwin*)
797 LDLIBRARY='libpython$(VERSION).dylib'
798 BLDLIBRARY='-L. -lpython$(VERSION)'
799 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
800 ;;
801
Martin v. Löwis1142de32002-03-29 16:28:31 +0000802 esac
Jason Tishler30765592003-09-04 11:04:06 +0000803else # shared is disabled
804 case $ac_sys_system in
805 CYGWIN*)
806 BLDLIBRARY='$(LIBRARY)'
807 LDLIBRARY='libpython$(VERSION).dll.a'
808 ;;
809 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000810fi
811
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000812AC_MSG_RESULT($LDLIBRARY)
813
Guido van Rossum627b2d71993-12-24 10:39:16 +0000814AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000815AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000816AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000817
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000818# tweak ARFLAGS only if the user didn't set it on the command line
819AC_SUBST(ARFLAGS)
820if test -z "$ARFLAGS"
821then
822 ARFLAGS="rc"
823fi
824
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000825AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000826AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000827if test $SVNVERSION = found
828then
829 SVNVERSION="svnversion \$(srcdir)"
830else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000831 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000832fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000833
Neil Schemenauera42c8272001-03-31 00:01:55 +0000834case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000835bsdos*|hp*|HP*)
836 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000837 if test -z "$INSTALL"
838 then
839 INSTALL="${srcdir}/install-sh -c"
840 fi
841esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000842AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000843
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000844# Not every filesystem supports hard links
845AC_SUBST(LN)
846if test -z "$LN" ; then
847 case $ac_sys_system in
848 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000849 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000850 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000851 *) LN=ln;;
852 esac
853fi
854
Fred Drake9f715822001-07-11 06:27:00 +0000855# Check for --with-pydebug
856AC_MSG_CHECKING(for --with-pydebug)
857AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000858 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
859[
Fred Drake9f715822001-07-11 06:27:00 +0000860if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000861then
862 AC_DEFINE(Py_DEBUG, 1,
863 [Define if you want to build an interpreter with many run-time checks.])
864 AC_MSG_RESULT(yes);
865 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000866else AC_MSG_RESULT(no); Py_DEBUG='false'
867fi],
868[AC_MSG_RESULT(no)])
869
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
871# merged with this chunk of code?
872
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000873# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000874# ------------------------
875# (The following bit of code is complicated enough - please keep things
876# indented properly. Just pretend you're editing Python code. ;-)
877
878# There are two parallel sets of case statements below, one that checks to
879# see if OPT was set and one that does BASECFLAGS setting based upon
880# compiler and platform. BASECFLAGS tweaks need to be made even if the
881# user set OPT.
882
883# tweak OPT based on compiler and platform, only if the user didn't set
884# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000885AC_SUBST(OPT)
Benjamin Petersond4b721b2010-03-23 20:58:37 +0000886if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000887then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888 case $GCC in
889 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000890 if test "$CC" != 'g++' ; then
891 STRICT_PROTO="-Wstrict-prototypes"
892 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000893 # For gcc 4.x we need to use -fwrapv so lets check if its supported
894 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
895 WRAP="-fwrapv"
896 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000897 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000898 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000899 if test "$Py_DEBUG" = 'true' ; then
900 # Optimization messes up debuggers, so turn it off for
901 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000902 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000903 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000904 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000905 fi
906 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000907 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000908 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000909 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000910 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000911 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000912 SCO_SV*) OPT="$OPT -m486 -DSCO5"
913 ;;
914 esac
Fred Drake9f715822001-07-11 06:27:00 +0000915 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000916
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000917 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000918 OPT="-O"
919 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000920 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000921fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000922
Skip Montanarodecc6a42003-01-01 20:07:49 +0000923AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000924
925# The -arch flags for universal builds on OSX
926UNIVERSAL_ARCH_FLAGS=
927AC_SUBST(UNIVERSAL_ARCH_FLAGS)
928
Skip Montanarodecc6a42003-01-01 20:07:49 +0000929# tweak BASECFLAGS based on compiler and platform
930case $GCC in
931yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000932 # Python violates C99 rules, by casting between incompatible
933 # pointer types. GCC may generate bad code as a result of that,
934 # so use -fno-strict-aliasing if supported.
935 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
936 ac_save_cc="$CC"
937 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000938 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +0000939 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000940 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000941 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000942 CC="$ac_save_cc"
943 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
944 if test $ac_cv_no_strict_aliasing_ok = yes
945 then
946 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
947 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000948
949 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
950 # support. Without this, treatment of subnormals doesn't follow
951 # the standard.
952 case $ac_sys_machine in
953 alpha*)
954 BASECFLAGS="$BASECFLAGS -mieee"
955 ;;
956 esac
957
Skip Montanarodecc6a42003-01-01 20:07:49 +0000958 case $ac_sys_system in
959 SCO_SV*)
960 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
961 ;;
962 # is there any other compiler on Darwin besides gcc?
963 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000964 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
965 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussorena55af9a2010-01-17 16:25:57 +0000966 if test "${CC}" = gcc
967 then
968 AC_MSG_CHECKING(which compiler should be used)
969 case "${UNIVERSALSDK}" in
970 */MacOSX10.4u.sdk)
971 # Build using 10.4 SDK, force usage of gcc when the
972 # compiler is gcc, otherwise the user will get very
973 # confusing error messages when building on OSX 10.6
974 CC=gcc-4.0
975 CPP=cpp-4.0
976 ;;
977 esac
978 AC_MSG_RESULT($CC)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000979 fi
980
Benjamin Peterson4347c442008-07-17 15:59:24 +0000981 # Calculate the right deployment target for this build.
982 #
983 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
984 if test ${cur_target} '>' 10.2; then
985 cur_target=10.3
Ronald Oussoren25967582009-09-06 10:00:26 +0000986 if test ${enable_universalsdk}; then
987 if test "${UNIVERSAL_ARCHS}" = "all"; then
988 # Ensure that the default platform for a
989 # 4-way universal build is OSX 10.5,
990 # that's the first OS release where
991 # 4-way builds make sense.
992 cur_target='10.5'
Ronald Oussoren23d92532009-09-07 06:12:00 +0000993
994 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
995 cur_target='10.5'
996
997 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
998 cur_target='10.5'
999
1000 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1001 cur_target='10.5'
Ronald Oussoren25967582009-09-06 10:00:26 +00001002 fi
1003 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001004 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren25967582009-09-06 10:00:26 +00001005 # On Intel macs default to a deployment
1006 # target of 10.4, that's the first OSX
1007 # release with Intel support.
1008 cur_target="10.4"
1009 fi
1010 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001011 fi
1012 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1013
1014 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1015 # environment with a value that is the same as what we'll use
1016 # in the Makefile to ensure that we'll get the same compiler
1017 # environment during configure and build time.
1018 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1019 export MACOSX_DEPLOYMENT_TARGET
1020 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1021
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001022 if test "${enable_universalsdk}"; then
1023 UNIVERSAL_ARCH_FLAGS=""
1024 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
1025 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1026 ARCH_RUN_32BIT=""
Ronald Oussoren75912852010-04-08 08:13:31 +00001027 LIPO_32BIT_FLAGS=""
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001028
1029 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1030 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1031 LIPO_32BIT_FLAGS=""
1032 ARCH_RUN_32BIT="true"
1033
1034 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1035 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1036 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren92397ce2010-01-17 19:32:00 +00001037 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001038
1039 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1040 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1041 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren92397ce2010-01-17 19:32:00 +00001042 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001043
1044 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1045 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1046 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren9922f172010-02-11 13:19:34 +00001047 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001048
1049 else
1050 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1051
1052 fi
1053
1054
Ronald Oussoren974eb5e2010-04-18 17:59:37 +00001055 CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
1056 if test "${UNIVERSALSDK}" != "/"
1057 then
1058 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1059 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1060 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001061 fi
1062
1063 fi
1064
1065
Skip Montanarodecc6a42003-01-01 20:07:49 +00001066 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001067 OSF*)
1068 BASECFLAGS="$BASECFLAGS -mieee"
1069 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001070 esac
1071 ;;
1072
1073*)
1074 case $ac_sys_system in
1075 OpenUNIX*|UnixWare*)
1076 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1077 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001078 OSF*)
1079 BASECFLAGS="$BASECFLAGS -ieee -std"
1080 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001081 SCO_SV*)
1082 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1083 ;;
1084 esac
1085 ;;
1086esac
1087
Fred Drakee1ceaa02001-12-04 20:55:47 +00001088if test "$Py_DEBUG" = 'true'; then
1089 :
1090else
1091 OPT="-DNDEBUG $OPT"
1092fi
1093
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001094if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001095then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001096 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001097fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001098
Neal Norwitz020c46a2006-01-07 21:39:28 +00001099# disable check for icc since it seems to pass, but generates a warning
1100if test "$CC" = icc
1101then
1102 ac_cv_opt_olimit_ok=no
1103fi
1104
Guido van Rossum91922671997-10-09 20:24:13 +00001105AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1106AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1107[ac_save_cc="$CC"
1108CC="$CC -OPT:Olimit=0"
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001109AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001110 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001111 ac_cv_opt_olimit_ok=no,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001112 )
Guido van Rossum91922671997-10-09 20:24:13 +00001113CC="$ac_save_cc"])
1114AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001115if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001116 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001117 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1118 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1119 # environment?
1120 Darwin*)
1121 ;;
1122 *)
1123 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1124 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001125 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001126else
1127 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1128 AC_CACHE_VAL(ac_cv_olimit_ok,
1129 [ac_save_cc="$CC"
1130 CC="$CC -Olimit 1500"
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001131 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001132 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001133 ac_cv_olimit_ok=no,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001134 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001135 CC="$ac_save_cc"])
1136 AC_MSG_RESULT($ac_cv_olimit_ok)
1137 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001138 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001139 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001140fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001141
Martin v. Löwisaac13162006-10-19 10:58:46 +00001142# Check whether GCC supports PyArg_ParseTuple format
1143if test "$GCC" = "yes"
1144then
1145 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1146 save_CFLAGS=$CFLAGS
1147 CFLAGS="$CFLAGS -Werror"
1148 AC_TRY_COMPILE([
1149 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1150 ],,
1151 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1152 AC_MSG_RESULT(yes),
1153 AC_MSG_RESULT(no)
1154 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001155 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001156fi
1157
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001158# On some compilers, pthreads are available without further options
1159# (e.g. MacOS X). On some of these systems, the compiler will not
1160# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1161# So we have to see first whether pthreads are available without
1162# options before we can check whether -Kpthread improves anything.
1163AC_MSG_CHECKING(whether pthreads are available without options)
1164AC_CACHE_VAL(ac_cv_pthread_is_default,
1165[AC_TRY_RUN([
1166#include <pthread.h>
1167
1168void* routine(void* p){return NULL;}
1169
1170int main(){
1171 pthread_t p;
1172 if(pthread_create(&p,NULL,routine,NULL)!=0)
1173 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001174 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001175 return 0;
1176}
1177],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001178[
1179 ac_cv_pthread_is_default=yes
1180 ac_cv_kthread=no
1181 ac_cv_pthread=no
1182],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001183 ac_cv_pthread_is_default=no,
1184 ac_cv_pthread_is_default=no)
1185])
1186AC_MSG_RESULT($ac_cv_pthread_is_default)
1187
1188
1189if test $ac_cv_pthread_is_default = yes
1190then
1191 ac_cv_kpthread=no
1192else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001193# -Kpthread, if available, provides the right #defines
1194# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001195# Some compilers won't report that they do not support -Kpthread,
1196# so we need to run a program to see whether it really made the
1197# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001198AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1199AC_CACHE_VAL(ac_cv_kpthread,
1200[ac_save_cc="$CC"
1201CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001202AC_TRY_RUN([
1203#include <pthread.h>
1204
1205void* routine(void* p){return NULL;}
1206
1207int main(){
1208 pthread_t p;
1209 if(pthread_create(&p,NULL,routine,NULL)!=0)
1210 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001211 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001212 return 0;
1213}
1214],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001215 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001216 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001217 ac_cv_kpthread=no)
1218CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001219AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001220fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001221
Skip Montanarod8d39a02003-07-10 20:44:10 +00001222if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001223then
1224# -Kthread, if available, provides the right #defines
1225# and linker options to make pthread_create available
1226# Some compilers won't report that they do not support -Kthread,
1227# so we need to run a program to see whether it really made the
1228# function available.
1229AC_MSG_CHECKING(whether $CC accepts -Kthread)
1230AC_CACHE_VAL(ac_cv_kthread,
1231[ac_save_cc="$CC"
1232CC="$CC -Kthread"
1233AC_TRY_RUN([
1234#include <pthread.h>
1235
1236void* routine(void* p){return NULL;}
1237
1238int main(){
1239 pthread_t p;
1240 if(pthread_create(&p,NULL,routine,NULL)!=0)
1241 return 1;
1242 (void)pthread_detach(p);
1243 return 0;
1244}
1245],
1246 ac_cv_kthread=yes,
1247 ac_cv_kthread=no,
1248 ac_cv_kthread=no)
1249CC="$ac_save_cc"])
1250AC_MSG_RESULT($ac_cv_kthread)
1251fi
1252
Skip Montanarod8d39a02003-07-10 20:44:10 +00001253if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001254then
1255# -pthread, if available, provides the right #defines
1256# and linker options to make pthread_create available
1257# Some compilers won't report that they do not support -pthread,
1258# so we need to run a program to see whether it really made the
1259# function available.
1260AC_MSG_CHECKING(whether $CC accepts -pthread)
1261AC_CACHE_VAL(ac_cv_thread,
1262[ac_save_cc="$CC"
1263CC="$CC -pthread"
1264AC_TRY_RUN([
1265#include <pthread.h>
1266
1267void* routine(void* p){return NULL;}
1268
1269int main(){
1270 pthread_t p;
1271 if(pthread_create(&p,NULL,routine,NULL)!=0)
1272 return 1;
1273 (void)pthread_detach(p);
1274 return 0;
1275}
1276],
1277 ac_cv_pthread=yes,
1278 ac_cv_pthread=no,
1279 ac_cv_pthread=no)
1280CC="$ac_save_cc"])
1281AC_MSG_RESULT($ac_cv_pthread)
1282fi
1283
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001284# If we have set a CC compiler flag for thread support then
1285# check if it works for CXX, too.
1286ac_cv_cxx_thread=no
1287if test ! -z "$CXX"
1288then
1289AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1290ac_save_cxx="$CXX"
1291
1292if test "$ac_cv_kpthread" = "yes"
1293then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001294 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001295 ac_cv_cxx_thread=yes
1296elif test "$ac_cv_kthread" = "yes"
1297then
1298 CXX="$CXX -Kthread"
1299 ac_cv_cxx_thread=yes
1300elif test "$ac_cv_pthread" = "yes"
1301then
1302 CXX="$CXX -pthread"
1303 ac_cv_cxx_thread=yes
1304fi
1305
1306if test $ac_cv_cxx_thread = yes
1307then
1308 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1309 $CXX -c conftest.$ac_ext 2>&5
1310 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1311 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1312 then
1313 ac_cv_cxx_thread=yes
1314 else
1315 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001316 fi
1317 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001318fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001319AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001320fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001321CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001322
Fred Drakece81d592000-07-09 14:39:29 +00001323dnl # check for ANSI or K&R ("traditional") preprocessor
1324dnl AC_MSG_CHECKING(for C preprocessor type)
1325dnl AC_TRY_COMPILE([
1326dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1327dnl int foo;
1328dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1329dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1330dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001331
Guido van Rossum627b2d71993-12-24 10:39:16 +00001332# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001333AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001334AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1335fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001336ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001337shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001338unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001339sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1340sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001341sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001342sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001343sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001344sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001345bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001346AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001347AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001348
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001349# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001350AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001351#ifdef HAVE_CURSES_H
1352#include <curses.h>
1353#endif
1354])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001355
Martin v. Löwis11017b12006-01-14 18:12:57 +00001356# On Linux, netlink.h requires asm/types.h
1357AC_CHECK_HEADERS(linux/netlink.h,,,[
1358#ifdef HAVE_ASM_TYPES_H
1359#include <asm/types.h>
1360#endif
1361#ifdef HAVE_SYS_SOCKET_H
1362#include <sys/socket.h>
1363#endif
1364])
1365
Guido van Rossum627b2d71993-12-24 10:39:16 +00001366# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001367was_it_defined=no
1368AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001369AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1370 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1371])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001372AC_MSG_RESULT($was_it_defined)
1373
Neal Norwitz11690112002-07-30 01:08:28 +00001374# Check whether using makedev requires defining _OSF_SOURCE
1375AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001376AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001377 [ makedev(0, 0) ],
1378 ac_cv_has_makedev=yes,
1379 ac_cv_has_makedev=no)
1380if test "$ac_cv_has_makedev" = "no"; then
1381 # we didn't link, try if _OSF_SOURCE will allow us to link
1382 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001383#define _OSF_SOURCE 1
1384#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001385 ],
1386 [ makedev(0, 0) ],
1387 ac_cv_has_makedev=yes,
1388 ac_cv_has_makedev=no)
1389 if test "$ac_cv_has_makedev" = "yes"; then
1390 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1391 fi
1392fi
1393AC_MSG_RESULT($ac_cv_has_makedev)
1394if test "$ac_cv_has_makedev" = "yes"; then
1395 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1396fi
1397
Martin v. Löwis399a6892002-10-04 10:22:02 +00001398# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1399# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1400# defined, but the compiler does not support pragma redefine_extname,
1401# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1402# structures (such as rlimit64) without declaring them. As a
1403# work-around, disable LFS on such configurations
1404
1405use_lfs=yes
1406AC_MSG_CHECKING(Solaris LFS bug)
1407AC_TRY_COMPILE([
1408#define _LARGEFILE_SOURCE 1
1409#define _FILE_OFFSET_BITS 64
1410#include <sys/resource.h>
1411],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1412AC_MSG_RESULT($sol_lfs_bug)
1413if test "$sol_lfs_bug" = "yes"; then
1414 use_lfs=no
1415fi
1416
1417if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001418# Two defines needed to enable largefile support on various platforms
1419# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001420AC_DEFINE(_LARGEFILE_SOURCE, 1,
1421[This must be defined on some systems to enable large file support.])
1422AC_DEFINE(_FILE_OFFSET_BITS, 64,
1423[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001424fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001425
Guido van Rossum300fda71996-08-19 21:58:16 +00001426# Add some code to confdefs.h so that the test for off_t works on SCO
1427cat >> confdefs.h <<\EOF
1428#if defined(SCO_DS)
1429#undef _OFF_T
1430#endif
1431EOF
1432
Guido van Rossumef2255b2000-03-10 22:30:29 +00001433# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001434AC_TYPE_MODE_T
1435AC_TYPE_OFF_T
1436AC_TYPE_PID_T
1437AC_TYPE_SIGNAL
1438AC_TYPE_SIZE_T
1439AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001440AC_TYPE_UINT32_T
1441AC_TYPE_UINT64_T
1442AC_TYPE_INT32_T
1443AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001444AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001445 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001446
Guido van Rossumef2255b2000-03-10 22:30:29 +00001447# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001448# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001449AC_CHECK_SIZEOF(int, 4)
1450AC_CHECK_SIZEOF(long, 4)
1451AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001452AC_CHECK_SIZEOF(short, 2)
1453AC_CHECK_SIZEOF(float, 4)
1454AC_CHECK_SIZEOF(double, 8)
1455AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001456AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001457AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001458
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001459AC_MSG_CHECKING(for long long support)
1460have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001461AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1462 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1463 have_long_long=yes
1464])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001465AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001466if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001467AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001468fi
1469
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001470AC_MSG_CHECKING(for long double support)
1471have_long_double=no
1472AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1473 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1474 have_long_double=yes
1475])
1476AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001477if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001478AC_CHECK_SIZEOF(long double, 12)
1479fi
1480
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001481AC_MSG_CHECKING(for _Bool support)
1482have_c99_bool=no
1483AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1484 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1485 have_c99_bool=yes
1486])
1487AC_MSG_RESULT($have_c99_bool)
1488if test "$have_c99_bool" = yes ; then
1489AC_CHECK_SIZEOF(_Bool, 1)
1490fi
1491
Martin v. Löwisebe26702006-10-02 14:55:51 +00001492AC_CHECK_TYPES(uintptr_t,
1493 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001494 [], [#ifdef HAVE_STDINT_H
1495 #include <stdint.h>
1496 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001497
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001498AC_CHECK_SIZEOF(off_t, [], [
1499#ifdef HAVE_SYS_TYPES_H
1500#include <sys/types.h>
1501#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001502])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001503
1504AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson0ef0b912009-12-31 21:11:48 +00001505if test "$have_long_long" = yes
1506then
1507if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001508 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001509 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1510 [Defined to enable large file support when an off_t is bigger than a long
1511 and long long is available and at least as big as an off_t. You may need
1512 to add some flags for configuration and compilation to enable this mode.
1513 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001514 AC_MSG_RESULT(yes)
1515else
1516 AC_MSG_RESULT(no)
1517fi
Mark Dickinson0ef0b912009-12-31 21:11:48 +00001518else
1519 AC_MSG_RESULT(no)
1520fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001521
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001522AC_CHECK_SIZEOF(time_t, [], [
1523#ifdef HAVE_SYS_TYPES_H
1524#include <sys/types.h>
1525#endif
1526#ifdef HAVE_TIME_H
1527#include <time.h>
1528#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001529])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001530
Trent Mick635f6fb2000-08-23 21:33:05 +00001531# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001532ac_save_cc="$CC"
1533if test "$ac_cv_kpthread" = "yes"
1534then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001535elif test "$ac_cv_kthread" = "yes"
1536then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001537elif test "$ac_cv_pthread" = "yes"
1538then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001539fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001540AC_MSG_CHECKING(for pthread_t)
1541have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001542AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001543AC_MSG_RESULT($have_pthread_t)
1544if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001545 AC_CHECK_SIZEOF(pthread_t, [], [
1546#ifdef HAVE_PTHREAD_H
1547#include <pthread.h>
1548#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001549 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001550fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001551CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001552
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553AC_MSG_CHECKING(for --enable-toolbox-glue)
1554AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001555 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001556
1557if test -z "$enable_toolbox_glue"
1558then
1559 case $ac_sys_system/$ac_sys_release in
1560 Darwin/*)
1561 enable_toolbox_glue="yes";;
1562 *)
1563 enable_toolbox_glue="no";;
1564 esac
1565fi
1566case "$enable_toolbox_glue" in
1567yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001568 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001569 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001570 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1571 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001572 ;;
1573*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001574 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001575 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001576 ;;
1577esac
1578AC_MSG_RESULT($enable_toolbox_glue)
1579
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001580
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001581AC_SUBST(OTHER_LIBTOOL_OPT)
1582case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001583 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001584 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1585 ;;
1586 Darwin/*)
1587 OTHER_LIBTOOL_OPT=""
1588 ;;
1589esac
1590
Ronald Oussoren25967582009-09-06 10:00:26 +00001591
1592ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001593AC_SUBST(LIBTOOL_CRUFT)
1594case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001595 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001596 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1597 if test "${enable_universalsdk}"; then
1598 :
1599 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001600 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001601 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001602 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001603 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001604 Darwin/*)
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001605 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001606 if test ${gcc_version} '<' 4.0
1607 then
1608 LIBTOOL_CRUFT="-lcc_dynamic"
1609 else
1610 LIBTOOL_CRUFT=""
1611 fi
Ronald Oussoren23d92532009-09-07 06:12:00 +00001612 AC_TRY_RUN([
Ronald Oussoren25967582009-09-06 10:00:26 +00001613 #include <unistd.h>
1614 int main(int argc, char*argv[])
1615 {
1616 if (sizeof(long) == 4) {
1617 return 0;
1618 } else {
1619 return 1;
1620 }
Ronald Oussoren84ddd722009-09-08 07:17:10 +00001621 }
Ronald Oussoren23d92532009-09-07 06:12:00 +00001622 ], ac_osx_32bit=yes,
Ronald Oussoren25967582009-09-06 10:00:26 +00001623 ac_osx_32bit=no,
Ronald Oussoren23d92532009-09-07 06:12:00 +00001624 ac_osx_32bit=yes)
Ronald Oussoren25967582009-09-06 10:00:26 +00001625
1626 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001627 case `/usr/bin/arch` in
Ronald Oussoren25967582009-09-06 10:00:26 +00001628 i386)
1629 MACOSX_DEFAULT_ARCH="i386"
1630 ;;
1631 ppc)
1632 MACOSX_DEFAULT_ARCH="ppc"
1633 ;;
1634 *)
1635 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1636 ;;
1637 esac
1638 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001639 case `/usr/bin/arch` in
Ronald Oussoren25967582009-09-06 10:00:26 +00001640 i386)
1641 MACOSX_DEFAULT_ARCH="x86_64"
1642 ;;
1643 ppc)
1644 MACOSX_DEFAULT_ARCH="ppc64"
1645 ;;
1646 *)
1647 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1648 ;;
1649 esac
1650
1651 #ARCH_RUN_32BIT="true"
1652 fi
1653
1654 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001655 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001656 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001657esac
1658
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001659AC_MSG_CHECKING(for --enable-framework)
1660if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001661then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001662 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001663 # -F. is needed to allow linking to the framework while
1664 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001665 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1666 [Define if you want to produce an OpenStep/Rhapsody framework
1667 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001668 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001669 if test $enable_shared = "yes"
1670 then
Ronald Oussoren9ebd2422009-09-29 13:00:44 +00001671 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussoren450d5612009-06-08 21:12:41 +00001672 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001673else
1674 AC_MSG_RESULT(no)
1675fi
1676
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001677AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001678case $ac_sys_system/$ac_sys_release in
1679 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001680 AC_DEFINE(WITH_DYLD, 1,
1681 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1682 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1683 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001684 AC_MSG_RESULT(always on for Darwin)
1685 ;;
1686 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001687 AC_MSG_RESULT(no)
1688 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001689esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001690
Guido van Rossumac405f61994-09-12 10:56:06 +00001691# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001692AC_SUBST(SO)
1693AC_SUBST(LDSHARED)
Tarek Ziadé00002952010-04-03 08:37:59 +00001694AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001695AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001696AC_SUBST(CCSHARED)
1697AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001698# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001699# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001700AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001701if test -z "$SO"
1702then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001703 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001704 hp*|HP*)
1705 case `uname -m` in
1706 ia64) SO=.so;;
1707 *) SO=.sl;;
1708 esac
1709 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001710 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001711 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001712 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001713else
1714 # this might also be a termcap variable, see #610332
1715 echo
1716 echo '====================================================================='
1717 echo '+ +'
1718 echo '+ WARNING: You have set SO in your environment. +'
1719 echo '+ Do you really mean to change the extension for shared libraries? +'
1720 echo '+ Continuing in 10 seconds to let you to ponder. +'
1721 echo '+ +'
1722 echo '====================================================================='
1723 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001724fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001725AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001726
Neal Norwitz58e28882006-05-19 07:00:58 +00001727AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001728# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001729# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001730# (Shared libraries in this instance are shared modules to be loaded into
1731# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001732AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001733if test -z "$LDSHARED"
1734then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001735 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001736 AIX*)
1737 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001738 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001739 ;;
1740 BeOS*)
1741 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001742 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001743 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001744 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001745 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001746 SunOS/5*)
Tarek Ziadé00002952010-04-03 08:37:59 +00001747 if test "$GCC" = "yes" ; then
1748 LDSHARED='$(CC) -shared'
1749 LDCXXSHARED='$(CXX) -shared'
1750 else
1751 LDSHARED='$(CC) -G'
1752 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a662000-05-26 12:22:54 +00001753 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001754 hp*|HP*)
Tarek Ziadé00002952010-04-03 08:37:59 +00001755 if test "$GCC" = "yes" ; then
1756 LDSHARED='$(CC) -shared'
1757 LDCXXSHARED='$(CXX) -shared'
1758 else
1759 LDSHARED='ld -b'
Thomas Hellerdc96a772008-04-04 10:07:55 +00001760 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001761 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001762 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001763 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé00002952010-04-03 08:37:59 +00001764 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001765 if test "$enable_framework" ; then
1766 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001767 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1768 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00001769 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001770 else
1771 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001772 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé00002952010-04-03 08:37:59 +00001773 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001774 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001775 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001776 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé00002952010-04-03 08:37:59 +00001777 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001778 if test "$enable_framework" ; then
1779 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001780 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1781 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00001782 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001783 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001784 # No framework, use the Python app as bundle-loader
1785 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001786 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé00002952010-04-03 08:37:59 +00001787 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001788 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001789 Darwin/*)
1790 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1791 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001792
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001793 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001794 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001795 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001796 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001797 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001798 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Tarek Ziadé00002952010-04-03 08:37:59 +00001799 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001800 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001801 else
1802 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé00002952010-04-03 08:37:59 +00001803 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001804 if test "$enable_framework" ; then
1805 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001806 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1807 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00001808 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001809 else
1810 # No framework, use the Python app as bundle-loader
1811 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1812 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé00002952010-04-03 08:37:59 +00001813 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001814 fi
1815 fi
1816 ;;
Tarek Ziadé00002952010-04-03 08:37:59 +00001817 Linux*|GNU*|QNX*)
1818 LDSHARED='$(CC) -shared'
1819 LDCXXSHARED='$(CXX) -shared';;
1820 BSD/OS*/4*)
1821 LDSHARED="gcc -shared"
1822 LDCXXSHARED="g++ -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001823 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001824 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001825 then
Benjamin Peterson3b2abe92010-03-14 15:06:14 +00001826 LDSHARED='$(CC) -shared ${LDFLAGS}'
Tarek Ziadé00002952010-04-03 08:37:59 +00001827 LDCXXSHARED='$(CXX) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001828 else
1829 LDSHARED="ld -Bshareable ${LDFLAGS}"
1830 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001831 OpenBSD*)
1832 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1833 then
1834 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé00002952010-04-03 08:37:59 +00001835 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Martin v. Löwis222c5152006-06-03 07:37:13 +00001836 else
1837 case `uname -r` in
1838 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1839 LDSHARED="ld -Bshareable ${LDFLAGS}"
1840 ;;
1841 *)
1842 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé00002952010-04-03 08:37:59 +00001843 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Martin v. Löwis222c5152006-06-03 07:37:13 +00001844 ;;
1845 esac
1846 fi;;
Tarek Ziadé00002952010-04-03 08:37:59 +00001847 NetBSD*|DragonFly*)
1848 LDSHARED="cc -shared ${LDFLAGS}"
1849 LDCXXSHARED="c++ -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001850 OpenUNIX*|UnixWare*)
Tarek Ziadé00002952010-04-03 08:37:59 +00001851 if test "$GCC" = "yes" ; then
1852 LDSHARED='$(CC) -shared'
1853 LDCXXSHARED='$(CXX) -shared'
1854 else
1855 LDSHARED='$(CC) -G'
1856 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001857 fi;;
Tarek Ziadé00002952010-04-03 08:37:59 +00001858 SCO_SV*)
1859 LDSHARED='$(CC) -Wl,-G,-Bexport'
1860 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1861 CYGWIN*)
1862 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1863 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
1864 atheos*)
1865 LDSHARED="gcc -shared"
1866 LDCXXSHARED="g++ -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001867 *) LDSHARED="ld";;
1868 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001869fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001870AC_MSG_RESULT($LDSHARED)
Tarek Ziadé00002952010-04-03 08:37:59 +00001871LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001872BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001873# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001874# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001875AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001876if test -z "$CCSHARED"
1877then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001878 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001879 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001880 then CCSHARED="-fPIC";
1881 elif test `uname -p` = sparc;
1882 then CCSHARED="-xcode=pic32";
1883 else CCSHARED="-Kpic";
1884 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001885 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001886 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001887 else CCSHARED="+z";
1888 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001889 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001890 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001891 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001892 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001893 if test "$GCC" = "yes"
1894 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001895 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001896 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001897 SCO_SV*)
1898 if test "$GCC" = "yes"
1899 then CCSHARED="-fPIC"
1900 else CCSHARED="-Kpic -belf"
1901 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001902 IRIX*/6*) case $CC in
1903 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001904 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001905 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001906 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001907 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001908fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001909AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001910# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001911# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001912AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001913if test -z "$LINKFORSHARED"
1914then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001915 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001916 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001917 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001918 LINKFORSHARED="-Wl,-E -Wl,+s";;
1919# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001920 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001921 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001922 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001923 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001924 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1925 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001926 # not used by the core itself but which needs to be in the core so
1927 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001928 # -prebind is no longer used, because it actually seems to give a
1929 # slowdown in stead of a speedup, maybe due to the large number of
1930 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001931
1932 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001933 if test "$enable_framework"
1934 then
Jack Jansenda49e192005-01-07 13:08:22 +00001935 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001936 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001937 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001938 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001939 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001940 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001941 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001942 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1943 then
1944 LINKFORSHARED="-Wl,--export-dynamic"
1945 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001946 SunOS/5*) case $CC in
1947 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001948 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001949 then
1950 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001951 fi;;
1952 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001953 CYGWIN*)
1954 if test $enable_shared = "no"
1955 then
1956 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1957 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001958 QNX*)
1959 # -Wl,-E causes the symbols to be added to the dynamic
1960 # symbol table so that they can be found when a module
1961 # is loaded. -N 2048K causes the stack size to be set
1962 # to 2048 kilobytes so that the stack doesn't overflow
1963 # when running test_compile.py.
1964 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001965 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001966fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001967AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001968
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001969
Neil Schemenauer61c51152001-01-26 16:18:16 +00001970AC_SUBST(CFLAGSFORSHARED)
1971AC_MSG_CHECKING(CFLAGSFORSHARED)
1972if test ! "$LIBRARY" = "$LDLIBRARY"
1973then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001974 case $ac_sys_system in
1975 CYGWIN*)
1976 # Cygwin needs CCSHARED when building extension DLLs
1977 # but not when building the interpreter DLL.
1978 CFLAGSFORSHARED='';;
1979 *)
1980 CFLAGSFORSHARED='$(CCSHARED)'
1981 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001982fi
1983AC_MSG_RESULT($CFLAGSFORSHARED)
1984
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001985# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1986# library (with --enable-shared).
1987# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001988# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1989# if it is not required, since it creates a dependency of the shared library
1990# to LIBS. This, in turn, means that applications linking the shared libpython
1991# don't need to link LIBS explicitly. The default should be only changed
1992# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001993AC_SUBST(SHLIBS)
1994AC_MSG_CHECKING(SHLIBS)
1995case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001996 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001997 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001998esac
1999AC_MSG_RESULT($SHLIBS)
2000
2001
Guido van Rossum627b2d71993-12-24 10:39:16 +00002002# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002003AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2004AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002005
Skip Montanaro4d756af2008-12-01 01:55:22 +00002006# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002007if test "$with_threads" = "yes" -o -z "$with_threads"; then
2008 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2009 # posix4 on Solaris 2.6
2010 # pthread (first!) on Linux
2011fi
2012
Martin v. Löwis19d17342003-06-14 21:03:05 +00002013# check if we need libintl for locale functions
2014AC_CHECK_LIB(intl, textdomain,
2015 AC_DEFINE(WITH_LIBINTL, 1,
2016 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002017
2018# checks for system dependent C++ extensions support
2019case "$ac_sys_system" in
2020 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
2021 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
2022 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002023 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
2024 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2025 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002026 AC_MSG_RESULT(yes)],
2027 [AC_MSG_RESULT(no)]);;
2028 *) ;;
2029esac
2030
Guido van Rossum70c7f481998-03-26 18:44:10 +00002031# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002032# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002033AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002034AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002035
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002036case "$ac_sys_system" in
2037BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002038AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2039;;
2040esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002041
Guido van Rossumc5a39031996-07-31 17:35:03 +00002042AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002043AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002044 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2045[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002046AC_MSG_RESULT($withval)
2047LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002048],
2049[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002050
Benjamin Petersone9e07bf2010-03-09 21:46:54 +00002051AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
2052
Benjamin Peterson2c196742009-12-31 03:17:18 +00002053# Check for use of the system expat library
2054AC_MSG_CHECKING(for --with-system-expat)
2055AC_ARG_WITH(system_expat,
2056 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
2057
2058AC_MSG_RESULT($with_system_expat)
2059
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002060# Check for use of the system libffi library
2061AC_MSG_CHECKING(for --with-system-ffi)
2062AC_ARG_WITH(system_ffi,
2063 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2064
Benjamin Petersone9e07bf2010-03-09 21:46:54 +00002065if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Peterson1c335e62010-01-01 15:16:29 +00002066 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2067else
2068 LIBFFI_INCLUDEDIR=""
2069fi
2070AC_SUBST(LIBFFI_INCLUDEDIR)
2071
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002072AC_MSG_RESULT($with_system_ffi)
2073
Matthias Klose10cbe482009-04-29 17:18:19 +00002074# Check for --with-dbmliborder
2075AC_MSG_CHECKING(for --with-dbmliborder)
2076AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00002077 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'.]),
Matthias Klose10cbe482009-04-29 17:18:19 +00002078[
2079if test x$with_dbmliborder = xyes
2080then
2081AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2082else
2083 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2084 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2085 then
2086 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2087 fi
2088 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00002089fi])
2090AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00002091
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002092# Determine if signalmodule should be used.
2093AC_SUBST(USE_SIGNAL_MODULE)
2094AC_SUBST(SIGNAL_OBJS)
2095AC_MSG_CHECKING(for --with-signal-module)
2096AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002097 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002098
2099if test -z "$with_signal_module"
2100then with_signal_module="yes"
2101fi
2102AC_MSG_RESULT($with_signal_module)
2103
2104if test "${with_signal_module}" = "yes"; then
2105 USE_SIGNAL_MODULE=""
2106 SIGNAL_OBJS=""
2107else
2108 USE_SIGNAL_MODULE="#"
2109 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2110fi
2111
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002112# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002113AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002114USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002115
Guido van Rossum54d93d41997-01-22 20:51:58 +00002116AC_MSG_CHECKING(for --with-dec-threads)
2117AC_SUBST(LDLAST)
2118AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002119 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2120[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002121AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002122LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002123if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002124 with_thread="$withval";
2125fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002126[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002127
Martin v. Löwis11437992002-04-12 09:54:03 +00002128# Templates for things AC_DEFINEd more than once.
2129# For a single AC_DEFINE, no template is needed.
2130AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2131AH_TEMPLATE(_REENTRANT,
2132 [Define to force use of thread-safe errno, h_errno, and other functions])
2133AH_TEMPLATE(WITH_THREAD,
2134 [Define if you want to compile in rudimentary thread support])
2135
Guido van Rossum54d93d41997-01-22 20:51:58 +00002136AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002137dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002138AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002139 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002140
Barry Warsawc0d24d82000-06-29 16:12:00 +00002141# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002142dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002143AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002144 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2145 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002146
2147if test -z "$with_threads"
2148then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002149fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002150AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002151
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002152AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002153if test "$with_threads" = "no"
2154then
2155 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002156elif test "$ac_cv_pthread_is_default" = yes
2157then
2158 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002159 # Defining _REENTRANT on system with POSIX threads should not hurt.
2160 AC_DEFINE(_REENTRANT)
2161 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002162 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002163elif test "$ac_cv_kpthread" = "yes"
2164then
2165 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002166 if test "$ac_cv_cxx_thread" = "yes"; then
2167 CXX="$CXX -Kpthread"
2168 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002169 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002170 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002171 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002172elif test "$ac_cv_kthread" = "yes"
2173then
2174 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002175 if test "$ac_cv_cxx_thread" = "yes"; then
2176 CXX="$CXX -Kthread"
2177 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002178 AC_DEFINE(WITH_THREAD)
2179 posix_threads=yes
2180 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002181elif test "$ac_cv_pthread" = "yes"
2182then
2183 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002184 if test "$ac_cv_cxx_thread" = "yes"; then
2185 CXX="$CXX -pthread"
2186 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002187 AC_DEFINE(WITH_THREAD)
2188 posix_threads=yes
2189 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002190else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002191 if test ! -z "$with_threads" -a -d "$with_threads"
2192 then LDFLAGS="$LDFLAGS -L$with_threads"
2193 fi
2194 if test ! -z "$withval" -a -d "$withval"
2195 then LDFLAGS="$LDFLAGS -L$withval"
2196 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002197
2198 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002199 # define _POSIX_THREADS in unistd.h. Some apparently don't
2200 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002201 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2202 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002203 [
2204#include <unistd.h>
2205#ifdef _POSIX_THREADS
2206yes
2207#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002208 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2209 AC_MSG_RESULT($unistd_defines_pthreads)
2210
Martin v. Löwis130fb172001-07-19 11:00:41 +00002211 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002212 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2213 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002214 AC_DEFINE(HURD_C_THREADS, 1,
2215 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002216 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002217 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002218 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2219 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002220 AC_DEFINE(MACH_C_THREADS, 1,
2221 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002222 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002223 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002224 AC_ARG_WITH([pth],
2225 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2226 [AC_MSG_RESULT($withval)
2227 AC_DEFINE([WITH_THREAD])
2228 AC_DEFINE([HAVE_PTH], 1,
2229 [Define if you have GNU PTH threads.])
2230 LIBS="-lpth $LIBS"
2231 THREADOBJ="Python/thread.o"],
2232 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002233
2234 # Just looking for pthread_create in libpthread is not enough:
2235 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2236 # So we really have to include pthread.h, and then link.
2237 _libs=$LIBS
2238 LIBS="$LIBS -lpthread"
2239 AC_MSG_CHECKING([for pthread_create in -lpthread])
2240 AC_TRY_LINK([#include <pthread.h>
2241
2242void * start_routine (void *arg) { exit (0); }], [
2243pthread_create (NULL, NULL, start_routine, NULL)], [
2244 AC_MSG_RESULT(yes)
2245 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002246 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002247 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002248 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002249 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002250 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002251 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002252 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2253 AC_DEFINE(ATHEOS_THREADS, 1,
2254 [Define this if you have AtheOS threads.])
2255 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002256 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002257 AC_DEFINE(BEOS_THREADS, 1,
2258 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002259 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002260 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002261 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002262 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002263 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002264 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002265 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002266 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002267 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002268 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002269 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002270 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002271 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002272 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002273 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002274 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002275 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002276 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002277 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002278
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002279 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2280 LIBS="$LIBS -lmpc"
2281 THREADOBJ="Python/thread.o"
2282 USE_THREAD_MODULE=""])
2283
2284 if test "$posix_threads" != "yes"; then
2285 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2286 LIBS="$LIBS -lthread"
2287 THREADOBJ="Python/thread.o"
2288 USE_THREAD_MODULE=""])
2289 fi
2290
2291 if test "$USE_THREAD_MODULE" != "#"
2292 then
2293 # If the above checks didn't disable threads, (at least) OSF1
2294 # needs this '-threads' argument during linking.
2295 case $ac_sys_system in
2296 OSF1) LDLAST=-threads;;
2297 esac
2298 fi
2299fi
2300
2301if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002302 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002303 AC_DEFINE(_POSIX_THREADS, 1,
2304 [Define if you have POSIX threads,
2305 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002306 fi
2307
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002308 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2309 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002310 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2311 Defined for Solaris 2.6 bug in pthread header.)
2312 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002313 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002314 Define if the Posix semaphores do not work on your system)
2315 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002316 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2317 Define if the Posix semaphores do not work on your system)
2318 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002319 esac
2320
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002321 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2322 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2323 [AC_TRY_RUN([#include <pthread.h>
2324 void *foo(void *parm) {
2325 return NULL;
2326 }
2327 main() {
2328 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002329 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002330 if (pthread_attr_init(&attr)) exit(-1);
2331 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002332 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002333 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002334 }],
2335 ac_cv_pthread_system_supported=yes,
2336 ac_cv_pthread_system_supported=no,
2337 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002338 ])
2339 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2340 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002341 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002342 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002343 AC_CHECK_FUNCS(pthread_sigmask,
2344 [case $ac_sys_system in
2345 CYGWIN*)
2346 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2347 [Define if pthread_sigmask() does not work on your system.])
2348 ;;
2349 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002350fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002351
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002352
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002353# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002354AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002355AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002356AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002357[ --enable-ipv6 Enable ipv6 (with ipv4) support
2358 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002359[ case "$enableval" in
2360 no)
2361 AC_MSG_RESULT(no)
2362 ipv6=no
2363 ;;
2364 *) AC_MSG_RESULT(yes)
2365 AC_DEFINE(ENABLE_IPV6)
2366 ipv6=yes
2367 ;;
2368 esac ],
2369
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002370[
2371dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002372 AC_TRY_RUN([ /* AF_INET6 available check */
2373#include <sys/types.h>
2374#include <sys/socket.h>
2375main()
2376{
2377 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2378 exit(1);
2379 else
2380 exit(0);
2381}
2382],
2383 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384 ipv6=yes,
2385 AC_MSG_RESULT(no)
2386 ipv6=no,
2387 AC_MSG_RESULT(no)
2388 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002389)
2390
2391if test "$ipv6" = "yes"; then
2392 AC_MSG_CHECKING(if RFC2553 API is available)
2393 AC_TRY_COMPILE([#include <sys/types.h>
2394#include <netinet/in.h>],
2395 [struct sockaddr_in6 x;
2396x.sin6_scope_id;],
2397 AC_MSG_RESULT(yes)
2398 ipv6=yes,
2399 AC_MSG_RESULT(no, IPv6 disabled)
2400 ipv6=no)
2401fi
2402
2403if test "$ipv6" = "yes"; then
2404 AC_DEFINE(ENABLE_IPV6)
2405fi
2406])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002407
2408ipv6type=unknown
2409ipv6lib=none
2410ipv6trylibc=no
2411
2412if test "$ipv6" = "yes"; then
2413 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002414 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2415 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002416 case $i in
2417 inria)
2418 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002419 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002420#include <netinet/in.h>
2421#ifdef IPV6_INRIA_VERSION
2422yes
2423#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002424 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002425 ;;
2426 kame)
2427 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002428 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002429#include <netinet/in.h>
2430#ifdef __KAME__
2431yes
2432#endif],
2433 [ipv6type=$i;
2434 ipv6lib=inet6
2435 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002436 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002437 ;;
2438 linux-glibc)
2439 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002440 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002441#include <features.h>
2442#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2443yes
2444#endif],
2445 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002446 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002447 ;;
2448 linux-inet6)
2449 dnl http://www.v6.linux.or.jp/
2450 if test -d /usr/inet6; then
2451 ipv6type=$i
2452 ipv6lib=inet6
2453 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002454 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002455 fi
2456 ;;
2457 solaris)
2458 if test -f /etc/netconfig; then
2459 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2460 ipv6type=$i
2461 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002462 fi
2463 fi
2464 ;;
2465 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002466 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002467#include <sys/param.h>
2468#ifdef _TOSHIBA_INET6
2469yes
2470#endif],
2471 [ipv6type=$i;
2472 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002473 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002474 ;;
2475 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002476 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002477#include </usr/local/v6/include/sys/v6config.h>
2478#ifdef __V6D__
2479yes
2480#endif],
2481 [ipv6type=$i;
2482 ipv6lib=v6;
2483 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002484 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002485 ;;
2486 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002487 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002488#include <sys/param.h>
2489#ifdef _ZETA_MINAMI_INET6
2490yes
2491#endif],
2492 [ipv6type=$i;
2493 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002494 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002495 ;;
2496 esac
2497 if test "$ipv6type" != "unknown"; then
2498 break
2499 fi
2500 done
2501 AC_MSG_RESULT($ipv6type)
2502fi
2503
2504if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2505 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2506 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2507 echo "using lib$ipv6lib"
2508 else
2509 if test $ipv6trylibc = "yes"; then
2510 echo "using libc"
2511 else
2512 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2513 echo "You need to fetch lib$ipv6lib.a from appropriate"
2514 echo 'ipv6 kit and compile beforehand.'
2515 exit 1
2516 fi
2517 fi
2518fi
2519
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002520AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2521AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2522 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2523 AC_MSG_RESULT(yes),
2524 AC_MSG_RESULT(no)
2525)
2526
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002527# Check for --with-doc-strings
2528AC_MSG_CHECKING(for --with-doc-strings)
2529AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002530 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002531
2532if test -z "$with_doc_strings"
2533then with_doc_strings="yes"
2534fi
2535if test "$with_doc_strings" != "no"
2536then
2537 AC_DEFINE(WITH_DOC_STRINGS, 1,
2538 [Define if you want documentation strings in extension modules])
2539fi
2540AC_MSG_RESULT($with_doc_strings)
2541
Neil Schemenauera35c6882001-02-27 04:45:05 +00002542# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002543AC_MSG_CHECKING(for --with-tsc)
2544AC_ARG_WITH(tsc,
2545[ --with(out)-tsc enable/disable timestamp counter profile], [
2546if test "$withval" != no
2547then
2548 AC_DEFINE(WITH_TSC, 1,
2549 [Define to profile with the Pentium timestamp counter])
2550 AC_MSG_RESULT(yes)
2551else AC_MSG_RESULT(no)
2552fi],
2553[AC_MSG_RESULT(no)])
2554
2555# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002556AC_MSG_CHECKING(for --with-pymalloc)
2557AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002558 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002559
2560if test -z "$with_pymalloc"
2561then with_pymalloc="yes"
2562fi
2563if test "$with_pymalloc" != "no"
2564then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002565 AC_DEFINE(WITH_PYMALLOC, 1,
2566 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002567fi
2568AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002569
Benjamin Peterson91c12eb2009-12-03 02:52:39 +00002570# Check for Valgrind support
2571AC_MSG_CHECKING([for --with-valgrind])
2572AC_ARG_WITH([valgrind],
2573 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2574 with_valgrind=no)
2575AC_MSG_RESULT([$with_valgrind])
2576if test "$with_valgrind" != no; then
2577 AC_CHECK_HEADER([valgrind/valgrind.h],
2578 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2579 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2580 )
2581fi
2582
Barry Warsawef82cd72000-06-30 16:21:01 +00002583# Check for --with-wctype-functions
2584AC_MSG_CHECKING(for --with-wctype-functions)
2585AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002586 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2587[
Barry Warsawef82cd72000-06-30 16:21:01 +00002588if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002589then
2590 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2591 [Define if you want wctype.h functions to be used instead of the
2592 one supplied by Python itself. (see Include/unicodectype.h).])
2593 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002594else AC_MSG_RESULT(no)
2595fi],
2596[AC_MSG_RESULT(no)])
2597
Guido van Rossum68242b51996-05-28 22:53:03 +00002598# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002599AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002600DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002601
Guido van Rossume97ee181999-12-20 21:27:22 +00002602# the dlopen() function means we might want to use dynload_shlib.o. some
2603# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002604AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002605
2606# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2607# loading of modules.
2608AC_SUBST(DYNLOADFILE)
2609AC_MSG_CHECKING(DYNLOADFILE)
2610if test -z "$DYNLOADFILE"
2611then
2612 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002613 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2614 if test "$ac_cv_func_dlopen" = yes
2615 then DYNLOADFILE="dynload_shlib.o"
2616 else DYNLOADFILE="dynload_aix.o"
2617 fi
2618 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002619 BeOS*) DYNLOADFILE="dynload_beos.o";;
2620 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002621 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2622 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002623 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002624 *)
2625 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2626 # out any dynamic loading
2627 if test "$ac_cv_func_dlopen" = yes
2628 then DYNLOADFILE="dynload_shlib.o"
2629 else DYNLOADFILE="dynload_stub.o"
2630 fi
2631 ;;
2632 esac
2633fi
2634AC_MSG_RESULT($DYNLOADFILE)
2635if test "$DYNLOADFILE" != "dynload_stub.o"
2636then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002637 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2638 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002639fi
2640
Jack Jansenc49e5b72001-06-19 15:00:23 +00002641# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2642
2643AC_SUBST(MACHDEP_OBJS)
2644AC_MSG_CHECKING(MACHDEP_OBJS)
2645if test -z "$MACHDEP_OBJS"
2646then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002647 MACHDEP_OBJS=$extra_machdep_objs
2648else
2649 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002650fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002651AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002652
Guido van Rossum627b2d71993-12-24 10:39:16 +00002653# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002654AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2655 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002656 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00002657 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitrou30b3b352009-12-02 20:37:54 +00002658 initgroups kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002659 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002660 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002661 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2662 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002663 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00002664 setlocale setregid setreuid setresuid setresgid \
2665 setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002666 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002667 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002668 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002669
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002670# For some functions, having a definition is not sufficient, since
2671# we want to take their address.
2672AC_MSG_CHECKING(for chroot)
2673AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2674 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2675 AC_MSG_RESULT(yes),
2676 AC_MSG_RESULT(no)
2677)
2678AC_MSG_CHECKING(for link)
2679AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2680 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2681 AC_MSG_RESULT(yes),
2682 AC_MSG_RESULT(no)
2683)
2684AC_MSG_CHECKING(for symlink)
2685AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2686 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2687 AC_MSG_RESULT(yes),
2688 AC_MSG_RESULT(no)
2689)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002690AC_MSG_CHECKING(for fchdir)
2691AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2692 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2693 AC_MSG_RESULT(yes),
2694 AC_MSG_RESULT(no)
2695)
2696AC_MSG_CHECKING(for fsync)
2697AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002698 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002699 AC_MSG_RESULT(yes),
2700 AC_MSG_RESULT(no)
2701)
2702AC_MSG_CHECKING(for fdatasync)
2703AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2704 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2705 AC_MSG_RESULT(yes),
2706 AC_MSG_RESULT(no)
2707)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002708AC_MSG_CHECKING(for epoll)
2709AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2710 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2711 AC_MSG_RESULT(yes),
2712 AC_MSG_RESULT(no)
2713)
2714AC_MSG_CHECKING(for kqueue)
2715AC_TRY_COMPILE([
2716#include <sys/types.h>
2717#include <sys/event.h>
2718 ], int x=kqueue(),
2719 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2720 AC_MSG_RESULT(yes),
2721 AC_MSG_RESULT(no)
2722)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002723# On some systems (eg. FreeBSD 5), we would find a definition of the
2724# functions ctermid_r, setgroups in the library, but no prototype
2725# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2726# address to avoid compiler warnings and potential miscompilations
2727# because of the missing prototypes.
2728
2729AC_MSG_CHECKING(for ctermid_r)
2730AC_TRY_COMPILE([
2731#include "confdefs.h"
2732#include <stdio.h>
2733], void* p = ctermid_r,
2734 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2735 AC_MSG_RESULT(yes),
2736 AC_MSG_RESULT(no)
2737)
2738
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002739AC_MSG_CHECKING(for flock)
2740AC_TRY_COMPILE([
2741#include "confdefs.h"
2742#include <sys/file.h>
2743], void* p = flock,
2744 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2745 AC_MSG_RESULT(yes),
2746 AC_MSG_RESULT(no)
2747)
2748
2749AC_MSG_CHECKING(for getpagesize)
2750AC_TRY_COMPILE([
2751#include "confdefs.h"
2752#include <unistd.h>
2753], void* p = getpagesize,
2754 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2755 AC_MSG_RESULT(yes),
2756 AC_MSG_RESULT(no)
2757)
2758
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002759dnl check for true
2760AC_CHECK_PROGS(TRUE, true, /bin/true)
2761
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002762dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2763dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002764AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002765 AC_CHECK_LIB(resolv, inet_aton)
2766)
2767
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002768# On Tru64, chflags seems to be present, but calling it will
2769# exit Python
Gregory P. Smithbb213892009-11-02 01:37:37 +00002770AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002771AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002772#include <sys/stat.h>
2773#include <unistd.h>
2774int main(int argc, char*argv[])
2775{
2776 if(chflags(argv[0], 0) != 0)
2777 return 1;
2778 return 0;
2779}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002780]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002781 ac_cv_have_chflags=no,
Gregory P. Smithbb213892009-11-02 01:37:37 +00002782 ac_cv_have_chflags=cross)
2783])
2784if test "$ac_cv_have_chflags" = cross ; then
2785 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2786fi
2787if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002788 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2789fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002790
Gregory P. Smithbb213892009-11-02 01:37:37 +00002791AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002792AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002793#include <sys/stat.h>
2794#include <unistd.h>
2795int main(int argc, char*argv[])
2796{
2797 if(lchflags(argv[0], 0) != 0)
2798 return 1;
2799 return 0;
2800}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002801]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002802 ac_cv_have_lchflags=no,
Gregory P. Smithbb213892009-11-02 01:37:37 +00002803 ac_cv_have_lchflags=cross)
2804])
2805if test "$ac_cv_have_lchflags" = cross ; then
2806 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2807fi
2808if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002809 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2810fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002811
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002812dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002813dnl
2814dnl On MacOSX the linker will search for dylibs on the entire linker path
2815dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2816dnl to revert to a more traditional unix behaviour and make it possible to
2817dnl override the system libz with a local static library of libz. Temporarily
2818dnl add that flag to our CFLAGS as well to ensure that we check the version
2819dnl of libz that will be used by setup.py.
2820dnl The -L/usr/local/lib is needed as wel to get the same compilation
2821dnl environment as setup.py (and leaving it out can cause configure to use the
2822dnl wrong version of the library)
2823case $ac_sys_system/$ac_sys_release in
2824Darwin/*)
2825 _CUR_CFLAGS="${CFLAGS}"
2826 _CUR_LDFLAGS="${LDFLAGS}"
2827 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2828 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2829 ;;
2830esac
2831
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002832AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2833
Ronald Oussorenf8752642006-07-06 10:13:35 +00002834case $ac_sys_system/$ac_sys_release in
2835Darwin/*)
2836 CFLAGS="${_CUR_CFLAGS}"
2837 LDFLAGS="${_CUR_LDFLAGS}"
2838 ;;
2839esac
2840
Martin v. Löwise9416172003-05-03 10:12:45 +00002841AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002842AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002843#include "confdefs.h"
2844#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002845], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002846 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2847 AC_MSG_RESULT(yes),
2848 AC_MSG_RESULT(no)
2849)
2850
2851AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002852AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002853#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002854#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002855#include <sys/socket.h>
2856#include <netinet/in.h>
2857#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002858], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002859 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2860 AC_MSG_RESULT(yes),
2861 AC_MSG_RESULT(no)
2862)
2863
2864AC_MSG_CHECKING(for inet_pton)
2865AC_TRY_COMPILE([
2866#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002867#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002868#include <sys/socket.h>
2869#include <netinet/in.h>
2870#include <arpa/inet.h>
2871], void* p = inet_pton,
2872 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2873 AC_MSG_RESULT(yes),
2874 AC_MSG_RESULT(no)
2875)
2876
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002877# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002878AC_MSG_CHECKING(for setgroups)
2879AC_TRY_COMPILE([
2880#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002881#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002882#ifdef HAVE_GRP_H
2883#include <grp.h>
2884#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002885],
2886void* p = setgroups,
2887 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2888 AC_MSG_RESULT(yes),
2889 AC_MSG_RESULT(no)
2890)
2891
Fred Drake8cef4cf2000-06-28 16:40:38 +00002892# check for openpty and forkpty
2893
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002894AC_CHECK_FUNCS(openpty,,
2895 AC_CHECK_LIB(util,openpty,
2896 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2897 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2898 )
2899)
2900AC_CHECK_FUNCS(forkpty,,
2901 AC_CHECK_LIB(util,forkpty,
2902 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2903 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2904 )
2905)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002906
Brett Cannonaa5778d2008-03-18 04:09:00 +00002907# Stuff for expat.
2908AC_CHECK_FUNCS(memmove)
2909
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002910# check for long file support functions
2911AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2912
Brett Cannonaa5778d2008-03-18 04:09:00 +00002913AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002914AC_CHECK_FUNCS(getpgrp,
2915 AC_TRY_COMPILE([#include <unistd.h>],
2916 [getpgrp(0);],
2917 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2918 [Define if getpgrp() must be called as getpgrp(0).])
2919 )
2920)
Jack Jansen150753c2003-03-29 22:07:47 +00002921AC_CHECK_FUNCS(setpgrp,
2922 AC_TRY_COMPILE([#include <unistd.h>],
2923 [setpgrp(0,0);],
2924 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2925 [Define if setpgrp() must be called as setpgrp(0, 0).])
2926 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002927)
2928AC_CHECK_FUNCS(gettimeofday,
2929 AC_TRY_COMPILE([#include <sys/time.h>],
2930 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2931 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2932 [Define if gettimeofday() does not have second (timezone) argument
2933 This is the case on Motorola V4 (R40V4.2)])
2934 )
2935)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002936
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002937AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002938AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002939#if defined(MAJOR_IN_MKDEV)
2940#include <sys/mkdev.h>
2941#elif defined(MAJOR_IN_SYSMACROS)
2942#include <sys/sysmacros.h>
2943#else
2944#include <sys/types.h>
2945#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002946],[
2947 makedev(major(0),minor(0));
2948],[
2949 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2950 [Define to 1 if you have the device macros.])
2951 AC_MSG_RESULT(yes)
2952],[
2953 AC_MSG_RESULT(no)
2954])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002955
2956# On OSF/1 V5.1, getaddrinfo is available, but a define
2957# for [no]getaddrinfo in netdb.h.
2958AC_MSG_CHECKING(for getaddrinfo)
2959AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002960#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002961#include <sys/socket.h>
2962#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002963#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002964], [getaddrinfo(NULL, NULL, NULL, NULL);],
2965have_getaddrinfo=yes,
2966have_getaddrinfo=no)
2967AC_MSG_RESULT($have_getaddrinfo)
2968if test $have_getaddrinfo = yes
2969then
2970 AC_MSG_CHECKING(getaddrinfo bug)
2971 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2972 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002973#include <sys/types.h>
2974#include <netdb.h>
2975#include <string.h>
2976#include <sys/socket.h>
2977#include <netinet/in.h>
2978
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002979int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980{
2981 int passive, gaierr, inet4 = 0, inet6 = 0;
2982 struct addrinfo hints, *ai, *aitop;
2983 char straddr[INET6_ADDRSTRLEN], strport[16];
2984
2985 for (passive = 0; passive <= 1; passive++) {
2986 memset(&hints, 0, sizeof(hints));
2987 hints.ai_family = AF_UNSPEC;
2988 hints.ai_flags = passive ? AI_PASSIVE : 0;
2989 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002990 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002991 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2992 (void)gai_strerror(gaierr);
2993 goto bad;
2994 }
2995 for (ai = aitop; ai; ai = ai->ai_next) {
2996 if (ai->ai_addr == NULL ||
2997 ai->ai_addrlen == 0 ||
2998 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2999 straddr, sizeof(straddr), strport, sizeof(strport),
3000 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3001 goto bad;
3002 }
3003 switch (ai->ai_family) {
3004 case AF_INET:
3005 if (strcmp(strport, "54321") != 0) {
3006 goto bad;
3007 }
3008 if (passive) {
3009 if (strcmp(straddr, "0.0.0.0") != 0) {
3010 goto bad;
3011 }
3012 } else {
3013 if (strcmp(straddr, "127.0.0.1") != 0) {
3014 goto bad;
3015 }
3016 }
3017 inet4++;
3018 break;
3019 case AF_INET6:
3020 if (strcmp(strport, "54321") != 0) {
3021 goto bad;
3022 }
3023 if (passive) {
3024 if (strcmp(straddr, "::") != 0) {
3025 goto bad;
3026 }
3027 } else {
3028 if (strcmp(straddr, "::1") != 0) {
3029 goto bad;
3030 }
3031 }
3032 inet6++;
3033 break;
3034 case AF_UNSPEC:
3035 goto bad;
3036 break;
3037 default:
3038 /* another family support? */
3039 break;
3040 }
3041 }
3042 }
3043
3044 if (!(inet4 == 0 || inet4 == 2))
3045 goto bad;
3046 if (!(inet6 == 0 || inet6 == 2))
3047 goto bad;
3048
3049 if (aitop)
3050 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003051 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003052
3053 bad:
3054 if (aitop)
3055 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003056 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003057}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003058]], ac_cv_buggy_getaddrinfo=no,
3059 ac_cv_buggy_getaddrinfo=yes,
3060 ac_cv_buggy_getaddrinfo=yes))
3061fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003062
Mark Dickinson0ef0b912009-12-31 21:11:48 +00003063if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003064then
3065 if test $ipv6 = yes
3066 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003067 echo 'Fatal: You must get working getaddrinfo() function.'
3068 echo ' or you can specify "--disable-ipv6"'.
3069 exit 1
3070 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003071else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003072 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003073fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003074AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003075
Guido van Rossum627b2d71993-12-24 10:39:16 +00003076# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003077AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003078AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003079AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003080AC_CHECK_MEMBERS([struct stat.st_rdev])
3081AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003082AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003083AC_CHECK_MEMBERS([struct stat.st_gen])
3084AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003085AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003086
3087AC_MSG_CHECKING(for time.h that defines altzone)
3088AC_CACHE_VAL(ac_cv_header_time_altzone,
3089[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3090 ac_cv_header_time_altzone=yes,
3091 ac_cv_header_time_altzone=no)])
3092AC_MSG_RESULT($ac_cv_header_time_altzone)
3093if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003094 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003095fi
3096
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003097was_it_defined=no
3098AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003099AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003100#include <sys/types.h>
3101#include <sys/select.h>
3102#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003103], [;], [
3104 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3105 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3106 (which you can't on SCO ODT 3.0).])
3107 was_it_defined=yes
3108])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003109AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003110
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003111AC_MSG_CHECKING(for addrinfo)
3112AC_CACHE_VAL(ac_cv_struct_addrinfo,
3113AC_TRY_COMPILE([
3114# include <netdb.h>],
3115 [struct addrinfo a],
3116 ac_cv_struct_addrinfo=yes,
3117 ac_cv_struct_addrinfo=no))
3118AC_MSG_RESULT($ac_cv_struct_addrinfo)
3119if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003120 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003121fi
3122
3123AC_MSG_CHECKING(for sockaddr_storage)
3124AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3125AC_TRY_COMPILE([
3126# include <sys/types.h>
3127# include <sys/socket.h>],
3128 [struct sockaddr_storage s],
3129 ac_cv_struct_sockaddr_storage=yes,
3130 ac_cv_struct_sockaddr_storage=no))
3131AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3132if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003133 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003134fi
3135
Guido van Rossum627b2d71993-12-24 10:39:16 +00003136# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003137
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003138AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003139AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003140
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003141works=no
3142AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003143AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3144 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3145)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003146AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003147
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003148works=no
3149AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003150AC_TRY_COMPILE([], [signed char c;], works=yes,
3151 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3152)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003153AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003154
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003155have_prototypes=no
3156AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003157AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3158 AC_DEFINE(HAVE_PROTOTYPES, 1,
3159 [Define if your compiler supports function prototype])
3160 have_prototypes=yes
3161])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003162AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003163
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003164works=no
3165AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003166AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003167#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003168int foo(int x, ...) {
3169 va_list va;
3170 va_start(va, x);
3171 va_arg(va, int);
3172 va_arg(va, char *);
3173 va_arg(va, double);
3174 return 0;
3175}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003176], [return foo(10, "", 3.14);], [
3177 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3178 [Define if your compiler supports variable length function prototypes
3179 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3180 works=yes
3181])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003182AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003183
Dave Cole331708b2004-08-09 04:51:41 +00003184# check for socketpair
3185AC_MSG_CHECKING(for socketpair)
3186AC_TRY_COMPILE([
3187#include <sys/types.h>
3188#include <sys/socket.h>
3189], void *x=socketpair,
3190 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3191 AC_MSG_RESULT(yes),
3192 AC_MSG_RESULT(no)
3193)
3194
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003195# check if sockaddr has sa_len member
3196AC_MSG_CHECKING(if sockaddr has sa_len member)
3197AC_TRY_COMPILE([#include <sys/types.h>
3198#include <sys/socket.h>],
3199[struct sockaddr x;
3200x.sa_len = 0;],
3201 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003202 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003203 AC_MSG_RESULT(no))
3204
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003205va_list_is_array=no
3206AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003207AC_TRY_COMPILE([
3208#ifdef HAVE_STDARG_PROTOTYPES
3209#include <stdarg.h>
3210#else
3211#include <varargs.h>
3212#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003213], [va_list list1, list2; list1 = list2;], , [
3214 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3215 va_list_is_array=yes
3216])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003217AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003218
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003219# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003220AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3221 [Define this if you have some version of gethostbyname_r()])
3222
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003223AC_CHECK_FUNC(gethostbyname_r, [
3224 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3225 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3226 OLD_CFLAGS=$CFLAGS
3227 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3228 AC_TRY_COMPILE([
3229# include <netdb.h>
3230 ], [
3231 char *name;
3232 struct hostent *he, *res;
3233 char buffer[2048];
3234 int buflen = 2048;
3235 int h_errnop;
3236
3237 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3238 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003239 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003240 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3241 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003242 AC_MSG_RESULT(yes)
3243 ], [
3244 AC_MSG_RESULT(no)
3245 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3246 AC_TRY_COMPILE([
3247# include <netdb.h>
3248 ], [
3249 char *name;
3250 struct hostent *he;
3251 char buffer[2048];
3252 int buflen = 2048;
3253 int h_errnop;
3254
3255 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3256 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003257 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003258 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3259 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003260 AC_MSG_RESULT(yes)
3261 ], [
3262 AC_MSG_RESULT(no)
3263 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3264 AC_TRY_COMPILE([
3265# include <netdb.h>
3266 ], [
3267 char *name;
3268 struct hostent *he;
3269 struct hostent_data data;
3270
3271 (void) gethostbyname_r(name, he, &data);
3272 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003273 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003274 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3275 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003276 AC_MSG_RESULT(yes)
3277 ], [
3278 AC_MSG_RESULT(no)
3279 ])
3280 ])
3281 ])
3282 CFLAGS=$OLD_CFLAGS
3283], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003284 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003285])
3286AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3287AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3288AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003289AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003290AC_SUBST(HAVE_GETHOSTBYNAME)
3291
Guido van Rossum627b2d71993-12-24 10:39:16 +00003292# checks for system services
3293# (none yet)
3294
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003295# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003296AC_CHECK_FUNC(__fpu_control,
3297 [],
3298 [AC_CHECK_LIB(ieee, __fpu_control)
3299])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003300
Guido van Rossum93274221997-05-09 02:42:00 +00003301# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003302AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003303AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003304 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3305[
Guido van Rossum93274221997-05-09 02:42:00 +00003306if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003307then
3308 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3309 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3310 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003311else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003312fi],
3313[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003314
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003315# check for --with-libm=...
3316AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003317case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003318Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003319BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003320*) LIBM=-lm
3321esac
Guido van Rossum93274221997-05-09 02:42:00 +00003322AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003323AC_ARG_WITH(libm,
3324 AC_HELP_STRING(--with-libm=STRING, math library),
3325[
Guido van Rossum93274221997-05-09 02:42:00 +00003326if test "$withval" = no
3327then LIBM=
3328 AC_MSG_RESULT(force LIBM empty)
3329elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003330then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003331 AC_MSG_RESULT(set LIBM="$withval")
3332else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003333fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003334[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003335
3336# check for --with-libc=...
3337AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003338AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003339AC_ARG_WITH(libc,
3340 AC_HELP_STRING(--with-libc=STRING, C library),
3341[
Guido van Rossum93274221997-05-09 02:42:00 +00003342if test "$withval" = no
3343then LIBC=
3344 AC_MSG_RESULT(force LIBC empty)
3345elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003346then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003347 AC_MSG_RESULT(set LIBC="$withval")
3348else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003349fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003350[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003351
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003352# **************************************************
3353# * Check for various properties of floating point *
3354# **************************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003355
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003356AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3357AC_CACHE_VAL(ac_cv_little_endian_double, [
3358AC_TRY_RUN([
3359#include <string.h>
3360int main() {
3361 double x = 9006104071832581.0;
3362 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3363 return 0;
3364 else
3365 return 1;
3366}
3367],
3368ac_cv_little_endian_double=yes,
3369ac_cv_little_endian_double=no,
3370ac_cv_little_endian_double=no)])
3371AC_MSG_RESULT($ac_cv_little_endian_double)
3372if test "$ac_cv_little_endian_double" = yes
3373then
3374 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3375 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3376 with the least significant byte first])
3377fi
3378
3379AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3380AC_CACHE_VAL(ac_cv_big_endian_double, [
3381AC_TRY_RUN([
3382#include <string.h>
3383int main() {
3384 double x = 9006104071832581.0;
3385 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3386 return 0;
3387 else
3388 return 1;
3389}
3390],
3391ac_cv_big_endian_double=yes,
3392ac_cv_big_endian_double=no,
3393ac_cv_big_endian_double=no)])
3394AC_MSG_RESULT($ac_cv_big_endian_double)
3395if test "$ac_cv_big_endian_double" = yes
3396then
3397 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3398 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3399 with the most significant byte first])
3400fi
3401
3402# Some ARM platforms use a mixed-endian representation for doubles.
3403# While Python doesn't currently have full support for these platforms
3404# (see e.g., issue 1762561), we can at least make sure that float <-> string
3405# conversions work.
3406AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3407AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3408AC_TRY_RUN([
3409#include <string.h>
3410int main() {
3411 double x = 9006104071832581.0;
3412 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3413 return 0;
3414 else
3415 return 1;
3416}
3417],
3418ac_cv_mixed_endian_double=yes,
3419ac_cv_mixed_endian_double=no,
3420ac_cv_mixed_endian_double=no)])
3421AC_MSG_RESULT($ac_cv_mixed_endian_double)
3422if test "$ac_cv_mixed_endian_double" = yes
3423then
3424 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3425 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3426 in ARM mixed-endian order (byte order 45670123)])
3427fi
3428
3429# The short float repr introduced in Python 3.1 requires the
3430# correctly-rounded string <-> double conversion functions from
3431# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3432# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsona548dee2009-11-15 13:12:43 +00003433# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003434# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsona548dee2009-11-15 13:12:43 +00003435
3436# This inline assembler syntax may also work for suncc and icc,
3437# so we try it on all platforms.
3438
3439AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3440AC_TRY_COMPILE([], [
3441 unsigned short cw;
3442 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3443 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3444],
3445[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3446AC_MSG_RESULT($have_gcc_asm_for_x87)
3447if test "$have_gcc_asm_for_x87" = yes
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003448then
Mark Dickinsona548dee2009-11-15 13:12:43 +00003449 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3450 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003451fi
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003452
Mark Dickinson04b27232009-01-04 12:29:36 +00003453# Detect whether system arithmetic is subject to x87-style double
3454# rounding issues. The result of this test has little meaning on non
3455# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3456# mode is round-to-nearest and double rounding issues are present, and
3457# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3458AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinson99abd142009-10-24 13:44:16 +00003459# $BASECFLAGS may affect the result
3460ac_save_cc="$CC"
3461CC="$CC $BASECFLAGS"
Mark Dickinson04b27232009-01-04 12:29:36 +00003462AC_TRY_RUN([
3463#include <stdlib.h>
3464#include <math.h>
3465int main() {
3466 volatile double x, y, z;
3467 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3468 x = 0.99999999999999989; /* 1-2**-53 */
3469 y = 1./x;
3470 if (y != 1.)
3471 exit(0);
3472 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3473 x = 1e16;
3474 y = 2.99999;
3475 z = x + y;
3476 if (z != 1e16+4.)
3477 exit(0);
3478 /* both tests show evidence of double rounding */
3479 exit(1);
3480}
3481],
3482ac_cv_x87_double_rounding=no,
3483ac_cv_x87_double_rounding=yes,
Mark Dickinson99abd142009-10-24 13:44:16 +00003484ac_cv_x87_double_rounding=no)
3485CC="$ac_save_cc"
Mark Dickinson04b27232009-01-04 12:29:36 +00003486AC_MSG_RESULT($ac_cv_x87_double_rounding)
3487if test "$ac_cv_x87_double_rounding" = yes
3488then
3489 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3490 [Define if arithmetic is subject to x87-style double rounding issue])
3491fi
3492
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003493# ************************************
3494# * Check for mathematical functions *
3495# ************************************
3496
3497LIBS_SAVE=$LIBS
3498LIBS="$LIBS $LIBM"
3499
Mark Dickinsonc63392c2009-11-28 13:13:13 +00003500# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3501# -0. on some architectures.
3502AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3503AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3504AC_TRY_RUN([
3505#include <math.h>
3506#include <stdlib.h>
3507int main() {
3508 /* return 0 if either negative zeros don't exist
3509 on this platform or if negative zeros exist
3510 and tanh(-0.) == -0. */
3511 if (atan2(0., -1.) == atan2(-0., -1.) ||
3512 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3513 else exit(1);
3514}
3515],
3516ac_cv_tanh_preserves_zero_sign=yes,
3517ac_cv_tanh_preserves_zero_sign=no,
3518ac_cv_tanh_preserves_zero_sign=no)])
3519AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3520if test "$ac_cv_tanh_preserves_zero_sign" = yes
3521then
3522 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3523 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3524fi
3525
3526AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3527AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
3528AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3529
3530LIBS=$LIBS_SAVE
3531
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003532# For multiprocessing module, check that sem_open
3533# actually works. For FreeBSD versions <= 7.2,
3534# the kernel module that provides POSIX semaphores
3535# isn't loaded by default, so an attempt to call
3536# sem_open results in a 'Signal 12' error.
3537AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3538AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3539AC_TRY_RUN([
3540#include <unistd.h>
3541#include <fcntl.h>
3542#include <stdio.h>
3543#include <semaphore.h>
3544#include <sys/stat.h>
3545
3546int main(void) {
3547 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3548 if (a == SEM_FAILED) {
3549 perror("sem_open");
3550 return 1;
3551 }
3552 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003553 sem_unlink("/autoconf");
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003554 return 0;
3555}
3556], ac_cv_posix_semaphores_enabled=yes,
3557 ac_cv_posix_semaphores_enabled=no,
3558 ac_cv_posix_semaphores_enabled=yes)
3559)
3560AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3561if test $ac_cv_posix_semaphores_enabled = no
3562then
Mark Dickinson5afa6d42009-11-28 10:44:20 +00003563 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3564 [Define if POSIX semaphores aren't enabled on your system])
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003565fi
3566
Jesse Noller355b1262009-04-02 00:03:28 +00003567# Multiprocessing check for broken sem_getvalue
3568AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003569AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003570AC_TRY_RUN([
3571#include <unistd.h>
3572#include <fcntl.h>
3573#include <stdio.h>
3574#include <semaphore.h>
3575#include <sys/stat.h>
3576
3577int main(void){
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003578 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Jesse Noller355b1262009-04-02 00:03:28 +00003579 int count;
3580 int res;
3581 if(a==SEM_FAILED){
3582 perror("sem_open");
3583 return 1;
3584
3585 }
3586 res = sem_getvalue(a, &count);
3587 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003588 sem_unlink("/autocftw");
Jesse Noller355b1262009-04-02 00:03:28 +00003589 return res==-1 ? 1 : 0;
3590}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003591], ac_cv_broken_sem_getvalue=no,
3592 ac_cv_broken_sem_getvalue=yes,
3593 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003594)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003595AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3596if test $ac_cv_broken_sem_getvalue = yes
3597then
3598 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3599 [define to 1 if your sem_getvalue is broken.])
3600fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003601
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003602# determine what size digit to use for Python's longs
3603AC_MSG_CHECKING([digit size for Python's longs])
3604AC_ARG_ENABLE(big-digits,
3605AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3606[case $enable_big_digits in
3607yes)
3608 enable_big_digits=30 ;;
3609no)
3610 enable_big_digits=15 ;;
3611[15|30])
3612 ;;
3613*)
3614 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3615esac
3616AC_MSG_RESULT($enable_big_digits)
3617AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3618],
3619[AC_MSG_RESULT(no value specified)])
3620
Guido van Rossumef2255b2000-03-10 22:30:29 +00003621# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003622AC_CHECK_HEADER(wchar.h, [
3623 AC_DEFINE(HAVE_WCHAR_H, 1,
3624 [Define if the compiler provides a wchar.h header file.])
3625 wchar_h="yes"
3626],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003627wchar_h="no"
3628)
3629
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003630# determine wchar_t size
3631if test "$wchar_h" = yes
3632then
Guido van Rossum67b26592001-10-20 14:21:45 +00003633 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003634fi
3635
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003636AC_MSG_CHECKING(for UCS-4 tcl)
3637have_ucs4_tcl=no
3638AC_TRY_COMPILE([
3639#include <tcl.h>
3640#if TCL_UTF_MAX != 6
3641# error "NOT UCS4_TCL"
3642#endif], [], [
3643 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3644 have_ucs4_tcl=yes
3645])
3646AC_MSG_RESULT($have_ucs4_tcl)
3647
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003648# check whether wchar_t is signed or not
3649if test "$wchar_h" = yes
3650then
3651 # check whether wchar_t is signed or not
3652 AC_MSG_CHECKING(whether wchar_t is signed)
3653 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3654 AC_TRY_RUN([
3655 #include <wchar.h>
3656 int main()
3657 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003658 /* Success: exit code 0 */
3659 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003660 }
3661 ],
3662 ac_cv_wchar_t_signed=yes,
3663 ac_cv_wchar_t_signed=no,
3664 ac_cv_wchar_t_signed=yes)])
3665 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3666fi
3667
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003668AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003669dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003670AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003671 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3672 [],
3673 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003674
3675if test $enable_unicode = yes
3676then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003677 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003678 case "$have_ucs4_tcl" in
3679 yes) enable_unicode="ucs4"
3680 ;;
3681 *) enable_unicode="ucs2"
3682 ;;
3683 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003684fi
3685
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003686AH_TEMPLATE(Py_UNICODE_SIZE,
3687 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003688case "$enable_unicode" in
3689ucs2) unicode_size="2"
3690 AC_DEFINE(Py_UNICODE_SIZE,2)
3691 ;;
3692ucs4) unicode_size="4"
3693 AC_DEFINE(Py_UNICODE_SIZE,4)
3694 ;;
Ezio Melotti5820efb2010-02-27 00:05:42 +00003695*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003696esac
3697
Martin v. Löwis11437992002-04-12 09:54:03 +00003698AH_TEMPLATE(PY_UNICODE_TYPE,
3699 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003700
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003701AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003702if test "$enable_unicode" = "no"
3703then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003704 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003705 AC_MSG_RESULT(not used)
3706else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003707 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003708 AC_DEFINE(Py_USING_UNICODE, 1,
3709 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003710
3711 # wchar_t is only usable if it maps to an unsigned type
3712 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003713 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003714 then
3715 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003716 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3717 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003718 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003719 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003720 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3721 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3722 then
3723 PY_UNICODE_TYPE="unsigned short"
3724 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3725 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3726 then
3727 PY_UNICODE_TYPE="unsigned long"
3728 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3729 else
3730 PY_UNICODE_TYPE="no type found"
3731 fi
3732 AC_MSG_RESULT($PY_UNICODE_TYPE)
3733fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003734
3735# check for endianness
3736AC_C_BIGENDIAN
3737
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003738# Check whether right shifting a negative integer extends the sign bit
3739# or fills with zeros (like the Cray J90, according to Tim Peters).
3740AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003741AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003742AC_TRY_RUN([
3743int main()
3744{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003745 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003746}
Guido van Rossum3065c942001-09-17 04:03:14 +00003747],
3748ac_cv_rshift_extends_sign=yes,
3749ac_cv_rshift_extends_sign=no,
3750ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003751AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3752if test "$ac_cv_rshift_extends_sign" = no
3753then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003754 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3755 [Define if i>>j for signed int i does not extend the sign bit
3756 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003757fi
3758
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003759# check for getc_unlocked and related locking functions
3760AC_MSG_CHECKING(for getc_unlocked() and friends)
3761AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3762AC_TRY_LINK([#include <stdio.h>],[
3763 FILE *f = fopen("/dev/null", "r");
3764 flockfile(f);
3765 getc_unlocked(f);
3766 funlockfile(f);
3767], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3768AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3769if test "$ac_cv_have_getc_unlocked" = yes
3770then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003771 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3772 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003773fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003774
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003775# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003776# save the value of LIBS so we don't actually link Python with readline
3777LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003778
3779# On some systems we need to link readline to a termcap compatible
3780# library. NOTE: Keep the precedence of listed libraries synchronised
3781# with setup.py.
3782py_cv_lib_readline=no
3783AC_MSG_CHECKING([how to link readline libs])
3784for py_libtermcap in "" ncursesw ncurses curses termcap; do
3785 if test -z "$py_libtermcap"; then
3786 READLINE_LIBS="-lreadline"
3787 else
3788 READLINE_LIBS="-lreadline -l$py_libtermcap"
3789 fi
3790 LIBS="$READLINE_LIBS $LIBS_no_readline"
3791 AC_LINK_IFELSE(
3792 [AC_LANG_CALL([],[readline])],
3793 [py_cv_lib_readline=yes])
3794 if test $py_cv_lib_readline = yes; then
3795 break
3796 fi
3797done
3798# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3799#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003800if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003801 AC_MSG_RESULT([none])
3802else
3803 AC_MSG_RESULT([$READLINE_LIBS])
3804 AC_DEFINE(HAVE_LIBREADLINE, 1,
3805 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003806fi
3807
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003808# check for readline 2.1
3809AC_CHECK_LIB(readline, rl_callback_handler_install,
3810 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003811 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003812
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003813# check for readline 2.2
3814AC_TRY_CPP([#include <readline/readline.h>],
3815have_readline=yes, have_readline=no)
3816if test $have_readline = yes
3817then
3818 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3819 [readline/readline.h],
3820 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3821 [Define if you have readline 2.2]), )
Antoine Pitroud9ff74e2009-10-26 19:16:46 +00003822 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3823 [readline/readline.h],
3824 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3825 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003826fi
3827
Martin v. Löwis0daad592001-09-30 21:09:59 +00003828# check for readline 4.0
3829AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003830 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003831 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003832
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003833# also in 4.0
3834AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3835 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003836 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003837
Guido van Rossum353ae582001-07-10 16:45:32 +00003838# check for readline 4.2
3839AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003840 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003841 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003842
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003843# also in readline 4.2
3844AC_TRY_CPP([#include <readline/readline.h>],
3845have_readline=yes, have_readline=no)
3846if test $have_readline = yes
3847then
3848 AC_EGREP_HEADER([extern int rl_catch_signals;],
3849 [readline/readline.h],
3850 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3851 [Define if you can turn off readline's signal handling.]), )
3852fi
3853
Martin v. Löwis82bca632006-02-10 20:49:30 +00003854# End of readline checks: restore LIBS
3855LIBS=$LIBS_no_readline
3856
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003857AC_MSG_CHECKING(for broken nice())
3858AC_CACHE_VAL(ac_cv_broken_nice, [
3859AC_TRY_RUN([
3860int main()
3861{
3862 int val1 = nice(1);
3863 if (val1 != -1 && val1 == nice(2))
3864 exit(0);
3865 exit(1);
3866}
Guido van Rossum3065c942001-09-17 04:03:14 +00003867],
3868ac_cv_broken_nice=yes,
3869ac_cv_broken_nice=no,
3870ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003871AC_MSG_RESULT($ac_cv_broken_nice)
3872if test "$ac_cv_broken_nice" = yes
3873then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003874 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3875 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003876fi
3877
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003878AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003879AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003880AC_TRY_RUN([
3881#include <poll.h>
3882
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003883int main()
3884{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003885 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003886 int poll_test;
3887
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003888 close (42);
3889
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003890 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003891 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003892 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003893 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003894 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003895 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003896 return 1;
3897}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003898],
3899ac_cv_broken_poll=yes,
3900ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003901ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003902AC_MSG_RESULT($ac_cv_broken_poll)
3903if test "$ac_cv_broken_poll" = yes
3904then
3905 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3906 [Define if poll() sets errno on invalid file descriptors.])
3907fi
3908
Brett Cannon43802422005-02-10 20:48:03 +00003909# Before we can test tzset, we need to check if struct tm has a tm_zone
3910# (which is not required by ISO C or UNIX spec) and/or if we support
3911# tzname[]
3912AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003913
Brett Cannon43802422005-02-10 20:48:03 +00003914# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003915AC_MSG_CHECKING(for working tzset())
3916AC_CACHE_VAL(ac_cv_working_tzset, [
3917AC_TRY_RUN([
3918#include <stdlib.h>
3919#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003920#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003921
3922#if HAVE_TZNAME
3923extern char *tzname[];
3924#endif
3925
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003926int main()
3927{
Brett Cannon18367812003-09-19 00:59:16 +00003928 /* Note that we need to ensure that not only does tzset(3)
3929 do 'something' with localtime, but it works as documented
3930 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003931 This includes making sure that tzname is set properly if
3932 tm->tm_zone does not exist since it is the alternative way
3933 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003934
3935 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003936 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003937 */
3938
Brett Cannon43802422005-02-10 20:48:03 +00003939 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003940 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3941
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003942 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003943 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003944 if (localtime(&groundhogday)->tm_hour != 0)
3945 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003946#if HAVE_TZNAME
3947 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3948 if (strcmp(tzname[0], "UTC") ||
3949 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3950 exit(1);
3951#endif
Brett Cannon18367812003-09-19 00:59:16 +00003952
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003953 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003954 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003955 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003956 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003957#if HAVE_TZNAME
3958 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3959 exit(1);
3960#endif
Brett Cannon18367812003-09-19 00:59:16 +00003961
3962 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3963 tzset();
3964 if (localtime(&groundhogday)->tm_hour != 11)
3965 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003966#if HAVE_TZNAME
3967 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3968 exit(1);
3969#endif
3970
3971#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003972 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3973 exit(1);
3974 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3975 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003976#endif
Brett Cannon18367812003-09-19 00:59:16 +00003977
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003978 exit(0);
3979}
3980],
3981ac_cv_working_tzset=yes,
3982ac_cv_working_tzset=no,
3983ac_cv_working_tzset=no)])
3984AC_MSG_RESULT($ac_cv_working_tzset)
3985if test "$ac_cv_working_tzset" = yes
3986then
3987 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3988 [Define if tzset() actually switches the local timezone in a meaningful way.])
3989fi
3990
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003991# Look for subsecond timestamps in struct stat
3992AC_MSG_CHECKING(for tv_nsec in struct stat)
3993AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3994AC_TRY_COMPILE([#include <sys/stat.h>], [
3995struct stat st;
3996st.st_mtim.tv_nsec = 1;
3997],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003998ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003999ac_cv_stat_tv_nsec=no,
4000ac_cv_stat_tv_nsec=no))
4001AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4002if test "$ac_cv_stat_tv_nsec" = yes
4003then
4004 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4005 [Define if you have struct stat.st_mtim.tv_nsec])
4006fi
4007
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004008# Look for BSD style subsecond timestamps in struct stat
4009AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4010AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
4011AC_TRY_COMPILE([#include <sys/stat.h>], [
4012struct stat st;
4013st.st_mtimespec.tv_nsec = 1;
4014],
4015ac_cv_stat_tv_nsec2=yes,
4016ac_cv_stat_tv_nsec2=no,
4017ac_cv_stat_tv_nsec2=no))
4018AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4019if test "$ac_cv_stat_tv_nsec2" = yes
4020then
4021 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4022 [Define if you have struct stat.st_mtimensec])
4023fi
4024
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004025# On HP/UX 11.0, mvwdelch is a block with a return statement
4026AC_MSG_CHECKING(whether mvwdelch is an expression)
4027AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
4028AC_TRY_COMPILE([#include <curses.h>], [
4029 int rtn;
4030 rtn = mvwdelch(0,0,0);
4031], ac_cv_mvwdelch_is_expression=yes,
4032 ac_cv_mvwdelch_is_expression=no,
4033 ac_cv_mvwdelch_is_expression=yes))
4034AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4035
4036if test "$ac_cv_mvwdelch_is_expression" = yes
4037then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004038 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4039 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004040fi
4041
4042AC_MSG_CHECKING(whether WINDOW has _flags)
4043AC_CACHE_VAL(ac_cv_window_has_flags,
4044AC_TRY_COMPILE([#include <curses.h>], [
4045 WINDOW *w;
4046 w->_flags = 0;
4047], ac_cv_window_has_flags=yes,
4048 ac_cv_window_has_flags=no,
4049 ac_cv_window_has_flags=no))
4050AC_MSG_RESULT($ac_cv_window_has_flags)
4051
4052
4053if test "$ac_cv_window_has_flags" = yes
4054then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004055 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4056 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004057fi
4058
Walter Dörwald4994d952006-06-19 08:07:50 +00004059AC_MSG_CHECKING(for is_term_resized)
4060AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
4061 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4062 AC_MSG_RESULT(yes),
4063 AC_MSG_RESULT(no)
4064)
4065
Walter Dörwald05fdbf12006-06-19 08:14:09 +00004066AC_MSG_CHECKING(for resize_term)
4067AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
4068 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00004069 AC_MSG_RESULT(yes),
4070 AC_MSG_RESULT(no)
4071)
4072
Walter Dörwald05fdbf12006-06-19 08:14:09 +00004073AC_MSG_CHECKING(for resizeterm)
4074AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
4075 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00004076 AC_MSG_RESULT(yes),
4077 AC_MSG_RESULT(no)
4078)
4079
Martin v. Löwisfefbc202006-10-17 18:59:23 +00004080AC_MSG_CHECKING(for /dev/ptmx)
4081
4082if test -r /dev/ptmx
4083then
4084 AC_MSG_RESULT(yes)
4085 AC_DEFINE(HAVE_DEV_PTMX, 1,
4086 [Define if we have /dev/ptmx.])
4087else
4088 AC_MSG_RESULT(no)
4089fi
4090
4091AC_MSG_CHECKING(for /dev/ptc)
4092
4093if test -r /dev/ptc
4094then
4095 AC_MSG_RESULT(yes)
4096 AC_DEFINE(HAVE_DEV_PTC, 1,
4097 [Define if we have /dev/ptc.])
4098else
4099 AC_MSG_RESULT(no)
4100fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004101
Mark Dickinson82864d12009-11-15 16:18:58 +00004102if test "$have_long_long" = yes
4103then
4104 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4105 AC_CACHE_VAL(ac_cv_have_long_long_format,
4106 AC_TRY_RUN([[
4107 #include <stdio.h>
4108 #include <stddef.h>
4109 #include <string.h>
4110
4111 #ifdef HAVE_SYS_TYPES_H
4112 #include <sys/types.h>
4113 #endif
4114
4115 int main()
4116 {
4117 char buffer[256];
4118
4119 if (sprintf(buffer, "%lld", (long long)123) < 0)
4120 return 1;
4121 if (strcmp(buffer, "123"))
4122 return 1;
4123
4124 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4125 return 1;
4126 if (strcmp(buffer, "-123"))
4127 return 1;
4128
4129 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4130 return 1;
4131 if (strcmp(buffer, "123"))
4132 return 1;
4133
4134 return 0;
4135 }
4136 ]], ac_cv_have_long_long_format=yes,
4137 ac_cv_have_long_long_format=no,
4138 ac_cv_have_long_long_format=no)
4139 )
4140 AC_MSG_RESULT($ac_cv_have_long_long_format)
4141fi
4142
Mark Dickinson5ce84742009-12-31 20:48:04 +00004143if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson82864d12009-11-15 16:18:58 +00004144then
4145 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4146 [Define to printf format modifier for long long type])
4147fi
4148
Ronald Oussoren315cd0c2009-11-19 16:25:21 +00004149if test $ac_sys_system = Darwin
4150then
4151 LIBS="$LIBS -framework CoreFoundation"
4152fi
4153
Mark Dickinson82864d12009-11-15 16:18:58 +00004154
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004155AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
4156AC_TRY_RUN([
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00004157#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00004158#include <stddef.h>
4159#include <string.h>
4160
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004161#ifdef HAVE_SYS_TYPES_H
4162#include <sys/types.h>
4163#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004164
4165#ifdef HAVE_SSIZE_T
4166typedef ssize_t Py_ssize_t;
4167#elif SIZEOF_VOID_P == SIZEOF_LONG
4168typedef long Py_ssize_t;
4169#else
4170typedef int Py_ssize_t;
4171#endif
Brett Cannon09d12362006-05-11 05:11:33 +00004172
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004173int main()
4174{
4175 char buffer[256];
4176
Brett Cannon09d12362006-05-11 05:11:33 +00004177 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4178 return 1;
4179
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004180 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00004181 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004182
4183 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4184 return 1;
4185
4186 if (strcmp(buffer, "-123"))
4187 return 1;
4188
Brett Cannon09d12362006-05-11 05:11:33 +00004189 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004190}
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004191], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00004192 ac_cv_have_size_t_format=no,
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004193 [ac_cv_have_size_t_format="cross -- assuming yes"]
4194)])
4195if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004196 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4197 [Define to printf format modifier for Py_ssize_t])
4198fi
Brett Cannon09d12362006-05-11 05:11:33 +00004199
Martin v. Löwis01c04012002-11-11 14:58:44 +00004200AC_CHECK_TYPE(socklen_t,,
4201 AC_DEFINE(socklen_t,int,
4202 Define to `int' if <sys/socket.h> does not define.),[
4203#ifdef HAVE_SYS_TYPES_H
4204#include <sys/types.h>
4205#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004206#ifdef HAVE_SYS_SOCKET_H
4207#include <sys/socket.h>
4208#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004209])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004210
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004211AC_SUBST(THREADHEADERS)
4212
4213for h in `(cd $srcdir;echo Python/thread_*.h)`
4214do
4215 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4216done
4217
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004218AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004219SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004220AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004221for dir in $SRCDIRS; do
4222 if test ! -d $dir; then
4223 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004224 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004225done
4226AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004227
Guido van Rossum627b2d71993-12-24 10:39:16 +00004228# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00004229AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004230AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004231
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004232echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004233if test ! -f Modules/Setup
4234then
4235 cp $srcdir/Modules/Setup.dist Modules/Setup
4236fi
4237
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004238echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004239if test ! -f Modules/Setup.local
4240then
4241 echo "# Edit this file for local setup changes" >Modules/Setup.local
4242fi
4243
4244echo "creating Makefile"
4245$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4246 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004247 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00004248
4249case $ac_sys_system in
4250BeOS)
4251 AC_MSG_WARN([
4252
4253 Support for BeOS is deprecated as of Python 2.6.
4254 See PEP 11 for the gory details.
4255 ])
4256 ;;
4257*) ;;
4258esac
4259
Neil Schemenauer66252162001-02-19 04:47:42 +00004260mv config.c Modules