blob: 3394d84ca3ca0b8a6445e8561e2582adeeb412be [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 Brandl08a90122012-09-29 09:34:13 +02006m4_define(PYTHON_VERSION, 3.4)
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
Georg Brandle2e15612009-05-20 18:25:10 +000010AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
Trent Nelson4d4ec652012-10-16 08:51:24 -040012AC_SUBST(BASECPPFLAGS)
Trent Nelson5595ab52012-10-17 04:47:31 -040013if test "$abs_srcdir" != "$abs_builddir"; then
Trent Nelson4d4ec652012-10-16 08:51:24 -040014 # If we're building out-of-tree, we need to make sure the following
15 # resources get picked up before their $srcdir counterparts.
16 # Objects/ -> typeslots.inc
17 # Include/ -> Python-ast.h, graminit.h
18 # Python/ -> importlib.h
19 # (A side effect of this is that these resources will automatically be
20 # regenerated when building out-of-tree, regardless of whether or not
21 # the $srcdir counterpart is up-to-date. This is an acceptable trade
22 # off.)
23 BASECPPFLAGS="-IObjects -IInclude -IPython"
24else
25 BASECPPFLAGS=""
26fi
27
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050028AC_SUBST(HGVERSION)
29AC_SUBST(HGTAG)
30AC_SUBST(HGBRANCH)
31
Antoine Pitroud3b2aef2011-07-27 01:22:41 +020032if test -e $srcdir/.hg/dirstate
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050033then
34AC_CHECK_PROG(HAS_HG, hg, found, not-found)
35else
36HAS_HG=no-repository
37fi
38if test $HAS_HG = found
39then
40 HGVERSION="hg id -i \$(srcdir)"
41 HGTAG="hg id -t \$(srcdir)"
42 HGBRANCH="hg id -b \$(srcdir)"
43else
44 HGVERSION=""
45 HGTAG=""
46 HGBRANCH=""
47fi
48
Martin v. Löwis88afe662002-10-26 13:47:44 +000049AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000050AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000051
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010052AC_CANONICAL_HOST
doko@python.orga10e4a92013-01-25 18:45:12 +010053AC_SUBST(build)
54AC_SUBST(host)
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010055
Ned Deilyfcbc2462014-08-22 13:32:49 -070056# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
57rm -f pybuilddir.txt
58
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020059if test "$cross_compiling" = yes; then
60 AC_MSG_CHECKING([for python interpreter for cross build])
61 if test -z "$PYTHON_FOR_BUILD"; then
62 for interp in python$PACKAGE_VERSION python3 python; do
63 which $interp >/dev/null 2>&1 || continue
64 if $interp -c 'import sys;sys.exit(not sys.version_info@<:@:2@:>@ >= (3,3))'; then
65 break
66 fi
67 interp=
68 done
69 if test x$interp = x; then
70 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
71 fi
72 AC_MSG_RESULT($interp)
doko@python.org244b6872013-01-26 12:08:25 +010073 PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020074 fi
Christian Heimes954ac032012-12-12 13:10:21 +010075elif test "$cross_compiling" = maybe; then
76 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020077else
78 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
79fi
80AC_SUBST(PYTHON_FOR_BUILD)
81
Benjamin Petersond23f8222009-04-05 19:13:16 +000082dnl Ensure that if prefix is specified, it does not end in a slash. If
83dnl it does, we get path names containing '//' which is both ugly and
84dnl can cause trouble.
85
86dnl Last slash shouldn't be stripped if prefix=/
87if test "$prefix" != "/"; then
88 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
89fi
90
Martin v. Löwis8316feb2003-06-14 07:48:07 +000091dnl This is for stuff that absolutely must end up in pyconfig.h.
92dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000093AH_TOP([
94#ifndef Py_PYCONFIG_H
95#define Py_PYCONFIG_H
96])
Martin v. Löwis11437992002-04-12 09:54:03 +000097AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000098/* Define the macros needed if on a UnixWare 7.x system. */
99#if defined(__USLC__) && defined(__SCO_VERSION__)
100#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
101#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +0000102
103#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +0000104])
105
Martin v. Löwis8316feb2003-06-14 07:48:07 +0000106# We don't use PACKAGE_ variables, and they cause conflicts
107# with other autoconf-based packages that include Python.h
108grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
109rm confdefs.h
110mv confdefs.h.new confdefs.h
111
Guido van Rossum642b6781997-07-19 19:35:41 +0000112AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +0000113VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +0000114
Georg Brandlde7d8342010-09-03 22:19:07 +0000115# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +0000116AC_SUBST(SOVERSION)
117SOVERSION=1.0
118
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000119# The later defininition of _XOPEN_SOURCE disables certain features
120# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
121AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
122
Martin v. Löwisbcd93962003-05-03 10:32:18 +0000123# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
124# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
125# them.
126AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
127
Andrew MacIntyreabccf412003-07-02 13:53:25 +0000128# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
129# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
130# them.
131AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
132
Martin v. Löwisd6320502004-08-12 13:45:08 +0000133# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
134# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
135AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
136
Georg Brandlfcaf9102008-07-16 02:17:56 +0000137# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
138# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
139# them.
140AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
141
142
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000143define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000144
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000145# Arguments passed to configure.
146AC_SUBST(CONFIG_ARGS)
147CONFIG_ARGS="$ac_configure_args"
148
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000149AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000150AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700151 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000152[
153 case $enableval in
154 yes)
Ned Deilycbfb9a52012-06-23 16:02:19 -0700155 # Locate the best usable SDK, see Mac/README.txt for more
156 # information
157 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
Ned Deily87adb6e2013-10-18 21:09:56 -0700158 if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000159 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700160 enableval=/Developer/SDKs/MacOSX10.4u.sdk
161 if test ! -d "${enableval}"
162 then
163 enableval=/
164 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000165 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000166 ;;
167 esac
168 case $enableval in
169 no)
170 UNIVERSALSDK=
171 enable_universalsdk=
172 ;;
173 *)
174 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000175 if test ! -d "${UNIVERSALSDK}"
176 then
177 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
178 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000179 ;;
180 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000181
Thomas Wouters477c8d52006-05-27 19:21:47 +0000182],[
183 UNIVERSALSDK=
184 enable_universalsdk=
185])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000186if test -n "${UNIVERSALSDK}"
187then
188 AC_MSG_RESULT(${UNIVERSALSDK})
189else
190 AC_MSG_RESULT(no)
191fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000192AC_SUBST(UNIVERSALSDK)
193
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000194AC_SUBST(ARCH_RUN_32BIT)
Ned Deily87adb6e2013-10-18 21:09:56 -0700195ARCH_RUN_32BIT=""
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000196
Ned Deilycbfb9a52012-06-23 16:02:19 -0700197# For backward compatibility reasons we prefer to select '32-bit' if available,
198# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000199UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700200if test "`uname -s`" = "Darwin"
201then
202 if test -n "${UNIVERSALSDK}"
203 then
Ned Deily87adb6e2013-10-18 21:09:56 -0700204 if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700205 then
206 UNIVERSAL_ARCHS="intel"
207 fi
208 fi
209fi
210
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000211AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000212AC_MSG_CHECKING(for --with-universal-archs)
213AC_ARG_WITH(universal-archs,
Ned Deily87adb6e2013-10-18 21:09:56 -0700214 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel", "intel-32", or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000215[
Georg Brandlfcaf9102008-07-16 02:17:56 +0000216 UNIVERSAL_ARCHS="$withval"
217],
Ned Deily87adb6e2013-10-18 21:09:56 -0700218[])
219if test -n "${UNIVERSALSDK}"
220then
221 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
222else
223 AC_MSG_RESULT(no)
224fi
Georg Brandlfcaf9102008-07-16 02:17:56 +0000225
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000226AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000227 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000228 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000229[
230 PYTHONFRAMEWORK=${withval}
231 PYTHONFRAMEWORKDIR=${withval}.framework
232 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
233 ],[
234 PYTHONFRAMEWORK=Python
235 PYTHONFRAMEWORKDIR=Python.framework
236 PYTHONFRAMEWORKIDENTIFIER=org.python.python
237])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000238dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000239AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000240 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000241[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000242 case $enableval in
243 yes)
244 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000245 esac
246 case $enableval in
247 no)
248 PYTHONFRAMEWORK=
249 PYTHONFRAMEWORKDIR=no-framework
250 PYTHONFRAMEWORKPREFIX=
251 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000252 FRAMEWORKINSTALLFIRST=
253 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000254 FRAMEWORKALTINSTALLFIRST=
255 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800256 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000257 if test "x${prefix}" = "xNONE"; then
258 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
259 else
260 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
261 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000262 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000263 ;;
264 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000265 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000266 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000267 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000268 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000269 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
270 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ned Deilyb8f944f2013-11-21 22:42:25 -0800271 FRAMEWORKPYTHONW="frameworkpythonw"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000272 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000273
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000274 if test "x${prefix}" = "xNONE" ; then
275 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000276
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000277 else
278 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
279 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000280
281 case "${enableval}" in
282 /System*)
283 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
284 if test "${prefix}" = "NONE" ; then
285 # See below
286 FRAMEWORKUNIXTOOLSPREFIX="/usr"
287 fi
288 ;;
289
290 /Library*)
291 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
292 ;;
293
294 */Library/Frameworks)
295 MDIR="`dirname "${enableval}"`"
296 MDIR="`dirname "${MDIR}"`"
297 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
298
299 if test "${prefix}" = "NONE"; then
300 # User hasn't specified the
301 # --prefix option, but wants to install
302 # the framework in a non-default location,
303 # ensure that the compatibility links get
304 # installed relative to that prefix as well
305 # instead of in /usr/local.
306 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
307 fi
308 ;;
309
310 *)
311 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
312 ;;
313 esac
314
Jack Jansen127e56e2001-09-11 14:41:54 +0000315 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000316
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000317 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000318 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000319 AC_CONFIG_FILES(Mac/Makefile)
320 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000321 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
322 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000323 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000324 ],[
325 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000326 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000327 PYTHONFRAMEWORKPREFIX=
328 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000329 FRAMEWORKINSTALLFIRST=
330 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000331 FRAMEWORKALTINSTALLFIRST=
332 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800333 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000334 if test "x${prefix}" = "xNONE" ; then
335 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
336 else
337 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
338 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000339 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000340
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000341])
342AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000343AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000344AC_SUBST(PYTHONFRAMEWORKDIR)
345AC_SUBST(PYTHONFRAMEWORKPREFIX)
346AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000347AC_SUBST(FRAMEWORKINSTALLFIRST)
348AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000349AC_SUBST(FRAMEWORKALTINSTALLFIRST)
350AC_SUBST(FRAMEWORKALTINSTALLLAST)
Ned Deilyb8f944f2013-11-21 22:42:25 -0800351AC_SUBST(FRAMEWORKPYTHONW)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000352AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000353AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000354
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000355##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000356## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000357## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000358##
Guido van Rossumb418f891996-07-30 18:06:02 +0000359# Set name for machine-dependent library files
doko@python.orgeab42bf2013-01-26 18:57:19 +0100360AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
Guido van Rossumb418f891996-07-30 18:06:02 +0000361AC_MSG_CHECKING(MACHDEP)
362if test -z "$MACHDEP"
363then
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100364 # avoid using uname for cross builds
365 if test "$cross_compiling" = yes; then
doko@python.org44bbbda2013-01-25 14:44:00 +0100366 # ac_sys_system and ac_sys_release are used for setting
367 # a lot of different things including 'define_xopen_source'
368 # in the case statement below.
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100369 case "$host" in
370 *-*-linux*)
371 ac_sys_system=Linux
372 ;;
373 *-*-cygwin*)
374 ac_sys_system=Cygwin
375 ;;
376 *)
377 # for now, limit cross builds to known configurations
378 MACHDEP="unknown"
379 AC_MSG_ERROR([cross build not supported for $host])
380 esac
381 ac_sys_release=
382 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000383 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000384 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000385 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000386 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000387 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000388 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000389 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100390 fi
391 ac_md_system=`echo $ac_sys_system |
392 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
393 ac_md_release=`echo $ac_sys_release |
394 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
395 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000396
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100397 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200398 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000399 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000400 darwin*) MACHDEP="darwin";;
doko@ubuntu.comba015832012-06-30 16:52:05 +0200401 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000402 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100403 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000404fi
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200405
406AC_SUBST(_PYTHON_HOST_PLATFORM)
407if test "$cross_compiling" = yes; then
408 case "$host" in
409 *-*-linux*)
410 case "$host_cpu" in
411 arm*)
412 _host_cpu=arm
413 ;;
414 *)
415 _host_cpu=$host_cpu
416 esac
417 ;;
418 *-*-cygwin*)
419 _host_cpu=
420 ;;
421 *)
422 # for now, limit cross builds to known configurations
423 MACHDEP="unknown"
424 AC_MSG_ERROR([cross build not supported for $host])
425 esac
426 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
427fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000428
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000429# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
430# disable features if it is defined, without any means to access these
431# features as extensions. For these systems, we skip the definition of
432# _XOPEN_SOURCE. Before adding a system to the list to gain access to
433# some feature, make sure there is no alternative way to access this
434# feature. Also, when using wildcards, make sure you have verified the
435# need for not defining _XOPEN_SOURCE on all systems matching the
436# wildcard, and that the wildcard does not include future systems
437# (which may remove their limitations).
438dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
439case $ac_sys_system/$ac_sys_release in
440 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
441 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000442 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000443 # In addition, Stefan Krah confirms that issue #1244610 exists through
444 # OpenBSD 4.6, but is fixed in 4.7.
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200445 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000446 define_xopen_source=no
447 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
448 # also defined. This can be overridden by defining _BSD_SOURCE
449 # As this has a different meaning on Linux, only define it on OpenBSD
450 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
451 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200452 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000453 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
454 # also defined. This can be overridden by defining _BSD_SOURCE
455 # As this has a different meaning on Linux, only define it on OpenBSD
456 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
457 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000458 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
459 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
460 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000461 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 +0000462 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000463 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
464 # request to enable features supported by the standard as a request
465 # to disable features not supported by the standard. The best way
466 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
467 # entirely and define __EXTENSIONS__ instead.
468 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000469 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000470 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
471 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000472 # Reconfirmed for 7.1.4 by Martin v. Loewis.
473 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000474 define_xopen_source=no;;
475 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000476 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000477 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000478 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000479 # On FreeBSD 4, the math functions C89 does not cover are never defined
480 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
481 FreeBSD/4.*)
482 define_xopen_source=no;;
483 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
484 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
485 # identifies itself as Darwin/7.*
486 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
487 # disables platform specific features beyond repair.
488 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
489 # has no effect, don't bother defining them
490 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000491 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000492 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000493 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000494 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
495 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
496 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000497 AIX/4)
498 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000499 AIX/5)
500 if test `uname -r` -eq 1; then
501 define_xopen_source=no
502 fi
503 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000504 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
505 # defining NI_NUMERICHOST.
506 QNX/6.3.2)
507 define_xopen_source=no
508 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000509
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000510esac
511
512if test $define_xopen_source = yes
513then
Victor Stinner14d098d2011-09-07 22:29:43 +0200514 # X/Open 7, incorporating POSIX.1-2008
515 AC_DEFINE(_XOPEN_SOURCE, 700,
Martin v. Löwis1a415762010-05-28 15:44:20 +0000516 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000517
518 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
519 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
520 # several APIs are not declared. Since this is also needed in some
521 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000522 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
523 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000524
Victor Stinnerd169fdc2011-09-08 00:56:17 +0200525 AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2008)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000526fi
527
Christian Heimes647cd872013-12-07 23:39:33 +0100528# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE
529case $ac_sys_system in
Christian Heimesb02bcae2013-12-08 15:21:08 +0100530 hp*|HP*)
531 define_stdc_a1=yes;;
532 *)
533 define_stdc_a1=no;;
Christian Heimes647cd872013-12-07 23:39:33 +0100534esac
535
Christian Heimesb02bcae2013-12-08 15:21:08 +0100536if test $define_stdc_a1 = yes
537then
538 AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc)
539fi
540
Guido van Rossum91922671997-10-09 20:24:13 +0000541#
542# SGI compilers allow the specification of the both the ABI and the
543# ISA on the command line. Depending on the values of these switches,
544# different and often incompatable code will be generated.
545#
546# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
547# thus supply support for various ABI/ISA combinations. The MACHDEP
548# variable is also adjusted.
549#
550AC_SUBST(SGI_ABI)
551if test ! -z "$SGI_ABI"
552then
553 CC="cc $SGI_ABI"
554 LDFLAGS="$SGI_ABI $LDFLAGS"
555 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
556fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000557AC_MSG_RESULT($MACHDEP)
558
doko@ubuntu.com1345d202015-04-13 21:59:57 +0200559AC_SUBST(PLATDIR)
560PLATDIR=plat-$MACHDEP
561
Jack Jansen6b08a402004-06-03 12:41:45 +0000562# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
563# it may influence the way we can build extensions, so distutils
564# needs to check it
565AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000566AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000567CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000568EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000569
Guido van Rossum627b2d71993-12-24 10:39:16 +0000570# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000571
572# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
573# for debug/optimization stuff. BASECFLAGS is for flags that are required
574# just to get things to compile and link. Users are free to override OPT
575# when running configure or make. The build should not break if they do.
576# BASECFLAGS should generally not be messed with, however.
577
578# XXX shouldn't some/most/all of this code be merged with the stuff later
579# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000580AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000581AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000582 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000583[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000584 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000585 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000586 without_gcc=yes;;
587 yes) CC=gcc
588 without_gcc=no;;
589 *) CC=$withval
590 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000591 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000592 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000593 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000594 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000595 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000596 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000597AC_MSG_RESULT($without_gcc)
598
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000599# If the user switches compilers, we can't believe the cache
600if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
601then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000602 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
603(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000604fi
605
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000606# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
607# when the compiler supports them, but we don't always want -O2, and
608# we set -g later.
609if test -z "$CFLAGS"; then
610 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000611fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700612
613if test "$ac_sys_system" = "Darwin"
614then
615 # Compiler selection on MacOSX is more complicated than
616 # AC_PROG_CC can handle, see Mac/README.txt for more
617 # information
618 if test -z "${CC}"
619 then
620 found_gcc=
621 found_clang=
622 as_save_IFS=$IFS; IFS=:
623 for as_dir in $PATH
624 do
625 IFS=$as_save_IFS
626 if test -x $as_dir/gcc; then
627 if test -z "${found_gcc}"; then
628 found_gcc=$as_dir/gcc
629 fi
630 fi
631 if test -x $as_dir/clang; then
632 if test -z "${found_clang}"; then
633 found_clang=$as_dir/clang
634 fi
635 fi
636 done
637 IFS=$as_save_IFS
638
639 if test -n "$found_gcc" -a -n "$found_clang"
640 then
641 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
642 then
643 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
644 CC="$found_clang"
645 CXX="$found_clang++"
646 fi
647
648
649 elif test -z "$found_gcc" -a -n "$found_clang"
650 then
651 AC_MSG_NOTICE([No GCC found, use CLANG])
652 CC="$found_clang"
653 CXX="$found_clang++"
654
655 elif test -z "$found_gcc" -a -z "$found_clang"
656 then
657 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
658 if test -n "${found_clang}"
659 then
660 AC_MSG_NOTICE([Using clang from Xcode.app])
661 CC="${found_clang}"
662 CXX="`/usr/bin/xcrun -find clang++`"
663
664 # else: use default behaviour
665 fi
666 fi
667 fi
668fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000669AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000670
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000671AC_SUBST(CXX)
672AC_SUBST(MAINCC)
673AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
674AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000675 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000676 [compile main() and link python executable with C++ compiler]),
677[
678
679 case $withval in
680 no) with_cxx_main=no
681 MAINCC='$(CC)';;
682 yes) with_cxx_main=yes
683 MAINCC='$(CXX)';;
684 *) with_cxx_main=yes
685 MAINCC=$withval
686 if test -z "$CXX"
687 then
688 CXX=$withval
689 fi;;
690 esac], [
691 with_cxx_main=no
692 MAINCC='$(CC)'
693])
694AC_MSG_RESULT($with_cxx_main)
695
696preset_cxx="$CXX"
697if test -z "$CXX"
698then
699 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200700 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
701 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
702 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000703 esac
704 if test "$CXX" = "notfound"
705 then
706 CXX=""
707 fi
708fi
709if test -z "$CXX"
710then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200711 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000712 if test "$CXX" = "notfound"
713 then
714 CXX=""
715 fi
716fi
717if test "$preset_cxx" != "$CXX"
718then
Christian Heimesfe32aec2013-11-20 01:18:26 +0100719 AC_MSG_NOTICE([
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000720
721 By default, distutils will build C++ extension modules with "$CXX".
722 If this is not intended, then set CXX on the configure command line.
723 ])
724fi
725
726
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200727AC_MSG_CHECKING([for -Wl,--no-as-needed])
728save_LDFLAGS="$LDFLAGS"
729LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
730AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
731 [NO_AS_NEEDED="-Wl,--no-as-needed"
732 AC_MSG_RESULT([yes])],
733 [NO_AS_NEEDED=""
734 AC_MSG_RESULT([no])])
735LDFLAGS="$save_LDFLAGS"
736AC_SUBST(NO_AS_NEEDED)
737
738
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000739# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000740AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000741
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000742# Check for unsupported systems
743case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000744atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000745 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
746 echo See README for details.
747 exit 1;;
748esac
749
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000750AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000751AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000752AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000753 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000754[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000755 case $withval in
756 no) EXEEXT=;;
757 yes) EXEEXT=.exe;;
758 *) EXEEXT=$withval;;
759 esac])
760AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000761
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000762# Test whether we're running on a non-case-sensitive system, in which
763# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000764AC_SUBST(BUILDEXEEXT)
765AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000766if test ! -d CaseSensitiveTestDir; then
767mkdir CaseSensitiveTestDir
768fi
769
770if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000771then
Jack Jansen1999ef42001-12-06 21:47:20 +0000772 AC_MSG_RESULT(yes)
773 BUILDEXEEXT=.exe
774else
775 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000776 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000777fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000778rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000779
Guido van Rossumdd997f71998-10-07 19:58:26 +0000780case $MACHDEP in
781bsdos*)
782 case $CC in
783 gcc) CC="$CC -D_HAVE_BSDI";;
784 esac;;
785esac
786
Guido van Rossum84561611997-08-21 00:08:11 +0000787case $ac_sys_system in
788hp*|HP*)
789 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000790 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000791 esac;;
792esac
793
doko@python.org3e6e2ac2013-01-25 13:12:29 +0100794MULTIARCH=$($CC --print-multiarch 2>/dev/null)
795AC_SUBST(MULTIARCH)
796
Martin v. Löwise8964d42001-03-06 12:09:07 +0000797
Neil Schemenauer61c51152001-01-26 16:18:16 +0000798AC_SUBST(LIBRARY)
799AC_MSG_CHECKING(LIBRARY)
800if test -z "$LIBRARY"
801then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000802 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000803fi
804AC_MSG_RESULT($LIBRARY)
805
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000806# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000807# name of the library into which to insert object files). BLDLIBRARY is also
808# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
809# is blank as the main program is not linked directly against LDLIBRARY.
810# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
811# systems without shared libraries, LDLIBRARY is the same as LIBRARY
812# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
813# DLLLIBRARY is the shared (i.e., DLL) library.
814#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000815# RUNSHARED is used to run shared python without installed libraries
816#
817# INSTSONAME is the name of the shared library that will be use to install
818# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000819#
820# LDVERSION is the shared library version number, normally the Python version
821# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000822AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000823AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000824AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000825AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000826AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000827AC_SUBST(INSTSONAME)
828AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000829AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000830LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000831BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000832INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000833DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000834LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000835RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000836LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000837
Guido van Rossumfb842551997-08-06 23:42:07 +0000838# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000839# If CXX is set, and if it is needed to link a main function that was
840# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
841# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000842# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000843# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000844AC_SUBST(LINKCC)
845AC_MSG_CHECKING(LINKCC)
846if test -z "$LINKCC"
847then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000848 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000849 case $ac_sys_system in
850 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000851 exp_extra="\"\""
852 if test $ac_sys_release -ge 5 -o \
853 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
854 exp_extra="."
855 fi
856 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000857 QNX*)
858 # qcc must be used because the other compilers do not
859 # support -N.
860 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000861 esac
862fi
863AC_MSG_RESULT($LINKCC)
864
Tarek Ziadébe720e02009-05-09 11:55:12 +0000865# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
866# make sure we default having it set to "no": this is used by
867# distutils.unixccompiler to know if it should add --enable-new-dtags
868# to linker command lines, and failing to detect GNU ld simply results
869# in the same bahaviour as before.
870AC_SUBST(GNULD)
871AC_MSG_CHECKING(for GNU ld)
872ac_prog=ld
873if test "$GCC" = yes; then
874 ac_prog=`$CC -print-prog-name=ld`
875fi
876case `"$ac_prog" -V 2>&1 < /dev/null` in
877 *GNU*)
878 GNULD=yes;;
879 *)
880 GNULD=no;;
881esac
882AC_MSG_RESULT($GNULD)
883
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000884AC_C_INLINE
885if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000886 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000887 AC_SUBST(USE_INLINE)
888fi
889
890
Martin v. Löwis1142de32002-03-29 16:28:31 +0000891AC_MSG_CHECKING(for --enable-shared)
892AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000893 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000894
Martin v. Löwis1142de32002-03-29 16:28:31 +0000895if test -z "$enable_shared"
896then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000897 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000898 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000899 enable_shared="yes";;
900 *)
901 enable_shared="no";;
902 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000903fi
904AC_MSG_RESULT($enable_shared)
905
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000906AC_MSG_CHECKING(for --enable-profiling)
907AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +0200908 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
909if test "x$enable_profiling" = xyes; then
910 ac_save_cc="$CC"
Benjamin Peterson615ea1a2013-03-26 08:55:37 -0400911 CC="$CC -pg"
doko@ubuntu.comba015832012-06-30 16:52:05 +0200912 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
913 [],
914 [enable_profiling=no])
915 CC="$ac_save_cc"
916else
917 enable_profiling=no
918fi
919AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000920
doko@ubuntu.comba015832012-06-30 16:52:05 +0200921if test "x$enable_profiling" = xyes; then
922 BASECFLAGS="-pg $BASECFLAGS"
923 LDFLAGS="-pg $LDFLAGS"
924fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000925
926AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000927
Guido van Rossumb8552162001-09-05 14:58:11 +0000928# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
929# library that we build, but we do not want to link against it (we
930# will find it with a -framework option). For this reason there is an
931# extra variable BLDLIBRARY against which Python and the extension
932# modules are linked, BLDLIBRARY. This is normally the same as
933# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000934if test "$enable_framework"
935then
936 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200937 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000938 BLDLIBRARY=''
939else
940 BLDLIBRARY='$(LDLIBRARY)'
941fi
942
Martin v. Löwis1142de32002-03-29 16:28:31 +0000943# Other platforms follow
944if test $enable_shared = "yes"; then
doko@python.org87421192013-01-26 11:39:31 +0100945 PY_ENABLE_SHARED=1
Mark Hammond8235ea12002-07-19 06:55:41 +0000946 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000947 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000948 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000949 LDLIBRARY='libpython$(LDVERSION).dll.a'
950 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000951 ;;
952 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000953 LDLIBRARY='libpython$(LDVERSION).so'
954 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200955 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000956 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000957 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000958 then
959 PY3LIBRARY=libpython3.so
960 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000961 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +0200962 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000963 LDLIBRARY='libpython$(LDVERSION).so'
964 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200965 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000966 case $ac_sys_system in
967 FreeBSD*)
968 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
969 ;;
970 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000971 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000972 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000973 then
974 PY3LIBRARY=libpython3.so
975 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000976 ;;
977 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000978 case `uname -m` in
979 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000980 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000981 ;;
982 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000983 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000984 ;;
985 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000986 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200987 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000988 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000989 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000990 LDLIBRARY='libpython$(LDVERSION).dylib'
991 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200992 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Georg Brandlb1441c72009-01-03 22:33:39 +0000993 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000994 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000995 LDLIBRARY='libpython$(LDVERSION).so'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200996 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000997 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000998
Martin v. Löwis1142de32002-03-29 16:28:31 +0000999 esac
Jason Tishler30765592003-09-04 11:04:06 +00001000else # shared is disabled
doko@python.org87421192013-01-26 11:39:31 +01001001 PY_ENABLE_SHARED=0
Jason Tishler30765592003-09-04 11:04:06 +00001002 case $ac_sys_system in
1003 CYGWIN*)
1004 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001005 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +00001006 ;;
1007 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001008fi
1009
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +02001010if test "$cross_compiling" = yes; then
1011 RUNSHARED=
1012fi
1013
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001014AC_MSG_RESULT($LDLIBRARY)
1015
Guido van Rossum627b2d71993-12-24 10:39:16 +00001016AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001017AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +02001018AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +00001019
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001020# tweak ARFLAGS only if the user didn't set it on the command line
1021AC_SUBST(ARFLAGS)
1022if test -z "$ARFLAGS"
1023then
1024 ARFLAGS="rc"
1025fi
1026
doko@ubuntu.com58844492012-06-30 18:25:32 +02001027AC_CHECK_TOOLS([READELF], [readelf], [:])
1028if test "$cross_compiling" = yes; then
1029 case "$READELF" in
1030 readelf|:)
1031 AC_MSG_ERROR([readelf for the host is required for cross builds])
1032 ;;
1033 esac
1034fi
1035AC_SUBST(READELF)
1036
Matthias Klosec4c48422012-10-21 23:05:35 +02001037AC_SUBST(ASDLGEN)
1038AC_CHECK_PROGS(PYTHON, python$PACKAGE_VERSION python3 python, not-found)
Ross Lagerwall1b863eb2012-10-29 17:31:54 +00001039if test "$PYTHON" = not-found; then
Matthias Klosec4c48422012-10-21 23:05:35 +02001040 ASDLGEN="@echo python: $PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
1041else
1042 ASDLGEN="$PYTHON"
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001043fi
1044
1045
Neil Schemenauera42c8272001-03-31 00:01:55 +00001046case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +00001047bsdos*|hp*|HP*)
1048 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001049 if test -z "$INSTALL"
1050 then
1051 INSTALL="${srcdir}/install-sh -c"
1052 fi
1053esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001054AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001055AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001056
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001057# Not every filesystem supports hard links
1058AC_SUBST(LN)
1059if test -z "$LN" ; then
1060 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001061 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001062 *) LN=ln;;
1063 esac
1064fi
1065
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001066# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001067AC_SUBST(ABIFLAGS)
1068ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001069
Fred Drake9f715822001-07-11 06:27:00 +00001070# Check for --with-pydebug
1071AC_MSG_CHECKING(for --with-pydebug)
1072AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001073 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001074[
Fred Drake9f715822001-07-11 06:27:00 +00001075if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001076then
1077 AC_DEFINE(Py_DEBUG, 1,
1078 [Define if you want to build an interpreter with many run-time checks.])
1079 AC_MSG_RESULT(yes);
1080 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001081 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001082else AC_MSG_RESULT(no); Py_DEBUG='false'
1083fi],
1084[AC_MSG_RESULT(no)])
1085
Skip Montanarodecc6a42003-01-01 20:07:49 +00001086# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1087# merged with this chunk of code?
1088
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001089# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001090# ------------------------
1091# (The following bit of code is complicated enough - please keep things
1092# indented properly. Just pretend you're editing Python code. ;-)
1093
1094# There are two parallel sets of case statements below, one that checks to
1095# see if OPT was set and one that does BASECFLAGS setting based upon
1096# compiler and platform. BASECFLAGS tweaks need to be made even if the
1097# user set OPT.
1098
1099# tweak OPT based on compiler and platform, only if the user didn't set
1100# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001101AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001102if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001103then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001104 case $GCC in
1105 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001106 if test "$CC" != 'g++' ; then
1107 STRICT_PROTO="-Wstrict-prototypes"
1108 fi
Christian Heimes38053212007-12-14 01:24:44 +00001109 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1110 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1111 WRAP="-fwrapv"
1112 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001113
1114 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +01001115 case $CC in
1116 *clang*) WRAP="-fwrapv"
1117 ;;
1118 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001119
Skip Montanarodecc6a42003-01-01 20:07:49 +00001120 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001121 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001122 if test "$Py_DEBUG" = 'true' ; then
1123 # Optimization messes up debuggers, so turn it off for
1124 # debug builds.
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001125 if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
1126 OPT="-g -Og -Wall $STRICT_PROTO"
1127 else
1128 OPT="-g -O0 -Wall $STRICT_PROTO"
1129 fi
Fred Drake9f715822001-07-11 06:27:00 +00001130 else
Christian Heimes38053212007-12-14 01:24:44 +00001131 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001132 fi
1133 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001134 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001135 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001136 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001137 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001138 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001139 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1140 ;;
1141 esac
Fred Drake9f715822001-07-11 06:27:00 +00001142 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001143
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001144 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001145 OPT="-O"
1146 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001147 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001148fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001149
Skip Montanarodecc6a42003-01-01 20:07:49 +00001150AC_SUBST(BASECFLAGS)
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001151AC_SUBST(CFLAGS_NODIST)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001152
1153# The -arch flags for universal builds on OSX
1154UNIVERSAL_ARCH_FLAGS=
1155AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1156
Skip Montanarodecc6a42003-01-01 20:07:49 +00001157# tweak BASECFLAGS based on compiler and platform
1158case $GCC in
1159yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001160 # Python doesn't violate C99 aliasing rules, but older versions of
1161 # GCC produce warnings for legal Python code. Enable
1162 # -fno-strict-aliasing on versions of GCC that support but produce
1163 # warnings. See Issue3326
1164 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001165 ac_save_cc="$CC"
1166 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001167 save_CFLAGS="$CFLAGS"
1168 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001169 AC_COMPILE_IFELSE(
1170 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001171 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001172 ],[
1173 CC="$ac_save_cc -fstrict-aliasing"
1174 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1175 AC_COMPILE_IFELSE(
1176 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001177 AC_LANG_PROGRAM([[void f(int **x) {}]],
1178 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001179 ],[
1180 ac_cv_no_strict_aliasing=no
1181 ],[
1182 ac_cv_no_strict_aliasing=yes
1183 ])
1184 ],[
1185 ac_cv_no_strict_aliasing=no
1186 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001187 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001188 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001189 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1190 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001191 then
1192 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1193 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001194
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001195 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1196 ac_save_cc="$CC"
1197 CC="$CC -Wunused-result -Werror"
1198 save_CFLAGS="$CFLAGS"
1199 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1200 AC_COMPILE_IFELSE(
1201 [
1202 AC_LANG_PROGRAM([[]], [[]])
1203 ],[
1204 ac_cv_disable_unused_result_warning=yes
1205 ],[
1206 ac_cv_disable_unused_result_warning=no
1207 ]))
1208 CFLAGS="$save_CFLAGS"
1209 CC="$ac_save_cc"
1210 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
1211
1212 if test $ac_cv_disable_unused_result_warning = yes
1213 then
1214 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
1215 fi
1216
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001217 AC_MSG_CHECKING(for -Werror=declaration-after-statement)
1218 ac_save_cc="$CC"
1219 CC="$CC -Werror=declaration-after-statement"
1220 save_CFLAGS="$CFLAGS"
1221 AC_CACHE_VAL(ac_cv_declaration_after_statement_warning,
1222 AC_COMPILE_IFELSE(
1223 [
1224 AC_LANG_PROGRAM([[]], [[]])
1225 ],[
1226 ac_cv_declaration_after_statement_warning=yes
1227 ],[
1228 ac_cv_declaration_after_statement_warning=no
1229 ]))
1230 CFLAGS="$save_CFLAGS"
1231 CC="$ac_save_cc"
1232 AC_MSG_RESULT($ac_cv_declaration_after_statement_warning)
1233
1234 if test $ac_cv_declaration_after_statement_warning = yes
1235 then
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001236 CFLAGS_NODIST="$CFLAGS_NODIST -Werror=declaration-after-statement"
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001237 fi
1238
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001239 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1240 # support. Without this, treatment of subnormals doesn't follow
1241 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001242 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001243 alpha*)
1244 BASECFLAGS="$BASECFLAGS -mieee"
1245 ;;
1246 esac
1247
Skip Montanarodecc6a42003-01-01 20:07:49 +00001248 case $ac_sys_system in
1249 SCO_SV*)
1250 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1251 ;;
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001252
Ned Deily87adb6e2013-10-18 21:09:56 -07001253 # is there any other compiler on Darwin besides gcc?
1254 Darwin*)
1255 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1256 # used to be here, but non-Apple gcc doesn't accept them.
1257 if test "${CC}" = gcc
1258 then
1259 AC_MSG_CHECKING(which compiler should be used)
1260 case "${UNIVERSALSDK}" in
1261 */MacOSX10.4u.sdk)
1262 # Build using 10.4 SDK, force usage of gcc when the
1263 # compiler is gcc, otherwise the user will get very
1264 # confusing error messages when building on OSX 10.6
1265 CC=gcc-4.0
1266 CPP=cpp-4.0
1267 ;;
1268 esac
1269 AC_MSG_RESULT($CC)
1270 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001271
Ned Deily87adb6e2013-10-18 21:09:56 -07001272 if test "${enable_universalsdk}"
1273 then
1274 case "$UNIVERSAL_ARCHS" in
1275 32-bit)
1276 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1277 LIPO_32BIT_FLAGS=""
1278 ARCH_RUN_32BIT=""
1279 ;;
1280 64-bit)
1281 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1282 LIPO_32BIT_FLAGS=""
1283 ARCH_RUN_32BIT="true"
1284 ;;
1285 all)
1286 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1287 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1288 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1289 ;;
1290 intel)
1291 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1292 LIPO_32BIT_FLAGS="-extract i386"
1293 ARCH_RUN_32BIT="/usr/bin/arch -i386"
1294 ;;
1295 intel-32)
1296 UNIVERSAL_ARCH_FLAGS="-arch i386"
1297 LIPO_32BIT_FLAGS=""
1298 ARCH_RUN_32BIT=""
1299 ;;
1300 3-way)
1301 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1302 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1303 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1304 ;;
1305 *)
1306 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1307 ;;
1308 esac
Georg Brandlfcaf9102008-07-16 02:17:56 +00001309
Ned Deily87adb6e2013-10-18 21:09:56 -07001310 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1311 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1312 if test "${UNIVERSALSDK}" != "/"
1313 then
1314 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1315 fi
1316 fi
Georg Brandlfcaf9102008-07-16 02:17:56 +00001317
Ned Deily87adb6e2013-10-18 21:09:56 -07001318 # Calculate an appropriate deployment target for this build:
1319 # The deployment target value is used explicitly to enable certain
1320 # features are enabled (such as builtin libedit support for readline)
1321 # through the use of Apple's Availabiliy Macros and is used as a
1322 # component of the string returned by distutils.get_platform().
1323 #
1324 # Use the value from:
1325 # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
1326 # 2. the operating system version of the build machine if >= 10.6
1327 # 3. If running on OS X 10.3 through 10.5, use the legacy tests
1328 # below to pick either 10.3, 10.4, or 10.5 as the target.
1329 # 4. If we are running on OS X 10.2 or earlier, good luck!
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001330
Ned Deily87adb6e2013-10-18 21:09:56 -07001331 AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
Ned Deily36820b62014-06-25 13:44:22 -07001332 cur_target_major=`sw_vers -productVersion | \
1333 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1334 cur_target_minor=`sw_vers -productVersion | \
1335 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1336 cur_target="${cur_target_major}.${cur_target_minor}"
1337 if test ${cur_target_major} -eq 10 && \
1338 test ${cur_target_minor} -ge 3 && \
1339 test ${cur_target_minor} -le 5
Ned Deily87adb6e2013-10-18 21:09:56 -07001340 then
Ned Deily36820b62014-06-25 13:44:22 -07001341 # OS X 10.3 through 10.5
Ned Deily87adb6e2013-10-18 21:09:56 -07001342 cur_target=10.3
1343 if test ${enable_universalsdk}
1344 then
1345 case "$UNIVERSAL_ARCHS" in
1346 all|3-way|intel|64-bit)
1347 # These configurations were first supported in 10.5
1348 cur_target='10.5'
1349 ;;
1350 esac
1351 else
1352 if test `/usr/bin/arch` = "i386"
1353 then
1354 # 10.4 was the first release to support Intel archs
1355 cur_target="10.4"
1356 fi
1357 fi
1358 fi
1359 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001360
Ned Deily87adb6e2013-10-18 21:09:56 -07001361 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1362 # environment with a value that is the same as what we'll use
1363 # in the Makefile to ensure that we'll get the same compiler
1364 # environment during configure and build time.
1365 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1366 export MACOSX_DEPLOYMENT_TARGET
1367 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1368 AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001369
Ned Deily87adb6e2013-10-18 21:09:56 -07001370 # end of Darwin* tests
1371 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001372 esac
1373 ;;
1374
1375*)
1376 case $ac_sys_system in
1377 OpenUNIX*|UnixWare*)
1378 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1379 ;;
1380 SCO_SV*)
1381 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1382 ;;
1383 esac
1384 ;;
1385esac
1386
Fred Drakee1ceaa02001-12-04 20:55:47 +00001387if test "$Py_DEBUG" = 'true'; then
1388 :
1389else
1390 OPT="-DNDEBUG $OPT"
1391fi
1392
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001393if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001394then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001395 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001396fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001397
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001398# On some compilers, pthreads are available without further options
1399# (e.g. MacOS X). On some of these systems, the compiler will not
1400# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1401# So we have to see first whether pthreads are available without
1402# options before we can check whether -Kpthread improves anything.
1403AC_MSG_CHECKING(whether pthreads are available without options)
1404AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001405[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001406#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001407#include <pthread.h>
1408
1409void* routine(void* p){return NULL;}
1410
1411int main(){
1412 pthread_t p;
1413 if(pthread_create(&p,NULL,routine,NULL)!=0)
1414 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001415 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001416 return 0;
1417}
Matthias Kloseb159a552010-04-25 21:00:44 +00001418]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001419 ac_cv_pthread_is_default=yes
1420 ac_cv_kthread=no
1421 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001422],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001423])
1424AC_MSG_RESULT($ac_cv_pthread_is_default)
1425
1426
1427if test $ac_cv_pthread_is_default = yes
1428then
1429 ac_cv_kpthread=no
1430else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001431# -Kpthread, if available, provides the right #defines
1432# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001433# Some compilers won't report that they do not support -Kpthread,
1434# so we need to run a program to see whether it really made the
1435# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001436AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1437AC_CACHE_VAL(ac_cv_kpthread,
1438[ac_save_cc="$CC"
1439CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001440AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001441#include <stdio.h>
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001442#include <pthread.h>
1443
1444void* routine(void* p){return NULL;}
1445
1446int main(){
1447 pthread_t p;
1448 if(pthread_create(&p,NULL,routine,NULL)!=0)
1449 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001450 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001451 return 0;
1452}
Matthias Kloseb159a552010-04-25 21:00:44 +00001453]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001454CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001455AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001456fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001457
Skip Montanarod8d39a02003-07-10 20:44:10 +00001458if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001459then
1460# -Kthread, if available, provides the right #defines
1461# and linker options to make pthread_create available
1462# Some compilers won't report that they do not support -Kthread,
1463# so we need to run a program to see whether it really made the
1464# function available.
1465AC_MSG_CHECKING(whether $CC accepts -Kthread)
1466AC_CACHE_VAL(ac_cv_kthread,
1467[ac_save_cc="$CC"
1468CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001469AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001470#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001471#include <pthread.h>
1472
1473void* routine(void* p){return NULL;}
1474
1475int main(){
1476 pthread_t p;
1477 if(pthread_create(&p,NULL,routine,NULL)!=0)
1478 return 1;
1479 (void)pthread_detach(p);
1480 return 0;
1481}
Matthias Kloseb159a552010-04-25 21:00:44 +00001482]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001483CC="$ac_save_cc"])
1484AC_MSG_RESULT($ac_cv_kthread)
1485fi
1486
Skip Montanarod8d39a02003-07-10 20:44:10 +00001487if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001488then
1489# -pthread, if available, provides the right #defines
1490# and linker options to make pthread_create available
1491# Some compilers won't report that they do not support -pthread,
1492# so we need to run a program to see whether it really made the
1493# function available.
1494AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.org7981f202013-01-25 15:33:25 +01001495AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001496[ac_save_cc="$CC"
1497CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001498AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001499#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001500#include <pthread.h>
1501
1502void* routine(void* p){return NULL;}
1503
1504int main(){
1505 pthread_t p;
1506 if(pthread_create(&p,NULL,routine,NULL)!=0)
1507 return 1;
1508 (void)pthread_detach(p);
1509 return 0;
1510}
Matthias Kloseb159a552010-04-25 21:00:44 +00001511]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001512CC="$ac_save_cc"])
1513AC_MSG_RESULT($ac_cv_pthread)
1514fi
1515
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001516# If we have set a CC compiler flag for thread support then
1517# check if it works for CXX, too.
1518ac_cv_cxx_thread=no
1519if test ! -z "$CXX"
1520then
1521AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1522ac_save_cxx="$CXX"
1523
1524if test "$ac_cv_kpthread" = "yes"
1525then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001526 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001527 ac_cv_cxx_thread=yes
1528elif test "$ac_cv_kthread" = "yes"
1529then
1530 CXX="$CXX -Kthread"
1531 ac_cv_cxx_thread=yes
1532elif test "$ac_cv_pthread" = "yes"
1533then
1534 CXX="$CXX -pthread"
1535 ac_cv_cxx_thread=yes
1536fi
1537
1538if test $ac_cv_cxx_thread = yes
1539then
1540 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1541 $CXX -c conftest.$ac_ext 2>&5
1542 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1543 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1544 then
1545 ac_cv_cxx_thread=yes
1546 else
1547 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001548 fi
1549 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001550fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001551AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001552fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001553CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001554
Fred Drakece81d592000-07-09 14:39:29 +00001555dnl # check for ANSI or K&R ("traditional") preprocessor
1556dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001557dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001558dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1559dnl int foo;
1560dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001561dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001562dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001563
Guido van Rossum627b2d71993-12-24 10:39:16 +00001564# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001565AC_HEADER_STDC
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001566AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001567fcntl.h grp.h \
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001568ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
Benjamin Peterson94b580d2011-08-02 17:30:04 -05001569sched.h shadow.h signal.h stdint.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001570unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001571poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001572sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001573sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001574sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001575sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001576sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001577libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes985ecdc2013-11-20 11:46:18 +01001578bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h endian.h \
1579sys/endian.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001580AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001581AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001582
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001583# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
1584AC_CHECK_HEADERS([net/if.h], [], [],
1585[#include <stdio.h>
1586#ifdef STDC_HEADERS
1587# include <stdlib.h>
1588# include <stddef.h>
1589#else
1590# ifdef HAVE_STDLIB_H
1591# include <stdlib.h>
1592# endif
1593#endif
1594#ifdef HAVE_SYS_SOCKET_H
1595# include <sys/socket.h>
1596#endif
1597])
1598
Martin v. Löwis11017b12006-01-14 18:12:57 +00001599# On Linux, netlink.h requires asm/types.h
1600AC_CHECK_HEADERS(linux/netlink.h,,,[
1601#ifdef HAVE_ASM_TYPES_H
1602#include <asm/types.h>
1603#endif
1604#ifdef HAVE_SYS_SOCKET_H
1605#include <sys/socket.h>
1606#endif
1607])
1608
Charles-François Natali47413c12011-10-06 19:47:44 +02001609# On Linux, can.h and can/raw.h require sys/socket.h
Charles-François Natali773e42d2013-02-05 19:42:01 +01001610AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
Charles-François Natali47413c12011-10-06 19:47:44 +02001611#ifdef HAVE_SYS_SOCKET_H
1612#include <sys/socket.h>
1613#endif
1614])
1615
Guido van Rossum627b2d71993-12-24 10:39:16 +00001616# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001617was_it_defined=no
1618AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001619AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1620 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1621])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001622AC_MSG_RESULT($was_it_defined)
1623
Neal Norwitz11690112002-07-30 01:08:28 +00001624AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001625AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1626#if defined(MAJOR_IN_MKDEV)
1627#include <sys/mkdev.h>
1628#elif defined(MAJOR_IN_SYSMACROS)
1629#include <sys/sysmacros.h>
1630#else
1631#include <sys/types.h>
1632#endif
1633]], [[
1634 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001635],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001636AC_MSG_RESULT($ac_cv_has_makedev)
1637if test "$ac_cv_has_makedev" = "yes"; then
1638 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1639fi
1640
Christian Heimes985ecdc2013-11-20 11:46:18 +01001641# byte swapping
1642AC_MSG_CHECKING(for le64toh)
1643AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1644#ifdef HAVE_ENDIAN_H
1645#include <endian.h>
1646#elif defined(HAVE_SYS_ENDIAN_H)
1647#include <sys/endian.h>
1648#endif
1649]], [[
1650 le64toh(1) ]])
1651],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
1652AC_MSG_RESULT($ac_cv_has_le64toh)
1653if test "$ac_cv_has_le64toh" = "yes"; then
1654 AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
1655fi
1656
Martin v. Löwis399a6892002-10-04 10:22:02 +00001657# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1658# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1659# defined, but the compiler does not support pragma redefine_extname,
1660# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1661# structures (such as rlimit64) without declaring them. As a
1662# work-around, disable LFS on such configurations
1663
1664use_lfs=yes
1665AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001666AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001667#define _LARGEFILE_SOURCE 1
1668#define _FILE_OFFSET_BITS 64
1669#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001670]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001671AC_MSG_RESULT($sol_lfs_bug)
1672if test "$sol_lfs_bug" = "yes"; then
1673 use_lfs=no
1674fi
1675
1676if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001677# Two defines needed to enable largefile support on various platforms
1678# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001679case $ac_sys_system/$ac_sys_release in
1680AIX*)
1681 AC_DEFINE(_LARGE_FILES, 1,
1682 [This must be defined on AIX systems to enable large file support.])
1683 ;;
1684esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001685AC_DEFINE(_LARGEFILE_SOURCE, 1,
1686[This must be defined on some systems to enable large file support.])
1687AC_DEFINE(_FILE_OFFSET_BITS, 64,
1688[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001689fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001690
Guido van Rossum300fda71996-08-19 21:58:16 +00001691# Add some code to confdefs.h so that the test for off_t works on SCO
1692cat >> confdefs.h <<\EOF
1693#if defined(SCO_DS)
1694#undef _OFF_T
1695#endif
1696EOF
1697
Guido van Rossumef2255b2000-03-10 22:30:29 +00001698# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001699AC_TYPE_MODE_T
1700AC_TYPE_OFF_T
1701AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001702AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001703AC_TYPE_SIZE_T
1704AC_TYPE_UID_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001705
1706# There are two separate checks for each of the exact-width integer types we
1707# need. First we check whether the type is available using the usual
1708# AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
1709# and <stdint.h> where available). We then also use the special type checks of
1710# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
1711# directly, #define's uint32_t to be a suitable type.
1712
1713AC_CHECK_TYPE(uint32_t,
1714 AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001715AC_TYPE_UINT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001716
1717AC_CHECK_TYPE(uint64_t,
1718 AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001719AC_TYPE_UINT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001720
1721AC_CHECK_TYPE(int32_t,
1722 AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001723AC_TYPE_INT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001724
1725AC_CHECK_TYPE(int64_t,
1726 AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001727AC_TYPE_INT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001728
Christian Heimes400adb02008-02-01 08:12:03 +00001729AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001730 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01001731AC_CHECK_TYPE(__uint128_t,
1732 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001733
Guido van Rossumef2255b2000-03-10 22:30:29 +00001734# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001735# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001736AC_CHECK_SIZEOF(int, 4)
1737AC_CHECK_SIZEOF(long, 4)
1738AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001739AC_CHECK_SIZEOF(short, 2)
1740AC_CHECK_SIZEOF(float, 4)
1741AC_CHECK_SIZEOF(double, 8)
1742AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001743AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001744AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001745
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001746AC_MSG_CHECKING(for long long support)
1747have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001748AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001749 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1750 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001751],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001752AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001753if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001754AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001755fi
1756
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001757AC_MSG_CHECKING(for long double support)
1758have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001759AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001760 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1761 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001762],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001763AC_MSG_RESULT($have_long_double)
1764if test "$have_long_double" = yes ; then
1765AC_CHECK_SIZEOF(long double, 16)
1766fi
1767
1768
Thomas Woutersb2137042007-02-01 18:02:27 +00001769AC_MSG_CHECKING(for _Bool support)
1770have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001771AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001772 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1773 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001774],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001775AC_MSG_RESULT($have_c99_bool)
1776if test "$have_c99_bool" = yes ; then
1777AC_CHECK_SIZEOF(_Bool, 1)
1778fi
1779
Thomas Wouters89f507f2006-12-13 04:49:30 +00001780AC_CHECK_TYPES(uintptr_t,
1781 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1782 [], [#ifdef HAVE_STDINT_H
1783 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001784 #endif
1785 #ifdef HAVE_INTTYPES_H
1786 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001787 #endif])
1788
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001789AC_CHECK_SIZEOF(off_t, [], [
1790#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001791#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001792#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001793])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001794
1795AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001796if test "$have_long_long" = yes
1797then
1798if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001799 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001800 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1801 [Defined to enable large file support when an off_t is bigger than a long
1802 and long long is available and at least as big as an off_t. You may need
1803 to add some flags for configuration and compilation to enable this mode.
1804 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001805 AC_MSG_RESULT(yes)
1806else
1807 AC_MSG_RESULT(no)
1808fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001809else
1810 AC_MSG_RESULT(no)
1811fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001812
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001813AC_CHECK_SIZEOF(time_t, [], [
1814#ifdef HAVE_SYS_TYPES_H
1815#include <sys/types.h>
1816#endif
1817#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001818#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001819#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001820])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001821
Trent Mick635f6fb2000-08-23 21:33:05 +00001822# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001823ac_save_cc="$CC"
1824if test "$ac_cv_kpthread" = "yes"
1825then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001826elif test "$ac_cv_kthread" = "yes"
1827then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001828elif test "$ac_cv_pthread" = "yes"
1829then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001830fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001831
Trent Mick635f6fb2000-08-23 21:33:05 +00001832AC_MSG_CHECKING(for pthread_t)
1833have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001834AC_COMPILE_IFELSE([
1835 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1836],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001837AC_MSG_RESULT($have_pthread_t)
1838if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001839 AC_CHECK_SIZEOF(pthread_t, [], [
1840#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001841#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001842#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001843 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001844fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001845CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001846
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001847AC_SUBST(OTHER_LIBTOOL_OPT)
1848case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001849 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001850 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1851 ;;
1852 Darwin/*)
1853 OTHER_LIBTOOL_OPT=""
1854 ;;
1855esac
1856
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001857
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001858AC_SUBST(LIBTOOL_CRUFT)
1859case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001860 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001861 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1862 if test "${enable_universalsdk}"; then
1863 :
1864 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001865 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001866 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001867 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001868 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001869 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001870 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001871 if test ${gcc_version} '<' 4.0
1872 then
1873 LIBTOOL_CRUFT="-lcc_dynamic"
1874 else
1875 LIBTOOL_CRUFT=""
1876 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001877 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001878 #include <unistd.h>
1879 int main(int argc, char*argv[])
1880 {
1881 if (sizeof(long) == 4) {
1882 return 0;
1883 } else {
1884 return 1;
1885 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001886 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001887 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001888
1889 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001890 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001891 i386)
1892 MACOSX_DEFAULT_ARCH="i386"
1893 ;;
1894 ppc)
1895 MACOSX_DEFAULT_ARCH="ppc"
1896 ;;
1897 *)
1898 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1899 ;;
1900 esac
1901 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001902 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001903 i386)
1904 MACOSX_DEFAULT_ARCH="x86_64"
1905 ;;
1906 ppc)
1907 MACOSX_DEFAULT_ARCH="ppc64"
1908 ;;
1909 *)
1910 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1911 ;;
1912 esac
1913
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001914 fi
1915
1916 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001917 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001918 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001919esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001920AC_MSG_CHECKING(for --enable-framework)
1921if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001922then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001923 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001924 # -F. is needed to allow linking to the framework while
1925 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001926 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1927 [Define if you want to produce an OpenStep/Rhapsody framework
1928 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001929 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001930 if test $enable_shared = "yes"
1931 then
1932 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1933 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001934else
1935 AC_MSG_RESULT(no)
1936fi
1937
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001938AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001939case $ac_sys_system/$ac_sys_release in
1940 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001941 AC_DEFINE(WITH_DYLD, 1,
1942 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1943 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1944 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001945 AC_MSG_RESULT(always on for Darwin)
1946 ;;
1947 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001948 AC_MSG_RESULT(no)
1949 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001950esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001951
Guido van Rossumac405f61994-09-12 10:56:06 +00001952# Set info about shared libraries.
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07001953AC_SUBST(SHLIB_SUFFIX)
Guido van Rossumac405f61994-09-12 10:56:06 +00001954AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001955AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001956AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001957AC_SUBST(CCSHARED)
1958AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00001959
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07001960# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
1961# -- usually .so, .sl on HP-UX, .dll on Cygwin
1962AC_MSG_CHECKING(the extension of shared libraries)
1963if test -z "$SHLIB_SUFFIX"; then
1964 case $ac_sys_system in
1965 hp*|HP*)
1966 case `uname -m` in
1967 ia64) SHLIB_SUFFIX=.so;;
1968 *) SHLIB_SUFFIX=.sl;;
1969 esac
1970 ;;
1971 CYGWIN*) SHLIB_SUFFIX=.dll;;
1972 *) SHLIB_SUFFIX=.so;;
1973 esac
1974fi
1975AC_MSG_RESULT($SHLIB_SUFFIX)
1976
Guido van Rossumac405f61994-09-12 10:56:06 +00001977# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001978# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001979# (Shared libraries in this instance are shared modules to be loaded into
1980# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001981AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001982if test -z "$LDSHARED"
1983then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001984 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001985 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00001986 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001987 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001988 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001989 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001990 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001991 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001992 if test "$GCC" = "yes" ; then
1993 LDSHARED='$(CC) -shared'
1994 LDCXXSHARED='$(CXX) -shared'
1995 else
1996 LDSHARED='$(CC) -G'
1997 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00001998 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001999 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002000 if test "$GCC" = "yes" ; then
2001 LDSHARED='$(CC) -shared'
2002 LDCXXSHARED='$(CXX) -shared'
2003 else
2004 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002005 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00002006 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002007 LDSHARED='$(CC) -bundle'
2008 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002009 if test "$enable_framework" ; then
2010 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002011 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2012 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002013 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002014 else
2015 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002016 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002017 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002018 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002019 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002020 LDSHARED='$(CC) -bundle'
2021 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002022 if test "$enable_framework" ; then
2023 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002024 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2025 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002026 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002027 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002028 # No framework, use the Python app as bundle-loader
2029 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002030 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002031 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002032 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002033 Darwin/*)
2034 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2035 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00002036
Ned Deily36820b62014-06-25 13:44:22 -07002037 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2038 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2039 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2040 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2041 if test ${dep_target_major} -eq 10 && \
2042 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002043 then
Ned Deily36820b62014-06-25 13:44:22 -07002044 # building for OS X 10.0 through 10.2
Antoine Pitroud4958c22010-10-13 17:01:10 +00002045 LDSHARED='$(CC) -bundle'
2046 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002047 if test "$enable_framework" ; then
2048 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002049 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2050 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002051 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002052 else
2053 # No framework, use the Python app as bundle-loader
2054 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2055 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002056 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002057 fi
Ned Deily36820b62014-06-25 13:44:22 -07002058 else
2059 # building for OS X 10.3 and later
2060 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2061 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2062 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002063 fi
2064 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002065 Linux*|GNU*|QNX*)
2066 LDSHARED='$(CC) -shared'
2067 LDCXXSHARED='$(CXX) -shared';;
2068 BSD/OS*/4*)
2069 LDSHARED="gcc -shared"
2070 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002071 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002072 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002073 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002074 LDSHARED='$(CC) -shared'
2075 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002076 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00002077 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002078 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002079 OpenBSD*)
2080 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2081 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002082 LDSHARED='$(CC) -shared $(CCSHARED)'
2083 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002084 else
2085 case `uname -r` in
2086 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2087 LDSHARED="ld -Bshareable ${LDFLAGS}"
2088 ;;
2089 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002090 LDSHARED='$(CC) -shared $(CCSHARED)'
2091 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002092 ;;
2093 esac
2094 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002095 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00002096 LDSHARED='$(CC) -shared'
2097 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002098 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002099 if test "$GCC" = "yes" ; then
2100 LDSHARED='$(CC) -shared'
2101 LDCXXSHARED='$(CXX) -shared'
2102 else
2103 LDSHARED='$(CC) -G'
2104 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002105 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002106 SCO_SV*)
2107 LDSHARED='$(CC) -Wl,-G,-Bexport'
2108 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2109 CYGWIN*)
2110 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2111 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002112 *) LDSHARED="ld";;
2113 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002114fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002115AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002116LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002117BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002118# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002119# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002120AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002121if test -z "$CCSHARED"
2122then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002123 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002124 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002125 then CCSHARED="-fPIC";
2126 elif test `uname -p` = sparc;
2127 then CCSHARED="-xcode=pic32";
2128 else CCSHARED="-Kpic";
2129 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002130 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002131 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002132 else CCSHARED="+z";
2133 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002134 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002135 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002136 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002137 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002138 if test "$GCC" = "yes"
2139 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002140 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002141 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002142 SCO_SV*)
2143 if test "$GCC" = "yes"
2144 then CCSHARED="-fPIC"
2145 else CCSHARED="-Kpic -belf"
2146 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002147 IRIX*/6*) case $CC in
2148 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002149 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002150 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002151 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002152fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002153AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002154# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002155# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002156AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002157if test -z "$LINKFORSHARED"
2158then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002159 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002160 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002161 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002162 LINKFORSHARED="-Wl,-E -Wl,+s";;
2163# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002164 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002165 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002166 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002167 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002168 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Łukasz Langa335ab5b2013-05-30 20:58:53 +02002169
2170 # Issue #18075: the default maximum stack size (8MBytes) is too
2171 # small for the default recursion limit. Increase the stack size
2172 # to ensure that tests don't crash
2173 LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
2174
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002175 if test "$enable_framework"
2176 then
Jack Jansenda49e192005-01-07 13:08:22 +00002177 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002178 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002179 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002180 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002181 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002182 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002183 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002184 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2185 then
2186 LINKFORSHARED="-Wl,--export-dynamic"
2187 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002188 SunOS/5*) case $CC in
2189 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002190 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002191 then
2192 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002193 fi;;
2194 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002195 CYGWIN*)
2196 if test $enable_shared = "no"
2197 then
2198 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2199 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002200 QNX*)
2201 # -Wl,-E causes the symbols to be added to the dynamic
2202 # symbol table so that they can be found when a module
2203 # is loaded. -N 2048K causes the stack size to be set
2204 # to 2048 kilobytes so that the stack doesn't overflow
2205 # when running test_compile.py.
2206 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002207 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002208fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002209AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002210
Georg Brandl93de2162008-07-16 02:21:06 +00002211
Neil Schemenauer61c51152001-01-26 16:18:16 +00002212AC_SUBST(CFLAGSFORSHARED)
2213AC_MSG_CHECKING(CFLAGSFORSHARED)
2214if test ! "$LIBRARY" = "$LDLIBRARY"
2215then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002216 case $ac_sys_system in
2217 CYGWIN*)
2218 # Cygwin needs CCSHARED when building extension DLLs
2219 # but not when building the interpreter DLL.
2220 CFLAGSFORSHARED='';;
2221 *)
2222 CFLAGSFORSHARED='$(CCSHARED)'
2223 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002224fi
2225AC_MSG_RESULT($CFLAGSFORSHARED)
2226
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002227# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2228# library (with --enable-shared).
2229# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002230# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2231# if it is not required, since it creates a dependency of the shared library
2232# to LIBS. This, in turn, means that applications linking the shared libpython
2233# don't need to link LIBS explicitly. The default should be only changed
2234# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002235AC_SUBST(SHLIBS)
2236AC_MSG_CHECKING(SHLIBS)
2237case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002238 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002239 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002240esac
2241AC_MSG_RESULT($SHLIBS)
2242
2243
Guido van Rossum627b2d71993-12-24 10:39:16 +00002244# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002245AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002246AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2247AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Victor Stinnerfcfed192015-01-06 13:54:58 +01002248AC_CHECK_LIB(crypto, RAND_egd,
2249 AC_DEFINE(HAVE_RAND_EGD, 1,
2250 [Define if the libcrypto has RAND_egd]))
Martin v. Löwis519adae2003-09-20 10:47:47 +00002251
Georg Brandleee31162008-12-07 15:15:22 +00002252# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002253if test "$with_threads" = "yes" -o -z "$with_threads"; then
2254 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2255 # posix4 on Solaris 2.6
2256 # pthread (first!) on Linux
2257fi
2258
Martin v. Löwis19d17342003-06-14 21:03:05 +00002259# check if we need libintl for locale functions
2260AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002261 [AC_DEFINE(WITH_LIBINTL, 1,
2262 [Define to 1 if libintl is needed for locale functions.])
2263 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002264
2265# checks for system dependent C++ extensions support
2266case "$ac_sys_system" in
2267 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002268 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002269 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002270 [[loadAndInit("", 0, "")]])
2271 ],[
2272 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002273 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2274 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002275 AC_MSG_RESULT(yes)
2276 ],[
2277 AC_MSG_RESULT(no)
2278 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002279 *) ;;
2280esac
2281
Christian Heimes985ecdc2013-11-20 11:46:18 +01002282# check for systems that require aligned memory access
2283AC_MSG_CHECKING(aligned memory access is required)
2284AC_TRY_RUN([
2285int main()
2286{
2287 char s[16];
2288 int i, *p1, *p2;
2289 for (i=0; i < 16; i++)
2290 s[i] = i;
2291 p1 = (int*)(s+1);
2292 p2 = (int*)(s+2);
2293 if (*p1 == *p2)
2294 return 1;
2295 return 0;
2296}
2297 ],
2298 [aligned_required=no],
2299 [aligned_required=yes],
2300 [aligned_required=yes])
2301
2302if test "$aligned_required" = yes ; then
2303 AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
2304 [Define if aligned memory access is required])
2305fi
2306AC_MSG_RESULT($aligned_required)
2307
2308
2309# str, bytes and memoryview hash algorithm
2310AH_TEMPLATE(Py_HASH_ALGORITHM,
2311 [Define hash algorithm for str, bytes and memoryview.
2312 SipHash24: 1, FNV: 2, externally defined: 0])
2313
2314AC_MSG_CHECKING(for --with-hash-algorithm)
2315dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
2316AC_ARG_WITH(hash_algorithm,
2317 AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
2318 [select hash algorithm]),
2319[
2320AC_MSG_RESULT($withval)
2321case "$withval" in
2322 siphash24)
2323 AC_DEFINE(Py_HASH_ALGORITHM, 1)
2324 ;;
2325 fnv)
2326 AC_DEFINE(Py_HASH_ALGORITHM, 2)
2327 ;;
2328 *)
2329 AC_MSG_ERROR([unknown hash algorithm '$withval'])
2330 ;;
2331esac
2332],
2333[AC_MSG_RESULT(default)])
2334
Guido van Rossum70c7f481998-03-26 18:44:10 +00002335# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002336AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002337AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002338
Guido van Rossumc5a39031996-07-31 17:35:03 +00002339AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002340AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002341 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002342[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002343AC_MSG_RESULT($withval)
2344LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002345],
2346[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002347
Benjamin Peterson0f3cde12014-12-15 00:00:23 -05002348PKG_PROG_PKG_CONFIG
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002349
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002350# Check for use of the system expat library
2351AC_MSG_CHECKING(for --with-system-expat)
2352AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002353 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2354 [],
2355 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002356
2357AC_MSG_RESULT($with_system_expat)
2358
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002359# Check for use of the system libffi library
2360AC_MSG_CHECKING(for --with-system-ffi)
2361AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002362 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2363 [],
2364 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002365
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002366if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002367 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2368else
2369 LIBFFI_INCLUDEDIR=""
2370fi
2371AC_SUBST(LIBFFI_INCLUDEDIR)
2372
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002373AC_MSG_RESULT($with_system_ffi)
2374
Stefan Krah60187b52012-03-23 19:06:27 +01002375# Check for use of the system libmpdec library
2376AC_MSG_CHECKING(for --with-system-libmpdec)
2377AC_ARG_WITH(system_libmpdec,
2378 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2379 [],
2380 [with_system_libmpdec="no"])
2381
2382AC_MSG_RESULT($with_system_libmpdec)
2383
Benjamin Peterson076ed002010-10-31 17:11:02 +00002384# Check for support for loadable sqlite extensions
2385AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2386AC_ARG_ENABLE(loadable-sqlite-extensions,
2387 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2388 [],
2389 [enable_loadable_sqlite_extensions="no"])
2390
2391AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2392
Ned Deilyd819b932013-09-06 01:07:05 -07002393# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2394AC_SUBST(TCLTK_INCLUDES)
2395AC_SUBST(TCLTK_LIBS)
2396AC_MSG_CHECKING(for --with-tcltk-includes)
2397AC_ARG_WITH(tcltk-includes,
2398 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2399 [],
2400 [with_tcltk_includes="default"])
2401AC_MSG_RESULT($with_tcltk_includes)
2402AC_MSG_CHECKING(for --with-tcltk-libs)
2403AC_ARG_WITH(tcltk-libs,
2404 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2405 [],
2406 [with_tcltk_libs="default"])
2407AC_MSG_RESULT($with_tcltk_libs)
2408if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
2409then
2410 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
2411 then
2412 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
2413 fi
2414 TCLTK_INCLUDES=""
2415 TCLTK_LIBS=""
2416else
2417 TCLTK_INCLUDES="$with_tcltk_includes"
2418 TCLTK_LIBS="$with_tcltk_libs"
2419fi
2420
Matthias Klose55708cc2009-04-30 08:06:49 +00002421# Check for --with-dbmliborder
2422AC_MSG_CHECKING(for --with-dbmliborder)
2423AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002424 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 +00002425[
2426if test x$with_dbmliborder = xyes
2427then
2428AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2429else
2430 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2431 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2432 then
2433 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2434 fi
2435 done
2436fi])
2437AC_MSG_RESULT($with_dbmliborder)
2438
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002439# Determine if signalmodule should be used.
2440AC_SUBST(USE_SIGNAL_MODULE)
2441AC_SUBST(SIGNAL_OBJS)
2442AC_MSG_CHECKING(for --with-signal-module)
2443AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002444 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002445
2446if test -z "$with_signal_module"
2447then with_signal_module="yes"
2448fi
2449AC_MSG_RESULT($with_signal_module)
2450
2451if test "${with_signal_module}" = "yes"; then
2452 USE_SIGNAL_MODULE=""
2453 SIGNAL_OBJS=""
2454else
2455 USE_SIGNAL_MODULE="#"
2456 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2457fi
2458
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002459# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002460AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002461USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002462
Guido van Rossum54d93d41997-01-22 20:51:58 +00002463AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002464
Martin v. Löwis11437992002-04-12 09:54:03 +00002465# Templates for things AC_DEFINEd more than once.
2466# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002467AH_TEMPLATE(_REENTRANT,
2468 [Define to force use of thread-safe errno, h_errno, and other functions])
2469AH_TEMPLATE(WITH_THREAD,
2470 [Define if you want to compile in rudimentary thread support])
2471
Guido van Rossum54d93d41997-01-22 20:51:58 +00002472AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002473dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002474AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002475 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002476
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002477# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002478dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002479AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002480 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002481 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002482
2483if test -z "$with_threads"
2484then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002485fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002486AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002487
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002488AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002489if test "$with_threads" = "no"
2490then
2491 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002492elif test "$ac_cv_pthread_is_default" = yes
2493then
2494 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002495 # Defining _REENTRANT on system with POSIX threads should not hurt.
2496 AC_DEFINE(_REENTRANT)
2497 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002498 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002499elif test "$ac_cv_kpthread" = "yes"
2500then
2501 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002502 if test "$ac_cv_cxx_thread" = "yes"; then
2503 CXX="$CXX -Kpthread"
2504 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002505 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002506 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002507 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002508elif test "$ac_cv_kthread" = "yes"
2509then
2510 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002511 if test "$ac_cv_cxx_thread" = "yes"; then
2512 CXX="$CXX -Kthread"
2513 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002514 AC_DEFINE(WITH_THREAD)
2515 posix_threads=yes
2516 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002517elif test "$ac_cv_pthread" = "yes"
2518then
2519 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002520 if test "$ac_cv_cxx_thread" = "yes"; then
2521 CXX="$CXX -pthread"
2522 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002523 AC_DEFINE(WITH_THREAD)
2524 posix_threads=yes
2525 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002526else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002527 if test ! -z "$with_threads" -a -d "$with_threads"
2528 then LDFLAGS="$LDFLAGS -L$with_threads"
2529 fi
2530 if test ! -z "$withval" -a -d "$withval"
2531 then LDFLAGS="$LDFLAGS -L$withval"
2532 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002533
2534 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002535 # define _POSIX_THREADS in unistd.h. Some apparently don't
2536 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002537 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2538 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002539 [
2540#include <unistd.h>
2541#ifdef _POSIX_THREADS
2542yes
2543#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002544 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2545 AC_MSG_RESULT($unistd_defines_pthreads)
2546
Martin v. Löwis130fb172001-07-19 11:00:41 +00002547 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002548 # Just looking for pthread_create in libpthread is not enough:
2549 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2550 # So we really have to include pthread.h, and then link.
2551 _libs=$LIBS
2552 LIBS="$LIBS -lpthread"
2553 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krah7dba5942012-11-22 22:49:11 +01002554 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2555#include <stdio.h>
2556#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002557
Matthias Kloseb159a552010-04-25 21:00:44 +00002558void * start_routine (void *arg) { exit (0); }]], [[
2559pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002560 AC_MSG_RESULT(yes)
2561 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002562 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002563 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002564 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002565 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002566 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002567 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002568 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002569 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002570 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002571 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002572 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002573 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002574 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002575 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002576 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002577 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002578 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002579 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002580 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002581 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002582 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002583 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002584 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02002585 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002586
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002587 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2588 LIBS="$LIBS -lmpc"
2589 THREADOBJ="Python/thread.o"
2590 USE_THREAD_MODULE=""])
2591
2592 if test "$posix_threads" != "yes"; then
2593 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2594 LIBS="$LIBS -lthread"
2595 THREADOBJ="Python/thread.o"
2596 USE_THREAD_MODULE=""])
2597 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002598fi
2599
2600if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002601 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002602 AC_DEFINE(_POSIX_THREADS, 1,
2603 [Define if you have POSIX threads,
2604 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002605 fi
2606
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002607 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2608 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002609 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002610 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002611 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002612 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002613 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002614 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002615 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002616 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002617 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002618 esac
2619
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002620 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2621 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krah7dba5942012-11-22 22:49:11 +01002622 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
2623 #include <stdio.h>
2624 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002625 void *foo(void *parm) {
2626 return NULL;
2627 }
2628 main() {
2629 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002630 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002631 if (pthread_attr_init(&attr)) exit(-1);
2632 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002633 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002634 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002635 }]])],
2636 [ac_cv_pthread_system_supported=yes],
2637 [ac_cv_pthread_system_supported=no],
2638 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002639 ])
2640 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2641 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002642 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002643 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002644 AC_CHECK_FUNCS(pthread_sigmask,
2645 [case $ac_sys_system in
2646 CYGWIN*)
2647 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2648 [Define if pthread_sigmask() does not work on your system.])
2649 ;;
2650 esac])
Christian Heimesf77b4b22013-08-21 13:26:05 +02002651 AC_CHECK_FUNCS(pthread_atfork)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002652fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002653
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002654
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002655# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002656AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002657AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002658AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002659[ --enable-ipv6 Enable ipv6 (with ipv4) support
2660 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002661[ case "$enableval" in
2662 no)
2663 AC_MSG_RESULT(no)
2664 ipv6=no
2665 ;;
2666 *) AC_MSG_RESULT(yes)
2667 AC_DEFINE(ENABLE_IPV6)
2668 ipv6=yes
2669 ;;
2670 esac ],
2671
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002672[
2673dnl the check does not work on cross compilation case...
Charles-François Natalif6fd7942013-01-08 19:49:42 +01002674 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002675#include <sys/types.h>
Charles-François Natalif6fd7942013-01-08 19:49:42 +01002676#include <sys/socket.h>]],
2677[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002678 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002679 ipv6=yes
2680],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002681 AC_MSG_RESULT(no)
2682 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002683])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002684
2685if test "$ipv6" = "yes"; then
2686 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002687 AC_COMPILE_IFELSE([
2688 AC_LANG_PROGRAM([[#include <sys/types.h>
2689#include <netinet/in.h>]],
2690 [[struct sockaddr_in6 x;
2691 x.sin6_scope_id;]])
2692 ],[
2693 AC_MSG_RESULT(yes)
2694 ipv6=yes
2695 ],[
2696 AC_MSG_RESULT(no, IPv6 disabled)
2697 ipv6=no
2698 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002699fi
2700
2701if test "$ipv6" = "yes"; then
2702 AC_DEFINE(ENABLE_IPV6)
2703fi
2704])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002705
2706ipv6type=unknown
2707ipv6lib=none
2708ipv6trylibc=no
2709
2710if test "$ipv6" = "yes"; then
2711 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002712 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2713 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002714 case $i in
2715 inria)
2716 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002717 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002718#include <netinet/in.h>
2719#ifdef IPV6_INRIA_VERSION
2720yes
2721#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002722 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002723 ;;
2724 kame)
2725 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002726 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002727#include <netinet/in.h>
2728#ifdef __KAME__
2729yes
2730#endif],
2731 [ipv6type=$i;
2732 ipv6lib=inet6
2733 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002734 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002735 ;;
2736 linux-glibc)
2737 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002738 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002739#include <features.h>
2740#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2741yes
2742#endif],
2743 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002744 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002745 ;;
2746 linux-inet6)
2747 dnl http://www.v6.linux.or.jp/
2748 if test -d /usr/inet6; then
2749 ipv6type=$i
2750 ipv6lib=inet6
2751 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002752 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002753 fi
2754 ;;
2755 solaris)
2756 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002757 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002758 ipv6type=$i
2759 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002760 fi
2761 fi
2762 ;;
2763 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002764 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002765#include <sys/param.h>
2766#ifdef _TOSHIBA_INET6
2767yes
2768#endif],
2769 [ipv6type=$i;
2770 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002771 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002772 ;;
2773 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002774 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002775#include </usr/local/v6/include/sys/v6config.h>
2776#ifdef __V6D__
2777yes
2778#endif],
2779 [ipv6type=$i;
2780 ipv6lib=v6;
2781 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002782 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002783 ;;
2784 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002785 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002786#include <sys/param.h>
2787#ifdef _ZETA_MINAMI_INET6
2788yes
2789#endif],
2790 [ipv6type=$i;
2791 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002792 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002793 ;;
2794 esac
2795 if test "$ipv6type" != "unknown"; then
2796 break
2797 fi
2798 done
2799 AC_MSG_RESULT($ipv6type)
2800fi
2801
2802if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2803 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2804 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2805 echo "using lib$ipv6lib"
2806 else
2807 if test $ipv6trylibc = "yes"; then
2808 echo "using libc"
2809 else
2810 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2811 echo "You need to fetch lib$ipv6lib.a from appropriate"
2812 echo 'ipv6 kit and compile beforehand.'
2813 exit 1
2814 fi
2815 fi
2816fi
2817
Georg Brandl93de2162008-07-16 02:21:06 +00002818AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002819AC_COMPILE_IFELSE([
2820 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2821],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002822 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002823 AC_MSG_RESULT(yes)
2824],[
Georg Brandl93de2162008-07-16 02:21:06 +00002825 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002826])
Georg Brandl93de2162008-07-16 02:21:06 +00002827
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002828# Check for --with-doc-strings
2829AC_MSG_CHECKING(for --with-doc-strings)
2830AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002831 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002832
2833if test -z "$with_doc_strings"
2834then with_doc_strings="yes"
2835fi
2836if test "$with_doc_strings" != "no"
2837then
2838 AC_DEFINE(WITH_DOC_STRINGS, 1,
2839 [Define if you want documentation strings in extension modules])
2840fi
2841AC_MSG_RESULT($with_doc_strings)
2842
Georg Brandl9976a512010-08-02 21:02:36 +00002843# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002844AC_MSG_CHECKING(for --with-tsc)
2845AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002846 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002847if test "$withval" != no
2848then
2849 AC_DEFINE(WITH_TSC, 1,
2850 [Define to profile with the Pentium timestamp counter])
2851 AC_MSG_RESULT(yes)
2852else AC_MSG_RESULT(no)
2853fi],
2854[AC_MSG_RESULT(no)])
2855
2856# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002857AC_MSG_CHECKING(for --with-pymalloc)
2858AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002859 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002860
2861if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002862then
2863 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002864fi
2865if test "$with_pymalloc" != "no"
2866then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002867 AC_DEFINE(WITH_PYMALLOC, 1,
2868 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002869 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002870fi
2871AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002872
Benjamin Peterson05159c42009-12-03 03:01:27 +00002873# Check for Valgrind support
2874AC_MSG_CHECKING([for --with-valgrind])
2875AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002876 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002877 with_valgrind=no)
2878AC_MSG_RESULT([$with_valgrind])
2879if test "$with_valgrind" != no; then
2880 AC_CHECK_HEADER([valgrind/valgrind.h],
2881 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2882 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2883 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002884 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002885fi
2886
Guido van Rossum68242b51996-05-28 22:53:03 +00002887# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002888AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002889DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002890
Guido van Rossume97ee181999-12-20 21:27:22 +00002891# the dlopen() function means we might want to use dynload_shlib.o. some
2892# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002893AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002894
2895# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2896# loading of modules.
2897AC_SUBST(DYNLOADFILE)
2898AC_MSG_CHECKING(DYNLOADFILE)
2899if test -z "$DYNLOADFILE"
2900then
2901 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002902 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2903 if test "$ac_cv_func_dlopen" = yes
2904 then DYNLOADFILE="dynload_shlib.o"
2905 else DYNLOADFILE="dynload_aix.o"
2906 fi
2907 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002908 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002909 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2910 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002911 *)
2912 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2913 # out any dynamic loading
2914 if test "$ac_cv_func_dlopen" = yes
2915 then DYNLOADFILE="dynload_shlib.o"
2916 else DYNLOADFILE="dynload_stub.o"
2917 fi
2918 ;;
2919 esac
2920fi
2921AC_MSG_RESULT($DYNLOADFILE)
2922if test "$DYNLOADFILE" != "dynload_stub.o"
2923then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002924 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2925 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002926fi
2927
Jack Jansenc49e5b72001-06-19 15:00:23 +00002928# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2929
2930AC_SUBST(MACHDEP_OBJS)
2931AC_MSG_CHECKING(MACHDEP_OBJS)
2932if test -z "$MACHDEP_OBJS"
2933then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002934 MACHDEP_OBJS=$extra_machdep_objs
2935else
2936 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002937fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002938if test -z "$MACHDEP_OBJS"; then
2939 AC_MSG_RESULT([none])
2940else
2941 AC_MSG_RESULT([$MACHDEP_OBJS])
2942fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00002943
Guido van Rossum627b2d71993-12-24 10:39:16 +00002944# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00002945AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Victor Stinnerdaf45552013-08-28 00:53:59 +02002946 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002947 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Victor Stinnerfe02e392014-12-21 01:16:38 +01002948 futimens futimes gai_strerror getentropy \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02002949 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002950 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07002951 if_nameindex \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01002952 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
2953 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02002954 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002955 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002956 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002957 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00002958 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00002959 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02002960 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
2961 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02002962 sigaction sigaltstack siginterrupt sigpending sigrelse \
2963 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002964 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002965 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
Victor Stinnercd777ea2013-04-08 22:43:44 +02002966 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002967
Gregory P. Smithdf300d52012-01-21 18:20:15 -08002968AC_CHECK_DECL(dirfd,
2969 AC_DEFINE(HAVE_DIRFD, 1,
2970 Define if you have the 'dirfd' function or macro.), ,
2971 [#include <sys/types.h>
2972 #include <dirent.h>])
2973
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002974# For some functions, having a definition is not sufficient, since
2975# we want to take their address.
2976AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002977AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2978 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2979 AC_MSG_RESULT(yes)],
2980 [AC_MSG_RESULT(no)
2981])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002982AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002983AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2984 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2985 AC_MSG_RESULT(yes)],
2986 [AC_MSG_RESULT(no)
2987])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002988AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002989AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2990 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2991 AC_MSG_RESULT(yes)],
2992 [AC_MSG_RESULT(no)
2993])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002994AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002995AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2996 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2997 AC_MSG_RESULT(yes)],
2998 [AC_MSG_RESULT(no)
2999])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003000AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003001AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3002 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3003 AC_MSG_RESULT(yes)],
3004 [AC_MSG_RESULT(no)
3005])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003006AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003007AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3008 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3009 AC_MSG_RESULT(yes)],
3010 [AC_MSG_RESULT(no)
3011])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003012AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00003013AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3014 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3015 AC_MSG_RESULT(yes)],
3016 [AC_MSG_RESULT(no)
3017])
Benjamin Peterson95c16622011-12-27 15:36:32 -06003018AC_MSG_CHECKING(for epoll_create1)
3019AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
3020 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
3021 AC_MSG_RESULT(yes)],
3022 [AC_MSG_RESULT(no)
3023])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003024AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00003025AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003026#include <sys/types.h>
3027#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003028 ]], [[int x=kqueue()]])],
3029 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3030 AC_MSG_RESULT(yes)],
3031 [AC_MSG_RESULT(no)
3032])
Christian Heimesb7bd5df2013-10-22 11:21:54 +02003033AC_MSG_CHECKING(for prlimit)
3034AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3035#include <sys/time.h>
3036#include <sys/resource.h>
3037 ]], [[void *x=prlimit]])],
3038 [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
3039 AC_MSG_RESULT(yes)],
3040 [AC_MSG_RESULT(no)
3041])
3042
Martin v. Löwisd5843682002-11-21 20:41:28 +00003043# On some systems (eg. FreeBSD 5), we would find a definition of the
3044# functions ctermid_r, setgroups in the library, but no prototype
3045# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3046# address to avoid compiler warnings and potential miscompilations
3047# because of the missing prototypes.
3048
3049AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00003050AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003051#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003052]], [[void* p = ctermid_r]])],
3053 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3054 AC_MSG_RESULT(yes)],
3055 [AC_MSG_RESULT(no)
3056])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003057
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003058AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3059 [AC_COMPILE_IFELSE(
3060 [AC_LANG_PROGRAM(
3061 [#include <sys/file.h>],
3062 [void* p = flock]
3063 )],
3064 [ac_cv_flock_decl=yes],
3065 [ac_cv_flock_decl=no]
3066 )
Matthias Kloseb159a552010-04-25 21:00:44 +00003067])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003068if test "x${ac_cv_flock_decl}" = xyes; then
3069 AC_CHECK_FUNCS(flock,,
3070 AC_CHECK_LIB(bsd,flock,
3071 [AC_DEFINE(HAVE_FLOCK)
3072 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3073 ])
3074 )
Antoine Pitroua3000072010-09-07 14:52:42 +00003075fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003076
3077AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00003078AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003079#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003080]], [[void* p = getpagesize]])],
3081 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3082 AC_MSG_RESULT(yes)],
3083 [AC_MSG_RESULT(no)
3084])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003085
Victor Stinner984890f2011-11-24 13:53:38 +01003086AC_MSG_CHECKING(for broken unsetenv)
3087AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3088#include <stdlib.h>
3089]], [[int res = unsetenv("DUMMY")]])],
3090 [AC_MSG_RESULT(no)],
3091 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3092 AC_MSG_RESULT(yes)
3093])
3094
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003095dnl check for true
3096AC_CHECK_PROGS(TRUE, true, /bin/true)
3097
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003098dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3099dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003100AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003101 AC_CHECK_LIB(resolv, inet_aton)
3102)
3103
Christian Heimesd0764e22007-12-04 15:00:33 +00003104# On Tru64, chflags seems to be present, but calling it will
3105# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003106AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003107AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003108#include <sys/stat.h>
3109#include <unistd.h>
3110int main(int argc, char*argv[])
3111{
3112 if(chflags(argv[0], 0) != 0)
3113 return 1;
3114 return 0;
3115}
Ned Deily3eb67d52011-06-28 00:00:28 -07003116]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00003117[ac_cv_have_chflags=yes],
3118[ac_cv_have_chflags=no],
3119[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003120])
3121if test "$ac_cv_have_chflags" = cross ; then
3122 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3123fi
3124if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003125 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003126fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003127
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003128AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003129AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003130#include <sys/stat.h>
3131#include <unistd.h>
3132int main(int argc, char*argv[])
3133{
3134 if(lchflags(argv[0], 0) != 0)
3135 return 1;
3136 return 0;
3137}
Ned Deily3eb67d52011-06-28 00:00:28 -07003138]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003139])
3140if test "$ac_cv_have_lchflags" = cross ; then
3141 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3142fi
3143if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003144 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003145fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003146
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003147dnl Check if system zlib has *Copy() functions
3148dnl
3149dnl On MacOSX the linker will search for dylibs on the entire linker path
3150dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3151dnl to revert to a more traditional unix behaviour and make it possible to
3152dnl override the system libz with a local static library of libz. Temporarily
3153dnl add that flag to our CFLAGS as well to ensure that we check the version
3154dnl of libz that will be used by setup.py.
3155dnl The -L/usr/local/lib is needed as wel to get the same compilation
3156dnl environment as setup.py (and leaving it out can cause configure to use the
3157dnl wrong version of the library)
3158case $ac_sys_system/$ac_sys_release in
3159Darwin/*)
3160 _CUR_CFLAGS="${CFLAGS}"
3161 _CUR_LDFLAGS="${LDFLAGS}"
3162 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3163 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3164 ;;
3165esac
3166
Matthias Klosec80c93f2010-04-24 17:04:35 +00003167AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003168
3169case $ac_sys_system/$ac_sys_release in
3170Darwin/*)
3171 CFLAGS="${_CUR_CFLAGS}"
3172 LDFLAGS="${_CUR_LDFLAGS}"
3173 ;;
3174esac
3175
Martin v. Löwise9416172003-05-03 10:12:45 +00003176AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00003177AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003178#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003179]], [[void* p = hstrerror; hstrerror(0)]])],
3180 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3181 AC_MSG_RESULT(yes)],
3182 [AC_MSG_RESULT(no)
3183])
Martin v. Löwise9416172003-05-03 10:12:45 +00003184
3185AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003186AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003187#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003188#include <sys/socket.h>
3189#include <netinet/in.h>
3190#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003191]], [[void* p = inet_aton;inet_aton(0,0)]])],
3192 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3193 AC_MSG_RESULT(yes)],
3194 [AC_MSG_RESULT(no)
3195])
Martin v. Löwise9416172003-05-03 10:12:45 +00003196
3197AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003198AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003199#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003200#include <sys/socket.h>
3201#include <netinet/in.h>
3202#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003203]], [[void* p = inet_pton]])],
3204 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3205 AC_MSG_RESULT(yes)],
3206 [AC_MSG_RESULT(no)
3207])
Martin v. Löwise9416172003-05-03 10:12:45 +00003208
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003209# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003210AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00003211AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003212#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003213#ifdef HAVE_GRP_H
3214#include <grp.h>
3215#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003216]], [[void* p = setgroups]])],
3217 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3218 AC_MSG_RESULT(yes)],
3219 [AC_MSG_RESULT(no)
3220])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003221
Fred Drake8cef4cf2000-06-28 16:40:38 +00003222# check for openpty and forkpty
3223
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003224AC_CHECK_FUNCS(openpty,,
3225 AC_CHECK_LIB(util,openpty,
3226 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3227 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3228 )
3229)
3230AC_CHECK_FUNCS(forkpty,,
3231 AC_CHECK_LIB(util,forkpty,
3232 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3233 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3234 )
3235)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003236
Christian Heimesb186d002008-03-18 15:15:01 +00003237# Stuff for expat.
3238AC_CHECK_FUNCS(memmove)
3239
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003240# check for long file support functions
3241AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3242
Benjamin Peterson3a7dffa2013-08-23 21:01:48 -05003243AC_REPLACE_FUNCS(dup2 strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003244AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003245 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3246 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3247 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003248)
Jack Jansen150753c2003-03-29 22:07:47 +00003249AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003250 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3251 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3252 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003253)
3254AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003255 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3256 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3257 [],
3258 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3259 [Define if gettimeofday() does not have second (timezone) argument
3260 This is the case on Motorola V4 (R40V4.2)])
3261 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003262)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003263
Victor Stinnere0be4232011-10-25 13:06:09 +02003264AC_CHECK_FUNCS(clock_gettime, [], [
3265 AC_CHECK_LIB(rt, clock_gettime, [
3266 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3267 AC_DEFINE(TIMEMODULE_LIB, [rt],
3268 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3269 ])
3270])
3271
3272AC_CHECK_FUNCS(clock_getres, [], [
3273 AC_CHECK_LIB(rt, clock_getres, [
3274 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3275 ])
3276])
3277
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003278AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003279AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003280#if defined(MAJOR_IN_MKDEV)
3281#include <sys/mkdev.h>
3282#elif defined(MAJOR_IN_SYSMACROS)
3283#include <sys/sysmacros.h>
3284#else
3285#include <sys/types.h>
3286#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003287]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003288 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003289]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003290 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3291 [Define to 1 if you have the device macros.])
3292 AC_MSG_RESULT(yes)
3293],[
3294 AC_MSG_RESULT(no)
3295])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003296
3297# On OSF/1 V5.1, getaddrinfo is available, but a define
3298# for [no]getaddrinfo in netdb.h.
3299AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003300AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003301#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003302#include <sys/socket.h>
3303#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003304#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003305]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3306[have_getaddrinfo=yes],
3307[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003308AC_MSG_RESULT($have_getaddrinfo)
3309if test $have_getaddrinfo = yes
3310then
3311 AC_MSG_CHECKING(getaddrinfo bug)
3312 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003313 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah19c21392012-11-22 23:47:32 +01003314#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003315#include <sys/types.h>
3316#include <netdb.h>
3317#include <string.h>
3318#include <sys/socket.h>
3319#include <netinet/in.h>
3320
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003321int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003322{
3323 int passive, gaierr, inet4 = 0, inet6 = 0;
3324 struct addrinfo hints, *ai, *aitop;
3325 char straddr[INET6_ADDRSTRLEN], strport[16];
3326
3327 for (passive = 0; passive <= 1; passive++) {
3328 memset(&hints, 0, sizeof(hints));
3329 hints.ai_family = AF_UNSPEC;
3330 hints.ai_flags = passive ? AI_PASSIVE : 0;
3331 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003332 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003333 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3334 (void)gai_strerror(gaierr);
3335 goto bad;
3336 }
3337 for (ai = aitop; ai; ai = ai->ai_next) {
3338 if (ai->ai_addr == NULL ||
3339 ai->ai_addrlen == 0 ||
3340 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3341 straddr, sizeof(straddr), strport, sizeof(strport),
3342 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3343 goto bad;
3344 }
3345 switch (ai->ai_family) {
3346 case AF_INET:
3347 if (strcmp(strport, "54321") != 0) {
3348 goto bad;
3349 }
3350 if (passive) {
3351 if (strcmp(straddr, "0.0.0.0") != 0) {
3352 goto bad;
3353 }
3354 } else {
3355 if (strcmp(straddr, "127.0.0.1") != 0) {
3356 goto bad;
3357 }
3358 }
3359 inet4++;
3360 break;
3361 case AF_INET6:
3362 if (strcmp(strport, "54321") != 0) {
3363 goto bad;
3364 }
3365 if (passive) {
3366 if (strcmp(straddr, "::") != 0) {
3367 goto bad;
3368 }
3369 } else {
3370 if (strcmp(straddr, "::1") != 0) {
3371 goto bad;
3372 }
3373 }
3374 inet6++;
3375 break;
3376 case AF_UNSPEC:
3377 goto bad;
3378 break;
3379 default:
3380 /* another family support? */
3381 break;
3382 }
3383 }
3384 }
3385
3386 if (!(inet4 == 0 || inet4 == 2))
3387 goto bad;
3388 if (!(inet6 == 0 || inet6 == 2))
3389 goto bad;
3390
3391 if (aitop)
3392 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003393 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003394
3395 bad:
3396 if (aitop)
3397 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003398 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003399}
Matthias Kloseb159a552010-04-25 21:00:44 +00003400]]])],
3401[ac_cv_buggy_getaddrinfo=no],
3402[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003403[
3404if test "${enable_ipv6+set}" = set; then
3405 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3406else
3407 ac_cv_buggy_getaddrinfo=yes
3408fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003409fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003410
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003411AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3412
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003413if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003414then
3415 if test $ipv6 = yes
3416 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003417 echo 'Fatal: You must get working getaddrinfo() function.'
3418 echo ' or you can specify "--disable-ipv6"'.
3419 exit 1
3420 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003421else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003422 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003423fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003424
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003425AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003426
Guido van Rossum627b2d71993-12-24 10:39:16 +00003427# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003428AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003429AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003430AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003431AC_CHECK_MEMBERS([struct stat.st_rdev])
3432AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003433AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003434AC_CHECK_MEMBERS([struct stat.st_gen])
3435AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003436AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003437
3438AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003439AC_CACHE_VAL(ac_cv_header_time_altzone,[
3440 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3441 [ac_cv_header_time_altzone=yes],
3442 [ac_cv_header_time_altzone=no])
3443 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003444AC_MSG_RESULT($ac_cv_header_time_altzone)
3445if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003446 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003447fi
3448
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003449was_it_defined=no
3450AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003451AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003452#include <sys/types.h>
3453#include <sys/select.h>
3454#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003455]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003456 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3457 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3458 (which you can't on SCO ODT 3.0).])
3459 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003460],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003461AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003462
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003463AC_MSG_CHECKING(for addrinfo)
3464AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003465AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3466 [ac_cv_struct_addrinfo=yes],
3467 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003468AC_MSG_RESULT($ac_cv_struct_addrinfo)
3469if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003470 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003471fi
3472
3473AC_MSG_CHECKING(for sockaddr_storage)
3474AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003475AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003476# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003477# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3478 [ac_cv_struct_sockaddr_storage=yes],
3479 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003480AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3481if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003482 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003483fi
3484
Guido van Rossum627b2d71993-12-24 10:39:16 +00003485# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003486
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003487AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003488AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003489
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003490works=no
3491AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003492AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3493 [works=yes],
3494 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003495)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003496AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003497
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003498works=no
3499AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003500AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3501 [works=yes],
3502 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003503)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003504AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003505
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003506have_prototypes=no
3507AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003508AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3509 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3510 [Define if your compiler supports function prototype])
3511 have_prototypes=yes],
3512 []
3513)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003514AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003515
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003516works=no
3517AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003518AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003519#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003520int foo(int x, ...) {
3521 va_list va;
3522 va_start(va, x);
3523 va_arg(va, int);
3524 va_arg(va, char *);
3525 va_arg(va, double);
3526 return 0;
3527}
Matthias Kloseb159a552010-04-25 21:00:44 +00003528]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003529 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3530 [Define if your compiler supports variable length function prototypes
3531 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3532 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003533],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003534AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003535
Dave Cole331708b2004-08-09 04:51:41 +00003536# check for socketpair
3537AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003538AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003539#include <sys/types.h>
3540#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003541]], [[void *x=socketpair]])],
3542 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3543 AC_MSG_RESULT(yes)],
3544 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003545)
3546
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003547# check if sockaddr has sa_len member
3548AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003549AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3550#include <sys/socket.h>]], [[struct sockaddr x;
3551x.sa_len = 0;]])],
3552 [AC_MSG_RESULT(yes)
3553 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3554 [AC_MSG_RESULT(no)]
3555)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003556
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003557va_list_is_array=no
3558AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003559AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003560#ifdef HAVE_STDARG_PROTOTYPES
3561#include <stdarg.h>
3562#else
3563#include <varargs.h>
3564#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003565]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003566 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3567 va_list_is_array=yes
3568])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003569AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003570
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003571# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003572AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3573 [Define this if you have some version of gethostbyname_r()])
3574
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003575AC_CHECK_FUNC(gethostbyname_r, [
3576 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3577 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3578 OLD_CFLAGS=$CFLAGS
3579 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003580 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003581# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003582 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003583 char *name;
3584 struct hostent *he, *res;
3585 char buffer[2048];
3586 int buflen = 2048;
3587 int h_errnop;
3588
3589 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003590 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003591 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003592 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3593 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003594 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003595 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003596 AC_MSG_RESULT(no)
3597 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003599# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003600 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003601 char *name;
3602 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003603 char buffer[2048];
3604 int buflen = 2048;
3605 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003606
Matthias Kloseb159a552010-04-25 21:00:44 +00003607 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3608 ]])],
3609 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003610 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003611 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3612 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003613 AC_MSG_RESULT(yes)
3614 ], [
3615 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003616 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3617 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3618# include <netdb.h>
3619 ]], [[
3620 char *name;
3621 struct hostent *he;
3622 struct hostent_data data;
3623
3624 (void) gethostbyname_r(name, he, &data);
3625 ]])],
3626 [
3627 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3628 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3629 [Define this if you have the 3-arg version of gethostbyname_r().])
3630 AC_MSG_RESULT(yes)
3631 ], [
3632 AC_MSG_RESULT(no)
3633 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003634 ])
3635 ])
3636 CFLAGS=$OLD_CFLAGS
3637], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003638 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003639])
3640AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3641AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3642AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003643AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003644AC_SUBST(HAVE_GETHOSTBYNAME)
3645
Guido van Rossum627b2d71993-12-24 10:39:16 +00003646# checks for system services
3647# (none yet)
3648
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003649# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003650AC_CHECK_FUNC(__fpu_control,
3651 [],
3652 [AC_CHECK_LIB(ieee, __fpu_control)
3653])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003654
Guido van Rossum93274221997-05-09 02:42:00 +00003655# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003656AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003657AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003658 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003659[
Guido van Rossum93274221997-05-09 02:42:00 +00003660if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003661then
3662 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3663 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3664 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003665else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003666fi],
3667[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003668
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003669# check for --with-libm=...
3670AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003671case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003672Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003673*) LIBM=-lm
3674esac
Guido van Rossum93274221997-05-09 02:42:00 +00003675AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003676AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003677 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003678[
Guido van Rossum93274221997-05-09 02:42:00 +00003679if test "$withval" = no
3680then LIBM=
3681 AC_MSG_RESULT(force LIBM empty)
3682elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003683then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003684 AC_MSG_RESULT(set LIBM="$withval")
3685else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003686fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003687[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003688
3689# check for --with-libc=...
3690AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003691AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003692AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003693 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003694[
Guido van Rossum93274221997-05-09 02:42:00 +00003695if test "$withval" = no
3696then LIBC=
3697 AC_MSG_RESULT(force LIBC empty)
3698elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003699then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003700 AC_MSG_RESULT(set LIBC="$withval")
3701else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003702fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003703[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003704
Stefan Krah1919b7e2012-03-21 18:25:23 +01003705# **************************************
3706# * Check for gcc x64 inline assembler *
3707# **************************************
3708
3709AC_MSG_CHECKING(for x64 gcc inline assembler)
3710AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
3711 __asm__ __volatile__ ("movq %rcx, %rax");
3712]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
3713AC_MSG_RESULT($have_gcc_asm_for_x64)
3714if test "$have_gcc_asm_for_x64" = yes
3715then
3716 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
3717 [Define if we can use x64 gcc inline assembler])
3718fi
3719
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003720# **************************************************
3721# * Check for various properties of floating point *
3722# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003723
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003724AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3725AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003726AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003727#include <string.h>
3728int main() {
3729 double x = 9006104071832581.0;
3730 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3731 return 0;
3732 else
3733 return 1;
3734}
Matthias Kloseb159a552010-04-25 21:00:44 +00003735]])],
3736[ac_cv_little_endian_double=yes],
3737[ac_cv_little_endian_double=no],
3738[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003739AC_MSG_RESULT($ac_cv_little_endian_double)
3740if test "$ac_cv_little_endian_double" = yes
3741then
3742 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3743 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3744 with the least significant byte first])
3745fi
3746
3747AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3748AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003749AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003750#include <string.h>
3751int main() {
3752 double x = 9006104071832581.0;
3753 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3754 return 0;
3755 else
3756 return 1;
3757}
Matthias Kloseb159a552010-04-25 21:00:44 +00003758]])],
3759[ac_cv_big_endian_double=yes],
3760[ac_cv_big_endian_double=no],
3761[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003762AC_MSG_RESULT($ac_cv_big_endian_double)
3763if test "$ac_cv_big_endian_double" = yes
3764then
3765 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3766 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3767 with the most significant byte first])
3768fi
3769
3770# Some ARM platforms use a mixed-endian representation for doubles.
3771# While Python doesn't currently have full support for these platforms
3772# (see e.g., issue 1762561), we can at least make sure that float <-> string
3773# conversions work.
3774AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3775AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003776AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003777#include <string.h>
3778int main() {
3779 double x = 9006104071832581.0;
3780 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3781 return 0;
3782 else
3783 return 1;
3784}
Matthias Kloseb159a552010-04-25 21:00:44 +00003785]])],
3786[ac_cv_mixed_endian_double=yes],
3787[ac_cv_mixed_endian_double=no],
3788[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003789AC_MSG_RESULT($ac_cv_mixed_endian_double)
3790if test "$ac_cv_mixed_endian_double" = yes
3791then
3792 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3793 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3794 in ARM mixed-endian order (byte order 45670123)])
3795fi
3796
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003797# The short float repr introduced in Python 3.1 requires the
3798# correctly-rounded string <-> double conversion functions from
3799# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3800# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003801# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003802# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003803
3804# This inline assembler syntax may also work for suncc and icc,
3805# so we try it on all platforms.
3806
3807AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003808AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003809 unsigned short cw;
3810 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3811 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003812]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003813AC_MSG_RESULT($have_gcc_asm_for_x87)
3814if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003815then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003816 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3817 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003818fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003819
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003820# Detect whether system arithmetic is subject to x87-style double
3821# rounding issues. The result of this test has little meaning on non
3822# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3823# mode is round-to-nearest and double rounding issues are present, and
3824# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3825AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003826# $BASECFLAGS may affect the result
3827ac_save_cc="$CC"
3828CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003829AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003830#include <stdlib.h>
3831#include <math.h>
3832int main() {
3833 volatile double x, y, z;
3834 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3835 x = 0.99999999999999989; /* 1-2**-53 */
3836 y = 1./x;
3837 if (y != 1.)
3838 exit(0);
3839 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3840 x = 1e16;
3841 y = 2.99999;
3842 z = x + y;
3843 if (z != 1e16+4.)
3844 exit(0);
3845 /* both tests show evidence of double rounding */
3846 exit(1);
3847}
Matthias Kloseb159a552010-04-25 21:00:44 +00003848]])],
3849[ac_cv_x87_double_rounding=no],
3850[ac_cv_x87_double_rounding=yes],
3851[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003852CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003853AC_MSG_RESULT($ac_cv_x87_double_rounding)
3854if test "$ac_cv_x87_double_rounding" = yes
3855then
3856 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3857 [Define if arithmetic is subject to x87-style double rounding issue])
3858fi
3859
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003860# ************************************
3861# * Check for mathematical functions *
3862# ************************************
3863
3864LIBS_SAVE=$LIBS
3865LIBS="$LIBS $LIBM"
3866
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003867AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003868AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003869AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3870
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003871# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3872# -0. on some architectures.
3873AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3874AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003875AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003876#include <math.h>
3877#include <stdlib.h>
3878int main() {
3879 /* return 0 if either negative zeros don't exist
3880 on this platform or if negative zeros exist
3881 and tanh(-0.) == -0. */
3882 if (atan2(0., -1.) == atan2(-0., -1.) ||
3883 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3884 else exit(1);
3885}
Matthias Kloseb159a552010-04-25 21:00:44 +00003886]])],
3887[ac_cv_tanh_preserves_zero_sign=yes],
3888[ac_cv_tanh_preserves_zero_sign=no],
3889[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003890AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3891if test "$ac_cv_tanh_preserves_zero_sign" = yes
3892then
3893 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3894 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3895fi
3896
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003897if test "$ac_cv_func_log1p" = yes
3898then
3899 # On some versions of AIX, log1p(-0.) returns 0. instead of
3900 # -0. See issue #9920.
3901 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3902 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3903 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3904 #include <math.h>
3905 #include <stdlib.h>
3906 int main() {
3907 /* Fail if the signs of log1p(-0.) and -0. can be
3908 distinguished. */
3909 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3910 return 0;
3911 else
3912 return 1;
3913 }
3914 ]])],
3915 [ac_cv_log1p_drops_zero_sign=no],
3916 [ac_cv_log1p_drops_zero_sign=yes],
3917 [ac_cv_log1p_drops_zero_sign=no])])
3918 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3919fi
3920if test "$ac_cv_log1p_drops_zero_sign" = yes
3921then
3922 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3923 [Define if log1p(-0.) is 0. rather than -0.])
3924fi
Christian Heimes99170a52007-12-19 02:07:34 +00003925
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003926LIBS=$LIBS_SAVE
3927
Mark Dickinsona614f042009-11-28 12:48:43 +00003928# For multiprocessing module, check that sem_open
3929# actually works. For FreeBSD versions <= 7.2,
3930# the kernel module that provides POSIX semaphores
3931# isn't loaded by default, so an attempt to call
3932# sem_open results in a 'Signal 12' error.
3933AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3934AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003935AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003936#include <unistd.h>
3937#include <fcntl.h>
3938#include <stdio.h>
3939#include <semaphore.h>
3940#include <sys/stat.h>
3941
3942int main(void) {
3943 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3944 if (a == SEM_FAILED) {
3945 perror("sem_open");
3946 return 1;
3947 }
3948 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003949 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003950 return 0;
3951}
Matthias Kloseb159a552010-04-25 21:00:44 +00003952]])],
3953[ac_cv_posix_semaphores_enabled=yes],
3954[ac_cv_posix_semaphores_enabled=no],
3955[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003956)
3957AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3958if test $ac_cv_posix_semaphores_enabled = no
3959then
3960 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3961 [Define if POSIX semaphores aren't enabled on your system])
3962fi
3963
Mark Dickinson10683072009-04-18 21:18:19 +00003964# Multiprocessing check for broken sem_getvalue
3965AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003966AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003967AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003968#include <unistd.h>
3969#include <fcntl.h>
3970#include <stdio.h>
3971#include <semaphore.h>
3972#include <sys/stat.h>
3973
3974int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003975 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003976 int count;
3977 int res;
3978 if(a==SEM_FAILED){
3979 perror("sem_open");
3980 return 1;
3981
3982 }
3983 res = sem_getvalue(a, &count);
3984 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003985 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003986 return res==-1 ? 1 : 0;
3987}
Matthias Kloseb159a552010-04-25 21:00:44 +00003988]])],
3989[ac_cv_broken_sem_getvalue=no],
3990[ac_cv_broken_sem_getvalue=yes],
3991[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003992)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003993AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3994if test $ac_cv_broken_sem_getvalue = yes
3995then
3996 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3997 [define to 1 if your sem_getvalue is broken.])
3998fi
Mark Dickinson10683072009-04-18 21:18:19 +00003999
Mark Dickinsonbd792642009-03-18 20:06:12 +00004000# determine what size digit to use for Python's longs
4001AC_MSG_CHECKING([digit size for Python's longs])
4002AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004003AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00004004[case $enable_big_digits in
4005yes)
4006 enable_big_digits=30 ;;
4007no)
4008 enable_big_digits=15 ;;
4009[15|30])
4010 ;;
4011*)
4012 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4013esac
4014AC_MSG_RESULT($enable_big_digits)
4015AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4016],
4017[AC_MSG_RESULT(no value specified)])
4018
Guido van Rossumef2255b2000-03-10 22:30:29 +00004019# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004020AC_CHECK_HEADER(wchar.h, [
4021 AC_DEFINE(HAVE_WCHAR_H, 1,
4022 [Define if the compiler provides a wchar.h header file.])
4023 wchar_h="yes"
4024],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004025wchar_h="no"
4026)
4027
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004028# determine wchar_t size
4029if test "$wchar_h" = yes
4030then
Guido van Rossum67b26592001-10-20 14:21:45 +00004031 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004032fi
4033
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004034AC_MSG_CHECKING(for UCS-4 tcl)
4035have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00004036AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004037#include <tcl.h>
4038#if TCL_UTF_MAX != 6
4039# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00004040#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004041 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4042 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004043],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004044AC_MSG_RESULT($have_ucs4_tcl)
4045
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004046# check whether wchar_t is signed or not
4047if test "$wchar_h" = yes
4048then
4049 # check whether wchar_t is signed or not
4050 AC_MSG_CHECKING(whether wchar_t is signed)
4051 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004052 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004053 #include <wchar.h>
4054 int main()
4055 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004056 /* Success: exit code 0 */
4057 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004058 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004059 ]])],
4060 [ac_cv_wchar_t_signed=yes],
4061 [ac_cv_wchar_t_signed=no],
4062 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004063 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4064fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004065
Georg Brandl52d168a2008-01-07 18:10:24 +00004066# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004067if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004068 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00004069then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004070 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00004071 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4072 [Define if you have a useable wchar_t type defined in wchar.h; useable
4073 means wchar_t must be an unsigned type with at least 16 bits. (see
4074 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00004075else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004076 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004077fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004078AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004079
4080# check for endianness
4081AC_C_BIGENDIAN
4082
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004083# ABI version string for Python extension modules. This appears between the
4084# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
4085# from the following attributes which affect the ABI of this Python build (in
4086# this order):
4087#
4088# * The Python implementation (always 'cpython-' for us)
4089# * The major and minor version numbers
4090# * --with-pydebug (adds a 'd')
4091# * --with-pymalloc (adds a 'm')
4092# * --with-wide-unicode (adds a 'u')
4093#
4094# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00004095# would get a shared library ABI version tag of 'cpython-32dmu' and shared
4096# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004097AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004098AC_MSG_CHECKING(ABIFLAGS)
4099AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004100AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004101SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004102AC_MSG_RESULT($SOABI)
4103
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004104AC_SUBST(EXT_SUFFIX)
4105case $ac_sys_system in
4106 Linux*|GNU*)
4107 EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
4108 *)
4109 EXT_SUFFIX=${SHLIB_SUFFIX};;
4110esac
4111
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004112AC_MSG_CHECKING(LDVERSION)
4113LDVERSION='$(VERSION)$(ABIFLAGS)'
4114AC_MSG_RESULT($LDVERSION)
4115
doko@python.org87421192013-01-26 11:39:31 +01004116dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
4117AC_SUBST(PY_ENABLE_SHARED)
doko@ubuntu.come8042e52015-05-06 01:13:02 +02004118LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
doko@python.org87421192013-01-26 11:39:31 +01004119AC_SUBST(LIBPL)
4120
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004121# Check whether right shifting a negative integer extends the sign bit
4122# or fills with zeros (like the Cray J90, according to Tim Peters).
4123AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004124AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004125AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004126int main()
4127{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004128 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004129}
Matthias Kloseb159a552010-04-25 21:00:44 +00004130]])],
4131[ac_cv_rshift_extends_sign=yes],
4132[ac_cv_rshift_extends_sign=no],
4133[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004134AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4135if test "$ac_cv_rshift_extends_sign" = no
4136then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004137 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4138 [Define if i>>j for signed int i does not extend the sign bit
4139 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004140fi
4141
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004142# check for getc_unlocked and related locking functions
4143AC_MSG_CHECKING(for getc_unlocked() and friends)
4144AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004145AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004146 FILE *f = fopen("/dev/null", "r");
4147 flockfile(f);
4148 getc_unlocked(f);
4149 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00004150]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004151AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4152if test "$ac_cv_have_getc_unlocked" = yes
4153then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004154 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4155 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004156fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004157
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004158# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004159# save the value of LIBS so we don't actually link Python with readline
4160LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00004161
4162# On some systems we need to link readline to a termcap compatible
4163# library. NOTE: Keep the precedence of listed libraries synchronised
4164# with setup.py.
4165py_cv_lib_readline=no
4166AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02004167for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00004168 if test -z "$py_libtermcap"; then
4169 READLINE_LIBS="-lreadline"
4170 else
4171 READLINE_LIBS="-lreadline -l$py_libtermcap"
4172 fi
4173 LIBS="$READLINE_LIBS $LIBS_no_readline"
4174 AC_LINK_IFELSE(
4175 [AC_LANG_CALL([],[readline])],
4176 [py_cv_lib_readline=yes])
4177 if test $py_cv_lib_readline = yes; then
4178 break
4179 fi
4180done
4181# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4182#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00004183if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00004184 AC_MSG_RESULT([none])
4185else
4186 AC_MSG_RESULT([$READLINE_LIBS])
4187 AC_DEFINE(HAVE_LIBREADLINE, 1,
4188 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004189fi
4190
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004191# check for readline 2.1
4192AC_CHECK_LIB(readline, rl_callback_handler_install,
4193 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004194 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004195
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004196# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004197AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4198 [have_readline=yes],
4199 [have_readline=no]
4200)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004201if test $have_readline = yes
4202then
4203 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4204 [readline/readline.h],
4205 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4206 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004207 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4208 [readline/readline.h],
4209 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4210 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004211fi
4212
Martin v. Löwis0daad592001-09-30 21:09:59 +00004213# check for readline 4.0
4214AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004215 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004216 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004217
Thomas Wouters89d996e2007-09-08 17:39:28 +00004218# also in 4.0
4219AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4220 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004221 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004222
Guido van Rossum353ae582001-07-10 16:45:32 +00004223# check for readline 4.2
4224AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004225 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004226 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004227
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004228# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004229AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4230 [have_readline=yes],
4231 [have_readline=no]
4232)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004233if test $have_readline = yes
4234then
4235 AC_EGREP_HEADER([extern int rl_catch_signals;],
4236 [readline/readline.h],
4237 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4238 [Define if you can turn off readline's signal handling.]), )
4239fi
4240
Martin v. Löwis82bca632006-02-10 20:49:30 +00004241# End of readline checks: restore LIBS
4242LIBS=$LIBS_no_readline
4243
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004244AC_MSG_CHECKING(for broken nice())
4245AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004246AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004247int main()
4248{
4249 int val1 = nice(1);
4250 if (val1 != -1 && val1 == nice(2))
4251 exit(0);
4252 exit(1);
4253}
Matthias Kloseb159a552010-04-25 21:00:44 +00004254]])],
4255[ac_cv_broken_nice=yes],
4256[ac_cv_broken_nice=no],
4257[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004258AC_MSG_RESULT($ac_cv_broken_nice)
4259if test "$ac_cv_broken_nice" = yes
4260then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004261 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4262 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004263fi
4264
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004265AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004266AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004267AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004268#include <poll.h>
4269
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004270int main()
4271{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004272 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004273 int poll_test;
4274
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004275 close (42);
4276
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004277 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004278 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004279 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004280 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004281 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004282 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004283 return 1;
4284}
Matthias Kloseb159a552010-04-25 21:00:44 +00004285]])],
4286[ac_cv_broken_poll=yes],
4287[ac_cv_broken_poll=no],
4288[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004289AC_MSG_RESULT($ac_cv_broken_poll)
4290if test "$ac_cv_broken_poll" = yes
4291then
4292 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4293 [Define if poll() sets errno on invalid file descriptors.])
4294fi
4295
Brett Cannon43802422005-02-10 20:48:03 +00004296# Before we can test tzset, we need to check if struct tm has a tm_zone
4297# (which is not required by ISO C or UNIX spec) and/or if we support
4298# tzname[]
4299AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004300
Brett Cannon43802422005-02-10 20:48:03 +00004301# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004302AC_MSG_CHECKING(for working tzset())
4303AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004304AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004305#include <stdlib.h>
4306#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004307#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004308
4309#if HAVE_TZNAME
4310extern char *tzname[];
4311#endif
4312
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004313int main()
4314{
Brett Cannon18367812003-09-19 00:59:16 +00004315 /* Note that we need to ensure that not only does tzset(3)
4316 do 'something' with localtime, but it works as documented
4317 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004318 This includes making sure that tzname is set properly if
4319 tm->tm_zone does not exist since it is the alternative way
4320 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004321
4322 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004323 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004324 */
4325
Brett Cannon43802422005-02-10 20:48:03 +00004326 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004327 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4328
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004329 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004330 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004331 if (localtime(&groundhogday)->tm_hour != 0)
4332 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004333#if HAVE_TZNAME
4334 /* For UTC, tzname[1] is sometimes "", sometimes " " */
4335 if (strcmp(tzname[0], "UTC") ||
4336 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4337 exit(1);
4338#endif
Brett Cannon18367812003-09-19 00:59:16 +00004339
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004340 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004341 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004342 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004343 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004344#if HAVE_TZNAME
4345 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4346 exit(1);
4347#endif
Brett Cannon18367812003-09-19 00:59:16 +00004348
4349 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4350 tzset();
4351 if (localtime(&groundhogday)->tm_hour != 11)
4352 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004353#if HAVE_TZNAME
4354 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4355 exit(1);
4356#endif
4357
4358#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004359 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4360 exit(1);
4361 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4362 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004363#endif
Brett Cannon18367812003-09-19 00:59:16 +00004364
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004365 exit(0);
4366}
Matthias Kloseb159a552010-04-25 21:00:44 +00004367]])],
4368[ac_cv_working_tzset=yes],
4369[ac_cv_working_tzset=no],
4370[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004371AC_MSG_RESULT($ac_cv_working_tzset)
4372if test "$ac_cv_working_tzset" = yes
4373then
4374 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4375 [Define if tzset() actually switches the local timezone in a meaningful way.])
4376fi
4377
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004378# Look for subsecond timestamps in struct stat
4379AC_MSG_CHECKING(for tv_nsec in struct stat)
4380AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004381AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004382struct stat st;
4383st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004384]])],
4385[ac_cv_stat_tv_nsec=yes],
4386[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004387AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4388if test "$ac_cv_stat_tv_nsec" = yes
4389then
4390 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4391 [Define if you have struct stat.st_mtim.tv_nsec])
4392fi
4393
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004394# Look for BSD style subsecond timestamps in struct stat
4395AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4396AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004397AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004398struct stat st;
4399st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004400]])],
4401[ac_cv_stat_tv_nsec2=yes],
4402[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004403AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4404if test "$ac_cv_stat_tv_nsec2" = yes
4405then
4406 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4407 [Define if you have struct stat.st_mtimensec])
4408fi
4409
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004410# first curses header check
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004411ac_save_cppflags="$CPPFLAGS"
4412CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004413
4414AC_CHECK_HEADERS(curses.h ncurses.h)
4415
4416# On Solaris, term.h requires curses.h
4417AC_CHECK_HEADERS(term.h,,,[
4418#ifdef HAVE_CURSES_H
4419#include <curses.h>
4420#endif
4421])
4422
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004423# On HP/UX 11.0, mvwdelch is a block with a return statement
4424AC_MSG_CHECKING(whether mvwdelch is an expression)
4425AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004426AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004427 int rtn;
4428 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004429]])],
4430[ac_cv_mvwdelch_is_expression=yes],
4431[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004432AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4433
4434if test "$ac_cv_mvwdelch_is_expression" = yes
4435then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004436 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4437 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004438fi
4439
4440AC_MSG_CHECKING(whether WINDOW has _flags)
4441AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004442AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004443 WINDOW *w;
4444 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004445]])],
4446[ac_cv_window_has_flags=yes],
4447[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004448AC_MSG_RESULT($ac_cv_window_has_flags)
4449
4450
4451if test "$ac_cv_window_has_flags" = yes
4452then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004453 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4454 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004455fi
4456
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004457AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004458AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4459 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4460 AC_MSG_RESULT(yes)],
4461 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004462)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004463
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004464AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004465AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4466 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4467 AC_MSG_RESULT(yes)],
4468 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004469)
4470
4471AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004472AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4473 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4474 AC_MSG_RESULT(yes)],
4475 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004476)
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004477# last curses configure check
4478CPPFLAGS=$ac_save_cppflags
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004479
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004480AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004481
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004482dnl NOTE: Inform user how to proceed with files when cross compiling.
4483if test "x$cross_compiling" = xyes; then
4484 if test "${ac_cv_file__dev_ptmx+set}" != set; then
4485 AC_MSG_CHECKING([for /dev/ptmx])
4486 AC_MSG_RESULT([not set])
4487 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
4488 fi
4489 if test "${ac_cv_file__dev_ptc+set}" != set; then
4490 AC_MSG_CHECKING([for /dev/ptc])
4491 AC_MSG_RESULT([not set])
4492 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
4493 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00004494fi
4495
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004496AC_CHECK_FILE(/dev/ptmx, [], [])
4497if test "x$ac_cv_file__dev_ptmx" = xyes; then
4498 AC_DEFINE(HAVE_DEV_PTMX, 1,
4499 [Define to 1 if you have the /dev/ptmx device file.])
4500fi
4501AC_CHECK_FILE(/dev/ptc, [], [])
4502if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00004503 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004504 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004505fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004506
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004507if test "$have_long_long" = yes
4508then
4509 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4510 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004511 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004512 #include <stdio.h>
4513 #include <stddef.h>
4514 #include <string.h>
4515
4516 #ifdef HAVE_SYS_TYPES_H
4517 #include <sys/types.h>
4518 #endif
4519
4520 int main()
4521 {
4522 char buffer[256];
4523
4524 if (sprintf(buffer, "%lld", (long long)123) < 0)
4525 return 1;
4526 if (strcmp(buffer, "123"))
4527 return 1;
4528
4529 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4530 return 1;
4531 if (strcmp(buffer, "-123"))
4532 return 1;
4533
4534 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4535 return 1;
4536 if (strcmp(buffer, "123"))
4537 return 1;
4538
4539 return 0;
4540 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004541 ]]])],
4542 [ac_cv_have_long_long_format=yes],
4543 [ac_cv_have_long_long_format=no],
Matthias Klose3b739b12012-03-15 19:31:06 +01004544 [ac_cv_have_long_long_format="cross -- assuming no"
4545 if test x$GCC = xyes; then
4546 save_CFLAGS=$CFLAGS
4547 CFLAGS="$CFLAGS -Werror -Wformat"
4548 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4549 #include <stdio.h>
4550 #include <stddef.h>
4551 ]], [[
4552 char *buffer;
4553 sprintf(buffer, "%lld", (long long)123);
4554 sprintf(buffer, "%lld", (long long)-123);
4555 sprintf(buffer, "%llu", (unsigned long long)123);
4556 ]])],
4557 ac_cv_have_long_long_format=yes
4558 )
4559 CFLAGS=$save_CFLAGS
4560 fi])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004561 )
4562 AC_MSG_RESULT($ac_cv_have_long_long_format)
4563fi
4564
Mark Dickinson89d7d412009-12-31 20:50:59 +00004565if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004566then
4567 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4568 [Define to printf format modifier for long long type])
4569fi
4570
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004571if test $ac_sys_system = Darwin
4572then
4573 LIBS="$LIBS -framework CoreFoundation"
4574fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004575
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004576AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004577AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004578#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004579#include <stddef.h>
4580#include <string.h>
4581
Christian Heimes2c181612007-12-17 20:04:13 +00004582#ifdef HAVE_SYS_TYPES_H
4583#include <sys/types.h>
4584#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004585
4586#ifdef HAVE_SSIZE_T
4587typedef ssize_t Py_ssize_t;
4588#elif SIZEOF_VOID_P == SIZEOF_LONG
4589typedef long Py_ssize_t;
4590#else
4591typedef int Py_ssize_t;
4592#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004593
Christian Heimes2c181612007-12-17 20:04:13 +00004594int main()
4595{
4596 char buffer[256];
4597
Thomas Wouters477c8d52006-05-27 19:21:47 +00004598 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4599 return 1;
4600
Thomas Wouters89f507f2006-12-13 04:49:30 +00004601 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004602 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004603
4604 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4605 return 1;
4606
4607 if (strcmp(buffer, "-123"))
4608 return 1;
4609
Thomas Wouters477c8d52006-05-27 19:21:47 +00004610 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004611}
Matthias Kloseb159a552010-04-25 21:00:44 +00004612]])],
4613 [ac_cv_have_size_t_format=yes],
4614 [ac_cv_have_size_t_format=no],
4615 [ac_cv_have_size_t_format="cross -- assuming yes"
4616])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004617if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004618 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4619 [Define to printf format modifier for Py_ssize_t])
4620fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004621
Martin v. Löwis01c04012002-11-11 14:58:44 +00004622AC_CHECK_TYPE(socklen_t,,
4623 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004624 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004625#ifdef HAVE_SYS_TYPES_H
4626#include <sys/types.h>
4627#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004628#ifdef HAVE_SYS_SOCKET_H
4629#include <sys/socket.h>
4630#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004631])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004632
Antoine Pitroufff95302008-09-03 18:58:51 +00004633AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004634AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004635AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah19c21392012-11-22 23:47:32 +01004636#include <stdio.h>
Antoine Pitroufff95302008-09-03 18:58:51 +00004637#include<stdlib.h>
4638int main() {
4639 size_t len = -1;
4640 const char *str = "text";
4641 len = mbstowcs(NULL, str, 0);
4642 return (len != 4);
4643}
Matthias Kloseb159a552010-04-25 21:00:44 +00004644]])],
4645[ac_cv_broken_mbstowcs=no],
4646[ac_cv_broken_mbstowcs=yes],
4647[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004648AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4649if test "$ac_cv_broken_mbstowcs" = yes
4650then
4651 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4652 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4653 wide chars that would be converted.])
4654fi
4655
Antoine Pitroub52ec782009-01-25 16:34:23 +00004656# Check for --with-computed-gotos
4657AC_MSG_CHECKING(for --with-computed-gotos)
4658AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004659 AS_HELP_STRING([--with(out)-computed-gotos],
4660 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004661[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004662if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004663then
4664 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4665 [Define if you want to use computed gotos in ceval.c.])
4666 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004667fi
4668if test "$withval" = no
4669then
4670 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4671 [Define if you want to use computed gotos in ceval.c.])
4672 AC_MSG_RESULT(no)
4673fi
4674],
4675[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004676
Matthias Kloseb17289e2012-03-15 19:51:34 +01004677AC_MSG_CHECKING(whether $CC supports computed gotos)
4678AC_CACHE_VAL(ac_cv_computed_gotos,
4679AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4680int main(int argc, char **argv)
4681{
4682 static void *targets[1] = { &&LABEL1 };
4683 goto LABEL2;
4684LABEL1:
4685 return 0;
4686LABEL2:
4687 goto *targets[0];
4688 return 1;
4689}
4690]]])],
4691[ac_cv_computed_gotos=yes],
4692[ac_cv_computed_gotos=no],
4693[if test "${with_computed_gotos+set}" = set; then
4694 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
4695 else
4696 ac_cv_computed_gotos=no
4697 fi]))
4698AC_MSG_RESULT($ac_cv_computed_gotos)
4699case "$ac_cv_computed_gotos" in yes*)
4700 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4701 [Define if the C compiler supports computed gotos.])
4702esac
4703
R. David Murraye16cda92010-10-15 23:12:57 +00004704case $ac_sys_system in
4705AIX*)
4706 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4707esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004708
Jesus Cea6a792292010-05-03 21:18:48 +00004709
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004710AC_SUBST(THREADHEADERS)
4711
4712for h in `(cd $srcdir;echo Python/thread_*.h)`
4713do
4714 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4715done
4716
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004717AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004718SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004719AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004720for dir in $SRCDIRS; do
4721 if test ! -d $dir; then
4722 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004723 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004724done
4725AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004726
Stefan Krah1919b7e2012-03-21 18:25:23 +01004727# Availability of -O2:
4728AC_MSG_CHECKING(for -O2)
4729saved_cflags="$CFLAGS"
4730CFLAGS="-O2"
4731AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
4732]])],[have_O2=yes],[have_O2=no])
4733AC_MSG_RESULT($have_O2)
4734CFLAGS="$saved_cflags"
4735
4736# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
4737# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
4738AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
4739saved_cflags="$CFLAGS"
4740CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
4741if test "$have_O2" = no; then
4742 CFLAGS=""
4743fi
4744AC_RUN_IFELSE([AC_LANG_SOURCE([[
4745#include <stdio.h>
4746#include <stdlib.h>
4747#include <string.h>
4748void foo(void *p, void *q) { memmove(p, q, 19); }
4749int main() {
4750 char a[32] = "123456789000000000";
4751 foo(&a[9], a);
4752 if (strcmp(a, "123456789123456789000000000") != 0)
4753 return 1;
4754 foo(a, &a[9]);
4755 if (strcmp(a, "123456789000000000") != 0)
4756 return 1;
4757 return 0;
4758}
4759]])],
4760[have_glibc_memmove_bug=no],
4761[have_glibc_memmove_bug=yes],
4762[have_glibc_memmove_bug=undefined])
4763CFLAGS="$saved_cflags"
4764AC_MSG_RESULT($have_glibc_memmove_bug)
4765if test "$have_glibc_memmove_bug" = yes; then
4766 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
4767 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
4768 for memmove and bcopy.])
4769fi
4770
4771if test "$have_gcc_asm_for_x87" = yes; then
4772 # Some versions of gcc miscompile inline asm:
4773 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
4774 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
4775 case $CC in
4776 *gcc*)
4777 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
4778 saved_cflags="$CFLAGS"
4779 CFLAGS="-O2"
4780 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4781 __attribute__((noinline)) int
4782 foo(int *p) {
4783 int r;
4784 asm ( "movl \$6, (%1)\n\t"
4785 "xorl %0, %0\n\t"
4786 : "=r" (r) : "r" (p) : "memory"
4787 );
4788 return r;
4789 }
4790 int main() {
4791 int p = 8;
4792 if ((foo(&p) ? : p) != 6)
4793 return 1;
4794 return 0;
4795 }
4796 ]])],
4797 [have_ipa_pure_const_bug=no],
4798 [have_ipa_pure_const_bug=yes],
4799 [have_ipa_pure_const_bug=undefined])
4800 CFLAGS="$saved_cflags"
4801 AC_MSG_RESULT($have_ipa_pure_const_bug)
4802 if test "$have_ipa_pure_const_bug" = yes; then
4803 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
4804 [Define if gcc has the ipa-pure-const bug.])
4805 fi
4806 ;;
4807 esac
4808fi
4809
Ned Deily322f5ba2013-11-21 23:01:59 -08004810# ensurepip option
4811AC_MSG_CHECKING(for ensurepip)
4812AC_ARG_WITH(ensurepip,
4813 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
4814 ["install" or "upgrade" using bundled pip])],
4815 [],
4816 [with_ensurepip=upgrade])
4817AS_CASE($with_ensurepip,
4818 [yes|upgrade],[ENSUREPIP=upgrade],
4819 [install],[ENSUREPIP=install],
4820 [no],[ENSUREPIP=no],
4821 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
4822AC_MSG_RESULT($ENSUREPIP)
4823AC_SUBST(ENSUREPIP)
4824
Guido van Rossum627b2d71993-12-24 10:39:16 +00004825# generate output files
doko@python.org87421192013-01-26 11:39:31 +01004826AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004827AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004828AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004829
Christian Heimes75ed8902013-11-20 01:11:18 +01004830echo "creating Modules/Setup" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004831if test ! -f Modules/Setup
4832then
4833 cp $srcdir/Modules/Setup.dist Modules/Setup
4834fi
4835
Christian Heimes75ed8902013-11-20 01:11:18 +01004836echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004837if test ! -f Modules/Setup.local
4838then
4839 echo "# Edit this file for local setup changes" >Modules/Setup.local
4840fi
4841
Christian Heimes75ed8902013-11-20 01:11:18 +01004842echo "creating Makefile" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004843$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4844 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004845 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004846mv config.c Modules