blob: ecd789a9098830ceba1164d32b0b6cf99b96e390 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Christian Heimes70e5cab2008-12-03 18:18:23 +00007m4_define(PYTHON_VERSION, 3.1)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +000010AC_PREREQ(2.61)
Georg Brandle2e15612009-05-20 18:25:10 +000011AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Benjamin Petersond23f8222009-04-05 19:13:16 +000015dnl Ensure that if prefix is specified, it does not end in a slash. If
16dnl it does, we get path names containing '//' which is both ugly and
17dnl can cause trouble.
18
19dnl Last slash shouldn't be stripped if prefix=/
20if test "$prefix" != "/"; then
21 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
22fi
23
Martin v. Löwis8316feb2003-06-14 07:48:07 +000024dnl This is for stuff that absolutely must end up in pyconfig.h.
25dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026AH_TOP([
27#ifndef Py_PYCONFIG_H
28#define Py_PYCONFIG_H
29])
Martin v. Löwis11437992002-04-12 09:54:03 +000030AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000031/* Define the macros needed if on a UnixWare 7.x system. */
32#if defined(__USLC__) && defined(__SCO_VERSION__)
33#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
34#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000035
36#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000037])
38
Martin v. Löwis8316feb2003-06-14 07:48:07 +000039# We don't use PACKAGE_ variables, and they cause conflicts
40# with other autoconf-based packages that include Python.h
41grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
42rm confdefs.h
43mv confdefs.h.new confdefs.h
44
Guido van Rossum642b6781997-07-19 19:35:41 +000045AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000046VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000047
Martin v. Löwis1142de32002-03-29 16:28:31 +000048AC_SUBST(SOVERSION)
49SOVERSION=1.0
50
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000051# The later defininition of _XOPEN_SOURCE disables certain features
52# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
53AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
54
Martin v. Löwisbcd93962003-05-03 10:32:18 +000055# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
56# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
57# them.
58AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
59
Andrew MacIntyreabccf412003-07-02 13:53:25 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
62# them.
63AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
64
Martin v. Löwisd6320502004-08-12 13:45:08 +000065# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
66# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
67AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
68
Georg Brandlfcaf9102008-07-16 02:17:56 +000069# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
70# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
71# them.
72AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
73
74
Martin v. Löwise981a4e2002-11-11 13:26:51 +000075define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000076
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000077# Arguments passed to configure.
78AC_SUBST(CONFIG_ARGS)
79CONFIG_ARGS="$ac_configure_args"
80
Thomas Wouters477c8d52006-05-27 19:21:47 +000081AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000082 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000083[
84 case $enableval in
85 yes)
86 enableval=/Developer/SDKs/MacOSX10.4u.sdk
87 ;;
88 esac
89 case $enableval in
90 no)
91 UNIVERSALSDK=
92 enable_universalsdk=
93 ;;
94 *)
95 UNIVERSALSDK=$enableval
96 ;;
97 esac
98],[
99 UNIVERSALSDK=
100 enable_universalsdk=
101])
102AC_SUBST(UNIVERSALSDK)
103
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000104ARCH_RUN_32BIT=
105AC_SUBST(ARCH_RUN_32BIT)
106
Georg Brandlfcaf9102008-07-16 02:17:56 +0000107UNIVERSAL_ARCHS="32-bit"
108AC_MSG_CHECKING(for --with-universal-archs)
109AC_ARG_WITH(universal-archs,
110 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
111[
112 AC_MSG_RESULT($withval)
113 UNIVERSAL_ARCHS="$withval"
114],
115[
116 AC_MSG_RESULT(32-bit)
117])
118
119
120
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000121AC_ARG_WITH(framework-name,
122 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
123 specify an alternate name of the framework built with --enable-framework),
124[
125 PYTHONFRAMEWORK=${withval}
126 PYTHONFRAMEWORKDIR=${withval}.framework
127 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
128 ],[
129 PYTHONFRAMEWORK=Python
130 PYTHONFRAMEWORKDIR=Python.framework
131 PYTHONFRAMEWORKIDENTIFIER=org.python.python
132])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000133dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000134AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000135 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
136[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000137 case $enableval in
138 yes)
139 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000140 esac
141 case $enableval in
142 no)
143 PYTHONFRAMEWORK=
144 PYTHONFRAMEWORKDIR=no-framework
145 PYTHONFRAMEWORKPREFIX=
146 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000147 FRAMEWORKINSTALLFIRST=
148 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000149 FRAMEWORKALTINSTALLFIRST=
150 FRAMEWORKALTINSTALLLAST=
151 if test "x${prefix}" = "xNONE"; then
152 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
153 else
154 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
155 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000156 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000157 ;;
158 *)
159 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000160 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000161 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000162 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Georg Brandlfcaf9102008-07-16 02:17:56 +0000163 if test "$UNIVERSAL_ARCHS" = "all"
164 then
165 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorene3918352009-03-30 18:00:28 +0000166 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000167 else
Ronald Oussorene3918352009-03-30 18:00:28 +0000168 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000169 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
170 fi
171
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000172 if test "x${prefix}" = "xNONE" ; then
173 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
174 else
175 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
176 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000177 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000178
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000179 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000180 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000181 AC_CONFIG_FILES(Mac/Makefile)
182 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000183 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
184 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000185 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000186 ],[
187 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000188 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000189 PYTHONFRAMEWORKPREFIX=
190 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000191 FRAMEWORKINSTALLFIRST=
192 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000193 FRAMEWORKALTINSTALLFIRST=
194 FRAMEWORKALTINSTALLLAST=
195 if test "x${prefix}" = "xNONE" ; then
196 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
197 else
198 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
199 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000200 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000201
202 if test "$UNIVERSAL_ARCHS" = "all"
203 then
204 FRAMEWORKINSTALLLAST=update4wayuniversal
205 FRAMEWORKALTINSTALLLAST=update4wayuniversal
206 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207])
208AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000209AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000210AC_SUBST(PYTHONFRAMEWORKDIR)
211AC_SUBST(PYTHONFRAMEWORKPREFIX)
212AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000213AC_SUBST(FRAMEWORKINSTALLFIRST)
214AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000215AC_SUBST(FRAMEWORKALTINSTALLFIRST)
216AC_SUBST(FRAMEWORKALTINSTALLLAST)
217AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000218
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000219##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000220## AC_HELP_STRING(--with-dyld,
221## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000222##
Guido van Rossumb418f891996-07-30 18:06:02 +0000223# Set name for machine-dependent library files
224AC_SUBST(MACHDEP)
225AC_MSG_CHECKING(MACHDEP)
226if test -z "$MACHDEP"
227then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000228 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000229 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
230 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000232 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000233 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000234 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000235 ac_md_system=`echo $ac_sys_system |
236 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
237 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000238 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000239 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000240
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000241 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000242 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000243 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000244 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000245 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000246 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 esac
248fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000249
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000250# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
251# disable features if it is defined, without any means to access these
252# features as extensions. For these systems, we skip the definition of
253# _XOPEN_SOURCE. Before adding a system to the list to gain access to
254# some feature, make sure there is no alternative way to access this
255# feature. Also, when using wildcards, make sure you have verified the
256# need for not defining _XOPEN_SOURCE on all systems matching the
257# wildcard, and that the wildcard does not include future systems
258# (which may remove their limitations).
259dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
260case $ac_sys_system/$ac_sys_release in
261 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
262 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000263 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000264 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000265 define_xopen_source=no
266 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
267 # also defined. This can be overridden by defining _BSD_SOURCE
268 # As this has a different meaning on Linux, only define it on OpenBSD
269 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
270 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000271 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
272 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
273 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000274 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000275 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000276 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
277 # of union __?sigval. Reported by Stuart Bishop.
278 SunOS/5.6)
279 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000280 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
281 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000282 # Reconfirmed for 7.1.4 by Martin v. Loewis.
283 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000284 define_xopen_source=no;;
285 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000286 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000287 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000288 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000289 # On FreeBSD 4, the math functions C89 does not cover are never defined
290 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
291 FreeBSD/4.*)
292 define_xopen_source=no;;
293 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
294 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
295 # identifies itself as Darwin/7.*
296 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
297 # disables platform specific features beyond repair.
298 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
299 # has no effect, don't bother defining them
300 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000301 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000302 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
303 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
304 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000305 AIX/4)
306 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000307 AIX/5)
308 if test `uname -r` -eq 1; then
309 define_xopen_source=no
310 fi
311 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000312 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
313 # defining NI_NUMERICHOST.
314 QNX/6.3.2)
315 define_xopen_source=no
316 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000317
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000318esac
319
320if test $define_xopen_source = yes
321then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000322 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
323 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000324 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
325 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000326 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000327 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000328 AC_DEFINE(_XOPEN_SOURCE, 500,
329 Define to the level of X/Open that your system supports)
330 ;;
331 *)
332 AC_DEFINE(_XOPEN_SOURCE, 600,
333 Define to the level of X/Open that your system supports)
334 ;;
335 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000336
337 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
338 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
339 # several APIs are not declared. Since this is also needed in some
340 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000341 # except for Solaris 10, where it must not be defined,
342 # as it implies XPG4.2
343 case $ac_sys_system/$ac_sys_release in
344 SunOS/5.10)
345 ;;
346 *)
347 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
348 Define to activate Unix95-and-earlier features)
349 ;;
350 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000351
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000352 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
353
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000354fi
355
Guido van Rossum91922671997-10-09 20:24:13 +0000356#
357# SGI compilers allow the specification of the both the ABI and the
358# ISA on the command line. Depending on the values of these switches,
359# different and often incompatable code will be generated.
360#
361# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
362# thus supply support for various ABI/ISA combinations. The MACHDEP
363# variable is also adjusted.
364#
365AC_SUBST(SGI_ABI)
366if test ! -z "$SGI_ABI"
367then
368 CC="cc $SGI_ABI"
369 LDFLAGS="$SGI_ABI $LDFLAGS"
370 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
371fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000372AC_MSG_RESULT($MACHDEP)
373
Jack Jansen6b08a402004-06-03 12:41:45 +0000374# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
375# it may influence the way we can build extensions, so distutils
376# needs to check it
377AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000378AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000379CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000380EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000381
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000382AC_MSG_CHECKING(machine type as reported by uname -m)
383ac_sys_machine=`uname -m`
384AC_MSG_RESULT($ac_sys_machine)
385
Guido van Rossum627b2d71993-12-24 10:39:16 +0000386# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000387
388# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
389# for debug/optimization stuff. BASECFLAGS is for flags that are required
390# just to get things to compile and link. Users are free to override OPT
391# when running configure or make. The build should not break if they do.
392# BASECFLAGS should generally not be messed with, however.
393
394# XXX shouldn't some/most/all of this code be merged with the stuff later
395# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000396AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000397AC_ARG_WITH(gcc,
398 AC_HELP_STRING(--without-gcc,never use gcc),
399[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000400 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000401 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000402 without_gcc=yes;;
403 yes) CC=gcc
404 without_gcc=no;;
405 *) CC=$withval
406 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000407 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000408 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000409 AIX*) CC=cc_r
410 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000411 Monterey*)
412 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000413 without_gcc=;;
414 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000415 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000416AC_MSG_RESULT($without_gcc)
417
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000418# If the user switches compilers, we can't believe the cache
419if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
420then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000421 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
422(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000423fi
424
Guido van Rossum627b2d71993-12-24 10:39:16 +0000425AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000426
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000427AC_SUBST(CXX)
428AC_SUBST(MAINCC)
429AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
430AC_ARG_WITH(cxx_main,
431 AC_HELP_STRING([--with-cxx-main=<compiler>],
432 [compile main() and link python executable with C++ compiler]),
433[
434
435 case $withval in
436 no) with_cxx_main=no
437 MAINCC='$(CC)';;
438 yes) with_cxx_main=yes
439 MAINCC='$(CXX)';;
440 *) with_cxx_main=yes
441 MAINCC=$withval
442 if test -z "$CXX"
443 then
444 CXX=$withval
445 fi;;
446 esac], [
447 with_cxx_main=no
448 MAINCC='$(CC)'
449])
450AC_MSG_RESULT($with_cxx_main)
451
452preset_cxx="$CXX"
453if test -z "$CXX"
454then
455 case "$CC" in
456 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
457 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
458 esac
459 if test "$CXX" = "notfound"
460 then
461 CXX=""
462 fi
463fi
464if test -z "$CXX"
465then
466 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
467 if test "$CXX" = "notfound"
468 then
469 CXX=""
470 fi
471fi
472if test "$preset_cxx" != "$CXX"
473then
474 AC_MSG_WARN([
475
476 By default, distutils will build C++ extension modules with "$CXX".
477 If this is not intended, then set CXX on the configure command line.
478 ])
479fi
480
481
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000482# checks for UNIX variants that set C preprocessor variables
483AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000484
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000485# Check for unsupported systems
486case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000487atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000488 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
489 echo See README for details.
490 exit 1;;
491esac
492
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000493AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000494AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000495AC_ARG_WITH(suffix,
496 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
497[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000498 case $withval in
499 no) EXEEXT=;;
500 yes) EXEEXT=.exe;;
501 *) EXEEXT=$withval;;
502 esac])
503AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000504
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000505# Test whether we're running on a non-case-sensitive system, in which
506# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000507AC_SUBST(BUILDEXEEXT)
508AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000509if test ! -d CaseSensitiveTestDir; then
510mkdir CaseSensitiveTestDir
511fi
512
513if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000514then
Jack Jansen1999ef42001-12-06 21:47:20 +0000515 AC_MSG_RESULT(yes)
516 BUILDEXEEXT=.exe
517else
518 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000519 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000520fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000521rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000522
Guido van Rossumdd997f71998-10-07 19:58:26 +0000523case $MACHDEP in
524bsdos*)
525 case $CC in
526 gcc) CC="$CC -D_HAVE_BSDI";;
527 esac;;
528esac
529
Guido van Rossum84561611997-08-21 00:08:11 +0000530case $ac_sys_system in
531hp*|HP*)
532 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000533 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000534 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000535Monterey*)
536 case $CC in
537 cc) CC="$CC -Wl,-Bexport";;
538 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000539SunOS*)
540 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000541 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000542 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000543esac
544
Martin v. Löwise8964d42001-03-06 12:09:07 +0000545
Neil Schemenauer61c51152001-01-26 16:18:16 +0000546AC_SUBST(LIBRARY)
547AC_MSG_CHECKING(LIBRARY)
548if test -z "$LIBRARY"
549then
550 LIBRARY='libpython$(VERSION).a'
551fi
552AC_MSG_RESULT($LIBRARY)
553
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000554# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000555# name of the library into which to insert object files). BLDLIBRARY is also
556# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
557# is blank as the main program is not linked directly against LDLIBRARY.
558# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
559# systems without shared libraries, LDLIBRARY is the same as LIBRARY
560# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
561# DLLLIBRARY is the shared (i.e., DLL) library.
562#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000563# RUNSHARED is used to run shared python without installed libraries
564#
565# INSTSONAME is the name of the shared library that will be use to install
566# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000567AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000568AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000569AC_SUBST(BLDLIBRARY)
570AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000571AC_SUBST(INSTSONAME)
572AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000573LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000574BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000575INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000576DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000577LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000579
Guido van Rossumfb842551997-08-06 23:42:07 +0000580# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000581# If CXX is set, and if it is needed to link a main function that was
582# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
583# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000584# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000585# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000586AC_SUBST(LINKCC)
587AC_MSG_CHECKING(LINKCC)
588if test -z "$LINKCC"
589then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000590 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000591 case $ac_sys_system in
592 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000593 exp_extra="\"\""
594 if test $ac_sys_release -ge 5 -o \
595 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
596 exp_extra="."
597 fi
598 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000599 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000600 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000601 QNX*)
602 # qcc must be used because the other compilers do not
603 # support -N.
604 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000605 esac
606fi
607AC_MSG_RESULT($LINKCC)
608
Tarek Ziadébe720e02009-05-09 11:55:12 +0000609# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
610# make sure we default having it set to "no": this is used by
611# distutils.unixccompiler to know if it should add --enable-new-dtags
612# to linker command lines, and failing to detect GNU ld simply results
613# in the same bahaviour as before.
614AC_SUBST(GNULD)
615AC_MSG_CHECKING(for GNU ld)
616ac_prog=ld
617if test "$GCC" = yes; then
618 ac_prog=`$CC -print-prog-name=ld`
619fi
620case `"$ac_prog" -V 2>&1 < /dev/null` in
621 *GNU*)
622 GNULD=yes;;
623 *)
624 GNULD=no;;
625esac
626AC_MSG_RESULT($GNULD)
627
Martin v. Löwis1142de32002-03-29 16:28:31 +0000628AC_MSG_CHECKING(for --enable-shared)
629AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000630 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000631
Martin v. Löwis1142de32002-03-29 16:28:31 +0000632if test -z "$enable_shared"
633then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000634 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000635 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000636 enable_shared="yes";;
637 *)
638 enable_shared="no";;
639 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640fi
641AC_MSG_RESULT($enable_shared)
642
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000643AC_MSG_CHECKING(for --enable-profiling)
644AC_ARG_ENABLE(profiling,
645 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
646[ac_save_cc="$CC"
647 CC="$CC -pg"
648 AC_TRY_RUN([int main() { return 0; }],
649 ac_enable_profiling="yes",
650 ac_enable_profiling="no",
651 ac_enable_profiling="no")
652 CC="$ac_save_cc"])
653AC_MSG_RESULT($ac_enable_profiling)
654
655case "$ac_enable_profiling" in
656 "yes")
657 BASECFLAGS="-pg $BASECFLAGS"
658 LDFLAGS="-pg $LDFLAGS"
659 ;;
660esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000661
662AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000663
Guido van Rossumb8552162001-09-05 14:58:11 +0000664# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
665# library that we build, but we do not want to link against it (we
666# will find it with a -framework option). For this reason there is an
667# extra variable BLDLIBRARY against which Python and the extension
668# modules are linked, BLDLIBRARY. This is normally the same as
669# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000670if test "$enable_framework"
671then
672 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000673 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000674 BLDLIBRARY=''
675else
676 BLDLIBRARY='$(LDLIBRARY)'
677fi
678
Martin v. Löwis1142de32002-03-29 16:28:31 +0000679# Other platforms follow
680if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000681 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000683 CYGWIN*)
684 LDLIBRARY='libpython$(VERSION).dll.a'
685 DLLLIBRARY='libpython$(VERSION).dll'
686 ;;
687 SunOS*)
688 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000689 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000690 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000691 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000692 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000693 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694 LDLIBRARY='libpython$(VERSION).so'
695 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000696 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000697 case $ac_sys_system in
698 FreeBSD*)
699 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
700 ;;
701 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000702 INSTSONAME="$LDLIBRARY".$SOVERSION
703 ;;
704 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000705 case `uname -m` in
706 ia64)
707 LDLIBRARY='libpython$(VERSION).so'
708 ;;
709 *)
710 LDLIBRARY='libpython$(VERSION).sl'
711 ;;
712 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000713 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000714 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000715 ;;
716 OSF*)
717 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000718 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000719 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000720 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000721 atheos*)
722 LDLIBRARY='libpython$(VERSION).so'
723 BLDLIBRARY='-L. -lpython$(VERSION)'
724 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
725 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000726 Darwin*)
727 LDLIBRARY='libpython$(VERSION).dylib'
728 BLDLIBRARY='-L. -lpython$(VERSION)'
729 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
730 ;;
731
Martin v. Löwis1142de32002-03-29 16:28:31 +0000732 esac
Jason Tishler30765592003-09-04 11:04:06 +0000733else # shared is disabled
734 case $ac_sys_system in
735 CYGWIN*)
736 BLDLIBRARY='$(LIBRARY)'
737 LDLIBRARY='libpython$(VERSION).dll.a'
738 ;;
739 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000740fi
741
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000742AC_MSG_RESULT($LDLIBRARY)
743
Guido van Rossum627b2d71993-12-24 10:39:16 +0000744AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000745AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000746AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000747
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000748# tweak ARFLAGS only if the user didn't set it on the command line
749AC_SUBST(ARFLAGS)
750if test -z "$ARFLAGS"
751then
752 ARFLAGS="rc"
753fi
754
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000755AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000756AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000757if test $SVNVERSION = found
758then
759 SVNVERSION="svnversion \$(srcdir)"
760else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000761 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000762fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000763
Neil Schemenauera42c8272001-03-31 00:01:55 +0000764case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000765bsdos*|hp*|HP*)
766 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000767 if test -z "$INSTALL"
768 then
769 INSTALL="${srcdir}/install-sh -c"
770 fi
771esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000772AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000773
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000774# Not every filesystem supports hard links
775AC_SUBST(LN)
776if test -z "$LN" ; then
777 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000778 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000779 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000780 *) LN=ln;;
781 esac
782fi
783
Fred Drake9f715822001-07-11 06:27:00 +0000784# Check for --with-pydebug
785AC_MSG_CHECKING(for --with-pydebug)
786AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000787 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
788[
Fred Drake9f715822001-07-11 06:27:00 +0000789if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000790then
791 AC_DEFINE(Py_DEBUG, 1,
792 [Define if you want to build an interpreter with many run-time checks.])
793 AC_MSG_RESULT(yes);
794 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000795else AC_MSG_RESULT(no); Py_DEBUG='false'
796fi],
797[AC_MSG_RESULT(no)])
798
Skip Montanarodecc6a42003-01-01 20:07:49 +0000799# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
800# merged with this chunk of code?
801
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000802# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000803# ------------------------
804# (The following bit of code is complicated enough - please keep things
805# indented properly. Just pretend you're editing Python code. ;-)
806
807# There are two parallel sets of case statements below, one that checks to
808# see if OPT was set and one that does BASECFLAGS setting based upon
809# compiler and platform. BASECFLAGS tweaks need to be made even if the
810# user set OPT.
811
812# tweak OPT based on compiler and platform, only if the user didn't set
813# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000814AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000815if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000816then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000817 case $GCC in
818 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000819 if test "$CC" != 'g++' ; then
820 STRICT_PROTO="-Wstrict-prototypes"
821 fi
Christian Heimes38053212007-12-14 01:24:44 +0000822 # For gcc 4.x we need to use -fwrapv so lets check if its supported
823 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
824 WRAP="-fwrapv"
825 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000827 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000828 if test "$Py_DEBUG" = 'true' ; then
829 # Optimization messes up debuggers, so turn it off for
830 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000831 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000832 else
Christian Heimes38053212007-12-14 01:24:44 +0000833 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000834 fi
835 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000836 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000837 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000838 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000839 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000840 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000841 SCO_SV*) OPT="$OPT -m486 -DSCO5"
842 ;;
843 esac
Fred Drake9f715822001-07-11 06:27:00 +0000844 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000845
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000846 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 OPT="-O"
848 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000849 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850
851 # The current (beta) Monterey compiler dies with optimizations
852 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000853 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854 Monterey*)
855 OPT=""
856 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000857 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000858
Guido van Rossum4e8af441994-08-19 15:33:54 +0000859fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000860
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000862
863# The -arch flags for universal builds on OSX
864UNIVERSAL_ARCH_FLAGS=
865AC_SUBST(UNIVERSAL_ARCH_FLAGS)
866
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867# tweak BASECFLAGS based on compiler and platform
868case $GCC in
869yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000870 # Python violates C99 rules, by casting between incompatible
871 # pointer types. GCC may generate bad code as a result of that,
872 # so use -fno-strict-aliasing if supported.
873 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
874 ac_save_cc="$CC"
875 CC="$CC -fno-strict-aliasing"
876 AC_TRY_RUN([int main() { return 0; }],
877 ac_cv_no_strict_aliasing_ok=yes,
878 ac_cv_no_strict_aliasing_ok=no,
879 ac_cv_no_strict_aliasing_ok=no)
880 CC="$ac_save_cc"
881 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
882 if test $ac_cv_no_strict_aliasing_ok = yes
883 then
884 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
885 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000886
887 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
888 # support. Without this, treatment of subnormals doesn't follow
889 # the standard.
890 case $ac_sys_machine in
891 alpha*)
892 BASECFLAGS="$BASECFLAGS -mieee"
893 ;;
894 esac
895
Skip Montanarodecc6a42003-01-01 20:07:49 +0000896 case $ac_sys_system in
897 SCO_SV*)
898 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
899 ;;
900 # is there any other compiler on Darwin besides gcc?
901 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000902 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
903 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000904
905
Thomas Wouters477c8d52006-05-27 19:21:47 +0000906 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000907 UNIVERSAL_ARCH_FLAGS=""
908 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
909 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000910 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000911
912 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
913 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
914
915 elif test "$UNIVERSAL_ARCHS" = "all" ; then
916 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000917 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000918
919 else
920 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
921
922 fi
923
924
925 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000926 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000927 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
928 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
929 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000930 fi
931
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000932 # Calculate the right deployment target for this build.
933 #
934 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
935 if test ${cur_target} '>' 10.2; then
936 cur_target=10.3
937 fi
938 if test "${UNIVERSAL_ARCHS}" = "all"; then
939 # Ensure that the default platform for a 4-way
940 # universal build is OSX 10.5, that's the first
941 # OS release where 4-way builds make sense.
942 cur_target='10.5'
943 fi
944 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
945
946 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
947 # environment with a value that is the same as what we'll use
948 # in the Makefile to ensure that we'll get the same compiler
949 # environment during configure and build time.
950 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
951 export MACOSX_DEPLOYMENT_TARGET
952 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
953
Skip Montanarodecc6a42003-01-01 20:07:49 +0000954 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000955 OSF*)
956 BASECFLAGS="$BASECFLAGS -mieee"
957 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000958 esac
959 ;;
960
961*)
962 case $ac_sys_system in
963 OpenUNIX*|UnixWare*)
964 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
965 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000966 OSF*)
967 BASECFLAGS="$BASECFLAGS -ieee -std"
968 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000969 SCO_SV*)
970 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
971 ;;
972 esac
973 ;;
974esac
975
Fred Drakee1ceaa02001-12-04 20:55:47 +0000976if test "$Py_DEBUG" = 'true'; then
977 :
978else
979 OPT="-DNDEBUG $OPT"
980fi
981
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000982if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000983then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000984 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000985fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000986
Neal Norwitz020c46a2006-01-07 21:39:28 +0000987# disable check for icc since it seems to pass, but generates a warning
988if test "$CC" = icc
989then
990 ac_cv_opt_olimit_ok=no
991fi
992
Guido van Rossum91922671997-10-09 20:24:13 +0000993AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
994AC_CACHE_VAL(ac_cv_opt_olimit_ok,
995[ac_save_cc="$CC"
996CC="$CC -OPT:Olimit=0"
997AC_TRY_RUN([int main() { return 0; }],
998 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000999 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001000 ac_cv_opt_olimit_ok=no)
1001CC="$ac_save_cc"])
1002AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001003if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001004 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001005 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1006 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1007 # environment?
1008 Darwin*)
1009 ;;
1010 *)
1011 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1012 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001013 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001014else
1015 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1016 AC_CACHE_VAL(ac_cv_olimit_ok,
1017 [ac_save_cc="$CC"
1018 CC="$CC -Olimit 1500"
1019 AC_TRY_RUN([int main() { return 0; }],
1020 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001021 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001022 ac_cv_olimit_ok=no)
1023 CC="$ac_save_cc"])
1024 AC_MSG_RESULT($ac_cv_olimit_ok)
1025 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001026 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001027 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001028fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001029
Thomas Wouters89f507f2006-12-13 04:49:30 +00001030# Check whether GCC supports PyArg_ParseTuple format
1031if test "$GCC" = "yes"
1032then
1033 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1034 save_CFLAGS=$CFLAGS
1035 CFLAGS="$CFLAGS -Werror"
1036 AC_TRY_COMPILE([
1037 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1038 ],,
1039 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1040 AC_MSG_RESULT(yes),
1041 AC_MSG_RESULT(no)
1042 )
1043 CFLAGS=$save_CFLAGS
1044fi
1045
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001046# On some compilers, pthreads are available without further options
1047# (e.g. MacOS X). On some of these systems, the compiler will not
1048# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1049# So we have to see first whether pthreads are available without
1050# options before we can check whether -Kpthread improves anything.
1051AC_MSG_CHECKING(whether pthreads are available without options)
1052AC_CACHE_VAL(ac_cv_pthread_is_default,
1053[AC_TRY_RUN([
1054#include <pthread.h>
1055
1056void* routine(void* p){return NULL;}
1057
1058int main(){
1059 pthread_t p;
1060 if(pthread_create(&p,NULL,routine,NULL)!=0)
1061 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001062 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001063 return 0;
1064}
1065],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001066[
1067 ac_cv_pthread_is_default=yes
1068 ac_cv_kthread=no
1069 ac_cv_pthread=no
1070],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001071 ac_cv_pthread_is_default=no,
1072 ac_cv_pthread_is_default=no)
1073])
1074AC_MSG_RESULT($ac_cv_pthread_is_default)
1075
1076
1077if test $ac_cv_pthread_is_default = yes
1078then
1079 ac_cv_kpthread=no
1080else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001081# -Kpthread, if available, provides the right #defines
1082# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001083# Some compilers won't report that they do not support -Kpthread,
1084# so we need to run a program to see whether it really made the
1085# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001086AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1087AC_CACHE_VAL(ac_cv_kpthread,
1088[ac_save_cc="$CC"
1089CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001090AC_TRY_RUN([
1091#include <pthread.h>
1092
1093void* routine(void* p){return NULL;}
1094
1095int main(){
1096 pthread_t p;
1097 if(pthread_create(&p,NULL,routine,NULL)!=0)
1098 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001099 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001100 return 0;
1101}
1102],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001103 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001104 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001105 ac_cv_kpthread=no)
1106CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001107AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001108fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001109
Skip Montanarod8d39a02003-07-10 20:44:10 +00001110if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001111then
1112# -Kthread, if available, provides the right #defines
1113# and linker options to make pthread_create available
1114# Some compilers won't report that they do not support -Kthread,
1115# so we need to run a program to see whether it really made the
1116# function available.
1117AC_MSG_CHECKING(whether $CC accepts -Kthread)
1118AC_CACHE_VAL(ac_cv_kthread,
1119[ac_save_cc="$CC"
1120CC="$CC -Kthread"
1121AC_TRY_RUN([
1122#include <pthread.h>
1123
1124void* routine(void* p){return NULL;}
1125
1126int main(){
1127 pthread_t p;
1128 if(pthread_create(&p,NULL,routine,NULL)!=0)
1129 return 1;
1130 (void)pthread_detach(p);
1131 return 0;
1132}
1133],
1134 ac_cv_kthread=yes,
1135 ac_cv_kthread=no,
1136 ac_cv_kthread=no)
1137CC="$ac_save_cc"])
1138AC_MSG_RESULT($ac_cv_kthread)
1139fi
1140
Skip Montanarod8d39a02003-07-10 20:44:10 +00001141if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001142then
1143# -pthread, if available, provides the right #defines
1144# and linker options to make pthread_create available
1145# Some compilers won't report that they do not support -pthread,
1146# so we need to run a program to see whether it really made the
1147# function available.
1148AC_MSG_CHECKING(whether $CC accepts -pthread)
1149AC_CACHE_VAL(ac_cv_thread,
1150[ac_save_cc="$CC"
1151CC="$CC -pthread"
1152AC_TRY_RUN([
1153#include <pthread.h>
1154
1155void* routine(void* p){return NULL;}
1156
1157int main(){
1158 pthread_t p;
1159 if(pthread_create(&p,NULL,routine,NULL)!=0)
1160 return 1;
1161 (void)pthread_detach(p);
1162 return 0;
1163}
1164],
1165 ac_cv_pthread=yes,
1166 ac_cv_pthread=no,
1167 ac_cv_pthread=no)
1168CC="$ac_save_cc"])
1169AC_MSG_RESULT($ac_cv_pthread)
1170fi
1171
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001172# If we have set a CC compiler flag for thread support then
1173# check if it works for CXX, too.
1174ac_cv_cxx_thread=no
1175if test ! -z "$CXX"
1176then
1177AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1178ac_save_cxx="$CXX"
1179
1180if test "$ac_cv_kpthread" = "yes"
1181then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001182 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001183 ac_cv_cxx_thread=yes
1184elif test "$ac_cv_kthread" = "yes"
1185then
1186 CXX="$CXX -Kthread"
1187 ac_cv_cxx_thread=yes
1188elif test "$ac_cv_pthread" = "yes"
1189then
1190 CXX="$CXX -pthread"
1191 ac_cv_cxx_thread=yes
1192fi
1193
1194if test $ac_cv_cxx_thread = yes
1195then
1196 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1197 $CXX -c conftest.$ac_ext 2>&5
1198 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1199 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1200 then
1201 ac_cv_cxx_thread=yes
1202 else
1203 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001204 fi
1205 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001206fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001207AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001208fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001209CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001210
Fred Drakece81d592000-07-09 14:39:29 +00001211dnl # check for ANSI or K&R ("traditional") preprocessor
1212dnl AC_MSG_CHECKING(for C preprocessor type)
1213dnl AC_TRY_COMPILE([
1214dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1215dnl int foo;
1216dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1217dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1218dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001219
Guido van Rossum627b2d71993-12-24 10:39:16 +00001220# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001221AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001222AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1223fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001224ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001225shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001226unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001227sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1228sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001229sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001230sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001231sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001232sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001233bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001234AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001235AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001236
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001237# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001238AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001239#ifdef HAVE_CURSES_H
1240#include <curses.h>
1241#endif
1242])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001243
Martin v. Löwis11017b12006-01-14 18:12:57 +00001244# On Linux, netlink.h requires asm/types.h
1245AC_CHECK_HEADERS(linux/netlink.h,,,[
1246#ifdef HAVE_ASM_TYPES_H
1247#include <asm/types.h>
1248#endif
1249#ifdef HAVE_SYS_SOCKET_H
1250#include <sys/socket.h>
1251#endif
1252])
1253
Guido van Rossum627b2d71993-12-24 10:39:16 +00001254# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001255was_it_defined=no
1256AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001257AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1258 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1259])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001260AC_MSG_RESULT($was_it_defined)
1261
Neal Norwitz11690112002-07-30 01:08:28 +00001262# Check whether using makedev requires defining _OSF_SOURCE
1263AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001264AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001265 [ makedev(0, 0) ],
1266 ac_cv_has_makedev=yes,
1267 ac_cv_has_makedev=no)
1268if test "$ac_cv_has_makedev" = "no"; then
1269 # we didn't link, try if _OSF_SOURCE will allow us to link
1270 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001271#define _OSF_SOURCE 1
1272#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001273 ],
1274 [ makedev(0, 0) ],
1275 ac_cv_has_makedev=yes,
1276 ac_cv_has_makedev=no)
1277 if test "$ac_cv_has_makedev" = "yes"; then
1278 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1279 fi
1280fi
1281AC_MSG_RESULT($ac_cv_has_makedev)
1282if test "$ac_cv_has_makedev" = "yes"; then
1283 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1284fi
1285
Martin v. Löwis399a6892002-10-04 10:22:02 +00001286# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1287# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1288# defined, but the compiler does not support pragma redefine_extname,
1289# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1290# structures (such as rlimit64) without declaring them. As a
1291# work-around, disable LFS on such configurations
1292
1293use_lfs=yes
1294AC_MSG_CHECKING(Solaris LFS bug)
1295AC_TRY_COMPILE([
1296#define _LARGEFILE_SOURCE 1
1297#define _FILE_OFFSET_BITS 64
1298#include <sys/resource.h>
1299],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1300AC_MSG_RESULT($sol_lfs_bug)
1301if test "$sol_lfs_bug" = "yes"; then
1302 use_lfs=no
1303fi
1304
1305if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001306# Two defines needed to enable largefile support on various platforms
1307# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001308AC_DEFINE(_LARGEFILE_SOURCE, 1,
1309[This must be defined on some systems to enable large file support.])
1310AC_DEFINE(_FILE_OFFSET_BITS, 64,
1311[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001312fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001313
Guido van Rossum300fda71996-08-19 21:58:16 +00001314# Add some code to confdefs.h so that the test for off_t works on SCO
1315cat >> confdefs.h <<\EOF
1316#if defined(SCO_DS)
1317#undef _OFF_T
1318#endif
1319EOF
1320
Guido van Rossumef2255b2000-03-10 22:30:29 +00001321# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001322AC_TYPE_MODE_T
1323AC_TYPE_OFF_T
1324AC_TYPE_PID_T
1325AC_TYPE_SIGNAL
1326AC_TYPE_SIZE_T
1327AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001328AC_TYPE_UINT32_T
1329AC_TYPE_UINT64_T
1330AC_TYPE_INT32_T
1331AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001332AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001333 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001334
Guido van Rossumef2255b2000-03-10 22:30:29 +00001335# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001336# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001337AC_CHECK_SIZEOF(int, 4)
1338AC_CHECK_SIZEOF(long, 4)
1339AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001340AC_CHECK_SIZEOF(short, 2)
1341AC_CHECK_SIZEOF(float, 4)
1342AC_CHECK_SIZEOF(double, 8)
1343AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001344AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001345AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001346
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001347AC_MSG_CHECKING(for long long support)
1348have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001349AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1350 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1351 have_long_long=yes
1352])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001353AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001354if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001355AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001356fi
1357
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001358AC_MSG_CHECKING(for long double support)
1359have_long_double=no
1360AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1361 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1362 have_long_double=yes
1363])
1364AC_MSG_RESULT($have_long_double)
1365if test "$have_long_double" = yes ; then
1366AC_CHECK_SIZEOF(long double, 16)
1367fi
1368
1369
Thomas Woutersb2137042007-02-01 18:02:27 +00001370AC_MSG_CHECKING(for _Bool support)
1371have_c99_bool=no
1372AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1373 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1374 have_c99_bool=yes
1375])
1376AC_MSG_RESULT($have_c99_bool)
1377if test "$have_c99_bool" = yes ; then
1378AC_CHECK_SIZEOF(_Bool, 1)
1379fi
1380
Thomas Wouters89f507f2006-12-13 04:49:30 +00001381AC_CHECK_TYPES(uintptr_t,
1382 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1383 [], [#ifdef HAVE_STDINT_H
1384 #include <stdint.h>
1385 #endif])
1386
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001387
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001388# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1389AC_MSG_CHECKING(size of off_t)
1390AC_CACHE_VAL(ac_cv_sizeof_off_t,
1391[AC_TRY_RUN([#include <stdio.h>
1392#include <sys/types.h>
1393main()
1394{
1395 FILE *f=fopen("conftestval", "w");
1396 if (!f) exit(1);
1397 fprintf(f, "%d\n", sizeof(off_t));
1398 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001399}],
1400ac_cv_sizeof_off_t=`cat conftestval`,
1401ac_cv_sizeof_off_t=0,
1402ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001403])
1404AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001405AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1406[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001407
1408AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001409if test "$have_long_long" = yes -a \
1410 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1411 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001412 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1413 [Defined to enable large file support when an off_t is bigger than a long
1414 and long long is available and at least as big as an off_t. You may need
1415 to add some flags for configuration and compilation to enable this mode.
1416 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001417 AC_MSG_RESULT(yes)
1418else
1419 AC_MSG_RESULT(no)
1420fi
1421
Fred Drakea3f6e912000-06-29 20:44:47 +00001422# AC_CHECK_SIZEOF() doesn't include <time.h>.
1423AC_MSG_CHECKING(size of time_t)
1424AC_CACHE_VAL(ac_cv_sizeof_time_t,
1425[AC_TRY_RUN([#include <stdio.h>
1426#include <time.h>
1427main()
1428{
1429 FILE *f=fopen("conftestval", "w");
1430 if (!f) exit(1);
1431 fprintf(f, "%d\n", sizeof(time_t));
1432 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001433}],
1434ac_cv_sizeof_time_t=`cat conftestval`,
1435ac_cv_sizeof_time_t=0,
1436ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001437])
1438AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001439AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1440[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001441
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001442
Trent Mick635f6fb2000-08-23 21:33:05 +00001443# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001444ac_save_cc="$CC"
1445if test "$ac_cv_kpthread" = "yes"
1446then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001447elif test "$ac_cv_kthread" = "yes"
1448then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001449elif test "$ac_cv_pthread" = "yes"
1450then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001451fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001452AC_MSG_CHECKING(for pthread_t)
1453have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001454AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001455AC_MSG_RESULT($have_pthread_t)
1456if test "$have_pthread_t" = yes ; then
1457 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1458 AC_MSG_CHECKING(size of pthread_t)
1459 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1460 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001461#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001462 main()
1463 {
1464 FILE *f=fopen("conftestval", "w");
1465 if (!f) exit(1);
1466 fprintf(f, "%d\n", sizeof(pthread_t));
1467 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001468 }],
1469 ac_cv_sizeof_pthread_t=`cat conftestval`,
1470 ac_cv_sizeof_pthread_t=0,
1471 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001472 ])
1473 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001474 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1475 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001476fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001477CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001478
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001479
Georg Brandl93de2162008-07-16 02:21:06 +00001480
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001481AC_SUBST(OTHER_LIBTOOL_OPT)
1482case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001483 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001484 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1485 ;;
1486 Darwin/*)
1487 OTHER_LIBTOOL_OPT=""
1488 ;;
1489esac
1490
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001491AC_SUBST(LIBTOOL_CRUFT)
1492case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001493 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001494 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1495 if test "${enable_universalsdk}"; then
1496 :
1497 else
1498 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1499 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001500 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001501 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001502 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001503 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1504 if test ${gcc_version} '<' 4.0
1505 then
1506 LIBTOOL_CRUFT="-lcc_dynamic"
1507 else
1508 LIBTOOL_CRUFT=""
1509 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001510 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001511 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001512 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001513esac
1514
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001515AC_MSG_CHECKING(for --enable-framework)
1516if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001517then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001518 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001519 # -F. is needed to allow linking to the framework while
1520 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001521 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1522 [Define if you want to produce an OpenStep/Rhapsody framework
1523 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001524 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001525 if test $enable_shared = "yes"
1526 then
1527 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1528 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001529else
1530 AC_MSG_RESULT(no)
1531fi
1532
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001533AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001534case $ac_sys_system/$ac_sys_release in
1535 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001536 AC_DEFINE(WITH_DYLD, 1,
1537 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1538 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1539 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001540 AC_MSG_RESULT(always on for Darwin)
1541 ;;
1542 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001543 AC_MSG_RESULT(no)
1544 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001545esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001546
Guido van Rossumac405f61994-09-12 10:56:06 +00001547# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001548AC_SUBST(SO)
1549AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001550AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001551AC_SUBST(CCSHARED)
1552AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001553# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001554# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001555AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001556if test -z "$SO"
1557then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001558 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001559 hp*|HP*)
1560 case `uname -m` in
1561 ia64) SO=.so;;
1562 *) SO=.sl;;
1563 esac
1564 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001565 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001566 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001567 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001568else
1569 # this might also be a termcap variable, see #610332
1570 echo
1571 echo '====================================================================='
1572 echo '+ +'
1573 echo '+ WARNING: You have set SO in your environment. +'
1574 echo '+ Do you really mean to change the extension for shared libraries? +'
1575 echo '+ Continuing in 10 seconds to let you to ponder. +'
1576 echo '+ +'
1577 echo '====================================================================='
1578 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001579fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001580AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001581
Thomas Wouters477c8d52006-05-27 19:21:47 +00001582AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001583# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001584# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001585# (Shared libraries in this instance are shared modules to be loaded into
1586# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001587AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001588if test -z "$LDSHARED"
1589then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001590 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001591 AIX*)
1592 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001593 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001594 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001595 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001596 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001597 SunOS/5*)
1598 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001599 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001600 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001601 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001602 hp*|HP*)
1603 if test "$GCC" = "yes"
1604 then LDSHARED='$(CC) -shared'
1605 else LDSHARED='ld -b';
1606 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001607 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001608 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001609 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1610 if test "$enable_framework" ; then
1611 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001612 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1613 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001614 else
1615 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001616 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001617 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001618 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001619 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1620 if test "$enable_framework" ; then
1621 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001622 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1623 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001624 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001625 # No framework, use the Python app as bundle-loader
1626 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001627 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001628 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001629 Darwin/*)
1630 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1631 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001632
Georg Brandlfcaf9102008-07-16 02:17:56 +00001633 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001634 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001635 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001636 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001637 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001638 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1639 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001640 else
1641 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1642 if test "$enable_framework" ; then
1643 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001644 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1645 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001646 else
1647 # No framework, use the Python app as bundle-loader
1648 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1649 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1650 fi
1651 fi
1652 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001653 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001654 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001655 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001656 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001657 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001658 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001659 else
1660 LDSHARED="ld -Bshareable ${LDFLAGS}"
1661 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001662 OpenBSD*)
1663 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1664 then
1665 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1666 else
1667 case `uname -r` in
1668 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1669 LDSHARED="ld -Bshareable ${LDFLAGS}"
1670 ;;
1671 *)
1672 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1673 ;;
1674 esac
1675 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001676 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001677 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001678 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001679 then LDSHARED='$(CC) -shared'
1680 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001681 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001682 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001683 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001684 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001685 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001686 *) LDSHARED="ld";;
1687 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001688fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001689AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001690BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001691# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001692# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001693AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001694if test -z "$CCSHARED"
1695then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001696 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001697 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001698 then CCSHARED="-fPIC";
1699 elif test `uname -p` = sparc;
1700 then CCSHARED="-xcode=pic32";
1701 else CCSHARED="-Kpic";
1702 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001703 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001704 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001705 else CCSHARED="+z";
1706 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001707 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001708 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001709 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001710 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001711 if test "$GCC" = "yes"
1712 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001713 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001714 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001715 SCO_SV*)
1716 if test "$GCC" = "yes"
1717 then CCSHARED="-fPIC"
1718 else CCSHARED="-Kpic -belf"
1719 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001720 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001721 IRIX*/6*) case $CC in
1722 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001723 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001724 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001725 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001726 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001727fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001728AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001729# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001730# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001731AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001732if test -z "$LINKFORSHARED"
1733then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001734 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001735 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001736 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001737 LINKFORSHARED="-Wl,-E -Wl,+s";;
1738# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001739 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001740 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001741 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001742 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001743 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001744 if test "$enable_framework"
1745 then
Jack Jansenda49e192005-01-07 13:08:22 +00001746 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001747 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001748 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001749 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001750 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001751 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001752 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001753 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1754 then
1755 LINKFORSHARED="-Wl,--export-dynamic"
1756 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001757 SunOS/5*) case $CC in
1758 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001759 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001760 then
1761 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001762 fi;;
1763 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001764 CYGWIN*)
1765 if test $enable_shared = "no"
1766 then
1767 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1768 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001769 QNX*)
1770 # -Wl,-E causes the symbols to be added to the dynamic
1771 # symbol table so that they can be found when a module
1772 # is loaded. -N 2048K causes the stack size to be set
1773 # to 2048 kilobytes so that the stack doesn't overflow
1774 # when running test_compile.py.
1775 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001776 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001777fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001778AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001779
Georg Brandl93de2162008-07-16 02:21:06 +00001780
Neil Schemenauer61c51152001-01-26 16:18:16 +00001781AC_SUBST(CFLAGSFORSHARED)
1782AC_MSG_CHECKING(CFLAGSFORSHARED)
1783if test ! "$LIBRARY" = "$LDLIBRARY"
1784then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001785 case $ac_sys_system in
1786 CYGWIN*)
1787 # Cygwin needs CCSHARED when building extension DLLs
1788 # but not when building the interpreter DLL.
1789 CFLAGSFORSHARED='';;
1790 *)
1791 CFLAGSFORSHARED='$(CCSHARED)'
1792 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001793fi
1794AC_MSG_RESULT($CFLAGSFORSHARED)
1795
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001796# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1797# library (with --enable-shared).
1798# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001799# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1800# if it is not required, since it creates a dependency of the shared library
1801# to LIBS. This, in turn, means that applications linking the shared libpython
1802# don't need to link LIBS explicitly. The default should be only changed
1803# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001804AC_SUBST(SHLIBS)
1805AC_MSG_CHECKING(SHLIBS)
1806case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001807 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001808 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001809esac
1810AC_MSG_RESULT($SHLIBS)
1811
1812
Guido van Rossum627b2d71993-12-24 10:39:16 +00001813# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001814AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1815AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001816
Georg Brandleee31162008-12-07 15:15:22 +00001817# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001818if test "$with_threads" = "yes" -o -z "$with_threads"; then
1819 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1820 # posix4 on Solaris 2.6
1821 # pthread (first!) on Linux
1822fi
1823
Martin v. Löwis19d17342003-06-14 21:03:05 +00001824# check if we need libintl for locale functions
1825AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001826 [AC_DEFINE(WITH_LIBINTL, 1,
1827 [Define to 1 if libintl is needed for locale functions.])
1828 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001829
1830# checks for system dependent C++ extensions support
1831case "$ac_sys_system" in
1832 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1833 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1834 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001835 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1836 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1837 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001838 AC_MSG_RESULT(yes)],
1839 [AC_MSG_RESULT(no)]);;
1840 *) ;;
1841esac
1842
Guido van Rossum70c7f481998-03-26 18:44:10 +00001843# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001844AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001845AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001846
Guido van Rossumc5a39031996-07-31 17:35:03 +00001847AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001848AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001849 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1850[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001851AC_MSG_RESULT($withval)
1852LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001853],
1854[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001855
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001856# Check for use of the system libffi library
1857AC_MSG_CHECKING(for --with-system-ffi)
1858AC_ARG_WITH(system_ffi,
1859 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1860
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001861AC_MSG_RESULT($with_system_ffi)
1862
Matthias Klose55708cc2009-04-30 08:06:49 +00001863# Check for --with-dbmliborder
1864AC_MSG_CHECKING(for --with-dbmliborder)
1865AC_ARG_WITH(dbmliborder,
1866 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'.]),
1867[
1868if test x$with_dbmliborder = xyes
1869then
1870AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1871else
1872 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1873 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1874 then
1875 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1876 fi
1877 done
1878fi])
1879AC_MSG_RESULT($with_dbmliborder)
1880
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001881# Determine if signalmodule should be used.
1882AC_SUBST(USE_SIGNAL_MODULE)
1883AC_SUBST(SIGNAL_OBJS)
1884AC_MSG_CHECKING(for --with-signal-module)
1885AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001886 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001887
1888if test -z "$with_signal_module"
1889then with_signal_module="yes"
1890fi
1891AC_MSG_RESULT($with_signal_module)
1892
1893if test "${with_signal_module}" = "yes"; then
1894 USE_SIGNAL_MODULE=""
1895 SIGNAL_OBJS=""
1896else
1897 USE_SIGNAL_MODULE="#"
1898 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1899fi
1900
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001901# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001902AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001903USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001904
Guido van Rossum54d93d41997-01-22 20:51:58 +00001905AC_MSG_CHECKING(for --with-dec-threads)
1906AC_SUBST(LDLAST)
1907AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001908 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1909[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001910AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001911LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001912if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001913 with_thread="$withval";
1914fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001915[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001916
Martin v. Löwis11437992002-04-12 09:54:03 +00001917# Templates for things AC_DEFINEd more than once.
1918# For a single AC_DEFINE, no template is needed.
1919AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1920AH_TEMPLATE(_REENTRANT,
1921 [Define to force use of thread-safe errno, h_errno, and other functions])
1922AH_TEMPLATE(WITH_THREAD,
1923 [Define if you want to compile in rudimentary thread support])
1924
Guido van Rossum54d93d41997-01-22 20:51:58 +00001925AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001926dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001927AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001928 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001929
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001930# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001931dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001932AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001933 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1934 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001935
1936if test -z "$with_threads"
1937then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001938fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001939AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001940
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001941AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001942if test "$with_threads" = "no"
1943then
1944 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001945elif test "$ac_cv_pthread_is_default" = yes
1946then
1947 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001948 # Defining _REENTRANT on system with POSIX threads should not hurt.
1949 AC_DEFINE(_REENTRANT)
1950 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001951 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001952elif test "$ac_cv_kpthread" = "yes"
1953then
1954 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001955 if test "$ac_cv_cxx_thread" = "yes"; then
1956 CXX="$CXX -Kpthread"
1957 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001958 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001959 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001960 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001961elif test "$ac_cv_kthread" = "yes"
1962then
1963 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001964 if test "$ac_cv_cxx_thread" = "yes"; then
1965 CXX="$CXX -Kthread"
1966 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001967 AC_DEFINE(WITH_THREAD)
1968 posix_threads=yes
1969 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001970elif test "$ac_cv_pthread" = "yes"
1971then
1972 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001973 if test "$ac_cv_cxx_thread" = "yes"; then
1974 CXX="$CXX -pthread"
1975 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001976 AC_DEFINE(WITH_THREAD)
1977 posix_threads=yes
1978 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001979else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001980 if test ! -z "$with_threads" -a -d "$with_threads"
1981 then LDFLAGS="$LDFLAGS -L$with_threads"
1982 fi
1983 if test ! -z "$withval" -a -d "$withval"
1984 then LDFLAGS="$LDFLAGS -L$withval"
1985 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001986
1987 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001988 # define _POSIX_THREADS in unistd.h. Some apparently don't
1989 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001990 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1991 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001992 [
1993#include <unistd.h>
1994#ifdef _POSIX_THREADS
1995yes
1996#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001997 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1998 AC_MSG_RESULT($unistd_defines_pthreads)
1999
Martin v. Löwis130fb172001-07-19 11:00:41 +00002000 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002001 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2002 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002003 AC_DEFINE(HURD_C_THREADS, 1,
2004 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002005 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002006 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002007 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2008 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002009 AC_DEFINE(MACH_C_THREADS, 1,
2010 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002011 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002012 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002013 AC_ARG_WITH([pth],
2014 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2015 [AC_MSG_RESULT($withval)
2016 AC_DEFINE([WITH_THREAD])
2017 AC_DEFINE([HAVE_PTH], 1,
2018 [Define if you have GNU PTH threads.])
2019 LIBS="-lpth $LIBS"
2020 THREADOBJ="Python/thread.o"],
2021 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002022
2023 # Just looking for pthread_create in libpthread is not enough:
2024 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2025 # So we really have to include pthread.h, and then link.
2026 _libs=$LIBS
2027 LIBS="$LIBS -lpthread"
2028 AC_MSG_CHECKING([for pthread_create in -lpthread])
2029 AC_TRY_LINK([#include <pthread.h>
2030
2031void * start_routine (void *arg) { exit (0); }], [
2032pthread_create (NULL, NULL, start_routine, NULL)], [
2033 AC_MSG_RESULT(yes)
2034 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002035 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002036 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002037 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002038 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002039 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002040 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002041 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2042 AC_DEFINE(ATHEOS_THREADS, 1,
2043 [Define this if you have AtheOS threads.])
2044 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002045 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002046 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002047 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002048 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002049 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002050 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002051 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002052 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002053 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002054 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002055 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002056 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002057 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002058 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002059 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002060 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002061 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002062 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002063
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002064 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2065 LIBS="$LIBS -lmpc"
2066 THREADOBJ="Python/thread.o"
2067 USE_THREAD_MODULE=""])
2068
2069 if test "$posix_threads" != "yes"; then
2070 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2071 LIBS="$LIBS -lthread"
2072 THREADOBJ="Python/thread.o"
2073 USE_THREAD_MODULE=""])
2074 fi
2075
2076 if test "$USE_THREAD_MODULE" != "#"
2077 then
2078 # If the above checks didn't disable threads, (at least) OSF1
2079 # needs this '-threads' argument during linking.
2080 case $ac_sys_system in
2081 OSF1) LDLAST=-threads;;
2082 esac
2083 fi
2084fi
2085
2086if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002087 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002088 AC_DEFINE(_POSIX_THREADS, 1,
2089 [Define if you have POSIX threads,
2090 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002091 fi
2092
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002093 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2094 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002095 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2096 Defined for Solaris 2.6 bug in pthread header.)
2097 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002098 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002099 Define if the Posix semaphores do not work on your system)
2100 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002101 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2102 Define if the Posix semaphores do not work on your system)
2103 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002104 esac
2105
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002106 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2107 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2108 [AC_TRY_RUN([#include <pthread.h>
2109 void *foo(void *parm) {
2110 return NULL;
2111 }
2112 main() {
2113 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002114 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002115 if (pthread_attr_init(&attr)) exit(-1);
2116 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002117 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002118 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002119 }],
2120 ac_cv_pthread_system_supported=yes,
2121 ac_cv_pthread_system_supported=no,
2122 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002123 ])
2124 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2125 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002126 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002127 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002128 AC_CHECK_FUNCS(pthread_sigmask,
2129 [case $ac_sys_system in
2130 CYGWIN*)
2131 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2132 [Define if pthread_sigmask() does not work on your system.])
2133 ;;
2134 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002135fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002136
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002137
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002138# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002139AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002140AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002141AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002142[ --enable-ipv6 Enable ipv6 (with ipv4) support
2143 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002144[ case "$enableval" in
2145 no)
2146 AC_MSG_RESULT(no)
2147 ipv6=no
2148 ;;
2149 *) AC_MSG_RESULT(yes)
2150 AC_DEFINE(ENABLE_IPV6)
2151 ipv6=yes
2152 ;;
2153 esac ],
2154
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002155[
2156dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002157 AC_TRY_RUN([ /* AF_INET6 available check */
2158#include <sys/types.h>
2159#include <sys/socket.h>
2160main()
2161{
2162 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2163 exit(1);
2164 else
2165 exit(0);
2166}
2167],
2168 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002169 ipv6=yes,
2170 AC_MSG_RESULT(no)
2171 ipv6=no,
2172 AC_MSG_RESULT(no)
2173 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002174)
2175
2176if test "$ipv6" = "yes"; then
2177 AC_MSG_CHECKING(if RFC2553 API is available)
2178 AC_TRY_COMPILE([#include <sys/types.h>
2179#include <netinet/in.h>],
2180 [struct sockaddr_in6 x;
2181x.sin6_scope_id;],
2182 AC_MSG_RESULT(yes)
2183 ipv6=yes,
2184 AC_MSG_RESULT(no, IPv6 disabled)
2185 ipv6=no)
2186fi
2187
2188if test "$ipv6" = "yes"; then
2189 AC_DEFINE(ENABLE_IPV6)
2190fi
2191])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002192
2193ipv6type=unknown
2194ipv6lib=none
2195ipv6trylibc=no
2196
2197if test "$ipv6" = "yes"; then
2198 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002199 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2200 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002201 case $i in
2202 inria)
2203 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002204 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002205#include <netinet/in.h>
2206#ifdef IPV6_INRIA_VERSION
2207yes
2208#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002209 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002210 ;;
2211 kame)
2212 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002213 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002214#include <netinet/in.h>
2215#ifdef __KAME__
2216yes
2217#endif],
2218 [ipv6type=$i;
2219 ipv6lib=inet6
2220 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002221 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002222 ;;
2223 linux-glibc)
2224 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002225 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002226#include <features.h>
2227#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2228yes
2229#endif],
2230 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002231 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002232 ;;
2233 linux-inet6)
2234 dnl http://www.v6.linux.or.jp/
2235 if test -d /usr/inet6; then
2236 ipv6type=$i
2237 ipv6lib=inet6
2238 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002239 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002240 fi
2241 ;;
2242 solaris)
2243 if test -f /etc/netconfig; then
2244 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2245 ipv6type=$i
2246 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002247 fi
2248 fi
2249 ;;
2250 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002251 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252#include <sys/param.h>
2253#ifdef _TOSHIBA_INET6
2254yes
2255#endif],
2256 [ipv6type=$i;
2257 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002258 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002259 ;;
2260 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002261 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002262#include </usr/local/v6/include/sys/v6config.h>
2263#ifdef __V6D__
2264yes
2265#endif],
2266 [ipv6type=$i;
2267 ipv6lib=v6;
2268 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002269 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002270 ;;
2271 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002272 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002273#include <sys/param.h>
2274#ifdef _ZETA_MINAMI_INET6
2275yes
2276#endif],
2277 [ipv6type=$i;
2278 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002279 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002280 ;;
2281 esac
2282 if test "$ipv6type" != "unknown"; then
2283 break
2284 fi
2285 done
2286 AC_MSG_RESULT($ipv6type)
2287fi
2288
2289if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2290 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2291 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2292 echo "using lib$ipv6lib"
2293 else
2294 if test $ipv6trylibc = "yes"; then
2295 echo "using libc"
2296 else
2297 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2298 echo "You need to fetch lib$ipv6lib.a from appropriate"
2299 echo 'ipv6 kit and compile beforehand.'
2300 exit 1
2301 fi
2302 fi
2303fi
2304
Georg Brandl93de2162008-07-16 02:21:06 +00002305AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2306AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2307 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2308 AC_MSG_RESULT(yes),
2309 AC_MSG_RESULT(no)
2310)
2311
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002312# Check for --with-doc-strings
2313AC_MSG_CHECKING(for --with-doc-strings)
2314AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002315 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002316
2317if test -z "$with_doc_strings"
2318then with_doc_strings="yes"
2319fi
2320if test "$with_doc_strings" != "no"
2321then
2322 AC_DEFINE(WITH_DOC_STRINGS, 1,
2323 [Define if you want documentation strings in extension modules])
2324fi
2325AC_MSG_RESULT($with_doc_strings)
2326
Neil Schemenauera35c6882001-02-27 04:45:05 +00002327# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002328AC_MSG_CHECKING(for --with-tsc)
2329AC_ARG_WITH(tsc,
2330[ --with(out)-tsc enable/disable timestamp counter profile], [
2331if test "$withval" != no
2332then
2333 AC_DEFINE(WITH_TSC, 1,
2334 [Define to profile with the Pentium timestamp counter])
2335 AC_MSG_RESULT(yes)
2336else AC_MSG_RESULT(no)
2337fi],
2338[AC_MSG_RESULT(no)])
2339
2340# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002341AC_MSG_CHECKING(for --with-pymalloc)
2342AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002343 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002344
2345if test -z "$with_pymalloc"
2346then with_pymalloc="yes"
2347fi
2348if test "$with_pymalloc" != "no"
2349then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002350 AC_DEFINE(WITH_PYMALLOC, 1,
2351 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002352fi
2353AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002354
Barry Warsawef82cd72000-06-30 16:21:01 +00002355# Check for --with-wctype-functions
2356AC_MSG_CHECKING(for --with-wctype-functions)
2357AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002358 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2359[
Barry Warsawef82cd72000-06-30 16:21:01 +00002360if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002361then
2362 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2363 [Define if you want wctype.h functions to be used instead of the
2364 one supplied by Python itself. (see Include/unicodectype.h).])
2365 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002366else AC_MSG_RESULT(no)
2367fi],
2368[AC_MSG_RESULT(no)])
2369
Guido van Rossum68242b51996-05-28 22:53:03 +00002370# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002371AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002372DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002373
Guido van Rossume97ee181999-12-20 21:27:22 +00002374# the dlopen() function means we might want to use dynload_shlib.o. some
2375# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002376AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002377
2378# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2379# loading of modules.
2380AC_SUBST(DYNLOADFILE)
2381AC_MSG_CHECKING(DYNLOADFILE)
2382if test -z "$DYNLOADFILE"
2383then
2384 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002385 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2386 if test "$ac_cv_func_dlopen" = yes
2387 then DYNLOADFILE="dynload_shlib.o"
2388 else DYNLOADFILE="dynload_aix.o"
2389 fi
2390 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002391 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002392 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2393 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002394 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002395 *)
2396 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2397 # out any dynamic loading
2398 if test "$ac_cv_func_dlopen" = yes
2399 then DYNLOADFILE="dynload_shlib.o"
2400 else DYNLOADFILE="dynload_stub.o"
2401 fi
2402 ;;
2403 esac
2404fi
2405AC_MSG_RESULT($DYNLOADFILE)
2406if test "$DYNLOADFILE" != "dynload_stub.o"
2407then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002408 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2409 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002410fi
2411
Jack Jansenc49e5b72001-06-19 15:00:23 +00002412# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2413
2414AC_SUBST(MACHDEP_OBJS)
2415AC_MSG_CHECKING(MACHDEP_OBJS)
2416if test -z "$MACHDEP_OBJS"
2417then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002418 MACHDEP_OBJS=$extra_machdep_objs
2419else
2420 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002421fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002422AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002423
Guido van Rossum627b2d71993-12-24 10:39:16 +00002424# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002425AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2426 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002427 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002428 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002429 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002430 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002431 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002432 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2433 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002434 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002435 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002436 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002437 truncate uname unsetenv utimes waitpid wait3 wait4 \
2438 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002439
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002440# For some functions, having a definition is not sufficient, since
2441# we want to take their address.
2442AC_MSG_CHECKING(for chroot)
2443AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2444 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2445 AC_MSG_RESULT(yes),
2446 AC_MSG_RESULT(no)
2447)
2448AC_MSG_CHECKING(for link)
2449AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2450 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2451 AC_MSG_RESULT(yes),
2452 AC_MSG_RESULT(no)
2453)
2454AC_MSG_CHECKING(for symlink)
2455AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2456 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2457 AC_MSG_RESULT(yes),
2458 AC_MSG_RESULT(no)
2459)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002460AC_MSG_CHECKING(for fchdir)
2461AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2462 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2463 AC_MSG_RESULT(yes),
2464 AC_MSG_RESULT(no)
2465)
2466AC_MSG_CHECKING(for fsync)
2467AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002468 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002469 AC_MSG_RESULT(yes),
2470 AC_MSG_RESULT(no)
2471)
2472AC_MSG_CHECKING(for fdatasync)
2473AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2474 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2475 AC_MSG_RESULT(yes),
2476 AC_MSG_RESULT(no)
2477)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002478AC_MSG_CHECKING(for epoll)
2479AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2480 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2481 AC_MSG_RESULT(yes),
2482 AC_MSG_RESULT(no)
2483)
2484AC_MSG_CHECKING(for kqueue)
2485AC_TRY_COMPILE([
2486#include <sys/types.h>
2487#include <sys/event.h>
2488 ], int x=kqueue(),
2489 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2490 AC_MSG_RESULT(yes),
2491 AC_MSG_RESULT(no)
2492)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002493# On some systems (eg. FreeBSD 5), we would find a definition of the
2494# functions ctermid_r, setgroups in the library, but no prototype
2495# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2496# address to avoid compiler warnings and potential miscompilations
2497# because of the missing prototypes.
2498
2499AC_MSG_CHECKING(for ctermid_r)
2500AC_TRY_COMPILE([
2501#include "confdefs.h"
2502#include <stdio.h>
2503], void* p = ctermid_r,
2504 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2505 AC_MSG_RESULT(yes),
2506 AC_MSG_RESULT(no)
2507)
2508
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002509AC_MSG_CHECKING(for flock)
2510AC_TRY_COMPILE([
2511#include "confdefs.h"
2512#include <sys/file.h>
2513], void* p = flock,
2514 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2515 AC_MSG_RESULT(yes),
2516 AC_MSG_RESULT(no)
2517)
2518
2519AC_MSG_CHECKING(for getpagesize)
2520AC_TRY_COMPILE([
2521#include "confdefs.h"
2522#include <unistd.h>
2523], void* p = getpagesize,
2524 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2525 AC_MSG_RESULT(yes),
2526 AC_MSG_RESULT(no)
2527)
2528
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002529dnl check for true
2530AC_CHECK_PROGS(TRUE, true, /bin/true)
2531
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002532dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2533dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002534AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002535 AC_CHECK_LIB(resolv, inet_aton)
2536)
2537
Christian Heimesd0764e22007-12-04 15:00:33 +00002538# On Tru64, chflags seems to be present, but calling it will
2539# exit Python
2540AC_MSG_CHECKING(for chflags)
2541AC_TRY_RUN([
2542#include <sys/stat.h>
2543#include <unistd.h>
2544int main(int argc, char*argv[])
2545{
2546 if(chflags(argv[0], 0) != 0)
2547 return 1;
2548 return 0;
2549}
2550],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2551 AC_MSG_RESULT(yes),
2552 AC_MSG_RESULT(no)
2553)
2554
2555AC_MSG_CHECKING(for lchflags)
2556AC_TRY_RUN([
2557#include <sys/stat.h>
2558#include <unistd.h>
2559int main(int argc, char*argv[])
2560{
2561 if(lchflags(argv[0], 0) != 0)
2562 return 1;
2563 return 0;
2564}
2565],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no)
2568)
2569
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002570dnl Check if system zlib has *Copy() functions
2571dnl
2572dnl On MacOSX the linker will search for dylibs on the entire linker path
2573dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2574dnl to revert to a more traditional unix behaviour and make it possible to
2575dnl override the system libz with a local static library of libz. Temporarily
2576dnl add that flag to our CFLAGS as well to ensure that we check the version
2577dnl of libz that will be used by setup.py.
2578dnl The -L/usr/local/lib is needed as wel to get the same compilation
2579dnl environment as setup.py (and leaving it out can cause configure to use the
2580dnl wrong version of the library)
2581case $ac_sys_system/$ac_sys_release in
2582Darwin/*)
2583 _CUR_CFLAGS="${CFLAGS}"
2584 _CUR_LDFLAGS="${LDFLAGS}"
2585 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2586 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2587 ;;
2588esac
2589
2590AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2591
2592case $ac_sys_system/$ac_sys_release in
2593Darwin/*)
2594 CFLAGS="${_CUR_CFLAGS}"
2595 LDFLAGS="${_CUR_LDFLAGS}"
2596 ;;
2597esac
2598
Martin v. Löwise9416172003-05-03 10:12:45 +00002599AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002600AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002601#include "confdefs.h"
2602#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002603], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002604 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2605 AC_MSG_RESULT(yes),
2606 AC_MSG_RESULT(no)
2607)
2608
2609AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002610AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002611#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002612#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002613#include <sys/socket.h>
2614#include <netinet/in.h>
2615#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002616], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002617 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2618 AC_MSG_RESULT(yes),
2619 AC_MSG_RESULT(no)
2620)
2621
2622AC_MSG_CHECKING(for inet_pton)
2623AC_TRY_COMPILE([
2624#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002625#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002626#include <sys/socket.h>
2627#include <netinet/in.h>
2628#include <arpa/inet.h>
2629], void* p = inet_pton,
2630 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2631 AC_MSG_RESULT(yes),
2632 AC_MSG_RESULT(no)
2633)
2634
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002635# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002636AC_MSG_CHECKING(for setgroups)
2637AC_TRY_COMPILE([
2638#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002639#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002640#ifdef HAVE_GRP_H
2641#include <grp.h>
2642#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002643],
2644void* p = setgroups,
2645 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2646 AC_MSG_RESULT(yes),
2647 AC_MSG_RESULT(no)
2648)
2649
Fred Drake8cef4cf2000-06-28 16:40:38 +00002650# check for openpty and forkpty
2651
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002652AC_CHECK_FUNCS(openpty,,
2653 AC_CHECK_LIB(util,openpty,
2654 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2655 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2656 )
2657)
2658AC_CHECK_FUNCS(forkpty,,
2659 AC_CHECK_LIB(util,forkpty,
2660 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2661 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2662 )
2663)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002664
Christian Heimesb186d002008-03-18 15:15:01 +00002665# Stuff for expat.
2666AC_CHECK_FUNCS(memmove)
2667
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002668# check for long file support functions
2669AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2670
Christian Heimesb186d002008-03-18 15:15:01 +00002671AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002672AC_CHECK_FUNCS(getpgrp,
2673 AC_TRY_COMPILE([#include <unistd.h>],
2674 [getpgrp(0);],
2675 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2676 [Define if getpgrp() must be called as getpgrp(0).])
2677 )
2678)
Jack Jansen150753c2003-03-29 22:07:47 +00002679AC_CHECK_FUNCS(setpgrp,
2680 AC_TRY_COMPILE([#include <unistd.h>],
2681 [setpgrp(0,0);],
2682 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2683 [Define if setpgrp() must be called as setpgrp(0, 0).])
2684 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002685)
2686AC_CHECK_FUNCS(gettimeofday,
2687 AC_TRY_COMPILE([#include <sys/time.h>],
2688 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2689 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2690 [Define if gettimeofday() does not have second (timezone) argument
2691 This is the case on Motorola V4 (R40V4.2)])
2692 )
2693)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002694
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002695AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002696AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002697#if defined(MAJOR_IN_MKDEV)
2698#include <sys/mkdev.h>
2699#elif defined(MAJOR_IN_SYSMACROS)
2700#include <sys/sysmacros.h>
2701#else
2702#include <sys/types.h>
2703#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002704],[
2705 makedev(major(0),minor(0));
2706],[
2707 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2708 [Define to 1 if you have the device macros.])
2709 AC_MSG_RESULT(yes)
2710],[
2711 AC_MSG_RESULT(no)
2712])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002713
2714# On OSF/1 V5.1, getaddrinfo is available, but a define
2715# for [no]getaddrinfo in netdb.h.
2716AC_MSG_CHECKING(for getaddrinfo)
2717AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002718#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002719#include <sys/socket.h>
2720#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002721#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002722],[
2723getaddrinfo(NULL, NULL, NULL, NULL);
2724], [
2725AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002726AC_MSG_CHECKING(getaddrinfo bug)
2727AC_TRY_RUN([
2728#include <sys/types.h>
2729#include <netdb.h>
2730#include <string.h>
2731#include <sys/socket.h>
2732#include <netinet/in.h>
2733
2734main()
2735{
2736 int passive, gaierr, inet4 = 0, inet6 = 0;
2737 struct addrinfo hints, *ai, *aitop;
2738 char straddr[INET6_ADDRSTRLEN], strport[16];
2739
2740 for (passive = 0; passive <= 1; passive++) {
2741 memset(&hints, 0, sizeof(hints));
2742 hints.ai_family = AF_UNSPEC;
2743 hints.ai_flags = passive ? AI_PASSIVE : 0;
2744 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002745 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002746 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2747 (void)gai_strerror(gaierr);
2748 goto bad;
2749 }
2750 for (ai = aitop; ai; ai = ai->ai_next) {
2751 if (ai->ai_addr == NULL ||
2752 ai->ai_addrlen == 0 ||
2753 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2754 straddr, sizeof(straddr), strport, sizeof(strport),
2755 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2756 goto bad;
2757 }
2758 switch (ai->ai_family) {
2759 case AF_INET:
2760 if (strcmp(strport, "54321") != 0) {
2761 goto bad;
2762 }
2763 if (passive) {
2764 if (strcmp(straddr, "0.0.0.0") != 0) {
2765 goto bad;
2766 }
2767 } else {
2768 if (strcmp(straddr, "127.0.0.1") != 0) {
2769 goto bad;
2770 }
2771 }
2772 inet4++;
2773 break;
2774 case AF_INET6:
2775 if (strcmp(strport, "54321") != 0) {
2776 goto bad;
2777 }
2778 if (passive) {
2779 if (strcmp(straddr, "::") != 0) {
2780 goto bad;
2781 }
2782 } else {
2783 if (strcmp(straddr, "::1") != 0) {
2784 goto bad;
2785 }
2786 }
2787 inet6++;
2788 break;
2789 case AF_UNSPEC:
2790 goto bad;
2791 break;
2792 default:
2793 /* another family support? */
2794 break;
2795 }
2796 }
2797 }
2798
2799 if (!(inet4 == 0 || inet4 == 2))
2800 goto bad;
2801 if (!(inet6 == 0 || inet6 == 2))
2802 goto bad;
2803
2804 if (aitop)
2805 freeaddrinfo(aitop);
2806 exit(0);
2807
2808 bad:
2809 if (aitop)
2810 freeaddrinfo(aitop);
2811 exit(1);
2812}
2813],
2814AC_MSG_RESULT(good)
2815buggygetaddrinfo=no,
2816AC_MSG_RESULT(buggy)
2817buggygetaddrinfo=yes,
2818AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002819buggygetaddrinfo=yes)], [
2820AC_MSG_RESULT(no)
2821buggygetaddrinfo=yes
2822])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002823
2824if test "$buggygetaddrinfo" = "yes"; then
2825 if test "$ipv6" = "yes"; then
2826 echo 'Fatal: You must get working getaddrinfo() function.'
2827 echo ' or you can specify "--disable-ipv6"'.
2828 exit 1
2829 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002830else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002831 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002832fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002833AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002834
Guido van Rossum627b2d71993-12-24 10:39:16 +00002835# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002836AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002837AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002838AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002839AC_CHECK_MEMBERS([struct stat.st_rdev])
2840AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002841AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002842AC_CHECK_MEMBERS([struct stat.st_gen])
2843AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002844AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002845
2846AC_MSG_CHECKING(for time.h that defines altzone)
2847AC_CACHE_VAL(ac_cv_header_time_altzone,
2848[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2849 ac_cv_header_time_altzone=yes,
2850 ac_cv_header_time_altzone=no)])
2851AC_MSG_RESULT($ac_cv_header_time_altzone)
2852if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002853 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002854fi
2855
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002856was_it_defined=no
2857AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002858AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002859#include <sys/types.h>
2860#include <sys/select.h>
2861#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002862], [;], [
2863 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2864 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2865 (which you can't on SCO ODT 3.0).])
2866 was_it_defined=yes
2867])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002868AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002869
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002870AC_MSG_CHECKING(for addrinfo)
2871AC_CACHE_VAL(ac_cv_struct_addrinfo,
2872AC_TRY_COMPILE([
2873# include <netdb.h>],
2874 [struct addrinfo a],
2875 ac_cv_struct_addrinfo=yes,
2876 ac_cv_struct_addrinfo=no))
2877AC_MSG_RESULT($ac_cv_struct_addrinfo)
2878if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002879 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002880fi
2881
2882AC_MSG_CHECKING(for sockaddr_storage)
2883AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2884AC_TRY_COMPILE([
2885# include <sys/types.h>
2886# include <sys/socket.h>],
2887 [struct sockaddr_storage s],
2888 ac_cv_struct_sockaddr_storage=yes,
2889 ac_cv_struct_sockaddr_storage=no))
2890AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2891if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002892 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002893fi
2894
Guido van Rossum627b2d71993-12-24 10:39:16 +00002895# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002896
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002897AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002898AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002899
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002900works=no
2901AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2903 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2904)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002905AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002906
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002907works=no
2908AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002909AC_TRY_COMPILE([], [signed char c;], works=yes,
2910 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2911)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002912AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002913
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002914have_prototypes=no
2915AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002916AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2917 AC_DEFINE(HAVE_PROTOTYPES, 1,
2918 [Define if your compiler supports function prototype])
2919 have_prototypes=yes
2920])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002921AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002922
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002923works=no
2924AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002926#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002927int foo(int x, ...) {
2928 va_list va;
2929 va_start(va, x);
2930 va_arg(va, int);
2931 va_arg(va, char *);
2932 va_arg(va, double);
2933 return 0;
2934}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002935], [return foo(10, "", 3.14);], [
2936 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2937 [Define if your compiler supports variable length function prototypes
2938 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2939 works=yes
2940])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002941AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002942
Dave Cole331708b2004-08-09 04:51:41 +00002943# check for socketpair
2944AC_MSG_CHECKING(for socketpair)
2945AC_TRY_COMPILE([
2946#include <sys/types.h>
2947#include <sys/socket.h>
2948], void *x=socketpair,
2949 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2950 AC_MSG_RESULT(yes),
2951 AC_MSG_RESULT(no)
2952)
2953
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002954# check if sockaddr has sa_len member
2955AC_MSG_CHECKING(if sockaddr has sa_len member)
2956AC_TRY_COMPILE([#include <sys/types.h>
2957#include <sys/socket.h>],
2958[struct sockaddr x;
2959x.sa_len = 0;],
2960 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002961 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002962 AC_MSG_RESULT(no))
2963
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002964va_list_is_array=no
2965AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002966AC_TRY_COMPILE([
2967#ifdef HAVE_STDARG_PROTOTYPES
2968#include <stdarg.h>
2969#else
2970#include <varargs.h>
2971#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002972], [va_list list1, list2; list1 = list2;], , [
2973 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2974 va_list_is_array=yes
2975])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002976AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002977
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002978# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002979AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2980 [Define this if you have some version of gethostbyname_r()])
2981
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002982AC_CHECK_FUNC(gethostbyname_r, [
2983 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2984 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2985 OLD_CFLAGS=$CFLAGS
2986 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2987 AC_TRY_COMPILE([
2988# include <netdb.h>
2989 ], [
2990 char *name;
2991 struct hostent *he, *res;
2992 char buffer[2048];
2993 int buflen = 2048;
2994 int h_errnop;
2995
2996 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2997 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002998 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002999 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3000 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003001 AC_MSG_RESULT(yes)
3002 ], [
3003 AC_MSG_RESULT(no)
3004 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3005 AC_TRY_COMPILE([
3006# include <netdb.h>
3007 ], [
3008 char *name;
3009 struct hostent *he;
3010 char buffer[2048];
3011 int buflen = 2048;
3012 int h_errnop;
3013
3014 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3015 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003016 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003017 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3018 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003019 AC_MSG_RESULT(yes)
3020 ], [
3021 AC_MSG_RESULT(no)
3022 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3023 AC_TRY_COMPILE([
3024# include <netdb.h>
3025 ], [
3026 char *name;
3027 struct hostent *he;
3028 struct hostent_data data;
3029
3030 (void) gethostbyname_r(name, he, &data);
3031 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003032 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003033 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3034 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003035 AC_MSG_RESULT(yes)
3036 ], [
3037 AC_MSG_RESULT(no)
3038 ])
3039 ])
3040 ])
3041 CFLAGS=$OLD_CFLAGS
3042], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003043 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003044])
3045AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3046AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3047AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003048AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003049AC_SUBST(HAVE_GETHOSTBYNAME)
3050
Guido van Rossum627b2d71993-12-24 10:39:16 +00003051# checks for system services
3052# (none yet)
3053
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003054# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003055AC_CHECK_FUNC(__fpu_control,
3056 [],
3057 [AC_CHECK_LIB(ieee, __fpu_control)
3058])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003059
Guido van Rossum93274221997-05-09 02:42:00 +00003060# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003061AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003062AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003063 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3064[
Guido van Rossum93274221997-05-09 02:42:00 +00003065if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003066then
3067 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3068 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3069 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003070else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003071fi],
3072[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003073
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003074# check for --with-libm=...
3075AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003076case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003077Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003078*) LIBM=-lm
3079esac
Guido van Rossum93274221997-05-09 02:42:00 +00003080AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003081AC_ARG_WITH(libm,
3082 AC_HELP_STRING(--with-libm=STRING, math library),
3083[
Guido van Rossum93274221997-05-09 02:42:00 +00003084if test "$withval" = no
3085then LIBM=
3086 AC_MSG_RESULT(force LIBM empty)
3087elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003088then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003089 AC_MSG_RESULT(set LIBM="$withval")
3090else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003091fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003092[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003093
3094# check for --with-libc=...
3095AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003096AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003097AC_ARG_WITH(libc,
3098 AC_HELP_STRING(--with-libc=STRING, C library),
3099[
Guido van Rossum93274221997-05-09 02:42:00 +00003100if test "$withval" = no
3101then LIBC=
3102 AC_MSG_RESULT(force LIBC empty)
3103elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003104then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003105 AC_MSG_RESULT(set LIBC="$withval")
3106else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003107fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003108[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003109
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003110# **************************************************
3111# * Check for various properties of floating point *
3112# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003113
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003114AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3115AC_CACHE_VAL(ac_cv_little_endian_double, [
3116AC_TRY_RUN([
3117#include <string.h>
3118int main() {
3119 double x = 9006104071832581.0;
3120 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3121 return 0;
3122 else
3123 return 1;
3124}
3125],
3126ac_cv_little_endian_double=yes,
3127ac_cv_little_endian_double=no,
3128ac_cv_little_endian_double=no)])
3129AC_MSG_RESULT($ac_cv_little_endian_double)
3130if test "$ac_cv_little_endian_double" = yes
3131then
3132 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3133 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3134 with the least significant byte first])
3135fi
3136
3137AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3138AC_CACHE_VAL(ac_cv_big_endian_double, [
3139AC_TRY_RUN([
3140#include <string.h>
3141int main() {
3142 double x = 9006104071832581.0;
3143 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3144 return 0;
3145 else
3146 return 1;
3147}
3148],
3149ac_cv_big_endian_double=yes,
3150ac_cv_big_endian_double=no,
3151ac_cv_big_endian_double=no)])
3152AC_MSG_RESULT($ac_cv_big_endian_double)
3153if test "$ac_cv_big_endian_double" = yes
3154then
3155 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3156 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3157 with the most significant byte first])
3158fi
3159
3160# Some ARM platforms use a mixed-endian representation for doubles.
3161# While Python doesn't currently have full support for these platforms
3162# (see e.g., issue 1762561), we can at least make sure that float <-> string
3163# conversions work.
3164AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3165AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3166AC_TRY_RUN([
3167#include <string.h>
3168int main() {
3169 double x = 9006104071832581.0;
3170 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3171 return 0;
3172 else
3173 return 1;
3174}
3175],
3176ac_cv_mixed_endian_double=yes,
3177ac_cv_mixed_endian_double=no,
3178ac_cv_mixed_endian_double=no)])
3179AC_MSG_RESULT($ac_cv_mixed_endian_double)
3180if test "$ac_cv_mixed_endian_double" = yes
3181then
3182 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3183 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3184 in ARM mixed-endian order (byte order 45670123)])
3185fi
3186
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003187# The short float repr introduced in Python 3.1 requires the
3188# correctly-rounded string <-> double conversion functions from
3189# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3190# rounding; this is a problem on x86, where the x87 FPU has a default
3191# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3192# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003193if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3194then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003195 # Check that it's okay to use gcc inline assembler to get and set
3196 # x87 control word. It should be, but you never know...
3197 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3198 AC_TRY_COMPILE([], [
3199 unsigned short cw;
3200 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3201 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3202 ],
3203 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3204 AC_MSG_RESULT($have_gcc_asm_for_x87)
3205 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003206 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003207 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3208 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003209 fi
3210fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003211
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003212# Detect whether system arithmetic is subject to x87-style double
3213# rounding issues. The result of this test has little meaning on non
3214# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3215# mode is round-to-nearest and double rounding issues are present, and
3216# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3217AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003218# $BASECFLAGS may affect the result
3219ac_save_cc="$CC"
3220CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003221AC_TRY_RUN([
3222#include <stdlib.h>
3223#include <math.h>
3224int main() {
3225 volatile double x, y, z;
3226 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3227 x = 0.99999999999999989; /* 1-2**-53 */
3228 y = 1./x;
3229 if (y != 1.)
3230 exit(0);
3231 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3232 x = 1e16;
3233 y = 2.99999;
3234 z = x + y;
3235 if (z != 1e16+4.)
3236 exit(0);
3237 /* both tests show evidence of double rounding */
3238 exit(1);
3239}
3240],
3241ac_cv_x87_double_rounding=no,
3242ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003243ac_cv_x87_double_rounding=no)
3244CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003245AC_MSG_RESULT($ac_cv_x87_double_rounding)
3246if test "$ac_cv_x87_double_rounding" = yes
3247then
3248 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3249 [Define if arithmetic is subject to x87-style double rounding issue])
3250fi
3251
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003252# ************************************
3253# * Check for mathematical functions *
3254# ************************************
3255
3256LIBS_SAVE=$LIBS
3257LIBS="$LIBS $LIBM"
3258
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003259# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3260# -0. on some architectures.
3261AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3262AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3263AC_TRY_RUN([
3264#include <math.h>
3265#include <stdlib.h>
3266int main() {
3267 /* return 0 if either negative zeros don't exist
3268 on this platform or if negative zeros exist
3269 and tanh(-0.) == -0. */
3270 if (atan2(0., -1.) == atan2(-0., -1.) ||
3271 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3272 else exit(1);
3273}
3274],
3275ac_cv_tanh_preserves_zero_sign=yes,
3276ac_cv_tanh_preserves_zero_sign=no,
3277ac_cv_tanh_preserves_zero_sign=no)])
3278AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3279if test "$ac_cv_tanh_preserves_zero_sign" = yes
3280then
3281 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3282 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3283fi
3284
Mark Dickinsonf2537862009-04-18 13:58:18 +00003285AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003286AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003287
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003288LIBS=$LIBS_SAVE
3289
Mark Dickinson10683072009-04-18 21:18:19 +00003290# Multiprocessing check for broken sem_getvalue
3291AC_MSG_CHECKING(for broken sem_getvalue)
3292AC_TRY_RUN([
3293#include <unistd.h>
3294#include <fcntl.h>
3295#include <stdio.h>
3296#include <semaphore.h>
3297#include <sys/stat.h>
3298
3299int main(void){
3300 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3301 int count;
3302 int res;
3303 if(a==SEM_FAILED){
3304 perror("sem_open");
3305 return 1;
3306
3307 }
3308 res = sem_getvalue(a, &count);
3309 sem_close(a);
3310 return res==-1 ? 1 : 0;
3311}
3312]
3313,AC_MSG_RESULT(no),
3314 AC_MSG_RESULT(yes)
3315 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1, define to 1 if your sem_getvalue is broken.)
3316)
3317
Mark Dickinsonbd792642009-03-18 20:06:12 +00003318# determine what size digit to use for Python's longs
3319AC_MSG_CHECKING([digit size for Python's longs])
3320AC_ARG_ENABLE(big-digits,
3321AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3322[case $enable_big_digits in
3323yes)
3324 enable_big_digits=30 ;;
3325no)
3326 enable_big_digits=15 ;;
3327[15|30])
3328 ;;
3329*)
3330 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3331esac
3332AC_MSG_RESULT($enable_big_digits)
3333AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3334],
3335[AC_MSG_RESULT(no value specified)])
3336
Guido van Rossumef2255b2000-03-10 22:30:29 +00003337# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003338AC_CHECK_HEADER(wchar.h, [
3339 AC_DEFINE(HAVE_WCHAR_H, 1,
3340 [Define if the compiler provides a wchar.h header file.])
3341 wchar_h="yes"
3342],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003343wchar_h="no"
3344)
3345
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003346# determine wchar_t size
3347if test "$wchar_h" = yes
3348then
Guido van Rossum67b26592001-10-20 14:21:45 +00003349 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003350fi
3351
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003352AC_MSG_CHECKING(for UCS-4 tcl)
3353have_ucs4_tcl=no
3354AC_TRY_COMPILE([
3355#include <tcl.h>
3356#if TCL_UTF_MAX != 6
3357# error "NOT UCS4_TCL"
3358#endif], [], [
3359 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3360 have_ucs4_tcl=yes
3361])
3362AC_MSG_RESULT($have_ucs4_tcl)
3363
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003364# check whether wchar_t is signed or not
3365if test "$wchar_h" = yes
3366then
3367 # check whether wchar_t is signed or not
3368 AC_MSG_CHECKING(whether wchar_t is signed)
3369 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3370 AC_TRY_RUN([
3371 #include <wchar.h>
3372 int main()
3373 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003374 /* Success: exit code 0 */
3375 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003376 }
3377 ],
3378 ac_cv_wchar_t_signed=yes,
3379 ac_cv_wchar_t_signed=no,
3380 ac_cv_wchar_t_signed=yes)])
3381 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3382fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003383
Georg Brandl52d168a2008-01-07 18:10:24 +00003384AC_MSG_CHECKING(what type to use for str)
3385AC_ARG_WITH(wide-unicode,
3386 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3387[
3388if test "$withval" != no
3389then unicode_size="4"
3390else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003391fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003392],
3393[
3394case "$have_ucs4_tcl" in
3395 yes) unicode_size="4" ;;
3396 *) unicode_size="2" ;;
3397esac
3398])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003399
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003400AH_TEMPLATE(Py_UNICODE_SIZE,
3401 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003402case "$unicode_size" in
3403 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3404 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003405esac
3406
Martin v. Löwis11437992002-04-12 09:54:03 +00003407AH_TEMPLATE(PY_UNICODE_TYPE,
3408 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003409
Georg Brandl52d168a2008-01-07 18:10:24 +00003410# wchar_t is only usable if it maps to an unsigned type
3411if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003412 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003413then
3414 PY_UNICODE_TYPE="wchar_t"
3415 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3416 [Define if you have a useable wchar_t type defined in wchar.h; useable
3417 means wchar_t must be an unsigned type with at least 16 bits. (see
3418 Include/unicodeobject.h).])
3419 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3420elif test "$ac_cv_sizeof_short" = "$unicode_size"
3421then
3422 PY_UNICODE_TYPE="unsigned short"
3423 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3424elif test "$ac_cv_sizeof_long" = "$unicode_size"
3425then
3426 PY_UNICODE_TYPE="unsigned long"
3427 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3428else
3429 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003430fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003431AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003432
3433# check for endianness
3434AC_C_BIGENDIAN
3435
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003436# Check whether right shifting a negative integer extends the sign bit
3437# or fills with zeros (like the Cray J90, according to Tim Peters).
3438AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003439AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003440AC_TRY_RUN([
3441int main()
3442{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003443 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003444}
Guido van Rossum3065c942001-09-17 04:03:14 +00003445],
3446ac_cv_rshift_extends_sign=yes,
3447ac_cv_rshift_extends_sign=no,
3448ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003449AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3450if test "$ac_cv_rshift_extends_sign" = no
3451then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003452 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3453 [Define if i>>j for signed int i does not extend the sign bit
3454 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003455fi
3456
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003457# check for getc_unlocked and related locking functions
3458AC_MSG_CHECKING(for getc_unlocked() and friends)
3459AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3460AC_TRY_LINK([#include <stdio.h>],[
3461 FILE *f = fopen("/dev/null", "r");
3462 flockfile(f);
3463 getc_unlocked(f);
3464 funlockfile(f);
3465], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3466AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3467if test "$ac_cv_have_getc_unlocked" = yes
3468then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003469 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3470 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003471fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003472
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003473# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003474# save the value of LIBS so we don't actually link Python with readline
3475LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003476
3477# On some systems we need to link readline to a termcap compatible
3478# library. NOTE: Keep the precedence of listed libraries synchronised
3479# with setup.py.
3480py_cv_lib_readline=no
3481AC_MSG_CHECKING([how to link readline libs])
3482for py_libtermcap in "" ncursesw ncurses curses termcap; do
3483 if test -z "$py_libtermcap"; then
3484 READLINE_LIBS="-lreadline"
3485 else
3486 READLINE_LIBS="-lreadline -l$py_libtermcap"
3487 fi
3488 LIBS="$READLINE_LIBS $LIBS_no_readline"
3489 AC_LINK_IFELSE(
3490 [AC_LANG_CALL([],[readline])],
3491 [py_cv_lib_readline=yes])
3492 if test $py_cv_lib_readline = yes; then
3493 break
3494 fi
3495done
3496# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3497#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003498if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003499 AC_MSG_RESULT([none])
3500else
3501 AC_MSG_RESULT([$READLINE_LIBS])
3502 AC_DEFINE(HAVE_LIBREADLINE, 1,
3503 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003504fi
3505
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003506# check for readline 2.1
3507AC_CHECK_LIB(readline, rl_callback_handler_install,
3508 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003509 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003510
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003511# check for readline 2.2
3512AC_TRY_CPP([#include <readline/readline.h>],
3513have_readline=yes, have_readline=no)
3514if test $have_readline = yes
3515then
3516 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3517 [readline/readline.h],
3518 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3519 [Define if you have readline 2.2]), )
3520fi
3521
Martin v. Löwis0daad592001-09-30 21:09:59 +00003522# check for readline 4.0
3523AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003524 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003525 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003526
Thomas Wouters89d996e2007-09-08 17:39:28 +00003527# also in 4.0
3528AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3529 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003530 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003531
Guido van Rossum353ae582001-07-10 16:45:32 +00003532# check for readline 4.2
3533AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003534 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003535 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003536
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003537# also in readline 4.2
3538AC_TRY_CPP([#include <readline/readline.h>],
3539have_readline=yes, have_readline=no)
3540if test $have_readline = yes
3541then
3542 AC_EGREP_HEADER([extern int rl_catch_signals;],
3543 [readline/readline.h],
3544 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3545 [Define if you can turn off readline's signal handling.]), )
3546fi
3547
Martin v. Löwis82bca632006-02-10 20:49:30 +00003548# End of readline checks: restore LIBS
3549LIBS=$LIBS_no_readline
3550
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003551AC_MSG_CHECKING(for broken nice())
3552AC_CACHE_VAL(ac_cv_broken_nice, [
3553AC_TRY_RUN([
3554int main()
3555{
3556 int val1 = nice(1);
3557 if (val1 != -1 && val1 == nice(2))
3558 exit(0);
3559 exit(1);
3560}
Guido van Rossum3065c942001-09-17 04:03:14 +00003561],
3562ac_cv_broken_nice=yes,
3563ac_cv_broken_nice=no,
3564ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003565AC_MSG_RESULT($ac_cv_broken_nice)
3566if test "$ac_cv_broken_nice" = yes
3567then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003568 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3569 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003570fi
3571
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003572AC_MSG_CHECKING(for broken poll())
3573AC_TRY_RUN([
3574#include <poll.h>
3575
3576int main (void)
3577 {
3578 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3579
3580 close (42);
3581
3582 int poll_test = poll (&poll_struct, 1, 0);
3583
3584 if (poll_test < 0)
3585 {
3586 exit(0);
3587 }
3588 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3589 {
3590 exit(0);
3591 }
3592 else
3593 {
3594 exit(1);
3595 }
3596 }
3597],
3598ac_cv_broken_poll=yes,
3599ac_cv_broken_poll=no,
3600ac_cv_broken_poll=no)
3601AC_MSG_RESULT($ac_cv_broken_poll)
3602if test "$ac_cv_broken_poll" = yes
3603then
3604 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3605 [Define if poll() sets errno on invalid file descriptors.])
3606fi
3607
Brett Cannon43802422005-02-10 20:48:03 +00003608# Before we can test tzset, we need to check if struct tm has a tm_zone
3609# (which is not required by ISO C or UNIX spec) and/or if we support
3610# tzname[]
3611AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003612
Brett Cannon43802422005-02-10 20:48:03 +00003613# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003614AC_MSG_CHECKING(for working tzset())
3615AC_CACHE_VAL(ac_cv_working_tzset, [
3616AC_TRY_RUN([
3617#include <stdlib.h>
3618#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003619#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003620
3621#if HAVE_TZNAME
3622extern char *tzname[];
3623#endif
3624
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003625int main()
3626{
Brett Cannon18367812003-09-19 00:59:16 +00003627 /* Note that we need to ensure that not only does tzset(3)
3628 do 'something' with localtime, but it works as documented
3629 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003630 This includes making sure that tzname is set properly if
3631 tm->tm_zone does not exist since it is the alternative way
3632 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003633
3634 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003635 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003636 */
3637
Brett Cannon43802422005-02-10 20:48:03 +00003638 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003639 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3640
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003641 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003642 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003643 if (localtime(&groundhogday)->tm_hour != 0)
3644 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003645#if HAVE_TZNAME
3646 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3647 if (strcmp(tzname[0], "UTC") ||
3648 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3649 exit(1);
3650#endif
Brett Cannon18367812003-09-19 00:59:16 +00003651
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003652 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003653 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003654 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003655 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003656#if HAVE_TZNAME
3657 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3658 exit(1);
3659#endif
Brett Cannon18367812003-09-19 00:59:16 +00003660
3661 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3662 tzset();
3663 if (localtime(&groundhogday)->tm_hour != 11)
3664 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003665#if HAVE_TZNAME
3666 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3667 exit(1);
3668#endif
3669
3670#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003671 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3672 exit(1);
3673 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3674 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003675#endif
Brett Cannon18367812003-09-19 00:59:16 +00003676
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003677 exit(0);
3678}
3679],
3680ac_cv_working_tzset=yes,
3681ac_cv_working_tzset=no,
3682ac_cv_working_tzset=no)])
3683AC_MSG_RESULT($ac_cv_working_tzset)
3684if test "$ac_cv_working_tzset" = yes
3685then
3686 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3687 [Define if tzset() actually switches the local timezone in a meaningful way.])
3688fi
3689
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003690# Look for subsecond timestamps in struct stat
3691AC_MSG_CHECKING(for tv_nsec in struct stat)
3692AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3693AC_TRY_COMPILE([#include <sys/stat.h>], [
3694struct stat st;
3695st.st_mtim.tv_nsec = 1;
3696],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003697ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003698ac_cv_stat_tv_nsec=no,
3699ac_cv_stat_tv_nsec=no))
3700AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3701if test "$ac_cv_stat_tv_nsec" = yes
3702then
3703 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3704 [Define if you have struct stat.st_mtim.tv_nsec])
3705fi
3706
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003707# Look for BSD style subsecond timestamps in struct stat
3708AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3709AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3710AC_TRY_COMPILE([#include <sys/stat.h>], [
3711struct stat st;
3712st.st_mtimespec.tv_nsec = 1;
3713],
3714ac_cv_stat_tv_nsec2=yes,
3715ac_cv_stat_tv_nsec2=no,
3716ac_cv_stat_tv_nsec2=no))
3717AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3718if test "$ac_cv_stat_tv_nsec2" = yes
3719then
3720 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3721 [Define if you have struct stat.st_mtimensec])
3722fi
3723
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003724# On HP/UX 11.0, mvwdelch is a block with a return statement
3725AC_MSG_CHECKING(whether mvwdelch is an expression)
3726AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3727AC_TRY_COMPILE([#include <curses.h>], [
3728 int rtn;
3729 rtn = mvwdelch(0,0,0);
3730], ac_cv_mvwdelch_is_expression=yes,
3731 ac_cv_mvwdelch_is_expression=no,
3732 ac_cv_mvwdelch_is_expression=yes))
3733AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3734
3735if test "$ac_cv_mvwdelch_is_expression" = yes
3736then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003737 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3738 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003739fi
3740
3741AC_MSG_CHECKING(whether WINDOW has _flags)
3742AC_CACHE_VAL(ac_cv_window_has_flags,
3743AC_TRY_COMPILE([#include <curses.h>], [
3744 WINDOW *w;
3745 w->_flags = 0;
3746], ac_cv_window_has_flags=yes,
3747 ac_cv_window_has_flags=no,
3748 ac_cv_window_has_flags=no))
3749AC_MSG_RESULT($ac_cv_window_has_flags)
3750
3751
3752if test "$ac_cv_window_has_flags" = yes
3753then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003754 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3755 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003756fi
3757
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003758AC_MSG_CHECKING(for is_term_resized)
3759AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3760 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3761 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003762 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003763)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003764
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003765AC_MSG_CHECKING(for resize_term)
3766AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3767 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3768 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003769 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003770)
3771
3772AC_MSG_CHECKING(for resizeterm)
3773AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3774 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3775 AC_MSG_RESULT(yes),
3776 AC_MSG_RESULT(no)
3777)
3778
Thomas Wouters89f507f2006-12-13 04:49:30 +00003779AC_MSG_CHECKING(for /dev/ptmx)
3780
3781if test -r /dev/ptmx
3782then
3783 AC_MSG_RESULT(yes)
3784 AC_DEFINE(HAVE_DEV_PTMX, 1,
3785 [Define if we have /dev/ptmx.])
3786else
3787 AC_MSG_RESULT(no)
3788fi
3789
3790AC_MSG_CHECKING(for /dev/ptc)
3791
3792if test -r /dev/ptc
3793then
3794 AC_MSG_RESULT(yes)
3795 AC_DEFINE(HAVE_DEV_PTC, 1,
3796 [Define if we have /dev/ptc.])
3797else
3798 AC_MSG_RESULT(no)
3799fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003800
Thomas Wouters477c8d52006-05-27 19:21:47 +00003801AC_MSG_CHECKING(for %zd printf() format support)
3802AC_TRY_RUN([#include <stdio.h>
3803#include <stddef.h>
3804#include <string.h>
3805
Christian Heimes2c181612007-12-17 20:04:13 +00003806#ifdef HAVE_SYS_TYPES_H
3807#include <sys/types.h>
3808#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003809
3810#ifdef HAVE_SSIZE_T
3811typedef ssize_t Py_ssize_t;
3812#elif SIZEOF_VOID_P == SIZEOF_LONG
3813typedef long Py_ssize_t;
3814#else
3815typedef int Py_ssize_t;
3816#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003817
Christian Heimes2c181612007-12-17 20:04:13 +00003818int main()
3819{
3820 char buffer[256];
3821
Thomas Wouters477c8d52006-05-27 19:21:47 +00003822 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3823 return 1;
3824
Thomas Wouters89f507f2006-12-13 04:49:30 +00003825 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003826 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003827
3828 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3829 return 1;
3830
3831 if (strcmp(buffer, "-123"))
3832 return 1;
3833
Thomas Wouters477c8d52006-05-27 19:21:47 +00003834 return 0;
3835}],
3836[AC_MSG_RESULT(yes)
3837 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3838 AC_MSG_RESULT(no))
3839
Martin v. Löwis01c04012002-11-11 14:58:44 +00003840AC_CHECK_TYPE(socklen_t,,
3841 AC_DEFINE(socklen_t,int,
3842 Define to `int' if <sys/socket.h> does not define.),[
3843#ifdef HAVE_SYS_TYPES_H
3844#include <sys/types.h>
3845#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003846#ifdef HAVE_SYS_SOCKET_H
3847#include <sys/socket.h>
3848#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003849])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003850
Antoine Pitroufff95302008-09-03 18:58:51 +00003851AC_MSG_CHECKING(for broken mbstowcs)
3852AC_TRY_RUN([
3853#include<stdlib.h>
3854int main() {
3855 size_t len = -1;
3856 const char *str = "text";
3857 len = mbstowcs(NULL, str, 0);
3858 return (len != 4);
3859}
3860],
3861ac_cv_broken_mbstowcs=no,
3862ac_cv_broken_mbstowcs=yes,
3863ac_cv_broken_mbstowcs=no)
3864AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3865if test "$ac_cv_broken_mbstowcs" = yes
3866then
3867 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3868 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3869 wide chars that would be converted.])
3870fi
3871
Antoine Pitroub52ec782009-01-25 16:34:23 +00003872# Check for --with-computed-gotos
3873AC_MSG_CHECKING(for --with-computed-gotos)
3874AC_ARG_WITH(computed-gotos,
3875 AC_HELP_STRING(--with-computed-gotos,
3876 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3877[
3878if test "$withval" != no
3879then
3880 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3881 [Define if you want to use computed gotos in ceval.c.])
3882 AC_MSG_RESULT(yes)
3883else AC_MSG_RESULT(no)
3884fi],
3885[AC_MSG_RESULT(no)])
3886
3887
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003888AC_SUBST(THREADHEADERS)
3889
3890for h in `(cd $srcdir;echo Python/thread_*.h)`
3891do
3892 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3893done
3894
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003895AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003896SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003897AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003898for dir in $SRCDIRS; do
3899 if test ! -d $dir; then
3900 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003901 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003902done
3903AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003904
Guido van Rossum627b2d71993-12-24 10:39:16 +00003905# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003906AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003907AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003908
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003909echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003910if test ! -f Modules/Setup
3911then
3912 cp $srcdir/Modules/Setup.dist Modules/Setup
3913fi
3914
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003915echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003916if test ! -f Modules/Setup.local
3917then
3918 echo "# Edit this file for local setup changes" >Modules/Setup.local
3919fi
3920
3921echo "creating Makefile"
3922$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3923 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003924 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003925mv config.c Modules