blob: 3ae9a34ffe176999b52fcec2af516e2d22206492 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Martin v. Löwis88afe662002-10-26 13:47:44 +00004
5# Set VERSION so we only need to edit in one place (i.e., here)
Georg Brandl3ebb6b32011-02-20 10:37:07 +00006m4_define(PYTHON_VERSION, 3.3)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00008AC_PREREQ(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009
Guido van Rossum76be6ed1995-01-02 18:33:54 +000010AC_REVISION($Revision$)
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
Georg Brandlde7d8342010-09-03 22:19:07 +000048# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +000049AC_SUBST(SOVERSION)
50SOVERSION=1.0
51
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000052# The later defininition of _XOPEN_SOURCE disables certain features
53# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
54AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
55
Martin v. Löwisbcd93962003-05-03 10:32:18 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
58# them.
59AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
60
Andrew MacIntyreabccf412003-07-02 13:53:25 +000061# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
62# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
63# them.
64AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
65
Martin v. Löwisd6320502004-08-12 13:45:08 +000066# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
67# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
68AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
69
Georg Brandlfcaf9102008-07-16 02:17:56 +000070# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
71# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
72# them.
73AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
74
75
Martin v. Löwise981a4e2002-11-11 13:26:51 +000076define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000077
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000078# Arguments passed to configure.
79AC_SUBST(CONFIG_ARGS)
80CONFIG_ARGS="$ac_configure_args"
81
Ronald Oussoren8af24c12010-02-07 12:03:42 +000082AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000083AC_ARG_ENABLE(universalsdk,
Matthias Klose2b8733f2010-04-25 18:34:36 +000084 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
Thomas Wouters477c8d52006-05-27 19:21:47 +000085[
86 case $enableval in
87 yes)
88 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089 if test ! -d "${enableval}"
90 then
91 enableval=/
92 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +000093 ;;
94 esac
95 case $enableval in
96 no)
97 UNIVERSALSDK=
98 enable_universalsdk=
99 ;;
100 *)
101 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000102 if test ! -d "${UNIVERSALSDK}"
103 then
104 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
105 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000106 ;;
107 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000108
Thomas Wouters477c8d52006-05-27 19:21:47 +0000109],[
110 UNIVERSALSDK=
111 enable_universalsdk=
112])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000113if test -n "${UNIVERSALSDK}"
114then
115 AC_MSG_RESULT(${UNIVERSALSDK})
116else
117 AC_MSG_RESULT(no)
118fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000119AC_SUBST(UNIVERSALSDK)
120
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000121AC_SUBST(ARCH_RUN_32BIT)
122
Georg Brandlfcaf9102008-07-16 02:17:56 +0000123UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000124AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000125AC_MSG_CHECKING(for --with-universal-archs)
126AC_ARG_WITH(universal-archs,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000127 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000128[
129 AC_MSG_RESULT($withval)
130 UNIVERSAL_ARCHS="$withval"
131],
132[
133 AC_MSG_RESULT(32-bit)
134])
135
136
137
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000138AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000139 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000140 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000141[
142 PYTHONFRAMEWORK=${withval}
143 PYTHONFRAMEWORKDIR=${withval}.framework
144 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
145 ],[
146 PYTHONFRAMEWORK=Python
147 PYTHONFRAMEWORKDIR=Python.framework
148 PYTHONFRAMEWORKIDENTIFIER=org.python.python
149])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000150dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000151AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000152 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000153[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000154 case $enableval in
155 yes)
156 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000157 esac
158 case $enableval in
159 no)
160 PYTHONFRAMEWORK=
161 PYTHONFRAMEWORKDIR=no-framework
162 PYTHONFRAMEWORKPREFIX=
163 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000164 FRAMEWORKINSTALLFIRST=
165 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000166 FRAMEWORKALTINSTALLFIRST=
167 FRAMEWORKALTINSTALLLAST=
168 if test "x${prefix}" = "xNONE"; then
169 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
170 else
171 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
172 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000173 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000174 ;;
175 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000176 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000177 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000178 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000179 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000180 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
181 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000182 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000183
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000184 if test "x${prefix}" = "xNONE" ; then
185 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000186
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000187 else
188 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
189 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000190
191 case "${enableval}" in
192 /System*)
193 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
194 if test "${prefix}" = "NONE" ; then
195 # See below
196 FRAMEWORKUNIXTOOLSPREFIX="/usr"
197 fi
198 ;;
199
200 /Library*)
201 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
202 ;;
203
204 */Library/Frameworks)
205 MDIR="`dirname "${enableval}"`"
206 MDIR="`dirname "${MDIR}"`"
207 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
208
209 if test "${prefix}" = "NONE"; then
210 # User hasn't specified the
211 # --prefix option, but wants to install
212 # the framework in a non-default location,
213 # ensure that the compatibility links get
214 # installed relative to that prefix as well
215 # instead of in /usr/local.
216 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
217 fi
218 ;;
219
220 *)
221 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
222 ;;
223 esac
224
Jack Jansen127e56e2001-09-11 14:41:54 +0000225 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000227 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000228 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000229 AC_CONFIG_FILES(Mac/Makefile)
230 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000231 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
232 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000233 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000234 ],[
235 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000236 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000237 PYTHONFRAMEWORKPREFIX=
238 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000239 FRAMEWORKINSTALLFIRST=
240 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000241 FRAMEWORKALTINSTALLFIRST=
242 FRAMEWORKALTINSTALLLAST=
243 if test "x${prefix}" = "xNONE" ; then
244 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
245 else
246 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
247 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000248 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000249
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000250])
251AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000252AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000253AC_SUBST(PYTHONFRAMEWORKDIR)
254AC_SUBST(PYTHONFRAMEWORKPREFIX)
255AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000256AC_SUBST(FRAMEWORKINSTALLFIRST)
257AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000258AC_SUBST(FRAMEWORKALTINSTALLFIRST)
259AC_SUBST(FRAMEWORKALTINSTALLLAST)
260AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000261AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000262
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000263##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000264## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000265## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000266##
Guido van Rossumb418f891996-07-30 18:06:02 +0000267# Set name for machine-dependent library files
268AC_SUBST(MACHDEP)
269AC_MSG_CHECKING(MACHDEP)
270if test -z "$MACHDEP"
271then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000272 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000273 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000274 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000275 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000276 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000277 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000278 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000279 ac_md_system=`echo $ac_sys_system |
280 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
281 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000282 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000283 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000284
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000285 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000286 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000287 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000288 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000289 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000290 esac
291fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000292
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000293# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
294# disable features if it is defined, without any means to access these
295# features as extensions. For these systems, we skip the definition of
296# _XOPEN_SOURCE. Before adding a system to the list to gain access to
297# some feature, make sure there is no alternative way to access this
298# feature. Also, when using wildcards, make sure you have verified the
299# need for not defining _XOPEN_SOURCE on all systems matching the
300# wildcard, and that the wildcard does not include future systems
301# (which may remove their limitations).
302dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
303case $ac_sys_system/$ac_sys_release in
304 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
305 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000306 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000307 # In addition, Stefan Krah confirms that issue #1244610 exists through
308 # OpenBSD 4.6, but is fixed in 4.7.
309 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000310 define_xopen_source=no
311 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
312 # also defined. This can be overridden by defining _BSD_SOURCE
313 # As this has a different meaning on Linux, only define it on OpenBSD
314 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
315 ;;
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000316 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000317 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
318 # also defined. This can be overridden by defining _BSD_SOURCE
319 # As this has a different meaning on Linux, only define it on OpenBSD
320 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
321 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000322 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
323 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
324 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000325 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 +0000326 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000327 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
328 # request to enable features supported by the standard as a request
329 # to disable features not supported by the standard. The best way
330 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
331 # entirely and define __EXTENSIONS__ instead.
332 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000333 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000334 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
335 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000336 # Reconfirmed for 7.1.4 by Martin v. Loewis.
337 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000338 define_xopen_source=no;;
339 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000340 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000341 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000342 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000343 # On FreeBSD 4, the math functions C89 does not cover are never defined
344 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
345 FreeBSD/4.*)
346 define_xopen_source=no;;
347 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
348 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
349 # identifies itself as Darwin/7.*
350 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
351 # disables platform specific features beyond repair.
352 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
353 # has no effect, don't bother defining them
354 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000355 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000356 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000357 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000358 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
359 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
360 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000361 AIX/4)
362 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000363 AIX/5)
364 if test `uname -r` -eq 1; then
365 define_xopen_source=no
366 fi
367 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000368 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
369 # defining NI_NUMERICHOST.
370 QNX/6.3.2)
371 define_xopen_source=no
372 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000373
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000374esac
375
376if test $define_xopen_source = yes
377then
Martin v. Löwis1a415762010-05-28 15:44:20 +0000378 AC_DEFINE(_XOPEN_SOURCE, 600,
379 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000380
381 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
382 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
383 # several APIs are not declared. Since this is also needed in some
384 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000385 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
386 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000387
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000388 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
389
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000390fi
391
Guido van Rossum91922671997-10-09 20:24:13 +0000392#
393# SGI compilers allow the specification of the both the ABI and the
394# ISA on the command line. Depending on the values of these switches,
395# different and often incompatable code will be generated.
396#
397# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
398# thus supply support for various ABI/ISA combinations. The MACHDEP
399# variable is also adjusted.
400#
401AC_SUBST(SGI_ABI)
402if test ! -z "$SGI_ABI"
403then
404 CC="cc $SGI_ABI"
405 LDFLAGS="$SGI_ABI $LDFLAGS"
406 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
407fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000408AC_MSG_RESULT($MACHDEP)
409
Jack Jansen6b08a402004-06-03 12:41:45 +0000410# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
411# it may influence the way we can build extensions, so distutils
412# needs to check it
413AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000414AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000415CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000416EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000417
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000418AC_MSG_CHECKING(machine type as reported by uname -m)
419ac_sys_machine=`uname -m`
420AC_MSG_RESULT($ac_sys_machine)
421
Guido van Rossum627b2d71993-12-24 10:39:16 +0000422# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000423
424# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
425# for debug/optimization stuff. BASECFLAGS is for flags that are required
426# just to get things to compile and link. Users are free to override OPT
427# when running configure or make. The build should not break if they do.
428# BASECFLAGS should generally not be messed with, however.
429
430# XXX shouldn't some/most/all of this code be merged with the stuff later
431# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000432AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000433AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000434 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000435[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000436 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000437 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000438 without_gcc=yes;;
439 yes) CC=gcc
440 without_gcc=no;;
441 *) CC=$withval
442 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000443 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000444 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000445 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000446 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000447 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000448 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000449AC_MSG_RESULT($without_gcc)
450
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000451# If the user switches compilers, we can't believe the cache
452if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
453then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000454 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
455(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000456fi
457
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000458# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
459# when the compiler supports them, but we don't always want -O2, and
460# we set -g later.
461if test -z "$CFLAGS"; then
462 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000463fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000464AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000465
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000466AC_SUBST(CXX)
467AC_SUBST(MAINCC)
468AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
469AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000470 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000471 [compile main() and link python executable with C++ compiler]),
472[
473
474 case $withval in
475 no) with_cxx_main=no
476 MAINCC='$(CC)';;
477 yes) with_cxx_main=yes
478 MAINCC='$(CXX)';;
479 *) with_cxx_main=yes
480 MAINCC=$withval
481 if test -z "$CXX"
482 then
483 CXX=$withval
484 fi;;
485 esac], [
486 with_cxx_main=no
487 MAINCC='$(CC)'
488])
489AC_MSG_RESULT($with_cxx_main)
490
491preset_cxx="$CXX"
492if test -z "$CXX"
493then
494 case "$CC" in
495 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
496 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
497 esac
498 if test "$CXX" = "notfound"
499 then
500 CXX=""
501 fi
502fi
503if test -z "$CXX"
504then
505 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
506 if test "$CXX" = "notfound"
507 then
508 CXX=""
509 fi
510fi
511if test "$preset_cxx" != "$CXX"
512then
513 AC_MSG_WARN([
514
515 By default, distutils will build C++ extension modules with "$CXX".
516 If this is not intended, then set CXX on the configure command line.
517 ])
518fi
519
520
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200521AC_MSG_CHECKING([for -Wl,--no-as-needed])
522save_LDFLAGS="$LDFLAGS"
523LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
524AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
525 [NO_AS_NEEDED="-Wl,--no-as-needed"
526 AC_MSG_RESULT([yes])],
527 [NO_AS_NEEDED=""
528 AC_MSG_RESULT([no])])
529LDFLAGS="$save_LDFLAGS"
530AC_SUBST(NO_AS_NEEDED)
531
532
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000533# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000534AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000535
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000536# Check for unsupported systems
537case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000538atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000539 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
540 echo See README for details.
541 exit 1;;
542esac
543
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000544AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000545AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000546AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000547 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000548[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000549 case $withval in
550 no) EXEEXT=;;
551 yes) EXEEXT=.exe;;
552 *) EXEEXT=$withval;;
553 esac])
554AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000555
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000556# Test whether we're running on a non-case-sensitive system, in which
557# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000558AC_SUBST(BUILDEXEEXT)
559AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000560if test ! -d CaseSensitiveTestDir; then
561mkdir CaseSensitiveTestDir
562fi
563
564if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000565then
Jack Jansen1999ef42001-12-06 21:47:20 +0000566 AC_MSG_RESULT(yes)
567 BUILDEXEEXT=.exe
568else
569 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000570 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000571fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000572rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000573
Guido van Rossumdd997f71998-10-07 19:58:26 +0000574case $MACHDEP in
575bsdos*)
576 case $CC in
577 gcc) CC="$CC -D_HAVE_BSDI";;
578 esac;;
579esac
580
Guido van Rossum84561611997-08-21 00:08:11 +0000581case $ac_sys_system in
582hp*|HP*)
583 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000584 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000585 esac;;
586esac
587
Martin v. Löwise8964d42001-03-06 12:09:07 +0000588
Neil Schemenauer61c51152001-01-26 16:18:16 +0000589AC_SUBST(LIBRARY)
590AC_MSG_CHECKING(LIBRARY)
591if test -z "$LIBRARY"
592then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000593 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000594fi
595AC_MSG_RESULT($LIBRARY)
596
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000597# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000598# name of the library into which to insert object files). BLDLIBRARY is also
599# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
600# is blank as the main program is not linked directly against LDLIBRARY.
601# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
602# systems without shared libraries, LDLIBRARY is the same as LIBRARY
603# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
604# DLLLIBRARY is the shared (i.e., DLL) library.
605#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000606# RUNSHARED is used to run shared python without installed libraries
607#
608# INSTSONAME is the name of the shared library that will be use to install
609# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000610#
611# LDVERSION is the shared library version number, normally the Python version
612# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000613AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000614AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000615AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000616AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000617AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000618AC_SUBST(INSTSONAME)
619AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000620AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000621LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000622BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000623INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000624DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000625LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000626RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000627LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000628
Guido van Rossumfb842551997-08-06 23:42:07 +0000629# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000630# If CXX is set, and if it is needed to link a main function that was
631# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
632# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000633# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000634# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000635AC_SUBST(LINKCC)
636AC_MSG_CHECKING(LINKCC)
637if test -z "$LINKCC"
638then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000639 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000640 case $ac_sys_system in
641 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000642 exp_extra="\"\""
643 if test $ac_sys_release -ge 5 -o \
644 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
645 exp_extra="."
646 fi
647 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000648 QNX*)
649 # qcc must be used because the other compilers do not
650 # support -N.
651 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000652 esac
653fi
654AC_MSG_RESULT($LINKCC)
655
Tarek Ziadébe720e02009-05-09 11:55:12 +0000656# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
657# make sure we default having it set to "no": this is used by
658# distutils.unixccompiler to know if it should add --enable-new-dtags
659# to linker command lines, and failing to detect GNU ld simply results
660# in the same bahaviour as before.
661AC_SUBST(GNULD)
662AC_MSG_CHECKING(for GNU ld)
663ac_prog=ld
664if test "$GCC" = yes; then
665 ac_prog=`$CC -print-prog-name=ld`
666fi
667case `"$ac_prog" -V 2>&1 < /dev/null` in
668 *GNU*)
669 GNULD=yes;;
670 *)
671 GNULD=no;;
672esac
673AC_MSG_RESULT($GNULD)
674
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000675AC_C_INLINE
676if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000677 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000678 AC_SUBST(USE_INLINE)
679fi
680
681
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682AC_MSG_CHECKING(for --enable-shared)
683AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000684 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000685
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686if test -z "$enable_shared"
687then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000688 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000689 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000690 enable_shared="yes";;
691 *)
692 enable_shared="no";;
693 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694fi
695AC_MSG_RESULT($enable_shared)
696
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000697AC_MSG_CHECKING(for --enable-profiling)
698AC_ARG_ENABLE(profiling,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000699 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]),
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000700[ac_save_cc="$CC"
701 CC="$CC -pg"
Matthias Kloseb159a552010-04-25 21:00:44 +0000702 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
703 [ac_enable_profiling="yes"],
704 [ac_enable_profiling="no"],
705 [ac_enable_profiling="no"])
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000706 CC="$ac_save_cc"])
707AC_MSG_RESULT($ac_enable_profiling)
708
709case "$ac_enable_profiling" in
710 "yes")
711 BASECFLAGS="-pg $BASECFLAGS"
712 LDFLAGS="-pg $LDFLAGS"
713 ;;
714esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000715
716AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000717
Guido van Rossumb8552162001-09-05 14:58:11 +0000718# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
719# library that we build, but we do not want to link against it (we
720# will find it with a -framework option). For this reason there is an
721# extra variable BLDLIBRARY against which Python and the extension
722# modules are linked, BLDLIBRARY. This is normally the same as
723# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000724if test "$enable_framework"
725then
726 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000727 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000728 BLDLIBRARY=''
729else
730 BLDLIBRARY='$(LDLIBRARY)'
731fi
732
Martin v. Löwis1142de32002-03-29 16:28:31 +0000733# Other platforms follow
734if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000735 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000736 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000737 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000738 LDLIBRARY='libpython$(LDVERSION).dll.a'
739 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000740 ;;
741 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000742 LDLIBRARY='libpython$(LDVERSION).so'
743 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000744 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000745 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000746 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000747 then
748 PY3LIBRARY=libpython3.so
749 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000750 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000751 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000752 LDLIBRARY='libpython$(LDVERSION).so'
753 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000754 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000755 case $ac_sys_system in
756 FreeBSD*)
757 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
758 ;;
759 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000760 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000761 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000762 then
763 PY3LIBRARY=libpython3.so
764 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000765 ;;
766 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000767 case `uname -m` in
768 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000769 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000770 ;;
771 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000772 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000773 ;;
774 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000775 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000776 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000777 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000778 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000779 LDLIBRARY='libpython$(LDVERSION).dylib'
780 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Georg Brandlb1441c72009-01-03 22:33:39 +0000781 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
782 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000783 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000784 LDLIBRARY='libpython$(LDVERSION).so'
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000785 RUNSHARED=LIBPATH=`pwd`:${LIBPATH}
786 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000787
Martin v. Löwis1142de32002-03-29 16:28:31 +0000788 esac
Jason Tishler30765592003-09-04 11:04:06 +0000789else # shared is disabled
790 case $ac_sys_system in
791 CYGWIN*)
792 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000793 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +0000794 ;;
795 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000796fi
797
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000798AC_MSG_RESULT($LDLIBRARY)
799
Guido van Rossum627b2d71993-12-24 10:39:16 +0000800AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000801AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000802AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000803
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000804# tweak ARFLAGS only if the user didn't set it on the command line
805AC_SUBST(ARFLAGS)
806if test -z "$ARFLAGS"
807then
808 ARFLAGS="rc"
809fi
810
Georg Brandl1ca2e792011-03-05 20:51:24 +0100811AC_SUBST(HGVERSION)
812AC_SUBST(HGTAG)
813AC_SUBST(HGBRANCH)
814AC_CHECK_PROG(HAS_HG, hg, found, not-found)
815if test $HAS_HG = found
816then
817 HGVERSION="hg id -i \$(srcdir)"
818 HGTAG="hg id -t \$(srcdir)"
819 HGBRANCH="hg id -b \$(srcdir)"
820else
821 HGVERSION=""
822 HGTAG=""
823 HGBRANCH=""
824fi
825
Neil Schemenauera42c8272001-03-31 00:01:55 +0000826case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000827bsdos*|hp*|HP*)
828 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000829 if test -z "$INSTALL"
830 then
831 INSTALL="${srcdir}/install-sh -c"
832 fi
833esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000834AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000835
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000836# Not every filesystem supports hard links
837AC_SUBST(LN)
838if test -z "$LN" ; then
839 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000840 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000841 *) LN=ln;;
842 esac
843fi
844
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000845# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000846AC_SUBST(ABIFLAGS)
847ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000848
Fred Drake9f715822001-07-11 06:27:00 +0000849# Check for --with-pydebug
850AC_MSG_CHECKING(for --with-pydebug)
851AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000852 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000853[
Fred Drake9f715822001-07-11 06:27:00 +0000854if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000855then
856 AC_DEFINE(Py_DEBUG, 1,
857 [Define if you want to build an interpreter with many run-time checks.])
858 AC_MSG_RESULT(yes);
859 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000860 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +0000861else AC_MSG_RESULT(no); Py_DEBUG='false'
862fi],
863[AC_MSG_RESULT(no)])
864
Skip Montanarodecc6a42003-01-01 20:07:49 +0000865# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
866# merged with this chunk of code?
867
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000868# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869# ------------------------
870# (The following bit of code is complicated enough - please keep things
871# indented properly. Just pretend you're editing Python code. ;-)
872
873# There are two parallel sets of case statements below, one that checks to
874# see if OPT was set and one that does BASECFLAGS setting based upon
875# compiler and platform. BASECFLAGS tweaks need to be made even if the
876# user set OPT.
877
878# tweak OPT based on compiler and platform, only if the user didn't set
879# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000880AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000881if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000882then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000883 case $GCC in
884 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000885 if test "$CC" != 'g++' ; then
886 STRICT_PROTO="-Wstrict-prototypes"
887 fi
Christian Heimes38053212007-12-14 01:24:44 +0000888 # For gcc 4.x we need to use -fwrapv so lets check if its supported
889 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
890 WRAP="-fwrapv"
891 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000892 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000893 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000894 if test "$Py_DEBUG" = 'true' ; then
895 # Optimization messes up debuggers, so turn it off for
896 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +0000897 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000898 else
Christian Heimes38053212007-12-14 01:24:44 +0000899 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000900 fi
901 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000902 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000903 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000904 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000905 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000906 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000907 SCO_SV*) OPT="$OPT -m486 -DSCO5"
908 ;;
909 esac
Fred Drake9f715822001-07-11 06:27:00 +0000910 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000911
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000912 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000913 OPT="-O"
914 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000915 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000916fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000917
Skip Montanarodecc6a42003-01-01 20:07:49 +0000918AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000919
920# The -arch flags for universal builds on OSX
921UNIVERSAL_ARCH_FLAGS=
922AC_SUBST(UNIVERSAL_ARCH_FLAGS)
923
Skip Montanarodecc6a42003-01-01 20:07:49 +0000924# tweak BASECFLAGS based on compiler and platform
925case $GCC in
926yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000927 # Python doesn't violate C99 aliasing rules, but older versions of
928 # GCC produce warnings for legal Python code. Enable
929 # -fno-strict-aliasing on versions of GCC that support but produce
930 # warnings. See Issue3326
931 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000932 ac_save_cc="$CC"
933 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000934 save_CFLAGS="$CFLAGS"
935 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +0000936 AC_COMPILE_IFELSE(
937 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000938 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000939 ],[
940 CC="$ac_save_cc -fstrict-aliasing"
941 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
942 AC_COMPILE_IFELSE(
943 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000944 AC_LANG_PROGRAM([[void f(int **x) {}]],
945 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000946 ],[
947 ac_cv_no_strict_aliasing=no
948 ],[
949 ac_cv_no_strict_aliasing=yes
950 ])
951 ],[
952 ac_cv_no_strict_aliasing=no
953 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000954 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000955 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000956 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
957 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000958 then
959 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
960 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000961
962 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
963 # support. Without this, treatment of subnormals doesn't follow
964 # the standard.
965 case $ac_sys_machine in
966 alpha*)
967 BASECFLAGS="$BASECFLAGS -mieee"
968 ;;
969 esac
970
Skip Montanarodecc6a42003-01-01 20:07:49 +0000971 case $ac_sys_system in
972 SCO_SV*)
973 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
974 ;;
975 # is there any other compiler on Darwin besides gcc?
976 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000977 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
978 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +0000979 if test "${CC}" = gcc
980 then
981 AC_MSG_CHECKING(which compiler should be used)
982 case "${UNIVERSALSDK}" in
983 */MacOSX10.4u.sdk)
984 # Build using 10.4 SDK, force usage of gcc when the
985 # compiler is gcc, otherwise the user will get very
986 # confusing error messages when building on OSX 10.6
987 CC=gcc-4.0
988 CPP=cpp-4.0
989 ;;
990 esac
991 AC_MSG_RESULT($CC)
992 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000993
994
Thomas Wouters477c8d52006-05-27 19:21:47 +0000995 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000996 UNIVERSAL_ARCH_FLAGS=""
997 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
998 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000999 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +00001000 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +00001001 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1002 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001003 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001004 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001005
1006 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1007 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001008 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001009 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001010
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001011 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1012 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001013 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001014 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001015
1016 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1017 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001018 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001019 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001020
Georg Brandlfcaf9102008-07-16 02:17:56 +00001021 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +00001022 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +00001023
1024 fi
1025
1026
Ronald Oussoren666028b2010-04-18 19:07:43 +00001027 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1028 if test "${UNIVERSALSDK}" != "/"
1029 then
1030 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1031 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +00001032 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001033 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00001034 fi
1035
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001036 # Calculate the right deployment target for this build.
1037 #
1038 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1039 if test ${cur_target} '>' 10.2; then
1040 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001041 if test ${enable_universalsdk}; then
1042 if test "${UNIVERSAL_ARCHS}" = "all"; then
1043 # Ensure that the default platform for a
1044 # 4-way universal build is OSX 10.5,
1045 # that's the first OS release where
1046 # 4-way builds make sense.
1047 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001048
1049 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1050 cur_target='10.5'
1051
1052 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1053 cur_target='10.5'
1054
1055 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1056 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001057 fi
1058 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001059 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001060 # On Intel macs default to a deployment
1061 # target of 10.4, that's the first OSX
1062 # release with Intel support.
1063 cur_target="10.4"
1064 fi
1065 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001066 fi
1067 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1068
1069 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1070 # environment with a value that is the same as what we'll use
1071 # in the Makefile to ensure that we'll get the same compiler
1072 # environment during configure and build time.
1073 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1074 export MACOSX_DEPLOYMENT_TARGET
1075 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1076
Skip Montanarodecc6a42003-01-01 20:07:49 +00001077 ;;
1078 esac
1079 ;;
1080
1081*)
1082 case $ac_sys_system in
1083 OpenUNIX*|UnixWare*)
1084 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1085 ;;
1086 SCO_SV*)
1087 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1088 ;;
1089 esac
1090 ;;
1091esac
1092
Fred Drakee1ceaa02001-12-04 20:55:47 +00001093if test "$Py_DEBUG" = 'true'; then
1094 :
1095else
1096 OPT="-DNDEBUG $OPT"
1097fi
1098
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001099if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001100then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001101 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001102fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001103
Thomas Wouters89f507f2006-12-13 04:49:30 +00001104# Check whether GCC supports PyArg_ParseTuple format
1105if test "$GCC" = "yes"
1106then
1107 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1108 save_CFLAGS=$CFLAGS
1109 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001110 AC_COMPILE_IFELSE([
1111 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1112 ],[
1113 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1114 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1115 AC_MSG_RESULT(yes)
1116 ],[
1117 AC_MSG_RESULT(no)
1118 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001119 CFLAGS=$save_CFLAGS
1120fi
1121
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001122# On some compilers, pthreads are available without further options
1123# (e.g. MacOS X). On some of these systems, the compiler will not
1124# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1125# So we have to see first whether pthreads are available without
1126# options before we can check whether -Kpthread improves anything.
1127AC_MSG_CHECKING(whether pthreads are available without options)
1128AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001129[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001130#include <pthread.h>
1131
1132void* routine(void* p){return NULL;}
1133
1134int main(){
1135 pthread_t p;
1136 if(pthread_create(&p,NULL,routine,NULL)!=0)
1137 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001138 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001139 return 0;
1140}
Matthias Kloseb159a552010-04-25 21:00:44 +00001141]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001142 ac_cv_pthread_is_default=yes
1143 ac_cv_kthread=no
1144 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001145],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001146])
1147AC_MSG_RESULT($ac_cv_pthread_is_default)
1148
1149
1150if test $ac_cv_pthread_is_default = yes
1151then
1152 ac_cv_kpthread=no
1153else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154# -Kpthread, if available, provides the right #defines
1155# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001156# Some compilers won't report that they do not support -Kpthread,
1157# so we need to run a program to see whether it really made the
1158# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001159AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1160AC_CACHE_VAL(ac_cv_kpthread,
1161[ac_save_cc="$CC"
1162CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001163AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001164#include <pthread.h>
1165
1166void* routine(void* p){return NULL;}
1167
1168int main(){
1169 pthread_t p;
1170 if(pthread_create(&p,NULL,routine,NULL)!=0)
1171 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001172 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001173 return 0;
1174}
Matthias Kloseb159a552010-04-25 21:00:44 +00001175]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001176CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001177AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001178fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001179
Skip Montanarod8d39a02003-07-10 20:44:10 +00001180if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001181then
1182# -Kthread, if available, provides the right #defines
1183# and linker options to make pthread_create available
1184# Some compilers won't report that they do not support -Kthread,
1185# so we need to run a program to see whether it really made the
1186# function available.
1187AC_MSG_CHECKING(whether $CC accepts -Kthread)
1188AC_CACHE_VAL(ac_cv_kthread,
1189[ac_save_cc="$CC"
1190CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001191AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001192#include <pthread.h>
1193
1194void* routine(void* p){return NULL;}
1195
1196int main(){
1197 pthread_t p;
1198 if(pthread_create(&p,NULL,routine,NULL)!=0)
1199 return 1;
1200 (void)pthread_detach(p);
1201 return 0;
1202}
Matthias Kloseb159a552010-04-25 21:00:44 +00001203]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001204CC="$ac_save_cc"])
1205AC_MSG_RESULT($ac_cv_kthread)
1206fi
1207
Skip Montanarod8d39a02003-07-10 20:44:10 +00001208if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001209then
1210# -pthread, if available, provides the right #defines
1211# and linker options to make pthread_create available
1212# Some compilers won't report that they do not support -pthread,
1213# so we need to run a program to see whether it really made the
1214# function available.
1215AC_MSG_CHECKING(whether $CC accepts -pthread)
1216AC_CACHE_VAL(ac_cv_thread,
1217[ac_save_cc="$CC"
1218CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001219AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001220#include <pthread.h>
1221
1222void* routine(void* p){return NULL;}
1223
1224int main(){
1225 pthread_t p;
1226 if(pthread_create(&p,NULL,routine,NULL)!=0)
1227 return 1;
1228 (void)pthread_detach(p);
1229 return 0;
1230}
Matthias Kloseb159a552010-04-25 21:00:44 +00001231]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001232CC="$ac_save_cc"])
1233AC_MSG_RESULT($ac_cv_pthread)
1234fi
1235
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001236# If we have set a CC compiler flag for thread support then
1237# check if it works for CXX, too.
1238ac_cv_cxx_thread=no
1239if test ! -z "$CXX"
1240then
1241AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1242ac_save_cxx="$CXX"
1243
1244if test "$ac_cv_kpthread" = "yes"
1245then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001246 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001247 ac_cv_cxx_thread=yes
1248elif test "$ac_cv_kthread" = "yes"
1249then
1250 CXX="$CXX -Kthread"
1251 ac_cv_cxx_thread=yes
1252elif test "$ac_cv_pthread" = "yes"
1253then
1254 CXX="$CXX -pthread"
1255 ac_cv_cxx_thread=yes
1256fi
1257
1258if test $ac_cv_cxx_thread = yes
1259then
1260 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1261 $CXX -c conftest.$ac_ext 2>&5
1262 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1263 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1264 then
1265 ac_cv_cxx_thread=yes
1266 else
1267 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001268 fi
1269 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001270fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001271AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001272fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001273CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001274
Fred Drakece81d592000-07-09 14:39:29 +00001275dnl # check for ANSI or K&R ("traditional") preprocessor
1276dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001277dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001278dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1279dnl int foo;
1280dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001281dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001282dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001283
Guido van Rossum627b2d71993-12-24 10:39:16 +00001284# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001285AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001286AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1287fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001288ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001289shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001290unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001291sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1292sys/lock.h sys/mkdev.h sys/modem.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001293sys/param.h sys/poll.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
1294sys/stat.h sys/termio.h sys/time.h \
1295sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \
Nadeem Vawdad74b5932011-05-15 13:16:22 +02001296libutil.h sys/resource.h net/if.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001297bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001298AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001299AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001300
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001301# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001302AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001303#ifdef HAVE_CURSES_H
1304#include <curses.h>
1305#endif
1306])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001307
Martin v. Löwis11017b12006-01-14 18:12:57 +00001308# On Linux, netlink.h requires asm/types.h
1309AC_CHECK_HEADERS(linux/netlink.h,,,[
1310#ifdef HAVE_ASM_TYPES_H
1311#include <asm/types.h>
1312#endif
1313#ifdef HAVE_SYS_SOCKET_H
1314#include <sys/socket.h>
1315#endif
1316])
1317
Guido van Rossum627b2d71993-12-24 10:39:16 +00001318# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001319was_it_defined=no
1320AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001321AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1322 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1323])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001324AC_MSG_RESULT($was_it_defined)
1325
Neal Norwitz11690112002-07-30 01:08:28 +00001326AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001327AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1328#if defined(MAJOR_IN_MKDEV)
1329#include <sys/mkdev.h>
1330#elif defined(MAJOR_IN_SYSMACROS)
1331#include <sys/sysmacros.h>
1332#else
1333#include <sys/types.h>
1334#endif
1335]], [[
1336 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001337],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001338AC_MSG_RESULT($ac_cv_has_makedev)
1339if test "$ac_cv_has_makedev" = "yes"; then
1340 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1341fi
1342
Martin v. Löwis399a6892002-10-04 10:22:02 +00001343# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1344# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1345# defined, but the compiler does not support pragma redefine_extname,
1346# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1347# structures (such as rlimit64) without declaring them. As a
1348# work-around, disable LFS on such configurations
1349
1350use_lfs=yes
1351AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001352AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001353#define _LARGEFILE_SOURCE 1
1354#define _FILE_OFFSET_BITS 64
1355#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001356]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001357AC_MSG_RESULT($sol_lfs_bug)
1358if test "$sol_lfs_bug" = "yes"; then
1359 use_lfs=no
1360fi
1361
1362if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001363# Two defines needed to enable largefile support on various platforms
1364# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001365case $ac_sys_system/$ac_sys_release in
1366AIX*)
1367 AC_DEFINE(_LARGE_FILES, 1,
1368 [This must be defined on AIX systems to enable large file support.])
1369 ;;
1370esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001371AC_DEFINE(_LARGEFILE_SOURCE, 1,
1372[This must be defined on some systems to enable large file support.])
1373AC_DEFINE(_FILE_OFFSET_BITS, 64,
1374[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001375fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001376
Guido van Rossum300fda71996-08-19 21:58:16 +00001377# Add some code to confdefs.h so that the test for off_t works on SCO
1378cat >> confdefs.h <<\EOF
1379#if defined(SCO_DS)
1380#undef _OFF_T
1381#endif
1382EOF
1383
Guido van Rossumef2255b2000-03-10 22:30:29 +00001384# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001385AC_TYPE_MODE_T
1386AC_TYPE_OFF_T
1387AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001388AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001389AC_TYPE_SIZE_T
1390AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001391AC_TYPE_UINT32_T
1392AC_TYPE_UINT64_T
1393AC_TYPE_INT32_T
1394AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001395AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001396 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001397
Guido van Rossumef2255b2000-03-10 22:30:29 +00001398# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001399# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001400AC_CHECK_SIZEOF(int, 4)
1401AC_CHECK_SIZEOF(long, 4)
1402AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001403AC_CHECK_SIZEOF(short, 2)
1404AC_CHECK_SIZEOF(float, 4)
1405AC_CHECK_SIZEOF(double, 8)
1406AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001407AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001408AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001409
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001410AC_MSG_CHECKING(for long long support)
1411have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001412AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001413 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1414 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001415],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001416AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001417if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001418AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001419fi
1420
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001421AC_MSG_CHECKING(for long double support)
1422have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001423AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001424 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1425 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001426],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001427AC_MSG_RESULT($have_long_double)
1428if test "$have_long_double" = yes ; then
1429AC_CHECK_SIZEOF(long double, 16)
1430fi
1431
1432
Thomas Woutersb2137042007-02-01 18:02:27 +00001433AC_MSG_CHECKING(for _Bool support)
1434have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001435AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001436 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1437 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001438],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001439AC_MSG_RESULT($have_c99_bool)
1440if test "$have_c99_bool" = yes ; then
1441AC_CHECK_SIZEOF(_Bool, 1)
1442fi
1443
Thomas Wouters89f507f2006-12-13 04:49:30 +00001444AC_CHECK_TYPES(uintptr_t,
1445 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1446 [], [#ifdef HAVE_STDINT_H
1447 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001448 #endif
1449 #ifdef HAVE_INTTYPES_H
1450 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001451 #endif])
1452
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001453AC_CHECK_SIZEOF(off_t, [], [
1454#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001455#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001456#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001457])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001458
1459AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001460if test "$have_long_long" = yes
1461then
1462if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001463 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001464 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1465 [Defined to enable large file support when an off_t is bigger than a long
1466 and long long is available and at least as big as an off_t. You may need
1467 to add some flags for configuration and compilation to enable this mode.
1468 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001469 AC_MSG_RESULT(yes)
1470else
1471 AC_MSG_RESULT(no)
1472fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001473else
1474 AC_MSG_RESULT(no)
1475fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001476
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001477AC_CHECK_SIZEOF(time_t, [], [
1478#ifdef HAVE_SYS_TYPES_H
1479#include <sys/types.h>
1480#endif
1481#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001482#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001483#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001484])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001485
Trent Mick635f6fb2000-08-23 21:33:05 +00001486# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001487ac_save_cc="$CC"
1488if test "$ac_cv_kpthread" = "yes"
1489then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001490elif test "$ac_cv_kthread" = "yes"
1491then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001492elif test "$ac_cv_pthread" = "yes"
1493then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001494fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001495
Trent Mick635f6fb2000-08-23 21:33:05 +00001496AC_MSG_CHECKING(for pthread_t)
1497have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001498AC_COMPILE_IFELSE([
1499 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1500],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001501AC_MSG_RESULT($have_pthread_t)
1502if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001503 AC_CHECK_SIZEOF(pthread_t, [], [
1504#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001505#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001506#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001507 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001508fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001509CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001510
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001511AC_SUBST(OTHER_LIBTOOL_OPT)
1512case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001513 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001514 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1515 ;;
1516 Darwin/*)
1517 OTHER_LIBTOOL_OPT=""
1518 ;;
1519esac
1520
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001521
1522ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001523AC_SUBST(LIBTOOL_CRUFT)
1524case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001525 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001526 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1527 if test "${enable_universalsdk}"; then
1528 :
1529 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001530 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001531 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001532 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001533 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001534 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001535 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001536 if test ${gcc_version} '<' 4.0
1537 then
1538 LIBTOOL_CRUFT="-lcc_dynamic"
1539 else
1540 LIBTOOL_CRUFT=""
1541 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001542 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001543 #include <unistd.h>
1544 int main(int argc, char*argv[])
1545 {
1546 if (sizeof(long) == 4) {
1547 return 0;
1548 } else {
1549 return 1;
1550 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001551 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001552 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001553
1554 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001555 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001556 i386)
1557 MACOSX_DEFAULT_ARCH="i386"
1558 ;;
1559 ppc)
1560 MACOSX_DEFAULT_ARCH="ppc"
1561 ;;
1562 *)
1563 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1564 ;;
1565 esac
1566 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001567 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001568 i386)
1569 MACOSX_DEFAULT_ARCH="x86_64"
1570 ;;
1571 ppc)
1572 MACOSX_DEFAULT_ARCH="ppc64"
1573 ;;
1574 *)
1575 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1576 ;;
1577 esac
1578
1579 #ARCH_RUN_32BIT="true"
1580 fi
1581
1582 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001583 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001584 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001585esac
1586
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001587AC_MSG_CHECKING(for --enable-framework)
1588if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001589then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001590 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001591 # -F. is needed to allow linking to the framework while
1592 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001593 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1594 [Define if you want to produce an OpenStep/Rhapsody framework
1595 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001596 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001597 if test $enable_shared = "yes"
1598 then
1599 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1600 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001601else
1602 AC_MSG_RESULT(no)
1603fi
1604
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001605AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001606case $ac_sys_system/$ac_sys_release in
1607 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001608 AC_DEFINE(WITH_DYLD, 1,
1609 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1610 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1611 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001612 AC_MSG_RESULT(always on for Darwin)
1613 ;;
1614 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001615 AC_MSG_RESULT(no)
1616 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001617esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001618
Guido van Rossumac405f61994-09-12 10:56:06 +00001619# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001620AC_SUBST(SO)
1621AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001622AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001623AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001624AC_SUBST(CCSHARED)
1625AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00001626
Thomas Wouters477c8d52006-05-27 19:21:47 +00001627AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001628# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001629# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001630# (Shared libraries in this instance are shared modules to be loaded into
1631# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001632AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001633if test -z "$LDSHARED"
1634then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001635 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001636 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00001637 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001638 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001639 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001640 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001641 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001642 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001643 if test "$GCC" = "yes" ; then
1644 LDSHARED='$(CC) -shared'
1645 LDCXXSHARED='$(CXX) -shared'
1646 else
1647 LDSHARED='$(CC) -G'
1648 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a662000-05-26 12:22:54 +00001649 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001650 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001651 if test "$GCC" = "yes" ; then
1652 LDSHARED='$(CC) -shared'
1653 LDCXXSHARED='$(CXX) -shared'
1654 else
1655 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001656 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00001657 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001658 LDSHARED='$(CC) -bundle'
1659 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001660 if test "$enable_framework" ; then
1661 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001662 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1663 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001664 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001665 else
1666 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001667 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001668 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001669 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001670 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001671 LDSHARED='$(CC) -bundle'
1672 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001673 if test "$enable_framework" ; then
1674 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001675 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1676 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001677 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001678 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001679 # No framework, use the Python app as bundle-loader
1680 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001681 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001682 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001683 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001684 Darwin/*)
1685 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1686 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001687
Georg Brandlfcaf9102008-07-16 02:17:56 +00001688 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001689 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001690 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001691 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001692 fi
Antoine Pitroud4958c22010-10-13 17:01:10 +00001693 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
1694 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001695 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001696 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001697 LDSHARED='$(CC) -bundle'
1698 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001699 if test "$enable_framework" ; then
1700 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001701 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1702 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001703 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001704 else
1705 # No framework, use the Python app as bundle-loader
1706 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1707 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001708 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001709 fi
1710 fi
1711 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001712 Linux*|GNU*|QNX*)
1713 LDSHARED='$(CC) -shared'
1714 LDCXXSHARED='$(CXX) -shared';;
1715 BSD/OS*/4*)
1716 LDSHARED="gcc -shared"
1717 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001718 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001719 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001720 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001721 LDSHARED='$(CC) -shared'
1722 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001723 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001724 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001725 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001726 OpenBSD*)
1727 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1728 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001729 LDSHARED='$(CC) -shared $(CCSHARED)'
1730 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001731 else
1732 case `uname -r` in
1733 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1734 LDSHARED="ld -Bshareable ${LDFLAGS}"
1735 ;;
1736 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001737 LDSHARED='$(CC) -shared $(CCSHARED)'
1738 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001739 ;;
1740 esac
1741 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001742 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00001743 LDSHARED='$(CC) -shared'
1744 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001745 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001746 if test "$GCC" = "yes" ; then
1747 LDSHARED='$(CC) -shared'
1748 LDCXXSHARED='$(CXX) -shared'
1749 else
1750 LDSHARED='$(CC) -G'
1751 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001752 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001753 SCO_SV*)
1754 LDSHARED='$(CC) -Wl,-G,-Bexport'
1755 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1756 CYGWIN*)
1757 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1758 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001759 *) LDSHARED="ld";;
1760 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001761fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001762AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001763LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001764BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001765# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001766# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001767AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001768if test -z "$CCSHARED"
1769then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001770 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001771 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001772 then CCSHARED="-fPIC";
1773 elif test `uname -p` = sparc;
1774 then CCSHARED="-xcode=pic32";
1775 else CCSHARED="-Kpic";
1776 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001777 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001778 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001779 else CCSHARED="+z";
1780 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001781 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001782 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001783 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001784 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001785 if test "$GCC" = "yes"
1786 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001787 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001788 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001789 SCO_SV*)
1790 if test "$GCC" = "yes"
1791 then CCSHARED="-fPIC"
1792 else CCSHARED="-Kpic -belf"
1793 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001794 IRIX*/6*) case $CC in
1795 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001796 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001797 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001798 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001799fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001800AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001801# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001802# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001803AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001804if test -z "$LINKFORSHARED"
1805then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001806 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001807 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001808 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001809 LINKFORSHARED="-Wl,-E -Wl,+s";;
1810# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001811 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001812 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001813 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001814 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001815 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001816 if test "$enable_framework"
1817 then
Jack Jansenda49e192005-01-07 13:08:22 +00001818 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001819 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001820 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001821 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001822 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001823 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001824 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001825 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1826 then
1827 LINKFORSHARED="-Wl,--export-dynamic"
1828 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001829 SunOS/5*) case $CC in
1830 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001831 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001832 then
1833 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001834 fi;;
1835 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001836 CYGWIN*)
1837 if test $enable_shared = "no"
1838 then
1839 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1840 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001841 QNX*)
1842 # -Wl,-E causes the symbols to be added to the dynamic
1843 # symbol table so that they can be found when a module
1844 # is loaded. -N 2048K causes the stack size to be set
1845 # to 2048 kilobytes so that the stack doesn't overflow
1846 # when running test_compile.py.
1847 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001848 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001849fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001850AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001851
Georg Brandl93de2162008-07-16 02:21:06 +00001852
Neil Schemenauer61c51152001-01-26 16:18:16 +00001853AC_SUBST(CFLAGSFORSHARED)
1854AC_MSG_CHECKING(CFLAGSFORSHARED)
1855if test ! "$LIBRARY" = "$LDLIBRARY"
1856then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001857 case $ac_sys_system in
1858 CYGWIN*)
1859 # Cygwin needs CCSHARED when building extension DLLs
1860 # but not when building the interpreter DLL.
1861 CFLAGSFORSHARED='';;
1862 *)
1863 CFLAGSFORSHARED='$(CCSHARED)'
1864 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001865fi
1866AC_MSG_RESULT($CFLAGSFORSHARED)
1867
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001868# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1869# library (with --enable-shared).
1870# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001871# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1872# if it is not required, since it creates a dependency of the shared library
1873# to LIBS. This, in turn, means that applications linking the shared libpython
1874# don't need to link LIBS explicitly. The default should be only changed
1875# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001876AC_SUBST(SHLIBS)
1877AC_MSG_CHECKING(SHLIBS)
1878case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001879 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001880 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001881esac
1882AC_MSG_RESULT($SHLIBS)
1883
1884
Guido van Rossum627b2d71993-12-24 10:39:16 +00001885# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001886AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001887AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1888AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001889
Georg Brandleee31162008-12-07 15:15:22 +00001890# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001891if test "$with_threads" = "yes" -o -z "$with_threads"; then
1892 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1893 # posix4 on Solaris 2.6
1894 # pthread (first!) on Linux
1895fi
1896
Martin v. Löwis19d17342003-06-14 21:03:05 +00001897# check if we need libintl for locale functions
1898AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001899 [AC_DEFINE(WITH_LIBINTL, 1,
1900 [Define to 1 if libintl is needed for locale functions.])
1901 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001902
1903# checks for system dependent C++ extensions support
1904case "$ac_sys_system" in
1905 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00001906 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00001907 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00001908 [[loadAndInit("", 0, "")]])
1909 ],[
1910 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001911 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1912 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00001913 AC_MSG_RESULT(yes)
1914 ],[
1915 AC_MSG_RESULT(no)
1916 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001917 *) ;;
1918esac
1919
Guido van Rossum70c7f481998-03-26 18:44:10 +00001920# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001921AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001922AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001923
Guido van Rossumc5a39031996-07-31 17:35:03 +00001924AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001925AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001926 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001927[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001928AC_MSG_RESULT($withval)
1929LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001930],
1931[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001932
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001933AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1934
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001935# Check for use of the system expat library
1936AC_MSG_CHECKING(for --with-system-expat)
1937AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00001938 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
1939 [],
1940 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001941
1942AC_MSG_RESULT($with_system_expat)
1943
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001944# Check for use of the system libffi library
1945AC_MSG_CHECKING(for --with-system-ffi)
1946AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00001947 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
1948 [],
1949 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001950
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001951if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001952 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1953else
1954 LIBFFI_INCLUDEDIR=""
1955fi
1956AC_SUBST(LIBFFI_INCLUDEDIR)
1957
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001958AC_MSG_RESULT($with_system_ffi)
1959
Benjamin Peterson076ed002010-10-31 17:11:02 +00001960# Check for support for loadable sqlite extensions
1961AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
1962AC_ARG_ENABLE(loadable-sqlite-extensions,
1963 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
1964 [],
1965 [enable_loadable_sqlite_extensions="no"])
1966
1967AC_MSG_RESULT($enable_loadable_sqlite_extensions)
1968
Matthias Klose55708cc2009-04-30 08:06:49 +00001969# Check for --with-dbmliborder
1970AC_MSG_CHECKING(for --with-dbmliborder)
1971AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001972 AS_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
Matthias Klose55708cc2009-04-30 08:06:49 +00001973[
1974if test x$with_dbmliborder = xyes
1975then
1976AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1977else
1978 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1979 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1980 then
1981 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1982 fi
1983 done
1984fi])
1985AC_MSG_RESULT($with_dbmliborder)
1986
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001987# Determine if signalmodule should be used.
1988AC_SUBST(USE_SIGNAL_MODULE)
1989AC_SUBST(SIGNAL_OBJS)
1990AC_MSG_CHECKING(for --with-signal-module)
1991AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001992 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001993
1994if test -z "$with_signal_module"
1995then with_signal_module="yes"
1996fi
1997AC_MSG_RESULT($with_signal_module)
1998
1999if test "${with_signal_module}" = "yes"; then
2000 USE_SIGNAL_MODULE=""
2001 SIGNAL_OBJS=""
2002else
2003 USE_SIGNAL_MODULE="#"
2004 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2005fi
2006
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002007# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002008AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002009USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002010
Guido van Rossum54d93d41997-01-22 20:51:58 +00002011AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002012
Martin v. Löwis11437992002-04-12 09:54:03 +00002013# Templates for things AC_DEFINEd more than once.
2014# For a single AC_DEFINE, no template is needed.
2015AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2016AH_TEMPLATE(_REENTRANT,
2017 [Define to force use of thread-safe errno, h_errno, and other functions])
2018AH_TEMPLATE(WITH_THREAD,
2019 [Define if you want to compile in rudimentary thread support])
2020
Guido van Rossum54d93d41997-01-22 20:51:58 +00002021AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002022dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002023AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002024 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002025
Barry Warsawc0d24d82000-06-29 16:12:00 +00002026# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002027dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002028AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002029 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002030 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002031
2032if test -z "$with_threads"
2033then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002034fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002035AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002036
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002037AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002038if test "$with_threads" = "no"
2039then
2040 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002041elif test "$ac_cv_pthread_is_default" = yes
2042then
2043 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002044 # Defining _REENTRANT on system with POSIX threads should not hurt.
2045 AC_DEFINE(_REENTRANT)
2046 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002047 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002048elif test "$ac_cv_kpthread" = "yes"
2049then
2050 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002051 if test "$ac_cv_cxx_thread" = "yes"; then
2052 CXX="$CXX -Kpthread"
2053 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002054 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002055 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002056 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002057elif test "$ac_cv_kthread" = "yes"
2058then
2059 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002060 if test "$ac_cv_cxx_thread" = "yes"; then
2061 CXX="$CXX -Kthread"
2062 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002063 AC_DEFINE(WITH_THREAD)
2064 posix_threads=yes
2065 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002066elif test "$ac_cv_pthread" = "yes"
2067then
2068 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002069 if test "$ac_cv_cxx_thread" = "yes"; then
2070 CXX="$CXX -pthread"
2071 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002072 AC_DEFINE(WITH_THREAD)
2073 posix_threads=yes
2074 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002075else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002076 if test ! -z "$with_threads" -a -d "$with_threads"
2077 then LDFLAGS="$LDFLAGS -L$with_threads"
2078 fi
2079 if test ! -z "$withval" -a -d "$withval"
2080 then LDFLAGS="$LDFLAGS -L$withval"
2081 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002082
2083 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002084 # define _POSIX_THREADS in unistd.h. Some apparently don't
2085 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002086 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2087 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002088 [
2089#include <unistd.h>
2090#ifdef _POSIX_THREADS
2091yes
2092#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002093 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2094 AC_MSG_RESULT($unistd_defines_pthreads)
2095
Martin v. Löwis130fb172001-07-19 11:00:41 +00002096 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002097 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2098 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002099 AC_DEFINE(HURD_C_THREADS, 1,
2100 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002101 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002102 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002103 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2104 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002105 AC_DEFINE(MACH_C_THREADS, 1,
2106 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002107 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002108 # Just looking for pthread_create in libpthread is not enough:
2109 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2110 # So we really have to include pthread.h, and then link.
2111 _libs=$LIBS
2112 LIBS="$LIBS -lpthread"
2113 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002114 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002115
Matthias Kloseb159a552010-04-25 21:00:44 +00002116void * start_routine (void *arg) { exit (0); }]], [[
2117pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002118 AC_MSG_RESULT(yes)
2119 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002120 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002121 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002122 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002123 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002124 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002125 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002126 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002127 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002128 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002129 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002130 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002131 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002132 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002133 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002134 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002135 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002136 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002137 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002138 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002139 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002140 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002141 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002142 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002143 ])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002144
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002145 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2146 LIBS="$LIBS -lmpc"
2147 THREADOBJ="Python/thread.o"
2148 USE_THREAD_MODULE=""])
2149
2150 if test "$posix_threads" != "yes"; then
2151 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2152 LIBS="$LIBS -lthread"
2153 THREADOBJ="Python/thread.o"
2154 USE_THREAD_MODULE=""])
2155 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002156fi
2157
2158if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002159 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002160 AC_DEFINE(_POSIX_THREADS, 1,
2161 [Define if you have POSIX threads,
2162 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002163 fi
2164
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002165 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2166 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002167 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002168 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002169 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002170 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002171 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002172 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002173 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002174 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002175 ;;
Antoine Pitrou33a29942010-08-30 14:52:00 +00002176 AIX/6) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2177 Define if the Posix semaphores do not work on your system)
2178 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002179 esac
2180
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002181 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2182 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002183 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002184 void *foo(void *parm) {
2185 return NULL;
2186 }
2187 main() {
2188 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002189 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002190 if (pthread_attr_init(&attr)) exit(-1);
2191 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002192 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002193 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002194 }]])],
2195 [ac_cv_pthread_system_supported=yes],
2196 [ac_cv_pthread_system_supported=no],
2197 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002198 ])
2199 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2200 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002201 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002202 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002203 AC_CHECK_FUNCS(pthread_sigmask,
2204 [case $ac_sys_system in
2205 CYGWIN*)
2206 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2207 [Define if pthread_sigmask() does not work on your system.])
2208 ;;
2209 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002210fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002211
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002212
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002213# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002214AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002215AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002216AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002217[ --enable-ipv6 Enable ipv6 (with ipv4) support
2218 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002219[ case "$enableval" in
2220 no)
2221 AC_MSG_RESULT(no)
2222 ipv6=no
2223 ;;
2224 *) AC_MSG_RESULT(yes)
2225 AC_DEFINE(ENABLE_IPV6)
2226 ipv6=yes
2227 ;;
2228 esac ],
2229
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002230[
2231dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002232 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002233#include <sys/types.h>
2234#include <sys/socket.h>
2235main()
2236{
2237 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2238 exit(1);
2239 else
2240 exit(0);
2241}
Matthias Kloseb159a552010-04-25 21:00:44 +00002242]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002243 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002244 ipv6=yes
2245],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002246 AC_MSG_RESULT(no)
2247 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002248],[
2249 AC_MSG_RESULT(no)
2250 ipv6=no
2251])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002252
2253if test "$ipv6" = "yes"; then
2254 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002255 AC_COMPILE_IFELSE([
2256 AC_LANG_PROGRAM([[#include <sys/types.h>
2257#include <netinet/in.h>]],
2258 [[struct sockaddr_in6 x;
2259 x.sin6_scope_id;]])
2260 ],[
2261 AC_MSG_RESULT(yes)
2262 ipv6=yes
2263 ],[
2264 AC_MSG_RESULT(no, IPv6 disabled)
2265 ipv6=no
2266 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002267fi
2268
2269if test "$ipv6" = "yes"; then
2270 AC_DEFINE(ENABLE_IPV6)
2271fi
2272])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002273
2274ipv6type=unknown
2275ipv6lib=none
2276ipv6trylibc=no
2277
2278if test "$ipv6" = "yes"; then
2279 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002280 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2281 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282 case $i in
2283 inria)
2284 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002285 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002286#include <netinet/in.h>
2287#ifdef IPV6_INRIA_VERSION
2288yes
2289#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002290 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002291 ;;
2292 kame)
2293 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002294 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002295#include <netinet/in.h>
2296#ifdef __KAME__
2297yes
2298#endif],
2299 [ipv6type=$i;
2300 ipv6lib=inet6
2301 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002302 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303 ;;
2304 linux-glibc)
2305 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002306 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002307#include <features.h>
2308#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2309yes
2310#endif],
2311 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002312 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313 ;;
2314 linux-inet6)
2315 dnl http://www.v6.linux.or.jp/
2316 if test -d /usr/inet6; then
2317 ipv6type=$i
2318 ipv6lib=inet6
2319 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002320 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002321 fi
2322 ;;
2323 solaris)
2324 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002325 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326 ipv6type=$i
2327 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002328 fi
2329 fi
2330 ;;
2331 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002332 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333#include <sys/param.h>
2334#ifdef _TOSHIBA_INET6
2335yes
2336#endif],
2337 [ipv6type=$i;
2338 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002339 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002340 ;;
2341 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002342 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002343#include </usr/local/v6/include/sys/v6config.h>
2344#ifdef __V6D__
2345yes
2346#endif],
2347 [ipv6type=$i;
2348 ipv6lib=v6;
2349 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002350 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351 ;;
2352 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002353 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002354#include <sys/param.h>
2355#ifdef _ZETA_MINAMI_INET6
2356yes
2357#endif],
2358 [ipv6type=$i;
2359 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002360 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002361 ;;
2362 esac
2363 if test "$ipv6type" != "unknown"; then
2364 break
2365 fi
2366 done
2367 AC_MSG_RESULT($ipv6type)
2368fi
2369
2370if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2371 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2372 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2373 echo "using lib$ipv6lib"
2374 else
2375 if test $ipv6trylibc = "yes"; then
2376 echo "using libc"
2377 else
2378 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2379 echo "You need to fetch lib$ipv6lib.a from appropriate"
2380 echo 'ipv6 kit and compile beforehand.'
2381 exit 1
2382 fi
2383 fi
2384fi
2385
Georg Brandl93de2162008-07-16 02:21:06 +00002386AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002387AC_COMPILE_IFELSE([
2388 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2389],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002390 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002391 AC_MSG_RESULT(yes)
2392],[
Georg Brandl93de2162008-07-16 02:21:06 +00002393 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002394])
Georg Brandl93de2162008-07-16 02:21:06 +00002395
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002396# Check for --with-doc-strings
2397AC_MSG_CHECKING(for --with-doc-strings)
2398AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002399 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002400
2401if test -z "$with_doc_strings"
2402then with_doc_strings="yes"
2403fi
2404if test "$with_doc_strings" != "no"
2405then
2406 AC_DEFINE(WITH_DOC_STRINGS, 1,
2407 [Define if you want documentation strings in extension modules])
2408fi
2409AC_MSG_RESULT($with_doc_strings)
2410
Georg Brandl9976a512010-08-02 21:02:36 +00002411# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002412AC_MSG_CHECKING(for --with-tsc)
2413AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002414 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002415if test "$withval" != no
2416then
2417 AC_DEFINE(WITH_TSC, 1,
2418 [Define to profile with the Pentium timestamp counter])
2419 AC_MSG_RESULT(yes)
2420else AC_MSG_RESULT(no)
2421fi],
2422[AC_MSG_RESULT(no)])
2423
2424# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002425AC_MSG_CHECKING(for --with-pymalloc)
2426AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002427 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002428
2429if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002430then
2431 with_pymalloc="yes"
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00002432 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002433fi
2434if test "$with_pymalloc" != "no"
2435then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002436 AC_DEFINE(WITH_PYMALLOC, 1,
2437 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002438fi
2439AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002440
Benjamin Peterson05159c42009-12-03 03:01:27 +00002441# Check for Valgrind support
2442AC_MSG_CHECKING([for --with-valgrind])
2443AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002444 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002445 with_valgrind=no)
2446AC_MSG_RESULT([$with_valgrind])
2447if test "$with_valgrind" != no; then
2448 AC_CHECK_HEADER([valgrind/valgrind.h],
2449 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2450 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2451 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002452 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002453fi
2454
Guido van Rossum68242b51996-05-28 22:53:03 +00002455# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002456AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002457DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002458
Guido van Rossume97ee181999-12-20 21:27:22 +00002459# the dlopen() function means we might want to use dynload_shlib.o. some
2460# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002461AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002462
2463# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2464# loading of modules.
2465AC_SUBST(DYNLOADFILE)
2466AC_MSG_CHECKING(DYNLOADFILE)
2467if test -z "$DYNLOADFILE"
2468then
2469 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002470 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2471 if test "$ac_cv_func_dlopen" = yes
2472 then DYNLOADFILE="dynload_shlib.o"
2473 else DYNLOADFILE="dynload_aix.o"
2474 fi
2475 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002476 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002477 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2478 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002479 *)
2480 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2481 # out any dynamic loading
2482 if test "$ac_cv_func_dlopen" = yes
2483 then DYNLOADFILE="dynload_shlib.o"
2484 else DYNLOADFILE="dynload_stub.o"
2485 fi
2486 ;;
2487 esac
2488fi
2489AC_MSG_RESULT($DYNLOADFILE)
2490if test "$DYNLOADFILE" != "dynload_stub.o"
2491then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002492 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2493 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002494fi
2495
Jack Jansenc49e5b72001-06-19 15:00:23 +00002496# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2497
2498AC_SUBST(MACHDEP_OBJS)
2499AC_MSG_CHECKING(MACHDEP_OBJS)
2500if test -z "$MACHDEP_OBJS"
2501then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002502 MACHDEP_OBJS=$extra_machdep_objs
2503else
2504 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002505fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002506AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002507
Guido van Rossum627b2d71993-12-24 10:39:16 +00002508# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00002509AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Antoine Pitrou8250e232011-02-25 23:41:16 +00002510 clock confstr ctermid execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002511 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
2512 futimens futimes \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002513 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002514 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07002515 if_nameindex \
Mark Dickinson48251e72011-05-10 20:56:00 +01002516 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mbrtowc mkdirat mkfifo \
Antoine Pitrouf65132d2011-02-25 23:25:17 +00002517 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002518 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002519 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002520 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00002521 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00002522 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002523 sigaction sigaltstack siginterrupt sigpending \
2524 sigrelse sigwait snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002525 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002526 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
2527 wcscoll wcsftime wcsxfrm writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002528
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002529# For some functions, having a definition is not sufficient, since
2530# we want to take their address.
2531AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002532AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2533 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2534 AC_MSG_RESULT(yes)],
2535 [AC_MSG_RESULT(no)
2536])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002537AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002538AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2539 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2540 AC_MSG_RESULT(yes)],
2541 [AC_MSG_RESULT(no)
2542])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002543AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002544AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2545 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2546 AC_MSG_RESULT(yes)],
2547 [AC_MSG_RESULT(no)
2548])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002549AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002550AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2551 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2552 AC_MSG_RESULT(yes)],
2553 [AC_MSG_RESULT(no)
2554])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002555AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002556AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2557 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2558 AC_MSG_RESULT(yes)],
2559 [AC_MSG_RESULT(no)
2560])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002561AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002562AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2563 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2564 AC_MSG_RESULT(yes)],
2565 [AC_MSG_RESULT(no)
2566])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002567AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002568AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2569 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2570 AC_MSG_RESULT(yes)],
2571 [AC_MSG_RESULT(no)
2572])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002573AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002574AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002575#include <sys/types.h>
2576#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002577 ]], [[int x=kqueue()]])],
2578 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2579 AC_MSG_RESULT(yes)],
2580 [AC_MSG_RESULT(no)
2581])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002582# On some systems (eg. FreeBSD 5), we would find a definition of the
2583# functions ctermid_r, setgroups in the library, but no prototype
2584# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2585# address to avoid compiler warnings and potential miscompilations
2586# because of the missing prototypes.
2587
2588AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002589AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002590#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002591]], [[void* p = ctermid_r]])],
2592 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2593 AC_MSG_RESULT(yes)],
2594 [AC_MSG_RESULT(no)
2595])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002596
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002597AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
2598 [AC_COMPILE_IFELSE(
2599 [AC_LANG_PROGRAM(
2600 [#include <sys/file.h>],
2601 [void* p = flock]
2602 )],
2603 [ac_cv_flock_decl=yes],
2604 [ac_cv_flock_decl=no]
2605 )
Matthias Kloseb159a552010-04-25 21:00:44 +00002606])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002607if test "x${ac_cv_flock_decl}" = xyes; then
2608 AC_CHECK_FUNCS(flock,,
2609 AC_CHECK_LIB(bsd,flock,
2610 [AC_DEFINE(HAVE_FLOCK)
2611 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
2612 ])
2613 )
Antoine Pitroua3000072010-09-07 14:52:42 +00002614fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002615
2616AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002617AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002618#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002619]], [[void* p = getpagesize]])],
2620 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2621 AC_MSG_RESULT(yes)],
2622 [AC_MSG_RESULT(no)
2623])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002624
Antoine Pitrou6f26be02011-05-03 18:18:59 +02002625AC_MSG_CHECKING(whether mallopt can set malloc mmap threshold)
2626AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2627#include <malloc.h>
2628]], [[mallopt(M_MMAP_THRESHOLD, 256 * 1024)]])],
2629 [AC_DEFINE(HAVE_MALLOPT_MMAP_THRESHOLD, 1, Define if mallopt can set malloc mmap threshold.)
2630 AC_MSG_RESULT(yes)],
2631 [AC_MSG_RESULT(no)
2632])
2633
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002634dnl check for true
2635AC_CHECK_PROGS(TRUE, true, /bin/true)
2636
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002637dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2638dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002639AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002640 AC_CHECK_LIB(resolv, inet_aton)
2641)
2642
Christian Heimesd0764e22007-12-04 15:00:33 +00002643# On Tru64, chflags seems to be present, but calling it will
2644# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002645AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002646AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002647#include <sys/stat.h>
2648#include <unistd.h>
2649int main(int argc, char*argv[])
2650{
2651 if(chflags(argv[0], 0) != 0)
2652 return 1;
2653 return 0;
2654}
Matthias Kloseb159a552010-04-25 21:00:44 +00002655]]])],
2656[ac_cv_have_chflags=yes],
2657[ac_cv_have_chflags=no],
2658[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002659])
2660if test "$ac_cv_have_chflags" = cross ; then
2661 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2662fi
2663if test "$ac_cv_have_chflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002664 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002665fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002666
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002667AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002668AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002669#include <sys/stat.h>
2670#include <unistd.h>
2671int main(int argc, char*argv[])
2672{
2673 if(lchflags(argv[0], 0) != 0)
2674 return 1;
2675 return 0;
2676}
Matthias Kloseb159a552010-04-25 21:00:44 +00002677]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002678])
2679if test "$ac_cv_have_lchflags" = cross ; then
2680 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2681fi
2682if test "$ac_cv_have_lchflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002683 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002684fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002685
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002686dnl Check if system zlib has *Copy() functions
2687dnl
2688dnl On MacOSX the linker will search for dylibs on the entire linker path
2689dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2690dnl to revert to a more traditional unix behaviour and make it possible to
2691dnl override the system libz with a local static library of libz. Temporarily
2692dnl add that flag to our CFLAGS as well to ensure that we check the version
2693dnl of libz that will be used by setup.py.
2694dnl The -L/usr/local/lib is needed as wel to get the same compilation
2695dnl environment as setup.py (and leaving it out can cause configure to use the
2696dnl wrong version of the library)
2697case $ac_sys_system/$ac_sys_release in
2698Darwin/*)
2699 _CUR_CFLAGS="${CFLAGS}"
2700 _CUR_LDFLAGS="${LDFLAGS}"
2701 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2702 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2703 ;;
2704esac
2705
Matthias Klosec80c93f2010-04-24 17:04:35 +00002706AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002707
2708case $ac_sys_system/$ac_sys_release in
2709Darwin/*)
2710 CFLAGS="${_CUR_CFLAGS}"
2711 LDFLAGS="${_CUR_LDFLAGS}"
2712 ;;
2713esac
2714
Martin v. Löwise9416172003-05-03 10:12:45 +00002715AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002716AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002717#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002718]], [[void* p = hstrerror; hstrerror(0)]])],
2719 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2720 AC_MSG_RESULT(yes)],
2721 [AC_MSG_RESULT(no)
2722])
Martin v. Löwise9416172003-05-03 10:12:45 +00002723
2724AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002725AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002726#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002727#include <sys/socket.h>
2728#include <netinet/in.h>
2729#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002730]], [[void* p = inet_aton;inet_aton(0,0)]])],
2731 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2732 AC_MSG_RESULT(yes)],
2733 [AC_MSG_RESULT(no)
2734])
Martin v. Löwise9416172003-05-03 10:12:45 +00002735
2736AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002737AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002738#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002739#include <sys/socket.h>
2740#include <netinet/in.h>
2741#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002742]], [[void* p = inet_pton]])],
2743 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2744 AC_MSG_RESULT(yes)],
2745 [AC_MSG_RESULT(no)
2746])
Martin v. Löwise9416172003-05-03 10:12:45 +00002747
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002748# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002749AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002750AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002751#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002752#ifdef HAVE_GRP_H
2753#include <grp.h>
2754#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002755]], [[void* p = setgroups]])],
2756 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2757 AC_MSG_RESULT(yes)],
2758 [AC_MSG_RESULT(no)
2759])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002760
Fred Drake8cef4cf2000-06-28 16:40:38 +00002761# check for openpty and forkpty
2762
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002763AC_CHECK_FUNCS(openpty,,
2764 AC_CHECK_LIB(util,openpty,
2765 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2766 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2767 )
2768)
2769AC_CHECK_FUNCS(forkpty,,
2770 AC_CHECK_LIB(util,forkpty,
2771 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2772 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2773 )
2774)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002775
Christian Heimesb186d002008-03-18 15:15:01 +00002776# Stuff for expat.
2777AC_CHECK_FUNCS(memmove)
2778
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002779# check for long file support functions
2780AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2781
Christian Heimesb186d002008-03-18 15:15:01 +00002782AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002783AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002784 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2785 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2786 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002787)
Jack Jansen150753c2003-03-29 22:07:47 +00002788AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002789 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2790 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2791 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002792)
2793AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002794 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2795 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2796 [],
2797 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2798 [Define if gettimeofday() does not have second (timezone) argument
2799 This is the case on Motorola V4 (R40V4.2)])
2800 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002801)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002802
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002803AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002804AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002805#if defined(MAJOR_IN_MKDEV)
2806#include <sys/mkdev.h>
2807#elif defined(MAJOR_IN_SYSMACROS)
2808#include <sys/sysmacros.h>
2809#else
2810#include <sys/types.h>
2811#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002812]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002813 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002814]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002815 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2816 [Define to 1 if you have the device macros.])
2817 AC_MSG_RESULT(yes)
2818],[
2819 AC_MSG_RESULT(no)
2820])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002821
2822# On OSF/1 V5.1, getaddrinfo is available, but a define
2823# for [no]getaddrinfo in netdb.h.
2824AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002825AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002826#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002827#include <sys/socket.h>
2828#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002829#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002830]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2831[have_getaddrinfo=yes],
2832[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002833AC_MSG_RESULT($have_getaddrinfo)
2834if test $have_getaddrinfo = yes
2835then
2836 AC_MSG_CHECKING(getaddrinfo bug)
2837 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002838 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002839#include <sys/types.h>
2840#include <netdb.h>
2841#include <string.h>
2842#include <sys/socket.h>
2843#include <netinet/in.h>
2844
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002845int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002846{
2847 int passive, gaierr, inet4 = 0, inet6 = 0;
2848 struct addrinfo hints, *ai, *aitop;
2849 char straddr[INET6_ADDRSTRLEN], strport[16];
2850
2851 for (passive = 0; passive <= 1; passive++) {
2852 memset(&hints, 0, sizeof(hints));
2853 hints.ai_family = AF_UNSPEC;
2854 hints.ai_flags = passive ? AI_PASSIVE : 0;
2855 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002856 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002857 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2858 (void)gai_strerror(gaierr);
2859 goto bad;
2860 }
2861 for (ai = aitop; ai; ai = ai->ai_next) {
2862 if (ai->ai_addr == NULL ||
2863 ai->ai_addrlen == 0 ||
2864 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2865 straddr, sizeof(straddr), strport, sizeof(strport),
2866 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2867 goto bad;
2868 }
2869 switch (ai->ai_family) {
2870 case AF_INET:
2871 if (strcmp(strport, "54321") != 0) {
2872 goto bad;
2873 }
2874 if (passive) {
2875 if (strcmp(straddr, "0.0.0.0") != 0) {
2876 goto bad;
2877 }
2878 } else {
2879 if (strcmp(straddr, "127.0.0.1") != 0) {
2880 goto bad;
2881 }
2882 }
2883 inet4++;
2884 break;
2885 case AF_INET6:
2886 if (strcmp(strport, "54321") != 0) {
2887 goto bad;
2888 }
2889 if (passive) {
2890 if (strcmp(straddr, "::") != 0) {
2891 goto bad;
2892 }
2893 } else {
2894 if (strcmp(straddr, "::1") != 0) {
2895 goto bad;
2896 }
2897 }
2898 inet6++;
2899 break;
2900 case AF_UNSPEC:
2901 goto bad;
2902 break;
2903 default:
2904 /* another family support? */
2905 break;
2906 }
2907 }
2908 }
2909
2910 if (!(inet4 == 0 || inet4 == 2))
2911 goto bad;
2912 if (!(inet6 == 0 || inet6 == 2))
2913 goto bad;
2914
2915 if (aitop)
2916 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002917 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002918
2919 bad:
2920 if (aitop)
2921 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002922 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002923}
Matthias Kloseb159a552010-04-25 21:00:44 +00002924]]])],
2925[ac_cv_buggy_getaddrinfo=no],
2926[ac_cv_buggy_getaddrinfo=yes],
2927[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002928fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002929
Benjamin Petersond4694ed2010-11-01 01:44:30 +00002930AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
2931
Mark Dickinson2df5d282009-12-31 21:22:50 +00002932if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002933then
2934 if test $ipv6 = yes
2935 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002936 echo 'Fatal: You must get working getaddrinfo() function.'
2937 echo ' or you can specify "--disable-ipv6"'.
2938 exit 1
2939 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002940else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002941 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002942fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00002943
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002944AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002945
Guido van Rossum627b2d71993-12-24 10:39:16 +00002946# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002947AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002948AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002949AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002950AC_CHECK_MEMBERS([struct stat.st_rdev])
2951AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002952AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002953AC_CHECK_MEMBERS([struct stat.st_gen])
2954AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002955AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002956
2957AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00002958AC_CACHE_VAL(ac_cv_header_time_altzone,[
2959 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
2960 [ac_cv_header_time_altzone=yes],
2961 [ac_cv_header_time_altzone=no])
2962 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002963AC_MSG_RESULT($ac_cv_header_time_altzone)
2964if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002965 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002966fi
2967
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002968was_it_defined=no
2969AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00002970AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002971#include <sys/types.h>
2972#include <sys/select.h>
2973#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002974]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002975 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2976 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2977 (which you can't on SCO ODT 3.0).])
2978 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002979],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002980AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002981
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002982AC_MSG_CHECKING(for addrinfo)
2983AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002984AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
2985 [ac_cv_struct_addrinfo=yes],
2986 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002987AC_MSG_RESULT($ac_cv_struct_addrinfo)
2988if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002989 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002990fi
2991
2992AC_MSG_CHECKING(for sockaddr_storage)
2993AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00002994AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002995# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002996# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
2997 [ac_cv_struct_sockaddr_storage=yes],
2998 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002999AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3000if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003001 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003002fi
3003
Guido van Rossum627b2d71993-12-24 10:39:16 +00003004# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003006AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003007AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003008
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003009works=no
3010AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003011AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3012 [works=yes],
3013 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003015AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003016
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003017works=no
3018AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003019AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3020 [works=yes],
3021 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003022)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003023AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003024
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003025have_prototypes=no
3026AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003027AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3028 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3029 [Define if your compiler supports function prototype])
3030 have_prototypes=yes],
3031 []
3032)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003033AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003034
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003035works=no
3036AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003037AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003038#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003039int foo(int x, ...) {
3040 va_list va;
3041 va_start(va, x);
3042 va_arg(va, int);
3043 va_arg(va, char *);
3044 va_arg(va, double);
3045 return 0;
3046}
Matthias Kloseb159a552010-04-25 21:00:44 +00003047]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3049 [Define if your compiler supports variable length function prototypes
3050 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3051 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003052],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003053AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003054
Dave Cole331708b2004-08-09 04:51:41 +00003055# check for socketpair
3056AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003057AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003058#include <sys/types.h>
3059#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003060]], [[void *x=socketpair]])],
3061 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3062 AC_MSG_RESULT(yes)],
3063 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003064)
3065
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003066# check if sockaddr has sa_len member
3067AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003068AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3069#include <sys/socket.h>]], [[struct sockaddr x;
3070x.sa_len = 0;]])],
3071 [AC_MSG_RESULT(yes)
3072 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3073 [AC_MSG_RESULT(no)]
3074)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003075
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003076va_list_is_array=no
3077AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003078AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003079#ifdef HAVE_STDARG_PROTOTYPES
3080#include <stdarg.h>
3081#else
3082#include <varargs.h>
3083#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003084]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003085 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3086 va_list_is_array=yes
3087])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003088AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003089
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003090# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003091AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3092 [Define this if you have some version of gethostbyname_r()])
3093
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003094AC_CHECK_FUNC(gethostbyname_r, [
3095 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3096 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3097 OLD_CFLAGS=$CFLAGS
3098 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003099 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003100# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003101 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003102 char *name;
3103 struct hostent *he, *res;
3104 char buffer[2048];
3105 int buflen = 2048;
3106 int h_errnop;
3107
3108 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003109 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003110 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003111 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3112 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003113 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003114 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003115 AC_MSG_RESULT(no)
3116 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003117 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003118# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003119 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003120 char *name;
3121 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003122 char buffer[2048];
3123 int buflen = 2048;
3124 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003125
Matthias Kloseb159a552010-04-25 21:00:44 +00003126 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3127 ]])],
3128 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003129 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003130 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3131 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003132 AC_MSG_RESULT(yes)
3133 ], [
3134 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003135 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3136 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3137# include <netdb.h>
3138 ]], [[
3139 char *name;
3140 struct hostent *he;
3141 struct hostent_data data;
3142
3143 (void) gethostbyname_r(name, he, &data);
3144 ]])],
3145 [
3146 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3147 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3148 [Define this if you have the 3-arg version of gethostbyname_r().])
3149 AC_MSG_RESULT(yes)
3150 ], [
3151 AC_MSG_RESULT(no)
3152 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003153 ])
3154 ])
3155 CFLAGS=$OLD_CFLAGS
3156], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003157 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003158])
3159AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3160AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3161AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003162AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003163AC_SUBST(HAVE_GETHOSTBYNAME)
3164
Guido van Rossum627b2d71993-12-24 10:39:16 +00003165# checks for system services
3166# (none yet)
3167
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003168# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003169AC_CHECK_FUNC(__fpu_control,
3170 [],
3171 [AC_CHECK_LIB(ieee, __fpu_control)
3172])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003173
Guido van Rossum93274221997-05-09 02:42:00 +00003174# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003175AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003176AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003177 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003178[
Guido van Rossum93274221997-05-09 02:42:00 +00003179if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003180then
3181 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3182 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3183 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003184else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003185fi],
3186[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003187
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003188# check for --with-libm=...
3189AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003190case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003191Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003192*) LIBM=-lm
3193esac
Guido van Rossum93274221997-05-09 02:42:00 +00003194AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003195AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003196 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003197[
Guido van Rossum93274221997-05-09 02:42:00 +00003198if test "$withval" = no
3199then LIBM=
3200 AC_MSG_RESULT(force LIBM empty)
3201elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003202then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003203 AC_MSG_RESULT(set LIBM="$withval")
3204else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003205fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003206[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003207
3208# check for --with-libc=...
3209AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003210AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003211AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003212 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003213[
Guido van Rossum93274221997-05-09 02:42:00 +00003214if test "$withval" = no
3215then LIBC=
3216 AC_MSG_RESULT(force LIBC empty)
3217elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003218then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003219 AC_MSG_RESULT(set LIBC="$withval")
3220else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003221fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003222[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003223
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003224# **************************************************
3225# * Check for various properties of floating point *
3226# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003227
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003228AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3229AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003230AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003231#include <string.h>
3232int main() {
3233 double x = 9006104071832581.0;
3234 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3235 return 0;
3236 else
3237 return 1;
3238}
Matthias Kloseb159a552010-04-25 21:00:44 +00003239]])],
3240[ac_cv_little_endian_double=yes],
3241[ac_cv_little_endian_double=no],
3242[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003243AC_MSG_RESULT($ac_cv_little_endian_double)
3244if test "$ac_cv_little_endian_double" = yes
3245then
3246 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3247 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3248 with the least significant byte first])
3249fi
3250
3251AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3252AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003253AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003254#include <string.h>
3255int main() {
3256 double x = 9006104071832581.0;
3257 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3258 return 0;
3259 else
3260 return 1;
3261}
Matthias Kloseb159a552010-04-25 21:00:44 +00003262]])],
3263[ac_cv_big_endian_double=yes],
3264[ac_cv_big_endian_double=no],
3265[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003266AC_MSG_RESULT($ac_cv_big_endian_double)
3267if test "$ac_cv_big_endian_double" = yes
3268then
3269 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3270 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3271 with the most significant byte first])
3272fi
3273
3274# Some ARM platforms use a mixed-endian representation for doubles.
3275# While Python doesn't currently have full support for these platforms
3276# (see e.g., issue 1762561), we can at least make sure that float <-> string
3277# conversions work.
3278AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3279AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003280AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003281#include <string.h>
3282int main() {
3283 double x = 9006104071832581.0;
3284 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3285 return 0;
3286 else
3287 return 1;
3288}
Matthias Kloseb159a552010-04-25 21:00:44 +00003289]])],
3290[ac_cv_mixed_endian_double=yes],
3291[ac_cv_mixed_endian_double=no],
3292[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003293AC_MSG_RESULT($ac_cv_mixed_endian_double)
3294if test "$ac_cv_mixed_endian_double" = yes
3295then
3296 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3297 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3298 in ARM mixed-endian order (byte order 45670123)])
3299fi
3300
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003301# The short float repr introduced in Python 3.1 requires the
3302# correctly-rounded string <-> double conversion functions from
3303# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3304# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003305# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003306# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003307
3308# This inline assembler syntax may also work for suncc and icc,
3309# so we try it on all platforms.
3310
3311AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003312AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003313 unsigned short cw;
3314 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3315 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003316]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003317AC_MSG_RESULT($have_gcc_asm_for_x87)
3318if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003319then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003320 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3321 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003322fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003323
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003324# Detect whether system arithmetic is subject to x87-style double
3325# rounding issues. The result of this test has little meaning on non
3326# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3327# mode is round-to-nearest and double rounding issues are present, and
3328# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3329AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003330# $BASECFLAGS may affect the result
3331ac_save_cc="$CC"
3332CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003333AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003334#include <stdlib.h>
3335#include <math.h>
3336int main() {
3337 volatile double x, y, z;
3338 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3339 x = 0.99999999999999989; /* 1-2**-53 */
3340 y = 1./x;
3341 if (y != 1.)
3342 exit(0);
3343 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3344 x = 1e16;
3345 y = 2.99999;
3346 z = x + y;
3347 if (z != 1e16+4.)
3348 exit(0);
3349 /* both tests show evidence of double rounding */
3350 exit(1);
3351}
Matthias Kloseb159a552010-04-25 21:00:44 +00003352]])],
3353[ac_cv_x87_double_rounding=no],
3354[ac_cv_x87_double_rounding=yes],
3355[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003356CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003357AC_MSG_RESULT($ac_cv_x87_double_rounding)
3358if test "$ac_cv_x87_double_rounding" = yes
3359then
3360 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3361 [Define if arithmetic is subject to x87-style double rounding issue])
3362fi
3363
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003364# ************************************
3365# * Check for mathematical functions *
3366# ************************************
3367
3368LIBS_SAVE=$LIBS
3369LIBS="$LIBS $LIBM"
3370
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003371AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003372AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003373AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3374
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003375# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3376# -0. on some architectures.
3377AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3378AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003379AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003380#include <math.h>
3381#include <stdlib.h>
3382int main() {
3383 /* return 0 if either negative zeros don't exist
3384 on this platform or if negative zeros exist
3385 and tanh(-0.) == -0. */
3386 if (atan2(0., -1.) == atan2(-0., -1.) ||
3387 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3388 else exit(1);
3389}
Matthias Kloseb159a552010-04-25 21:00:44 +00003390]])],
3391[ac_cv_tanh_preserves_zero_sign=yes],
3392[ac_cv_tanh_preserves_zero_sign=no],
3393[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003394AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3395if test "$ac_cv_tanh_preserves_zero_sign" = yes
3396then
3397 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3398 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3399fi
3400
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003401if test "$ac_cv_func_log1p" = yes
3402then
3403 # On some versions of AIX, log1p(-0.) returns 0. instead of
3404 # -0. See issue #9920.
3405 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3406 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3407 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3408 #include <math.h>
3409 #include <stdlib.h>
3410 int main() {
3411 /* Fail if the signs of log1p(-0.) and -0. can be
3412 distinguished. */
3413 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3414 return 0;
3415 else
3416 return 1;
3417 }
3418 ]])],
3419 [ac_cv_log1p_drops_zero_sign=no],
3420 [ac_cv_log1p_drops_zero_sign=yes],
3421 [ac_cv_log1p_drops_zero_sign=no])])
3422 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3423fi
3424if test "$ac_cv_log1p_drops_zero_sign" = yes
3425then
3426 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3427 [Define if log1p(-0.) is 0. rather than -0.])
3428fi
Christian Heimes99170a52007-12-19 02:07:34 +00003429
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003430LIBS=$LIBS_SAVE
3431
Mark Dickinsona614f042009-11-28 12:48:43 +00003432# For multiprocessing module, check that sem_open
3433# actually works. For FreeBSD versions <= 7.2,
3434# the kernel module that provides POSIX semaphores
3435# isn't loaded by default, so an attempt to call
3436# sem_open results in a 'Signal 12' error.
3437AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3438AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003439AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003440#include <unistd.h>
3441#include <fcntl.h>
3442#include <stdio.h>
3443#include <semaphore.h>
3444#include <sys/stat.h>
3445
3446int main(void) {
3447 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3448 if (a == SEM_FAILED) {
3449 perror("sem_open");
3450 return 1;
3451 }
3452 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003453 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003454 return 0;
3455}
Matthias Kloseb159a552010-04-25 21:00:44 +00003456]])],
3457[ac_cv_posix_semaphores_enabled=yes],
3458[ac_cv_posix_semaphores_enabled=no],
3459[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003460)
3461AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3462if test $ac_cv_posix_semaphores_enabled = no
3463then
3464 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3465 [Define if POSIX semaphores aren't enabled on your system])
3466fi
3467
Mark Dickinson10683072009-04-18 21:18:19 +00003468# Multiprocessing check for broken sem_getvalue
3469AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003470AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003471AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003472#include <unistd.h>
3473#include <fcntl.h>
3474#include <stdio.h>
3475#include <semaphore.h>
3476#include <sys/stat.h>
3477
3478int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003479 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003480 int count;
3481 int res;
3482 if(a==SEM_FAILED){
3483 perror("sem_open");
3484 return 1;
3485
3486 }
3487 res = sem_getvalue(a, &count);
3488 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003489 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003490 return res==-1 ? 1 : 0;
3491}
Matthias Kloseb159a552010-04-25 21:00:44 +00003492]])],
3493[ac_cv_broken_sem_getvalue=no],
3494[ac_cv_broken_sem_getvalue=yes],
3495[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003496)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003497AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3498if test $ac_cv_broken_sem_getvalue = yes
3499then
3500 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3501 [define to 1 if your sem_getvalue is broken.])
3502fi
Mark Dickinson10683072009-04-18 21:18:19 +00003503
Mark Dickinsonbd792642009-03-18 20:06:12 +00003504# determine what size digit to use for Python's longs
3505AC_MSG_CHECKING([digit size for Python's longs])
3506AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003507AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003508[case $enable_big_digits in
3509yes)
3510 enable_big_digits=30 ;;
3511no)
3512 enable_big_digits=15 ;;
3513[15|30])
3514 ;;
3515*)
3516 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3517esac
3518AC_MSG_RESULT($enable_big_digits)
3519AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3520],
3521[AC_MSG_RESULT(no value specified)])
3522
Guido van Rossumef2255b2000-03-10 22:30:29 +00003523# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003524AC_CHECK_HEADER(wchar.h, [
3525 AC_DEFINE(HAVE_WCHAR_H, 1,
3526 [Define if the compiler provides a wchar.h header file.])
3527 wchar_h="yes"
3528],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003529wchar_h="no"
3530)
3531
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003532# determine wchar_t size
3533if test "$wchar_h" = yes
3534then
Guido van Rossum67b26592001-10-20 14:21:45 +00003535 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003536fi
3537
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003538AC_MSG_CHECKING(for UCS-4 tcl)
3539have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003540AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003541#include <tcl.h>
3542#if TCL_UTF_MAX != 6
3543# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003544#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003545 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3546 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003547],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003548AC_MSG_RESULT($have_ucs4_tcl)
3549
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003550# check whether wchar_t is signed or not
3551if test "$wchar_h" = yes
3552then
3553 # check whether wchar_t is signed or not
3554 AC_MSG_CHECKING(whether wchar_t is signed)
3555 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003556 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003557 #include <wchar.h>
3558 int main()
3559 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003560 /* Success: exit code 0 */
3561 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003562 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003563 ]])],
3564 [ac_cv_wchar_t_signed=yes],
3565 [ac_cv_wchar_t_signed=no],
3566 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003567 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3568fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003569
Georg Brandl52d168a2008-01-07 18:10:24 +00003570AC_MSG_CHECKING(what type to use for str)
3571AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003572 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003573[
3574if test "$withval" != no
3575then unicode_size="4"
3576else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003577fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003578],
3579[
3580case "$have_ucs4_tcl" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003581 yes) unicode_size="4";;
Georg Brandl52d168a2008-01-07 18:10:24 +00003582 *) unicode_size="2" ;;
3583esac
3584])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003585
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003586AH_TEMPLATE(Py_UNICODE_SIZE,
3587 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003588case "$unicode_size" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003589 4)
3590 AC_DEFINE(Py_UNICODE_SIZE, 4)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003591 ABIFLAGS="${ABIFLAGS}u"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003592 ;;
Georg Brandl52d168a2008-01-07 18:10:24 +00003593 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003594esac
3595
Martin v. Löwis11437992002-04-12 09:54:03 +00003596AH_TEMPLATE(PY_UNICODE_TYPE,
3597 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003598
Georg Brandl52d168a2008-01-07 18:10:24 +00003599# wchar_t is only usable if it maps to an unsigned type
3600if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003601 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003602then
3603 PY_UNICODE_TYPE="wchar_t"
3604 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3605 [Define if you have a useable wchar_t type defined in wchar.h; useable
3606 means wchar_t must be an unsigned type with at least 16 bits. (see
3607 Include/unicodeobject.h).])
3608 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3609elif test "$ac_cv_sizeof_short" = "$unicode_size"
3610then
3611 PY_UNICODE_TYPE="unsigned short"
3612 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3613elif test "$ac_cv_sizeof_long" = "$unicode_size"
3614then
3615 PY_UNICODE_TYPE="unsigned long"
3616 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3617else
3618 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003619fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003620AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003621
3622# check for endianness
3623AC_C_BIGENDIAN
3624
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003625# ABI version string for Python extension modules. This appears between the
3626# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
3627# from the following attributes which affect the ABI of this Python build (in
3628# this order):
3629#
3630# * The Python implementation (always 'cpython-' for us)
3631# * The major and minor version numbers
3632# * --with-pydebug (adds a 'd')
3633# * --with-pymalloc (adds a 'm')
3634# * --with-wide-unicode (adds a 'u')
3635#
3636# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00003637# would get a shared library ABI version tag of 'cpython-32dmu' and shared
3638# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003639AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003640AC_MSG_CHECKING(ABIFLAGS)
3641AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003642AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003643SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003644AC_MSG_RESULT($SOABI)
3645
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003646AC_MSG_CHECKING(LDVERSION)
3647LDVERSION='$(VERSION)$(ABIFLAGS)'
3648AC_MSG_RESULT($LDVERSION)
3649
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003650# SO is the extension of shared libraries `(including the dot!)
3651# -- usually .so, .sl on HP-UX, .dll on Cygwin
3652AC_MSG_CHECKING(SO)
3653if test -z "$SO"
3654then
3655 case $ac_sys_system in
3656 hp*|HP*)
3657 case `uname -m` in
3658 ia64) SO=.so;;
3659 *) SO=.sl;;
3660 esac
3661 ;;
3662 CYGWIN*) SO=.dll;;
Matthias Klose3fbfea12010-10-14 15:24:22 +00003663 Linux*|GNU*)
3664 SO=.${SOABI}.so;;
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003665 *) SO=.so;;
3666 esac
3667else
3668 # this might also be a termcap variable, see #610332
Georg Brandlde7d8342010-09-03 22:19:07 +00003669 echo
3670 echo '====================================================================='
3671 echo '+ +'
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003672 echo '+ WARNING: You have set SO in your environment. +'
Georg Brandlde7d8342010-09-03 22:19:07 +00003673 echo '+ Do you really mean to change the extension for shared libraries? +'
3674 echo '+ Continuing in 10 seconds to let you to ponder. +'
3675 echo '+ +'
3676 echo '====================================================================='
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003677 sleep 10
3678fi
3679AC_MSG_RESULT($SO)
3680
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003681# Check whether right shifting a negative integer extends the sign bit
3682# or fills with zeros (like the Cray J90, according to Tim Peters).
3683AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003684AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003685AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003686int main()
3687{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003688 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003689}
Matthias Kloseb159a552010-04-25 21:00:44 +00003690]])],
3691[ac_cv_rshift_extends_sign=yes],
3692[ac_cv_rshift_extends_sign=no],
3693[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003694AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3695if test "$ac_cv_rshift_extends_sign" = no
3696then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003697 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3698 [Define if i>>j for signed int i does not extend the sign bit
3699 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003700fi
3701
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003702# check for getc_unlocked and related locking functions
3703AC_MSG_CHECKING(for getc_unlocked() and friends)
3704AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003705AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003706 FILE *f = fopen("/dev/null", "r");
3707 flockfile(f);
3708 getc_unlocked(f);
3709 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003710]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003711AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3712if test "$ac_cv_have_getc_unlocked" = yes
3713then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003714 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3715 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003716fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003717
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003718# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003719# save the value of LIBS so we don't actually link Python with readline
3720LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003721
3722# On some systems we need to link readline to a termcap compatible
3723# library. NOTE: Keep the precedence of listed libraries synchronised
3724# with setup.py.
3725py_cv_lib_readline=no
3726AC_MSG_CHECKING([how to link readline libs])
3727for py_libtermcap in "" ncursesw ncurses curses termcap; do
3728 if test -z "$py_libtermcap"; then
3729 READLINE_LIBS="-lreadline"
3730 else
3731 READLINE_LIBS="-lreadline -l$py_libtermcap"
3732 fi
3733 LIBS="$READLINE_LIBS $LIBS_no_readline"
3734 AC_LINK_IFELSE(
3735 [AC_LANG_CALL([],[readline])],
3736 [py_cv_lib_readline=yes])
3737 if test $py_cv_lib_readline = yes; then
3738 break
3739 fi
3740done
3741# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3742#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003743if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003744 AC_MSG_RESULT([none])
3745else
3746 AC_MSG_RESULT([$READLINE_LIBS])
3747 AC_DEFINE(HAVE_LIBREADLINE, 1,
3748 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003749fi
3750
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003751# check for readline 2.1
3752AC_CHECK_LIB(readline, rl_callback_handler_install,
3753 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003754 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003755
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003756# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003757AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3758 [have_readline=yes],
3759 [have_readline=no]
3760)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003761if test $have_readline = yes
3762then
3763 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3764 [readline/readline.h],
3765 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3766 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003767 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3768 [readline/readline.h],
3769 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3770 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003771fi
3772
Martin v. Löwis0daad592001-09-30 21:09:59 +00003773# check for readline 4.0
3774AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003775 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003776 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003777
Thomas Wouters89d996e2007-09-08 17:39:28 +00003778# also in 4.0
3779AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3780 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003781 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003782
Guido van Rossum353ae582001-07-10 16:45:32 +00003783# check for readline 4.2
3784AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003785 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003786 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003787
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003788# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003789AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3790 [have_readline=yes],
3791 [have_readline=no]
3792)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003793if test $have_readline = yes
3794then
3795 AC_EGREP_HEADER([extern int rl_catch_signals;],
3796 [readline/readline.h],
3797 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3798 [Define if you can turn off readline's signal handling.]), )
3799fi
3800
Martin v. Löwis82bca632006-02-10 20:49:30 +00003801# End of readline checks: restore LIBS
3802LIBS=$LIBS_no_readline
3803
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003804AC_MSG_CHECKING(for broken nice())
3805AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003806AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003807int main()
3808{
3809 int val1 = nice(1);
3810 if (val1 != -1 && val1 == nice(2))
3811 exit(0);
3812 exit(1);
3813}
Matthias Kloseb159a552010-04-25 21:00:44 +00003814]])],
3815[ac_cv_broken_nice=yes],
3816[ac_cv_broken_nice=no],
3817[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003818AC_MSG_RESULT($ac_cv_broken_nice)
3819if test "$ac_cv_broken_nice" = yes
3820then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003821 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3822 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003823fi
3824
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003825AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003826AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003827AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003828#include <poll.h>
3829
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003830int main()
3831{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003832 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003833 int poll_test;
3834
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003835 close (42);
3836
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003837 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003838 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003839 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003840 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003841 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003842 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003843 return 1;
3844}
Matthias Kloseb159a552010-04-25 21:00:44 +00003845]])],
3846[ac_cv_broken_poll=yes],
3847[ac_cv_broken_poll=no],
3848[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003849AC_MSG_RESULT($ac_cv_broken_poll)
3850if test "$ac_cv_broken_poll" = yes
3851then
3852 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3853 [Define if poll() sets errno on invalid file descriptors.])
3854fi
3855
Brett Cannon43802422005-02-10 20:48:03 +00003856# Before we can test tzset, we need to check if struct tm has a tm_zone
3857# (which is not required by ISO C or UNIX spec) and/or if we support
3858# tzname[]
3859AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003860
Brett Cannon43802422005-02-10 20:48:03 +00003861# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003862AC_MSG_CHECKING(for working tzset())
3863AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003864AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003865#include <stdlib.h>
3866#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003867#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003868
3869#if HAVE_TZNAME
3870extern char *tzname[];
3871#endif
3872
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003873int main()
3874{
Brett Cannon18367812003-09-19 00:59:16 +00003875 /* Note that we need to ensure that not only does tzset(3)
3876 do 'something' with localtime, but it works as documented
3877 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003878 This includes making sure that tzname is set properly if
3879 tm->tm_zone does not exist since it is the alternative way
3880 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003881
3882 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003883 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003884 */
3885
Brett Cannon43802422005-02-10 20:48:03 +00003886 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003887 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3888
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003889 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003890 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003891 if (localtime(&groundhogday)->tm_hour != 0)
3892 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003893#if HAVE_TZNAME
3894 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3895 if (strcmp(tzname[0], "UTC") ||
3896 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3897 exit(1);
3898#endif
Brett Cannon18367812003-09-19 00:59:16 +00003899
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003900 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003901 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003902 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003903 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003904#if HAVE_TZNAME
3905 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3906 exit(1);
3907#endif
Brett Cannon18367812003-09-19 00:59:16 +00003908
3909 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3910 tzset();
3911 if (localtime(&groundhogday)->tm_hour != 11)
3912 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003913#if HAVE_TZNAME
3914 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3915 exit(1);
3916#endif
3917
3918#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003919 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3920 exit(1);
3921 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3922 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003923#endif
Brett Cannon18367812003-09-19 00:59:16 +00003924
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003925 exit(0);
3926}
Matthias Kloseb159a552010-04-25 21:00:44 +00003927]])],
3928[ac_cv_working_tzset=yes],
3929[ac_cv_working_tzset=no],
3930[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003931AC_MSG_RESULT($ac_cv_working_tzset)
3932if test "$ac_cv_working_tzset" = yes
3933then
3934 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3935 [Define if tzset() actually switches the local timezone in a meaningful way.])
3936fi
3937
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003938# Look for subsecond timestamps in struct stat
3939AC_MSG_CHECKING(for tv_nsec in struct stat)
3940AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00003941AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003942struct stat st;
3943st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003944]])],
3945[ac_cv_stat_tv_nsec=yes],
3946[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003947AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3948if test "$ac_cv_stat_tv_nsec" = yes
3949then
3950 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3951 [Define if you have struct stat.st_mtim.tv_nsec])
3952fi
3953
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003954# Look for BSD style subsecond timestamps in struct stat
3955AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3956AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00003957AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003958struct stat st;
3959st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003960]])],
3961[ac_cv_stat_tv_nsec2=yes],
3962[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003963AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3964if test "$ac_cv_stat_tv_nsec2" = yes
3965then
3966 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3967 [Define if you have struct stat.st_mtimensec])
3968fi
3969
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003970# On HP/UX 11.0, mvwdelch is a block with a return statement
3971AC_MSG_CHECKING(whether mvwdelch is an expression)
3972AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00003973AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003974 int rtn;
3975 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003976]])],
3977[ac_cv_mvwdelch_is_expression=yes],
3978[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003979AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3980
3981if test "$ac_cv_mvwdelch_is_expression" = yes
3982then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003983 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3984 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003985fi
3986
3987AC_MSG_CHECKING(whether WINDOW has _flags)
3988AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00003989AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003990 WINDOW *w;
3991 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00003992]])],
3993[ac_cv_window_has_flags=yes],
3994[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003995AC_MSG_RESULT($ac_cv_window_has_flags)
3996
3997
3998if test "$ac_cv_window_has_flags" = yes
3999then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004000 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4001 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004002fi
4003
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004004AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004005AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4006 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4007 AC_MSG_RESULT(yes)],
4008 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004009)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004010
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004011AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004012AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4013 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4014 AC_MSG_RESULT(yes)],
4015 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004016)
4017
4018AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004019AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4020 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4021 AC_MSG_RESULT(yes)],
4022 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004023)
4024
Thomas Wouters89f507f2006-12-13 04:49:30 +00004025AC_MSG_CHECKING(for /dev/ptmx)
4026
4027if test -r /dev/ptmx
4028then
4029 AC_MSG_RESULT(yes)
4030 AC_DEFINE(HAVE_DEV_PTMX, 1,
4031 [Define if we have /dev/ptmx.])
4032else
4033 AC_MSG_RESULT(no)
4034fi
4035
4036AC_MSG_CHECKING(for /dev/ptc)
4037
4038if test -r /dev/ptc
4039then
4040 AC_MSG_RESULT(yes)
4041 AC_DEFINE(HAVE_DEV_PTC, 1,
4042 [Define if we have /dev/ptc.])
4043else
4044 AC_MSG_RESULT(no)
4045fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004046
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004047if test "$have_long_long" = yes
4048then
4049 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4050 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004051 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004052 #include <stdio.h>
4053 #include <stddef.h>
4054 #include <string.h>
4055
4056 #ifdef HAVE_SYS_TYPES_H
4057 #include <sys/types.h>
4058 #endif
4059
4060 int main()
4061 {
4062 char buffer[256];
4063
4064 if (sprintf(buffer, "%lld", (long long)123) < 0)
4065 return 1;
4066 if (strcmp(buffer, "123"))
4067 return 1;
4068
4069 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4070 return 1;
4071 if (strcmp(buffer, "-123"))
4072 return 1;
4073
4074 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4075 return 1;
4076 if (strcmp(buffer, "123"))
4077 return 1;
4078
4079 return 0;
4080 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004081 ]]])],
4082 [ac_cv_have_long_long_format=yes],
4083 [ac_cv_have_long_long_format=no],
4084 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004085 )
4086 AC_MSG_RESULT($ac_cv_have_long_long_format)
4087fi
4088
Mark Dickinson89d7d412009-12-31 20:50:59 +00004089if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004090then
4091 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4092 [Define to printf format modifier for long long type])
4093fi
4094
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004095if test $ac_sys_system = Darwin
4096then
4097 LIBS="$LIBS -framework CoreFoundation"
4098fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004099
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004100AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004101AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004102#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004103#include <stddef.h>
4104#include <string.h>
4105
Christian Heimes2c181612007-12-17 20:04:13 +00004106#ifdef HAVE_SYS_TYPES_H
4107#include <sys/types.h>
4108#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004109
4110#ifdef HAVE_SSIZE_T
4111typedef ssize_t Py_ssize_t;
4112#elif SIZEOF_VOID_P == SIZEOF_LONG
4113typedef long Py_ssize_t;
4114#else
4115typedef int Py_ssize_t;
4116#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004117
Christian Heimes2c181612007-12-17 20:04:13 +00004118int main()
4119{
4120 char buffer[256];
4121
Thomas Wouters477c8d52006-05-27 19:21:47 +00004122 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4123 return 1;
4124
Thomas Wouters89f507f2006-12-13 04:49:30 +00004125 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004126 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004127
4128 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4129 return 1;
4130
4131 if (strcmp(buffer, "-123"))
4132 return 1;
4133
Thomas Wouters477c8d52006-05-27 19:21:47 +00004134 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004135}
Matthias Kloseb159a552010-04-25 21:00:44 +00004136]])],
4137 [ac_cv_have_size_t_format=yes],
4138 [ac_cv_have_size_t_format=no],
4139 [ac_cv_have_size_t_format="cross -- assuming yes"
4140])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004141if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004142 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4143 [Define to printf format modifier for Py_ssize_t])
4144fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004145
Martin v. Löwis01c04012002-11-11 14:58:44 +00004146AC_CHECK_TYPE(socklen_t,,
4147 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004148 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004149#ifdef HAVE_SYS_TYPES_H
4150#include <sys/types.h>
4151#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004152#ifdef HAVE_SYS_SOCKET_H
4153#include <sys/socket.h>
4154#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004155])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004156
Antoine Pitroufff95302008-09-03 18:58:51 +00004157AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004158AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004159AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004160#include<stdlib.h>
4161int main() {
4162 size_t len = -1;
4163 const char *str = "text";
4164 len = mbstowcs(NULL, str, 0);
4165 return (len != 4);
4166}
Matthias Kloseb159a552010-04-25 21:00:44 +00004167]])],
4168[ac_cv_broken_mbstowcs=no],
4169[ac_cv_broken_mbstowcs=yes],
4170[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004171AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4172if test "$ac_cv_broken_mbstowcs" = yes
4173then
4174 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4175 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4176 wide chars that would be converted.])
4177fi
4178
Antoine Pitrou042b1282010-08-13 21:15:58 +00004179AC_MSG_CHECKING(whether $CC supports computed gotos)
4180AC_CACHE_VAL(ac_cv_computed_gotos,
4181AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4182int main(int argc, char **argv)
4183{
4184 static void *targets[1] = { &&LABEL1 };
4185 goto LABEL2;
4186LABEL1:
4187 return 0;
4188LABEL2:
4189 goto *targets[0];
4190 return 1;
4191}
4192]]])],
4193[ac_cv_computed_gotos=yes],
4194[ac_cv_computed_gotos=no],
4195[ac_cv_computed_gotos=no]))
4196AC_MSG_RESULT($ac_cv_computed_gotos)
4197if test "$ac_cv_computed_gotos" = yes
4198then
4199 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4200 [Define if the C compiler supports computed gotos.])
4201fi
4202
Antoine Pitroub52ec782009-01-25 16:34:23 +00004203# Check for --with-computed-gotos
4204AC_MSG_CHECKING(for --with-computed-gotos)
4205AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004206 AS_HELP_STRING([--with(out)-computed-gotos],
4207 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004208[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004209if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004210then
4211 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4212 [Define if you want to use computed gotos in ceval.c.])
4213 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004214fi
4215if test "$withval" = no
4216then
4217 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4218 [Define if you want to use computed gotos in ceval.c.])
4219 AC_MSG_RESULT(no)
4220fi
4221],
4222[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004223
R. David Murraye16cda92010-10-15 23:12:57 +00004224case $ac_sys_system in
4225AIX*)
4226 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4227esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004228
Jesus Cea6a792292010-05-03 21:18:48 +00004229
Gregory P. Smith51ee2702010-12-13 07:59:39 +00004230AC_CHECK_FUNC(pipe2, AC_DEFINE(HAVE_PIPE2, 1, [Define if the OS supports pipe2()]), )
Jesus Cea6a792292010-05-03 21:18:48 +00004231
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004232AC_SUBST(THREADHEADERS)
4233
4234for h in `(cd $srcdir;echo Python/thread_*.h)`
4235do
4236 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4237done
4238
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004239AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004240SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004241AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004242for dir in $SRCDIRS; do
4243 if test ! -d $dir; then
4244 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004245 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004246done
4247AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004248
Guido van Rossum627b2d71993-12-24 10:39:16 +00004249# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004250AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004251AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004252AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004253
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004254echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004255if test ! -f Modules/Setup
4256then
4257 cp $srcdir/Modules/Setup.dist Modules/Setup
4258fi
4259
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004260echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004261if test ! -f Modules/Setup.local
4262then
4263 echo "# Edit this file for local setup changes" >Modules/Setup.local
4264fi
4265
4266echo "creating Makefile"
4267$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4268 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004269 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004270mv config.c Modules