blob: c6a94370990ebfe313f09c1adbe5ef800f0e4961 [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 \
1296libutil.h sys/resource.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öwisfd1c69e72004-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 Ward57c9a6632000-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 Ward57c9a6632000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 Warsawc0d24d8b2000-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 \
Victor Stinner8f9f8d62011-05-09 12:45:41 +02002515 initgroups kill killpg lchmod lchown lockf log2 linkat lstat lutimes mbrtowc mkdirat mkfifo \
Antoine Pitrouf65132d2011-02-25 23:25:17 +00002516 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002517 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002518 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002519 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00002520 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00002521 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002522 sigaction sigaltstack siginterrupt sigpending \
2523 sigrelse sigwait snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002524 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002525 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
2526 wcscoll wcsftime wcsxfrm writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002527
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002528# For some functions, having a definition is not sufficient, since
2529# we want to take their address.
2530AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002531AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2532 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2533 AC_MSG_RESULT(yes)],
2534 [AC_MSG_RESULT(no)
2535])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002536AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002537AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2538 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2539 AC_MSG_RESULT(yes)],
2540 [AC_MSG_RESULT(no)
2541])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002542AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002543AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2544 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2545 AC_MSG_RESULT(yes)],
2546 [AC_MSG_RESULT(no)
2547])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002548AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002549AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2550 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2551 AC_MSG_RESULT(yes)],
2552 [AC_MSG_RESULT(no)
2553])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002554AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002555AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2556 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2557 AC_MSG_RESULT(yes)],
2558 [AC_MSG_RESULT(no)
2559])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002560AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002561AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2562 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2563 AC_MSG_RESULT(yes)],
2564 [AC_MSG_RESULT(no)
2565])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002566AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002567AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2568 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2569 AC_MSG_RESULT(yes)],
2570 [AC_MSG_RESULT(no)
2571])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002572AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002573AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002574#include <sys/types.h>
2575#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002576 ]], [[int x=kqueue()]])],
2577 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2578 AC_MSG_RESULT(yes)],
2579 [AC_MSG_RESULT(no)
2580])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002581# On some systems (eg. FreeBSD 5), we would find a definition of the
2582# functions ctermid_r, setgroups in the library, but no prototype
2583# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2584# address to avoid compiler warnings and potential miscompilations
2585# because of the missing prototypes.
2586
2587AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002588AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002589#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002590]], [[void* p = ctermid_r]])],
2591 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2592 AC_MSG_RESULT(yes)],
2593 [AC_MSG_RESULT(no)
2594])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002595
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002596AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
2597 [AC_COMPILE_IFELSE(
2598 [AC_LANG_PROGRAM(
2599 [#include <sys/file.h>],
2600 [void* p = flock]
2601 )],
2602 [ac_cv_flock_decl=yes],
2603 [ac_cv_flock_decl=no]
2604 )
Matthias Kloseb159a552010-04-25 21:00:44 +00002605])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002606if test "x${ac_cv_flock_decl}" = xyes; then
2607 AC_CHECK_FUNCS(flock,,
2608 AC_CHECK_LIB(bsd,flock,
2609 [AC_DEFINE(HAVE_FLOCK)
2610 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
2611 ])
2612 )
Antoine Pitroua3000072010-09-07 14:52:42 +00002613fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002614
2615AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002616AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002617#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002618]], [[void* p = getpagesize]])],
2619 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2620 AC_MSG_RESULT(yes)],
2621 [AC_MSG_RESULT(no)
2622])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002623
Antoine Pitrou6f26be02011-05-03 18:18:59 +02002624AC_MSG_CHECKING(whether mallopt can set malloc mmap threshold)
2625AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2626#include <malloc.h>
2627]], [[mallopt(M_MMAP_THRESHOLD, 256 * 1024)]])],
2628 [AC_DEFINE(HAVE_MALLOPT_MMAP_THRESHOLD, 1, Define if mallopt can set malloc mmap threshold.)
2629 AC_MSG_RESULT(yes)],
2630 [AC_MSG_RESULT(no)
2631])
2632
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002633dnl check for true
2634AC_CHECK_PROGS(TRUE, true, /bin/true)
2635
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002636dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2637dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002638AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002639 AC_CHECK_LIB(resolv, inet_aton)
2640)
2641
Christian Heimesd0764e22007-12-04 15:00:33 +00002642# On Tru64, chflags seems to be present, but calling it will
2643# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002644AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002645AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002646#include <sys/stat.h>
2647#include <unistd.h>
2648int main(int argc, char*argv[])
2649{
2650 if(chflags(argv[0], 0) != 0)
2651 return 1;
2652 return 0;
2653}
Matthias Kloseb159a552010-04-25 21:00:44 +00002654]]])],
2655[ac_cv_have_chflags=yes],
2656[ac_cv_have_chflags=no],
2657[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002658])
2659if test "$ac_cv_have_chflags" = cross ; then
2660 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2661fi
2662if test "$ac_cv_have_chflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002663 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002664fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002665
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002666AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002667AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002668#include <sys/stat.h>
2669#include <unistd.h>
2670int main(int argc, char*argv[])
2671{
2672 if(lchflags(argv[0], 0) != 0)
2673 return 1;
2674 return 0;
2675}
Matthias Kloseb159a552010-04-25 21:00:44 +00002676]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002677])
2678if test "$ac_cv_have_lchflags" = cross ; then
2679 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2680fi
2681if test "$ac_cv_have_lchflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002682 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002683fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002684
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002685dnl Check if system zlib has *Copy() functions
2686dnl
2687dnl On MacOSX the linker will search for dylibs on the entire linker path
2688dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2689dnl to revert to a more traditional unix behaviour and make it possible to
2690dnl override the system libz with a local static library of libz. Temporarily
2691dnl add that flag to our CFLAGS as well to ensure that we check the version
2692dnl of libz that will be used by setup.py.
2693dnl The -L/usr/local/lib is needed as wel to get the same compilation
2694dnl environment as setup.py (and leaving it out can cause configure to use the
2695dnl wrong version of the library)
2696case $ac_sys_system/$ac_sys_release in
2697Darwin/*)
2698 _CUR_CFLAGS="${CFLAGS}"
2699 _CUR_LDFLAGS="${LDFLAGS}"
2700 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2701 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2702 ;;
2703esac
2704
Matthias Klosec80c93f2010-04-24 17:04:35 +00002705AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002706
2707case $ac_sys_system/$ac_sys_release in
2708Darwin/*)
2709 CFLAGS="${_CUR_CFLAGS}"
2710 LDFLAGS="${_CUR_LDFLAGS}"
2711 ;;
2712esac
2713
Martin v. Löwise9416172003-05-03 10:12:45 +00002714AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002715AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002716#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002717]], [[void* p = hstrerror; hstrerror(0)]])],
2718 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2719 AC_MSG_RESULT(yes)],
2720 [AC_MSG_RESULT(no)
2721])
Martin v. Löwise9416172003-05-03 10:12:45 +00002722
2723AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002724AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002725#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002726#include <sys/socket.h>
2727#include <netinet/in.h>
2728#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002729]], [[void* p = inet_aton;inet_aton(0,0)]])],
2730 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2731 AC_MSG_RESULT(yes)],
2732 [AC_MSG_RESULT(no)
2733])
Martin v. Löwise9416172003-05-03 10:12:45 +00002734
2735AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002736AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002737#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002738#include <sys/socket.h>
2739#include <netinet/in.h>
2740#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002741]], [[void* p = inet_pton]])],
2742 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2743 AC_MSG_RESULT(yes)],
2744 [AC_MSG_RESULT(no)
2745])
Martin v. Löwise9416172003-05-03 10:12:45 +00002746
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002747# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002748AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002749AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002750#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002751#ifdef HAVE_GRP_H
2752#include <grp.h>
2753#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002754]], [[void* p = setgroups]])],
2755 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2756 AC_MSG_RESULT(yes)],
2757 [AC_MSG_RESULT(no)
2758])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002759
Fred Drake8cef4cf2000-06-28 16:40:38 +00002760# check for openpty and forkpty
2761
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002762AC_CHECK_FUNCS(openpty,,
2763 AC_CHECK_LIB(util,openpty,
2764 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2765 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2766 )
2767)
2768AC_CHECK_FUNCS(forkpty,,
2769 AC_CHECK_LIB(util,forkpty,
2770 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2771 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2772 )
2773)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002774
Christian Heimesb186d002008-03-18 15:15:01 +00002775# Stuff for expat.
2776AC_CHECK_FUNCS(memmove)
2777
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002778# check for long file support functions
2779AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2780
Christian Heimesb186d002008-03-18 15:15:01 +00002781AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002782AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002783 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2784 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2785 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002786)
Jack Jansen150753c2003-03-29 22:07:47 +00002787AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002788 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2789 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2790 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002791)
2792AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002793 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2794 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2795 [],
2796 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2797 [Define if gettimeofday() does not have second (timezone) argument
2798 This is the case on Motorola V4 (R40V4.2)])
2799 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002800)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002801
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002802AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002803AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002804#if defined(MAJOR_IN_MKDEV)
2805#include <sys/mkdev.h>
2806#elif defined(MAJOR_IN_SYSMACROS)
2807#include <sys/sysmacros.h>
2808#else
2809#include <sys/types.h>
2810#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002811]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002812 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002813]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002814 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2815 [Define to 1 if you have the device macros.])
2816 AC_MSG_RESULT(yes)
2817],[
2818 AC_MSG_RESULT(no)
2819])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002820
2821# On OSF/1 V5.1, getaddrinfo is available, but a define
2822# for [no]getaddrinfo in netdb.h.
2823AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002824AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002825#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002826#include <sys/socket.h>
2827#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002828#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002829]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2830[have_getaddrinfo=yes],
2831[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002832AC_MSG_RESULT($have_getaddrinfo)
2833if test $have_getaddrinfo = yes
2834then
2835 AC_MSG_CHECKING(getaddrinfo bug)
2836 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002837 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002838#include <sys/types.h>
2839#include <netdb.h>
2840#include <string.h>
2841#include <sys/socket.h>
2842#include <netinet/in.h>
2843
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002844int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002845{
2846 int passive, gaierr, inet4 = 0, inet6 = 0;
2847 struct addrinfo hints, *ai, *aitop;
2848 char straddr[INET6_ADDRSTRLEN], strport[16];
2849
2850 for (passive = 0; passive <= 1; passive++) {
2851 memset(&hints, 0, sizeof(hints));
2852 hints.ai_family = AF_UNSPEC;
2853 hints.ai_flags = passive ? AI_PASSIVE : 0;
2854 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002855 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002856 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2857 (void)gai_strerror(gaierr);
2858 goto bad;
2859 }
2860 for (ai = aitop; ai; ai = ai->ai_next) {
2861 if (ai->ai_addr == NULL ||
2862 ai->ai_addrlen == 0 ||
2863 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2864 straddr, sizeof(straddr), strport, sizeof(strport),
2865 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2866 goto bad;
2867 }
2868 switch (ai->ai_family) {
2869 case AF_INET:
2870 if (strcmp(strport, "54321") != 0) {
2871 goto bad;
2872 }
2873 if (passive) {
2874 if (strcmp(straddr, "0.0.0.0") != 0) {
2875 goto bad;
2876 }
2877 } else {
2878 if (strcmp(straddr, "127.0.0.1") != 0) {
2879 goto bad;
2880 }
2881 }
2882 inet4++;
2883 break;
2884 case AF_INET6:
2885 if (strcmp(strport, "54321") != 0) {
2886 goto bad;
2887 }
2888 if (passive) {
2889 if (strcmp(straddr, "::") != 0) {
2890 goto bad;
2891 }
2892 } else {
2893 if (strcmp(straddr, "::1") != 0) {
2894 goto bad;
2895 }
2896 }
2897 inet6++;
2898 break;
2899 case AF_UNSPEC:
2900 goto bad;
2901 break;
2902 default:
2903 /* another family support? */
2904 break;
2905 }
2906 }
2907 }
2908
2909 if (!(inet4 == 0 || inet4 == 2))
2910 goto bad;
2911 if (!(inet6 == 0 || inet6 == 2))
2912 goto bad;
2913
2914 if (aitop)
2915 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002916 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002917
2918 bad:
2919 if (aitop)
2920 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002921 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002922}
Matthias Kloseb159a552010-04-25 21:00:44 +00002923]]])],
2924[ac_cv_buggy_getaddrinfo=no],
2925[ac_cv_buggy_getaddrinfo=yes],
2926[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002927fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002928
Benjamin Petersond4694ed2010-11-01 01:44:30 +00002929AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
2930
Mark Dickinson2df5d282009-12-31 21:22:50 +00002931if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002932then
2933 if test $ipv6 = yes
2934 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002935 echo 'Fatal: You must get working getaddrinfo() function.'
2936 echo ' or you can specify "--disable-ipv6"'.
2937 exit 1
2938 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002939else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002940 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002941fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00002942
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002943AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002944
Guido van Rossum627b2d71993-12-24 10:39:16 +00002945# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002946AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002947AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002948AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002949AC_CHECK_MEMBERS([struct stat.st_rdev])
2950AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002951AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002952AC_CHECK_MEMBERS([struct stat.st_gen])
2953AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002954AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002955
2956AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00002957AC_CACHE_VAL(ac_cv_header_time_altzone,[
2958 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
2959 [ac_cv_header_time_altzone=yes],
2960 [ac_cv_header_time_altzone=no])
2961 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002962AC_MSG_RESULT($ac_cv_header_time_altzone)
2963if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002964 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002965fi
2966
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002967was_it_defined=no
2968AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00002969AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002970#include <sys/types.h>
2971#include <sys/select.h>
2972#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002973]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002974 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2975 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2976 (which you can't on SCO ODT 3.0).])
2977 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002978],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002979AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002980
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002981AC_MSG_CHECKING(for addrinfo)
2982AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002983AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
2984 [ac_cv_struct_addrinfo=yes],
2985 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002986AC_MSG_RESULT($ac_cv_struct_addrinfo)
2987if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002988 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002989fi
2990
2991AC_MSG_CHECKING(for sockaddr_storage)
2992AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00002993AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002994# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002995# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
2996 [ac_cv_struct_sockaddr_storage=yes],
2997 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002998AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2999if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003000 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003001fi
3002
Guido van Rossum627b2d71993-12-24 10:39:16 +00003003# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003004
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003005AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003006AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003007
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003008works=no
3009AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003010AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3011 [works=yes],
3012 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003013)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003014AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003015
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003016works=no
3017AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003018AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3019 [works=yes],
3020 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003021)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003022AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003023
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003024have_prototypes=no
3025AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003026AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3027 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3028 [Define if your compiler supports function prototype])
3029 have_prototypes=yes],
3030 []
3031)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003032AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003033
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003034works=no
3035AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003036AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003037#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003038int foo(int x, ...) {
3039 va_list va;
3040 va_start(va, x);
3041 va_arg(va, int);
3042 va_arg(va, char *);
3043 va_arg(va, double);
3044 return 0;
3045}
Matthias Kloseb159a552010-04-25 21:00:44 +00003046]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003047 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3048 [Define if your compiler supports variable length function prototypes
3049 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3050 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003051],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003052AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003053
Dave Cole331708b2004-08-09 04:51:41 +00003054# check for socketpair
3055AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003056AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003057#include <sys/types.h>
3058#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003059]], [[void *x=socketpair]])],
3060 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3061 AC_MSG_RESULT(yes)],
3062 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003063)
3064
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003065# check if sockaddr has sa_len member
3066AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003067AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3068#include <sys/socket.h>]], [[struct sockaddr x;
3069x.sa_len = 0;]])],
3070 [AC_MSG_RESULT(yes)
3071 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3072 [AC_MSG_RESULT(no)]
3073)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003074
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003075va_list_is_array=no
3076AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003077AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003078#ifdef HAVE_STDARG_PROTOTYPES
3079#include <stdarg.h>
3080#else
3081#include <varargs.h>
3082#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003083]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003084 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3085 va_list_is_array=yes
3086])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003087AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003088
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003089# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003090AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3091 [Define this if you have some version of gethostbyname_r()])
3092
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003093AC_CHECK_FUNC(gethostbyname_r, [
3094 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3095 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3096 OLD_CFLAGS=$CFLAGS
3097 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003098 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003099# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003100 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003101 char *name;
3102 struct hostent *he, *res;
3103 char buffer[2048];
3104 int buflen = 2048;
3105 int h_errnop;
3106
3107 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003108 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003109 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003110 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3111 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003112 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003113 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003114 AC_MSG_RESULT(no)
3115 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003116 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003117# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003118 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003119 char *name;
3120 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003121 char buffer[2048];
3122 int buflen = 2048;
3123 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003124
Matthias Kloseb159a552010-04-25 21:00:44 +00003125 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3126 ]])],
3127 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003128 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003129 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3130 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003131 AC_MSG_RESULT(yes)
3132 ], [
3133 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003134 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3135 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3136# include <netdb.h>
3137 ]], [[
3138 char *name;
3139 struct hostent *he;
3140 struct hostent_data data;
3141
3142 (void) gethostbyname_r(name, he, &data);
3143 ]])],
3144 [
3145 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3146 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3147 [Define this if you have the 3-arg version of gethostbyname_r().])
3148 AC_MSG_RESULT(yes)
3149 ], [
3150 AC_MSG_RESULT(no)
3151 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003152 ])
3153 ])
3154 CFLAGS=$OLD_CFLAGS
3155], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003156 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003157])
3158AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3159AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3160AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003161AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003162AC_SUBST(HAVE_GETHOSTBYNAME)
3163
Guido van Rossum627b2d71993-12-24 10:39:16 +00003164# checks for system services
3165# (none yet)
3166
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003167# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003168AC_CHECK_FUNC(__fpu_control,
3169 [],
3170 [AC_CHECK_LIB(ieee, __fpu_control)
3171])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003172
Guido van Rossum93274221997-05-09 02:42:00 +00003173# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003174AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003175AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003176 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003177[
Guido van Rossum93274221997-05-09 02:42:00 +00003178if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003179then
3180 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3181 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3182 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003183else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003184fi],
3185[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003186
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003187# check for --with-libm=...
3188AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003189case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003190Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003191*) LIBM=-lm
3192esac
Guido van Rossum93274221997-05-09 02:42:00 +00003193AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003194AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003195 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003196[
Guido van Rossum93274221997-05-09 02:42:00 +00003197if test "$withval" = no
3198then LIBM=
3199 AC_MSG_RESULT(force LIBM empty)
3200elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003201then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003202 AC_MSG_RESULT(set LIBM="$withval")
3203else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003204fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003205[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003206
3207# check for --with-libc=...
3208AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003209AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003210AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003211 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003212[
Guido van Rossum93274221997-05-09 02:42:00 +00003213if test "$withval" = no
3214then LIBC=
3215 AC_MSG_RESULT(force LIBC empty)
3216elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003217then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003218 AC_MSG_RESULT(set LIBC="$withval")
3219else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003220fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003221[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003222
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003223# **************************************************
3224# * Check for various properties of floating point *
3225# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003226
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003227AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3228AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003229AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003230#include <string.h>
3231int main() {
3232 double x = 9006104071832581.0;
3233 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3234 return 0;
3235 else
3236 return 1;
3237}
Matthias Kloseb159a552010-04-25 21:00:44 +00003238]])],
3239[ac_cv_little_endian_double=yes],
3240[ac_cv_little_endian_double=no],
3241[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003242AC_MSG_RESULT($ac_cv_little_endian_double)
3243if test "$ac_cv_little_endian_double" = yes
3244then
3245 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3246 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3247 with the least significant byte first])
3248fi
3249
3250AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3251AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003252AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003253#include <string.h>
3254int main() {
3255 double x = 9006104071832581.0;
3256 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3257 return 0;
3258 else
3259 return 1;
3260}
Matthias Kloseb159a552010-04-25 21:00:44 +00003261]])],
3262[ac_cv_big_endian_double=yes],
3263[ac_cv_big_endian_double=no],
3264[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003265AC_MSG_RESULT($ac_cv_big_endian_double)
3266if test "$ac_cv_big_endian_double" = yes
3267then
3268 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3269 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3270 with the most significant byte first])
3271fi
3272
3273# Some ARM platforms use a mixed-endian representation for doubles.
3274# While Python doesn't currently have full support for these platforms
3275# (see e.g., issue 1762561), we can at least make sure that float <-> string
3276# conversions work.
3277AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3278AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003279AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003280#include <string.h>
3281int main() {
3282 double x = 9006104071832581.0;
3283 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3284 return 0;
3285 else
3286 return 1;
3287}
Matthias Kloseb159a552010-04-25 21:00:44 +00003288]])],
3289[ac_cv_mixed_endian_double=yes],
3290[ac_cv_mixed_endian_double=no],
3291[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003292AC_MSG_RESULT($ac_cv_mixed_endian_double)
3293if test "$ac_cv_mixed_endian_double" = yes
3294then
3295 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3296 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3297 in ARM mixed-endian order (byte order 45670123)])
3298fi
3299
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003300# The short float repr introduced in Python 3.1 requires the
3301# correctly-rounded string <-> double conversion functions from
3302# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3303# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003304# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003305# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003306
3307# This inline assembler syntax may also work for suncc and icc,
3308# so we try it on all platforms.
3309
3310AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003311AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003312 unsigned short cw;
3313 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3314 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003315]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003316AC_MSG_RESULT($have_gcc_asm_for_x87)
3317if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003318then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003319 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3320 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003321fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003322
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003323# Detect whether system arithmetic is subject to x87-style double
3324# rounding issues. The result of this test has little meaning on non
3325# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3326# mode is round-to-nearest and double rounding issues are present, and
3327# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3328AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003329# $BASECFLAGS may affect the result
3330ac_save_cc="$CC"
3331CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003332AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003333#include <stdlib.h>
3334#include <math.h>
3335int main() {
3336 volatile double x, y, z;
3337 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3338 x = 0.99999999999999989; /* 1-2**-53 */
3339 y = 1./x;
3340 if (y != 1.)
3341 exit(0);
3342 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3343 x = 1e16;
3344 y = 2.99999;
3345 z = x + y;
3346 if (z != 1e16+4.)
3347 exit(0);
3348 /* both tests show evidence of double rounding */
3349 exit(1);
3350}
Matthias Kloseb159a552010-04-25 21:00:44 +00003351]])],
3352[ac_cv_x87_double_rounding=no],
3353[ac_cv_x87_double_rounding=yes],
3354[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003355CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003356AC_MSG_RESULT($ac_cv_x87_double_rounding)
3357if test "$ac_cv_x87_double_rounding" = yes
3358then
3359 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3360 [Define if arithmetic is subject to x87-style double rounding issue])
3361fi
3362
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003363# ************************************
3364# * Check for mathematical functions *
3365# ************************************
3366
3367LIBS_SAVE=$LIBS
3368LIBS="$LIBS $LIBM"
3369
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003370AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003371AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003372AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3373
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003374# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3375# -0. on some architectures.
3376AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3377AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003378AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003379#include <math.h>
3380#include <stdlib.h>
3381int main() {
3382 /* return 0 if either negative zeros don't exist
3383 on this platform or if negative zeros exist
3384 and tanh(-0.) == -0. */
3385 if (atan2(0., -1.) == atan2(-0., -1.) ||
3386 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3387 else exit(1);
3388}
Matthias Kloseb159a552010-04-25 21:00:44 +00003389]])],
3390[ac_cv_tanh_preserves_zero_sign=yes],
3391[ac_cv_tanh_preserves_zero_sign=no],
3392[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003393AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3394if test "$ac_cv_tanh_preserves_zero_sign" = yes
3395then
3396 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3397 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3398fi
3399
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003400if test "$ac_cv_func_log1p" = yes
3401then
3402 # On some versions of AIX, log1p(-0.) returns 0. instead of
3403 # -0. See issue #9920.
3404 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3405 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3406 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3407 #include <math.h>
3408 #include <stdlib.h>
3409 int main() {
3410 /* Fail if the signs of log1p(-0.) and -0. can be
3411 distinguished. */
3412 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3413 return 0;
3414 else
3415 return 1;
3416 }
3417 ]])],
3418 [ac_cv_log1p_drops_zero_sign=no],
3419 [ac_cv_log1p_drops_zero_sign=yes],
3420 [ac_cv_log1p_drops_zero_sign=no])])
3421 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3422fi
3423if test "$ac_cv_log1p_drops_zero_sign" = yes
3424then
3425 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3426 [Define if log1p(-0.) is 0. rather than -0.])
3427fi
Christian Heimes99170a52007-12-19 02:07:34 +00003428
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003429LIBS=$LIBS_SAVE
3430
Mark Dickinsona614f042009-11-28 12:48:43 +00003431# For multiprocessing module, check that sem_open
3432# actually works. For FreeBSD versions <= 7.2,
3433# the kernel module that provides POSIX semaphores
3434# isn't loaded by default, so an attempt to call
3435# sem_open results in a 'Signal 12' error.
3436AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3437AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003438AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003439#include <unistd.h>
3440#include <fcntl.h>
3441#include <stdio.h>
3442#include <semaphore.h>
3443#include <sys/stat.h>
3444
3445int main(void) {
3446 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3447 if (a == SEM_FAILED) {
3448 perror("sem_open");
3449 return 1;
3450 }
3451 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003452 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003453 return 0;
3454}
Matthias Kloseb159a552010-04-25 21:00:44 +00003455]])],
3456[ac_cv_posix_semaphores_enabled=yes],
3457[ac_cv_posix_semaphores_enabled=no],
3458[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003459)
3460AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3461if test $ac_cv_posix_semaphores_enabled = no
3462then
3463 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3464 [Define if POSIX semaphores aren't enabled on your system])
3465fi
3466
Mark Dickinson10683072009-04-18 21:18:19 +00003467# Multiprocessing check for broken sem_getvalue
3468AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003469AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003470AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003471#include <unistd.h>
3472#include <fcntl.h>
3473#include <stdio.h>
3474#include <semaphore.h>
3475#include <sys/stat.h>
3476
3477int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003478 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003479 int count;
3480 int res;
3481 if(a==SEM_FAILED){
3482 perror("sem_open");
3483 return 1;
3484
3485 }
3486 res = sem_getvalue(a, &count);
3487 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003488 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003489 return res==-1 ? 1 : 0;
3490}
Matthias Kloseb159a552010-04-25 21:00:44 +00003491]])],
3492[ac_cv_broken_sem_getvalue=no],
3493[ac_cv_broken_sem_getvalue=yes],
3494[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003495)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003496AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3497if test $ac_cv_broken_sem_getvalue = yes
3498then
3499 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3500 [define to 1 if your sem_getvalue is broken.])
3501fi
Mark Dickinson10683072009-04-18 21:18:19 +00003502
Mark Dickinsonbd792642009-03-18 20:06:12 +00003503# determine what size digit to use for Python's longs
3504AC_MSG_CHECKING([digit size for Python's longs])
3505AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003506AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003507[case $enable_big_digits in
3508yes)
3509 enable_big_digits=30 ;;
3510no)
3511 enable_big_digits=15 ;;
3512[15|30])
3513 ;;
3514*)
3515 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3516esac
3517AC_MSG_RESULT($enable_big_digits)
3518AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3519],
3520[AC_MSG_RESULT(no value specified)])
3521
Guido van Rossumef2255b2000-03-10 22:30:29 +00003522# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003523AC_CHECK_HEADER(wchar.h, [
3524 AC_DEFINE(HAVE_WCHAR_H, 1,
3525 [Define if the compiler provides a wchar.h header file.])
3526 wchar_h="yes"
3527],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003528wchar_h="no"
3529)
3530
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003531# determine wchar_t size
3532if test "$wchar_h" = yes
3533then
Guido van Rossum67b26592001-10-20 14:21:45 +00003534 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003535fi
3536
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003537AC_MSG_CHECKING(for UCS-4 tcl)
3538have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003539AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003540#include <tcl.h>
3541#if TCL_UTF_MAX != 6
3542# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003543#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003544 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3545 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003546],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003547AC_MSG_RESULT($have_ucs4_tcl)
3548
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003549# check whether wchar_t is signed or not
3550if test "$wchar_h" = yes
3551then
3552 # check whether wchar_t is signed or not
3553 AC_MSG_CHECKING(whether wchar_t is signed)
3554 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003555 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003556 #include <wchar.h>
3557 int main()
3558 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003559 /* Success: exit code 0 */
3560 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003561 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003562 ]])],
3563 [ac_cv_wchar_t_signed=yes],
3564 [ac_cv_wchar_t_signed=no],
3565 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003566 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3567fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003568
Georg Brandl52d168a2008-01-07 18:10:24 +00003569AC_MSG_CHECKING(what type to use for str)
3570AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003571 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003572[
3573if test "$withval" != no
3574then unicode_size="4"
3575else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003576fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003577],
3578[
3579case "$have_ucs4_tcl" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003580 yes) unicode_size="4";;
Georg Brandl52d168a2008-01-07 18:10:24 +00003581 *) unicode_size="2" ;;
3582esac
3583])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003584
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003585AH_TEMPLATE(Py_UNICODE_SIZE,
3586 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003587case "$unicode_size" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003588 4)
3589 AC_DEFINE(Py_UNICODE_SIZE, 4)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003590 ABIFLAGS="${ABIFLAGS}u"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003591 ;;
Georg Brandl52d168a2008-01-07 18:10:24 +00003592 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003593esac
3594
Martin v. Löwis11437992002-04-12 09:54:03 +00003595AH_TEMPLATE(PY_UNICODE_TYPE,
3596 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003597
Georg Brandl52d168a2008-01-07 18:10:24 +00003598# wchar_t is only usable if it maps to an unsigned type
3599if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003600 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003601then
3602 PY_UNICODE_TYPE="wchar_t"
3603 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3604 [Define if you have a useable wchar_t type defined in wchar.h; useable
3605 means wchar_t must be an unsigned type with at least 16 bits. (see
3606 Include/unicodeobject.h).])
3607 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3608elif test "$ac_cv_sizeof_short" = "$unicode_size"
3609then
3610 PY_UNICODE_TYPE="unsigned short"
3611 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3612elif test "$ac_cv_sizeof_long" = "$unicode_size"
3613then
3614 PY_UNICODE_TYPE="unsigned long"
3615 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3616else
3617 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003618fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003619AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003620
3621# check for endianness
3622AC_C_BIGENDIAN
3623
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003624# ABI version string for Python extension modules. This appears between the
3625# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
3626# from the following attributes which affect the ABI of this Python build (in
3627# this order):
3628#
3629# * The Python implementation (always 'cpython-' for us)
3630# * The major and minor version numbers
3631# * --with-pydebug (adds a 'd')
3632# * --with-pymalloc (adds a 'm')
3633# * --with-wide-unicode (adds a 'u')
3634#
3635# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00003636# would get a shared library ABI version tag of 'cpython-32dmu' and shared
3637# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003638AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003639AC_MSG_CHECKING(ABIFLAGS)
3640AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003641AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003642SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003643AC_MSG_RESULT($SOABI)
3644
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003645AC_MSG_CHECKING(LDVERSION)
3646LDVERSION='$(VERSION)$(ABIFLAGS)'
3647AC_MSG_RESULT($LDVERSION)
3648
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003649# SO is the extension of shared libraries `(including the dot!)
3650# -- usually .so, .sl on HP-UX, .dll on Cygwin
3651AC_MSG_CHECKING(SO)
3652if test -z "$SO"
3653then
3654 case $ac_sys_system in
3655 hp*|HP*)
3656 case `uname -m` in
3657 ia64) SO=.so;;
3658 *) SO=.sl;;
3659 esac
3660 ;;
3661 CYGWIN*) SO=.dll;;
Matthias Klose3fbfea12010-10-14 15:24:22 +00003662 Linux*|GNU*)
3663 SO=.${SOABI}.so;;
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003664 *) SO=.so;;
3665 esac
3666else
3667 # this might also be a termcap variable, see #610332
Georg Brandlde7d8342010-09-03 22:19:07 +00003668 echo
3669 echo '====================================================================='
3670 echo '+ +'
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003671 echo '+ WARNING: You have set SO in your environment. +'
Georg Brandlde7d8342010-09-03 22:19:07 +00003672 echo '+ Do you really mean to change the extension for shared libraries? +'
3673 echo '+ Continuing in 10 seconds to let you to ponder. +'
3674 echo '+ +'
3675 echo '====================================================================='
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003676 sleep 10
3677fi
3678AC_MSG_RESULT($SO)
3679
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003680# Check whether right shifting a negative integer extends the sign bit
3681# or fills with zeros (like the Cray J90, according to Tim Peters).
3682AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003683AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003684AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003685int main()
3686{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003687 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003688}
Matthias Kloseb159a552010-04-25 21:00:44 +00003689]])],
3690[ac_cv_rshift_extends_sign=yes],
3691[ac_cv_rshift_extends_sign=no],
3692[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003693AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3694if test "$ac_cv_rshift_extends_sign" = no
3695then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003696 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3697 [Define if i>>j for signed int i does not extend the sign bit
3698 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003699fi
3700
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003701# check for getc_unlocked and related locking functions
3702AC_MSG_CHECKING(for getc_unlocked() and friends)
3703AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003704AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003705 FILE *f = fopen("/dev/null", "r");
3706 flockfile(f);
3707 getc_unlocked(f);
3708 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003709]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003710AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3711if test "$ac_cv_have_getc_unlocked" = yes
3712then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003713 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3714 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003715fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003716
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003717# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003718# save the value of LIBS so we don't actually link Python with readline
3719LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003720
3721# On some systems we need to link readline to a termcap compatible
3722# library. NOTE: Keep the precedence of listed libraries synchronised
3723# with setup.py.
3724py_cv_lib_readline=no
3725AC_MSG_CHECKING([how to link readline libs])
3726for py_libtermcap in "" ncursesw ncurses curses termcap; do
3727 if test -z "$py_libtermcap"; then
3728 READLINE_LIBS="-lreadline"
3729 else
3730 READLINE_LIBS="-lreadline -l$py_libtermcap"
3731 fi
3732 LIBS="$READLINE_LIBS $LIBS_no_readline"
3733 AC_LINK_IFELSE(
3734 [AC_LANG_CALL([],[readline])],
3735 [py_cv_lib_readline=yes])
3736 if test $py_cv_lib_readline = yes; then
3737 break
3738 fi
3739done
3740# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3741#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003742if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003743 AC_MSG_RESULT([none])
3744else
3745 AC_MSG_RESULT([$READLINE_LIBS])
3746 AC_DEFINE(HAVE_LIBREADLINE, 1,
3747 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003748fi
3749
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003750# check for readline 2.1
3751AC_CHECK_LIB(readline, rl_callback_handler_install,
3752 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003753 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003754
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003755# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003756AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3757 [have_readline=yes],
3758 [have_readline=no]
3759)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003760if test $have_readline = yes
3761then
3762 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3763 [readline/readline.h],
3764 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3765 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003766 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3767 [readline/readline.h],
3768 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3769 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003770fi
3771
Martin v. Löwis0daad592001-09-30 21:09:59 +00003772# check for readline 4.0
3773AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003774 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003775 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003776
Thomas Wouters89d996e2007-09-08 17:39:28 +00003777# also in 4.0
3778AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3779 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003780 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003781
Guido van Rossum353ae582001-07-10 16:45:32 +00003782# check for readline 4.2
3783AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003784 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003785 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003786
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003787# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003788AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3789 [have_readline=yes],
3790 [have_readline=no]
3791)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003792if test $have_readline = yes
3793then
3794 AC_EGREP_HEADER([extern int rl_catch_signals;],
3795 [readline/readline.h],
3796 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3797 [Define if you can turn off readline's signal handling.]), )
3798fi
3799
Martin v. Löwis82bca632006-02-10 20:49:30 +00003800# End of readline checks: restore LIBS
3801LIBS=$LIBS_no_readline
3802
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003803AC_MSG_CHECKING(for broken nice())
3804AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003805AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003806int main()
3807{
3808 int val1 = nice(1);
3809 if (val1 != -1 && val1 == nice(2))
3810 exit(0);
3811 exit(1);
3812}
Matthias Kloseb159a552010-04-25 21:00:44 +00003813]])],
3814[ac_cv_broken_nice=yes],
3815[ac_cv_broken_nice=no],
3816[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003817AC_MSG_RESULT($ac_cv_broken_nice)
3818if test "$ac_cv_broken_nice" = yes
3819then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003820 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3821 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003822fi
3823
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003824AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003825AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003826AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003827#include <poll.h>
3828
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003829int main()
3830{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003831 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003832 int poll_test;
3833
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003834 close (42);
3835
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003836 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003837 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003838 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003839 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003840 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003841 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003842 return 1;
3843}
Matthias Kloseb159a552010-04-25 21:00:44 +00003844]])],
3845[ac_cv_broken_poll=yes],
3846[ac_cv_broken_poll=no],
3847[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003848AC_MSG_RESULT($ac_cv_broken_poll)
3849if test "$ac_cv_broken_poll" = yes
3850then
3851 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3852 [Define if poll() sets errno on invalid file descriptors.])
3853fi
3854
Brett Cannon43802422005-02-10 20:48:03 +00003855# Before we can test tzset, we need to check if struct tm has a tm_zone
3856# (which is not required by ISO C or UNIX spec) and/or if we support
3857# tzname[]
3858AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003859
Brett Cannon43802422005-02-10 20:48:03 +00003860# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003861AC_MSG_CHECKING(for working tzset())
3862AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003863AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003864#include <stdlib.h>
3865#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003866#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003867
3868#if HAVE_TZNAME
3869extern char *tzname[];
3870#endif
3871
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003872int main()
3873{
Brett Cannon18367812003-09-19 00:59:16 +00003874 /* Note that we need to ensure that not only does tzset(3)
3875 do 'something' with localtime, but it works as documented
3876 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003877 This includes making sure that tzname is set properly if
3878 tm->tm_zone does not exist since it is the alternative way
3879 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003880
3881 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003882 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003883 */
3884
Brett Cannon43802422005-02-10 20:48:03 +00003885 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003886 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3887
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003888 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003889 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003890 if (localtime(&groundhogday)->tm_hour != 0)
3891 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003892#if HAVE_TZNAME
3893 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3894 if (strcmp(tzname[0], "UTC") ||
3895 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3896 exit(1);
3897#endif
Brett Cannon18367812003-09-19 00:59:16 +00003898
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003899 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003900 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003901 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003902 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003903#if HAVE_TZNAME
3904 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3905 exit(1);
3906#endif
Brett Cannon18367812003-09-19 00:59:16 +00003907
3908 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3909 tzset();
3910 if (localtime(&groundhogday)->tm_hour != 11)
3911 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003912#if HAVE_TZNAME
3913 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3914 exit(1);
3915#endif
3916
3917#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003918 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3919 exit(1);
3920 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3921 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003922#endif
Brett Cannon18367812003-09-19 00:59:16 +00003923
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003924 exit(0);
3925}
Matthias Kloseb159a552010-04-25 21:00:44 +00003926]])],
3927[ac_cv_working_tzset=yes],
3928[ac_cv_working_tzset=no],
3929[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003930AC_MSG_RESULT($ac_cv_working_tzset)
3931if test "$ac_cv_working_tzset" = yes
3932then
3933 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3934 [Define if tzset() actually switches the local timezone in a meaningful way.])
3935fi
3936
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003937# Look for subsecond timestamps in struct stat
3938AC_MSG_CHECKING(for tv_nsec in struct stat)
3939AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00003940AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003941struct stat st;
3942st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003943]])],
3944[ac_cv_stat_tv_nsec=yes],
3945[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003946AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3947if test "$ac_cv_stat_tv_nsec" = yes
3948then
3949 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3950 [Define if you have struct stat.st_mtim.tv_nsec])
3951fi
3952
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003953# Look for BSD style subsecond timestamps in struct stat
3954AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3955AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00003956AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003957struct stat st;
3958st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003959]])],
3960[ac_cv_stat_tv_nsec2=yes],
3961[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003962AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3963if test "$ac_cv_stat_tv_nsec2" = yes
3964then
3965 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3966 [Define if you have struct stat.st_mtimensec])
3967fi
3968
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003969# On HP/UX 11.0, mvwdelch is a block with a return statement
3970AC_MSG_CHECKING(whether mvwdelch is an expression)
3971AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00003972AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003973 int rtn;
3974 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003975]])],
3976[ac_cv_mvwdelch_is_expression=yes],
3977[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003978AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3979
3980if test "$ac_cv_mvwdelch_is_expression" = yes
3981then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003982 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3983 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003984fi
3985
3986AC_MSG_CHECKING(whether WINDOW has _flags)
3987AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00003988AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003989 WINDOW *w;
3990 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00003991]])],
3992[ac_cv_window_has_flags=yes],
3993[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003994AC_MSG_RESULT($ac_cv_window_has_flags)
3995
3996
3997if test "$ac_cv_window_has_flags" = yes
3998then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003999 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4000 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004001fi
4002
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004003AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004004AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4005 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4006 AC_MSG_RESULT(yes)],
4007 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004008)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004009
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004010AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004011AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4012 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4013 AC_MSG_RESULT(yes)],
4014 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004015)
4016
4017AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004018AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4019 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4020 AC_MSG_RESULT(yes)],
4021 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004022)
4023
Thomas Wouters89f507f2006-12-13 04:49:30 +00004024AC_MSG_CHECKING(for /dev/ptmx)
4025
4026if test -r /dev/ptmx
4027then
4028 AC_MSG_RESULT(yes)
4029 AC_DEFINE(HAVE_DEV_PTMX, 1,
4030 [Define if we have /dev/ptmx.])
4031else
4032 AC_MSG_RESULT(no)
4033fi
4034
4035AC_MSG_CHECKING(for /dev/ptc)
4036
4037if test -r /dev/ptc
4038then
4039 AC_MSG_RESULT(yes)
4040 AC_DEFINE(HAVE_DEV_PTC, 1,
4041 [Define if we have /dev/ptc.])
4042else
4043 AC_MSG_RESULT(no)
4044fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004045
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004046if test "$have_long_long" = yes
4047then
4048 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4049 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004050 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004051 #include <stdio.h>
4052 #include <stddef.h>
4053 #include <string.h>
4054
4055 #ifdef HAVE_SYS_TYPES_H
4056 #include <sys/types.h>
4057 #endif
4058
4059 int main()
4060 {
4061 char buffer[256];
4062
4063 if (sprintf(buffer, "%lld", (long long)123) < 0)
4064 return 1;
4065 if (strcmp(buffer, "123"))
4066 return 1;
4067
4068 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4069 return 1;
4070 if (strcmp(buffer, "-123"))
4071 return 1;
4072
4073 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4074 return 1;
4075 if (strcmp(buffer, "123"))
4076 return 1;
4077
4078 return 0;
4079 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004080 ]]])],
4081 [ac_cv_have_long_long_format=yes],
4082 [ac_cv_have_long_long_format=no],
4083 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004084 )
4085 AC_MSG_RESULT($ac_cv_have_long_long_format)
4086fi
4087
Mark Dickinson89d7d412009-12-31 20:50:59 +00004088if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004089then
4090 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4091 [Define to printf format modifier for long long type])
4092fi
4093
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004094if test $ac_sys_system = Darwin
4095then
4096 LIBS="$LIBS -framework CoreFoundation"
4097fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004098
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004099AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004100AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004101#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004102#include <stddef.h>
4103#include <string.h>
4104
Christian Heimes2c181612007-12-17 20:04:13 +00004105#ifdef HAVE_SYS_TYPES_H
4106#include <sys/types.h>
4107#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004108
4109#ifdef HAVE_SSIZE_T
4110typedef ssize_t Py_ssize_t;
4111#elif SIZEOF_VOID_P == SIZEOF_LONG
4112typedef long Py_ssize_t;
4113#else
4114typedef int Py_ssize_t;
4115#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004116
Christian Heimes2c181612007-12-17 20:04:13 +00004117int main()
4118{
4119 char buffer[256];
4120
Thomas Wouters477c8d52006-05-27 19:21:47 +00004121 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4122 return 1;
4123
Thomas Wouters89f507f2006-12-13 04:49:30 +00004124 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004125 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004126
4127 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4128 return 1;
4129
4130 if (strcmp(buffer, "-123"))
4131 return 1;
4132
Thomas Wouters477c8d52006-05-27 19:21:47 +00004133 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004134}
Matthias Kloseb159a552010-04-25 21:00:44 +00004135]])],
4136 [ac_cv_have_size_t_format=yes],
4137 [ac_cv_have_size_t_format=no],
4138 [ac_cv_have_size_t_format="cross -- assuming yes"
4139])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004140if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004141 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4142 [Define to printf format modifier for Py_ssize_t])
4143fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004144
Martin v. Löwis01c04012002-11-11 14:58:44 +00004145AC_CHECK_TYPE(socklen_t,,
4146 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004147 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004148#ifdef HAVE_SYS_TYPES_H
4149#include <sys/types.h>
4150#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004151#ifdef HAVE_SYS_SOCKET_H
4152#include <sys/socket.h>
4153#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004154])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004155
Antoine Pitroufff95302008-09-03 18:58:51 +00004156AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004157AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004158AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004159#include<stdlib.h>
4160int main() {
4161 size_t len = -1;
4162 const char *str = "text";
4163 len = mbstowcs(NULL, str, 0);
4164 return (len != 4);
4165}
Matthias Kloseb159a552010-04-25 21:00:44 +00004166]])],
4167[ac_cv_broken_mbstowcs=no],
4168[ac_cv_broken_mbstowcs=yes],
4169[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004170AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4171if test "$ac_cv_broken_mbstowcs" = yes
4172then
4173 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4174 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4175 wide chars that would be converted.])
4176fi
4177
Antoine Pitrou042b1282010-08-13 21:15:58 +00004178AC_MSG_CHECKING(whether $CC supports computed gotos)
4179AC_CACHE_VAL(ac_cv_computed_gotos,
4180AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4181int main(int argc, char **argv)
4182{
4183 static void *targets[1] = { &&LABEL1 };
4184 goto LABEL2;
4185LABEL1:
4186 return 0;
4187LABEL2:
4188 goto *targets[0];
4189 return 1;
4190}
4191]]])],
4192[ac_cv_computed_gotos=yes],
4193[ac_cv_computed_gotos=no],
4194[ac_cv_computed_gotos=no]))
4195AC_MSG_RESULT($ac_cv_computed_gotos)
4196if test "$ac_cv_computed_gotos" = yes
4197then
4198 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4199 [Define if the C compiler supports computed gotos.])
4200fi
4201
Antoine Pitroub52ec782009-01-25 16:34:23 +00004202# Check for --with-computed-gotos
4203AC_MSG_CHECKING(for --with-computed-gotos)
4204AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004205 AS_HELP_STRING([--with(out)-computed-gotos],
4206 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004207[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004208if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004209then
4210 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4211 [Define if you want to use computed gotos in ceval.c.])
4212 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004213fi
4214if test "$withval" = no
4215then
4216 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4217 [Define if you want to use computed gotos in ceval.c.])
4218 AC_MSG_RESULT(no)
4219fi
4220],
4221[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004222
R. David Murraye16cda92010-10-15 23:12:57 +00004223case $ac_sys_system in
4224AIX*)
4225 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4226esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004227
Jesus Cea6a792292010-05-03 21:18:48 +00004228
Gregory P. Smith51ee2702010-12-13 07:59:39 +00004229AC_CHECK_FUNC(pipe2, AC_DEFINE(HAVE_PIPE2, 1, [Define if the OS supports pipe2()]), )
Jesus Cea6a792292010-05-03 21:18:48 +00004230
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004231AC_SUBST(THREADHEADERS)
4232
4233for h in `(cd $srcdir;echo Python/thread_*.h)`
4234do
4235 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4236done
4237
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004238AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004239SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004240AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004241for dir in $SRCDIRS; do
4242 if test ! -d $dir; then
4243 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004244 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004245done
4246AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004247
Guido van Rossum627b2d71993-12-24 10:39:16 +00004248# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004249AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004250AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004251AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004252
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004253echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004254if test ! -f Modules/Setup
4255then
4256 cp $srcdir/Modules/Setup.dist Modules/Setup
4257fi
4258
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004259echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004260if test ! -f Modules/Setup.local
4261then
4262 echo "# Edit this file for local setup changes" >Modules/Setup.local
4263fi
4264
4265echo "creating Makefile"
4266$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4267 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004268 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004269mv config.c Modules