blob: 263ae15555c9e51922b41887af5c2cf5ce68133f [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)
Larry Hastingsf5002bd2014-03-16 23:05:59 -07006m4_define(PYTHON_VERSION, 3.5)
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
Jack Jansen6b08a402004-06-03 12:41:45 +0000559# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
560# it may influence the way we can build extensions, so distutils
561# needs to check it
562AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000563AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000564CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000565EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000566
Guido van Rossum627b2d71993-12-24 10:39:16 +0000567# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000568
569# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
570# for debug/optimization stuff. BASECFLAGS is for flags that are required
571# just to get things to compile and link. Users are free to override OPT
572# when running configure or make. The build should not break if they do.
573# BASECFLAGS should generally not be messed with, however.
574
575# XXX shouldn't some/most/all of this code be merged with the stuff later
576# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000577AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000578AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000579 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000580[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000581 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000582 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000583 without_gcc=yes;;
584 yes) CC=gcc
585 without_gcc=no;;
586 *) CC=$withval
587 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000588 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000589 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000590 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000591 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000592 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000593 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000594AC_MSG_RESULT($without_gcc)
595
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000596# If the user switches compilers, we can't believe the cache
597if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
598then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000599 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
600(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000601fi
602
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000603# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
604# when the compiler supports them, but we don't always want -O2, and
605# we set -g later.
606if test -z "$CFLAGS"; then
607 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000608fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700609
610if test "$ac_sys_system" = "Darwin"
611then
612 # Compiler selection on MacOSX is more complicated than
613 # AC_PROG_CC can handle, see Mac/README.txt for more
614 # information
615 if test -z "${CC}"
616 then
617 found_gcc=
618 found_clang=
619 as_save_IFS=$IFS; IFS=:
620 for as_dir in $PATH
621 do
622 IFS=$as_save_IFS
623 if test -x $as_dir/gcc; then
624 if test -z "${found_gcc}"; then
625 found_gcc=$as_dir/gcc
626 fi
627 fi
628 if test -x $as_dir/clang; then
629 if test -z "${found_clang}"; then
630 found_clang=$as_dir/clang
631 fi
632 fi
633 done
634 IFS=$as_save_IFS
635
636 if test -n "$found_gcc" -a -n "$found_clang"
637 then
638 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
639 then
640 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
641 CC="$found_clang"
642 CXX="$found_clang++"
643 fi
644
645
646 elif test -z "$found_gcc" -a -n "$found_clang"
647 then
648 AC_MSG_NOTICE([No GCC found, use CLANG])
649 CC="$found_clang"
650 CXX="$found_clang++"
651
652 elif test -z "$found_gcc" -a -z "$found_clang"
653 then
654 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
655 if test -n "${found_clang}"
656 then
657 AC_MSG_NOTICE([Using clang from Xcode.app])
658 CC="${found_clang}"
659 CXX="`/usr/bin/xcrun -find clang++`"
660
661 # else: use default behaviour
662 fi
663 fi
664 fi
665fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000666AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000667
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000668AC_SUBST(CXX)
669AC_SUBST(MAINCC)
670AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
671AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000672 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000673 [compile main() and link python executable with C++ compiler]),
674[
675
676 case $withval in
677 no) with_cxx_main=no
678 MAINCC='$(CC)';;
679 yes) with_cxx_main=yes
680 MAINCC='$(CXX)';;
681 *) with_cxx_main=yes
682 MAINCC=$withval
683 if test -z "$CXX"
684 then
685 CXX=$withval
686 fi;;
687 esac], [
688 with_cxx_main=no
689 MAINCC='$(CC)'
690])
691AC_MSG_RESULT($with_cxx_main)
692
693preset_cxx="$CXX"
694if test -z "$CXX"
695then
696 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200697 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
698 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
699 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000700 esac
701 if test "$CXX" = "notfound"
702 then
703 CXX=""
704 fi
705fi
706if test -z "$CXX"
707then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200708 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000709 if test "$CXX" = "notfound"
710 then
711 CXX=""
712 fi
713fi
714if test "$preset_cxx" != "$CXX"
715then
Christian Heimesfe32aec2013-11-20 01:18:26 +0100716 AC_MSG_NOTICE([
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000717
718 By default, distutils will build C++ extension modules with "$CXX".
719 If this is not intended, then set CXX on the configure command line.
720 ])
721fi
722
723
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200724AC_MSG_CHECKING([for -Wl,--no-as-needed])
725save_LDFLAGS="$LDFLAGS"
726LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
727AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
728 [NO_AS_NEEDED="-Wl,--no-as-needed"
729 AC_MSG_RESULT([yes])],
730 [NO_AS_NEEDED=""
731 AC_MSG_RESULT([no])])
732LDFLAGS="$save_LDFLAGS"
733AC_SUBST(NO_AS_NEEDED)
734
735
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000736# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000737AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000738
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000739# Check for unsupported systems
740case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000741atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000742 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
743 echo See README for details.
744 exit 1;;
745esac
746
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000747AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000748AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000749AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000750 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000751[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000752 case $withval in
753 no) EXEEXT=;;
754 yes) EXEEXT=.exe;;
755 *) EXEEXT=$withval;;
756 esac])
757AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000758
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000759# Test whether we're running on a non-case-sensitive system, in which
760# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000761AC_SUBST(BUILDEXEEXT)
762AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000763if test ! -d CaseSensitiveTestDir; then
764mkdir CaseSensitiveTestDir
765fi
766
767if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000768then
Jack Jansen1999ef42001-12-06 21:47:20 +0000769 AC_MSG_RESULT(yes)
770 BUILDEXEEXT=.exe
771else
772 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000773 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000774fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000775rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000776
Guido van Rossumdd997f71998-10-07 19:58:26 +0000777case $MACHDEP in
778bsdos*)
779 case $CC in
780 gcc) CC="$CC -D_HAVE_BSDI";;
781 esac;;
782esac
783
Guido van Rossum84561611997-08-21 00:08:11 +0000784case $ac_sys_system in
785hp*|HP*)
786 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000787 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000788 esac;;
789esac
790
doko@python.org3e6e2ac2013-01-25 13:12:29 +0100791MULTIARCH=$($CC --print-multiarch 2>/dev/null)
792AC_SUBST(MULTIARCH)
793
Martin v. Löwise8964d42001-03-06 12:09:07 +0000794
Neil Schemenauer61c51152001-01-26 16:18:16 +0000795AC_SUBST(LIBRARY)
796AC_MSG_CHECKING(LIBRARY)
797if test -z "$LIBRARY"
798then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000799 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000800fi
801AC_MSG_RESULT($LIBRARY)
802
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000803# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000804# name of the library into which to insert object files). BLDLIBRARY is also
805# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
806# is blank as the main program is not linked directly against LDLIBRARY.
807# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
808# systems without shared libraries, LDLIBRARY is the same as LIBRARY
809# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
810# DLLLIBRARY is the shared (i.e., DLL) library.
811#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000812# RUNSHARED is used to run shared python without installed libraries
813#
814# INSTSONAME is the name of the shared library that will be use to install
815# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000816#
817# LDVERSION is the shared library version number, normally the Python version
818# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000819AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000820AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000821AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000822AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000823AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000824AC_SUBST(INSTSONAME)
825AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000826AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000827LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000828BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000829INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000830DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000831LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000832RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000833LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000834
Guido van Rossumfb842551997-08-06 23:42:07 +0000835# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000836# If CXX is set, and if it is needed to link a main function that was
837# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
838# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000839# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000840# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000841AC_SUBST(LINKCC)
842AC_MSG_CHECKING(LINKCC)
843if test -z "$LINKCC"
844then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000845 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000846 case $ac_sys_system in
847 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000848 exp_extra="\"\""
849 if test $ac_sys_release -ge 5 -o \
850 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
851 exp_extra="."
852 fi
853 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000854 QNX*)
855 # qcc must be used because the other compilers do not
856 # support -N.
857 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000858 esac
859fi
860AC_MSG_RESULT($LINKCC)
861
Tarek Ziadébe720e02009-05-09 11:55:12 +0000862# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
863# make sure we default having it set to "no": this is used by
864# distutils.unixccompiler to know if it should add --enable-new-dtags
865# to linker command lines, and failing to detect GNU ld simply results
866# in the same bahaviour as before.
867AC_SUBST(GNULD)
868AC_MSG_CHECKING(for GNU ld)
869ac_prog=ld
870if test "$GCC" = yes; then
871 ac_prog=`$CC -print-prog-name=ld`
872fi
873case `"$ac_prog" -V 2>&1 < /dev/null` in
874 *GNU*)
875 GNULD=yes;;
876 *)
877 GNULD=no;;
878esac
879AC_MSG_RESULT($GNULD)
880
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000881AC_C_INLINE
882if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000883 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000884 AC_SUBST(USE_INLINE)
885fi
886
887
Martin v. Löwis1142de32002-03-29 16:28:31 +0000888AC_MSG_CHECKING(for --enable-shared)
889AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000890 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000891
Martin v. Löwis1142de32002-03-29 16:28:31 +0000892if test -z "$enable_shared"
893then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000894 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000895 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000896 enable_shared="yes";;
897 *)
898 enable_shared="no";;
899 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000900fi
901AC_MSG_RESULT($enable_shared)
902
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000903AC_MSG_CHECKING(for --enable-profiling)
904AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +0200905 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
906if test "x$enable_profiling" = xyes; then
907 ac_save_cc="$CC"
Benjamin Peterson615ea1a2013-03-26 08:55:37 -0400908 CC="$CC -pg"
doko@ubuntu.comba015832012-06-30 16:52:05 +0200909 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
910 [],
911 [enable_profiling=no])
912 CC="$ac_save_cc"
913else
914 enable_profiling=no
915fi
916AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000917
doko@ubuntu.comba015832012-06-30 16:52:05 +0200918if test "x$enable_profiling" = xyes; then
919 BASECFLAGS="-pg $BASECFLAGS"
920 LDFLAGS="-pg $LDFLAGS"
921fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000922
923AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000924
Guido van Rossumb8552162001-09-05 14:58:11 +0000925# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
926# library that we build, but we do not want to link against it (we
927# will find it with a -framework option). For this reason there is an
928# extra variable BLDLIBRARY against which Python and the extension
929# modules are linked, BLDLIBRARY. This is normally the same as
930# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000931if test "$enable_framework"
932then
933 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200934 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000935 BLDLIBRARY=''
936else
937 BLDLIBRARY='$(LDLIBRARY)'
938fi
939
Martin v. Löwis1142de32002-03-29 16:28:31 +0000940# Other platforms follow
941if test $enable_shared = "yes"; then
doko@python.org87421192013-01-26 11:39:31 +0100942 PY_ENABLE_SHARED=1
Mark Hammond8235ea12002-07-19 06:55:41 +0000943 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000944 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000945 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000946 LDLIBRARY='libpython$(LDVERSION).dll.a'
947 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000948 ;;
949 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000950 LDLIBRARY='libpython$(LDVERSION).so'
951 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200952 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000953 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000954 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000955 then
956 PY3LIBRARY=libpython3.so
957 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000958 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +0200959 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000960 LDLIBRARY='libpython$(LDVERSION).so'
961 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200962 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000963 case $ac_sys_system in
964 FreeBSD*)
965 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
966 ;;
967 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000968 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000969 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000970 then
971 PY3LIBRARY=libpython3.so
972 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000973 ;;
974 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000975 case `uname -m` in
976 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000977 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000978 ;;
979 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000980 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000981 ;;
982 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000983 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200984 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000985 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000986 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000987 LDLIBRARY='libpython$(LDVERSION).dylib'
988 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200989 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Georg Brandlb1441c72009-01-03 22:33:39 +0000990 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000991 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000992 LDLIBRARY='libpython$(LDVERSION).so'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +0200993 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000994 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000995
Martin v. Löwis1142de32002-03-29 16:28:31 +0000996 esac
Jason Tishler30765592003-09-04 11:04:06 +0000997else # shared is disabled
doko@python.org87421192013-01-26 11:39:31 +0100998 PY_ENABLE_SHARED=0
Jason Tishler30765592003-09-04 11:04:06 +0000999 case $ac_sys_system in
1000 CYGWIN*)
1001 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001002 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +00001003 ;;
1004 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001005fi
1006
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +02001007if test "$cross_compiling" = yes; then
1008 RUNSHARED=
1009fi
1010
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001011AC_MSG_RESULT($LDLIBRARY)
1012
Guido van Rossum627b2d71993-12-24 10:39:16 +00001013AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001014AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +02001015AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +00001016
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001017# tweak ARFLAGS only if the user didn't set it on the command line
1018AC_SUBST(ARFLAGS)
1019if test -z "$ARFLAGS"
1020then
1021 ARFLAGS="rc"
1022fi
1023
doko@ubuntu.com58844492012-06-30 18:25:32 +02001024AC_CHECK_TOOLS([READELF], [readelf], [:])
1025if test "$cross_compiling" = yes; then
1026 case "$READELF" in
1027 readelf|:)
1028 AC_MSG_ERROR([readelf for the host is required for cross builds])
1029 ;;
1030 esac
1031fi
1032AC_SUBST(READELF)
1033
Matthias Klosec4c48422012-10-21 23:05:35 +02001034AC_SUBST(ASDLGEN)
1035AC_CHECK_PROGS(PYTHON, python$PACKAGE_VERSION python3 python, not-found)
Ross Lagerwall1b863eb2012-10-29 17:31:54 +00001036if test "$PYTHON" = not-found; then
Matthias Klosec4c48422012-10-21 23:05:35 +02001037 ASDLGEN="@echo python: $PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
1038else
1039 ASDLGEN="$PYTHON"
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001040fi
1041
Kushal Das02d23a22014-04-15 23:50:06 +05301042AC_SUBST(OPCODEHGEN)
1043AC_CHECK_PROGS(PYTHON, python$PACKAGE_VERSION python3 python, not-found)
1044if test "$PYTHON" = not-found; then
1045 OPCODEHGEN="@echo python: $PYTHON! cannot run Tools/scripts/generate_opcode_h.py"
1046else
1047 OPCODEHGEN="$PYTHON"
1048fi
1049
1050
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001051
Neil Schemenauera42c8272001-03-31 00:01:55 +00001052case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +00001053bsdos*|hp*|HP*)
1054 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001055 if test -z "$INSTALL"
1056 then
1057 INSTALL="${srcdir}/install-sh -c"
1058 fi
1059esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001060AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001061AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001062
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001063# Not every filesystem supports hard links
1064AC_SUBST(LN)
1065if test -z "$LN" ; then
1066 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001067 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001068 *) LN=ln;;
1069 esac
1070fi
1071
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001072# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001073AC_SUBST(ABIFLAGS)
1074ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001075
Fred Drake9f715822001-07-11 06:27:00 +00001076# Check for --with-pydebug
1077AC_MSG_CHECKING(for --with-pydebug)
1078AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001079 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001080[
Fred Drake9f715822001-07-11 06:27:00 +00001081if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001082then
1083 AC_DEFINE(Py_DEBUG, 1,
1084 [Define if you want to build an interpreter with many run-time checks.])
1085 AC_MSG_RESULT(yes);
1086 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001087 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001088else AC_MSG_RESULT(no); Py_DEBUG='false'
1089fi],
1090[AC_MSG_RESULT(no)])
1091
Skip Montanarodecc6a42003-01-01 20:07:49 +00001092# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1093# merged with this chunk of code?
1094
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001095# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001096# ------------------------
1097# (The following bit of code is complicated enough - please keep things
1098# indented properly. Just pretend you're editing Python code. ;-)
1099
1100# There are two parallel sets of case statements below, one that checks to
1101# see if OPT was set and one that does BASECFLAGS setting based upon
1102# compiler and platform. BASECFLAGS tweaks need to be made even if the
1103# user set OPT.
1104
1105# tweak OPT based on compiler and platform, only if the user didn't set
1106# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001107AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001108if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001109then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001110 case $GCC in
1111 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001112 if test "$CC" != 'g++' ; then
1113 STRICT_PROTO="-Wstrict-prototypes"
1114 fi
Christian Heimes38053212007-12-14 01:24:44 +00001115 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1116 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1117 WRAP="-fwrapv"
1118 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001119
1120 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +01001121 case $CC in
1122 *clang*) WRAP="-fwrapv"
1123 ;;
1124 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001125
Skip Montanarodecc6a42003-01-01 20:07:49 +00001126 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001127 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001128 if test "$Py_DEBUG" = 'true' ; then
1129 # Optimization messes up debuggers, so turn it off for
1130 # debug builds.
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001131 if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
1132 OPT="-g -Og -Wall $STRICT_PROTO"
1133 else
1134 OPT="-g -O0 -Wall $STRICT_PROTO"
1135 fi
Fred Drake9f715822001-07-11 06:27:00 +00001136 else
Christian Heimes38053212007-12-14 01:24:44 +00001137 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001138 fi
1139 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001140 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001141 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001142 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001143 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001144 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001145 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1146 ;;
1147 esac
Fred Drake9f715822001-07-11 06:27:00 +00001148 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001149
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001150 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001151 OPT="-O"
1152 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001153 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001154fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001155
Skip Montanarodecc6a42003-01-01 20:07:49 +00001156AC_SUBST(BASECFLAGS)
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001157AC_SUBST(CFLAGS_NODIST)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001158
1159# The -arch flags for universal builds on OSX
1160UNIVERSAL_ARCH_FLAGS=
1161AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1162
Skip Montanarodecc6a42003-01-01 20:07:49 +00001163# tweak BASECFLAGS based on compiler and platform
1164case $GCC in
1165yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001166 # Python doesn't violate C99 aliasing rules, but older versions of
1167 # GCC produce warnings for legal Python code. Enable
1168 # -fno-strict-aliasing on versions of GCC that support but produce
1169 # warnings. See Issue3326
1170 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001171 ac_save_cc="$CC"
1172 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001173 save_CFLAGS="$CFLAGS"
1174 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001175 AC_COMPILE_IFELSE(
1176 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001177 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001178 ],[
1179 CC="$ac_save_cc -fstrict-aliasing"
1180 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1181 AC_COMPILE_IFELSE(
1182 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001183 AC_LANG_PROGRAM([[void f(int **x) {}]],
1184 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001185 ],[
1186 ac_cv_no_strict_aliasing=no
1187 ],[
1188 ac_cv_no_strict_aliasing=yes
1189 ])
1190 ],[
1191 ac_cv_no_strict_aliasing=no
1192 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001193 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001194 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001195 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1196 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001197 then
1198 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1199 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001200
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001201 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1202 ac_save_cc="$CC"
1203 CC="$CC -Wunused-result -Werror"
1204 save_CFLAGS="$CFLAGS"
1205 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1206 AC_COMPILE_IFELSE(
1207 [
1208 AC_LANG_PROGRAM([[]], [[]])
1209 ],[
1210 ac_cv_disable_unused_result_warning=yes
1211 ],[
1212 ac_cv_disable_unused_result_warning=no
1213 ]))
1214 CFLAGS="$save_CFLAGS"
1215 CC="$ac_save_cc"
1216 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
1217
1218 if test $ac_cv_disable_unused_result_warning = yes
1219 then
1220 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
1221 fi
1222
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001223 AC_MSG_CHECKING(for -Werror=declaration-after-statement)
1224 ac_save_cc="$CC"
1225 CC="$CC -Werror=declaration-after-statement"
1226 save_CFLAGS="$CFLAGS"
1227 AC_CACHE_VAL(ac_cv_declaration_after_statement_warning,
1228 AC_COMPILE_IFELSE(
1229 [
1230 AC_LANG_PROGRAM([[]], [[]])
1231 ],[
1232 ac_cv_declaration_after_statement_warning=yes
1233 ],[
1234 ac_cv_declaration_after_statement_warning=no
1235 ]))
1236 CFLAGS="$save_CFLAGS"
1237 CC="$ac_save_cc"
1238 AC_MSG_RESULT($ac_cv_declaration_after_statement_warning)
1239
1240 if test $ac_cv_declaration_after_statement_warning = yes
1241 then
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001242 CFLAGS_NODIST="$CFLAGS_NODIST -Werror=declaration-after-statement"
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001243 fi
1244
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001245 AC_MSG_CHECKING(if we can turn on $CC mixed sign comparison warning)
1246 ac_save_cc="$CC"
1247 CC="$CC -Wsign-compare"
1248 save_CFLAGS="$CFLAGS"
1249 AC_CACHE_VAL(ac_cv_enable_sign_compare_warning,
1250 AC_COMPILE_IFELSE(
1251 [
1252 AC_LANG_PROGRAM([[]], [[]])
1253 ],[
1254 ac_cv_enable_sign_compare_warning=yes
1255 ],[
1256 ac_cv_enable_sign_compare_warning=no
1257 ]))
1258 CFLAGS="$save_CFLAGS"
1259 CC="$ac_save_cc"
1260 AC_MSG_RESULT($ac_cv_enable_sign_compare_warning)
1261
1262 if test $ac_cv_enable_sign_compare_warning = yes
1263 then
1264 BASECFLAGS="$BASECFLAGS -Wsign-compare"
1265 fi
1266
1267 AC_MSG_CHECKING(if we can turn on $CC unreachable code warning)
1268 ac_save_cc="$CC"
1269 CC="$CC -Wunreachable-code"
1270 save_CFLAGS="$CFLAGS"
1271 AC_CACHE_VAL(ac_cv_enable_unreachable_code_warning,
1272 AC_COMPILE_IFELSE(
1273 [
1274 AC_LANG_PROGRAM([[]], [[]])
1275 ],[
1276 ac_cv_enable_unreachable_code_warning=yes
1277 ],[
1278 ac_cv_enable_unreachable_code_warning=no
1279 ]))
1280 CFLAGS="$save_CFLAGS"
1281 CC="$ac_save_cc"
1282 AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning)
1283
1284 # Don't enable unreachable code warning in debug mode, since it usually
1285 # results in non-standard code paths.
1286 if test $ac_cv_enable_unreachable_code_warning = yes && test "$Py_DEBUG" != "true"
1287 then
1288 BASECFLAGS="$BASECFLAGS -Wunreachable-code"
1289 fi
1290
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001291 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1292 # support. Without this, treatment of subnormals doesn't follow
1293 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001294 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001295 alpha*)
1296 BASECFLAGS="$BASECFLAGS -mieee"
1297 ;;
1298 esac
1299
Skip Montanarodecc6a42003-01-01 20:07:49 +00001300 case $ac_sys_system in
1301 SCO_SV*)
1302 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1303 ;;
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001304
Ned Deily87adb6e2013-10-18 21:09:56 -07001305 # is there any other compiler on Darwin besides gcc?
1306 Darwin*)
1307 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1308 # used to be here, but non-Apple gcc doesn't accept them.
1309 if test "${CC}" = gcc
1310 then
1311 AC_MSG_CHECKING(which compiler should be used)
1312 case "${UNIVERSALSDK}" in
1313 */MacOSX10.4u.sdk)
1314 # Build using 10.4 SDK, force usage of gcc when the
1315 # compiler is gcc, otherwise the user will get very
1316 # confusing error messages when building on OSX 10.6
1317 CC=gcc-4.0
1318 CPP=cpp-4.0
1319 ;;
1320 esac
1321 AC_MSG_RESULT($CC)
1322 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001323
Ned Deily87adb6e2013-10-18 21:09:56 -07001324 if test "${enable_universalsdk}"
1325 then
1326 case "$UNIVERSAL_ARCHS" in
1327 32-bit)
1328 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1329 LIPO_32BIT_FLAGS=""
1330 ARCH_RUN_32BIT=""
1331 ;;
1332 64-bit)
1333 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1334 LIPO_32BIT_FLAGS=""
1335 ARCH_RUN_32BIT="true"
1336 ;;
1337 all)
1338 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1339 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1340 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1341 ;;
1342 intel)
1343 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1344 LIPO_32BIT_FLAGS="-extract i386"
1345 ARCH_RUN_32BIT="/usr/bin/arch -i386"
1346 ;;
1347 intel-32)
1348 UNIVERSAL_ARCH_FLAGS="-arch i386"
1349 LIPO_32BIT_FLAGS=""
1350 ARCH_RUN_32BIT=""
1351 ;;
1352 3-way)
1353 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1354 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1355 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1356 ;;
1357 *)
1358 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1359 ;;
1360 esac
Georg Brandlfcaf9102008-07-16 02:17:56 +00001361
Ned Deily87adb6e2013-10-18 21:09:56 -07001362 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1363 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1364 if test "${UNIVERSALSDK}" != "/"
1365 then
1366 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1367 fi
1368 fi
Georg Brandlfcaf9102008-07-16 02:17:56 +00001369
Ned Deily87adb6e2013-10-18 21:09:56 -07001370 # Calculate an appropriate deployment target for this build:
1371 # The deployment target value is used explicitly to enable certain
1372 # features are enabled (such as builtin libedit support for readline)
1373 # through the use of Apple's Availabiliy Macros and is used as a
1374 # component of the string returned by distutils.get_platform().
1375 #
1376 # Use the value from:
1377 # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
1378 # 2. the operating system version of the build machine if >= 10.6
1379 # 3. If running on OS X 10.3 through 10.5, use the legacy tests
1380 # below to pick either 10.3, 10.4, or 10.5 as the target.
1381 # 4. If we are running on OS X 10.2 or earlier, good luck!
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001382
Ned Deily87adb6e2013-10-18 21:09:56 -07001383 AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
Ned Deily36820b62014-06-25 13:44:22 -07001384 cur_target_major=`sw_vers -productVersion | \
1385 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1386 cur_target_minor=`sw_vers -productVersion | \
1387 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1388 cur_target="${cur_target_major}.${cur_target_minor}"
1389 if test ${cur_target_major} -eq 10 && \
1390 test ${cur_target_minor} -ge 3 && \
1391 test ${cur_target_minor} -le 5
Ned Deily87adb6e2013-10-18 21:09:56 -07001392 then
Ned Deily36820b62014-06-25 13:44:22 -07001393 # OS X 10.3 through 10.5
Ned Deily87adb6e2013-10-18 21:09:56 -07001394 cur_target=10.3
1395 if test ${enable_universalsdk}
1396 then
1397 case "$UNIVERSAL_ARCHS" in
1398 all|3-way|intel|64-bit)
1399 # These configurations were first supported in 10.5
1400 cur_target='10.5'
1401 ;;
1402 esac
1403 else
1404 if test `/usr/bin/arch` = "i386"
1405 then
1406 # 10.4 was the first release to support Intel archs
1407 cur_target="10.4"
1408 fi
1409 fi
1410 fi
1411 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001412
Ned Deily87adb6e2013-10-18 21:09:56 -07001413 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1414 # environment with a value that is the same as what we'll use
1415 # in the Makefile to ensure that we'll get the same compiler
1416 # environment during configure and build time.
1417 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1418 export MACOSX_DEPLOYMENT_TARGET
1419 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1420 AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001421
Ned Deily87adb6e2013-10-18 21:09:56 -07001422 # end of Darwin* tests
1423 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001424 esac
1425 ;;
1426
1427*)
1428 case $ac_sys_system in
1429 OpenUNIX*|UnixWare*)
1430 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1431 ;;
1432 SCO_SV*)
1433 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1434 ;;
1435 esac
1436 ;;
1437esac
1438
Fred Drakee1ceaa02001-12-04 20:55:47 +00001439if test "$Py_DEBUG" = 'true'; then
1440 :
1441else
1442 OPT="-DNDEBUG $OPT"
1443fi
1444
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001445if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001446then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001447 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001448fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001449
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001450# On some compilers, pthreads are available without further options
1451# (e.g. MacOS X). On some of these systems, the compiler will not
1452# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1453# So we have to see first whether pthreads are available without
1454# options before we can check whether -Kpthread improves anything.
1455AC_MSG_CHECKING(whether pthreads are available without options)
1456AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001457[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001458#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001459#include <pthread.h>
1460
1461void* routine(void* p){return NULL;}
1462
1463int main(){
1464 pthread_t p;
1465 if(pthread_create(&p,NULL,routine,NULL)!=0)
1466 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001467 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001468 return 0;
1469}
Matthias Kloseb159a552010-04-25 21:00:44 +00001470]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001471 ac_cv_pthread_is_default=yes
1472 ac_cv_kthread=no
1473 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001474],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001475])
1476AC_MSG_RESULT($ac_cv_pthread_is_default)
1477
1478
1479if test $ac_cv_pthread_is_default = yes
1480then
1481 ac_cv_kpthread=no
1482else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001483# -Kpthread, if available, provides the right #defines
1484# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001485# Some compilers won't report that they do not support -Kpthread,
1486# so we need to run a program to see whether it really made the
1487# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001488AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1489AC_CACHE_VAL(ac_cv_kpthread,
1490[ac_save_cc="$CC"
1491CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001492AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001493#include <stdio.h>
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001494#include <pthread.h>
1495
1496void* routine(void* p){return NULL;}
1497
1498int main(){
1499 pthread_t p;
1500 if(pthread_create(&p,NULL,routine,NULL)!=0)
1501 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001502 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001503 return 0;
1504}
Matthias Kloseb159a552010-04-25 21:00:44 +00001505]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001506CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001507AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001508fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001509
Skip Montanarod8d39a02003-07-10 20:44:10 +00001510if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001511then
1512# -Kthread, if available, provides the right #defines
1513# and linker options to make pthread_create available
1514# Some compilers won't report that they do not support -Kthread,
1515# so we need to run a program to see whether it really made the
1516# function available.
1517AC_MSG_CHECKING(whether $CC accepts -Kthread)
1518AC_CACHE_VAL(ac_cv_kthread,
1519[ac_save_cc="$CC"
1520CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001521AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001522#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001523#include <pthread.h>
1524
1525void* routine(void* p){return NULL;}
1526
1527int main(){
1528 pthread_t p;
1529 if(pthread_create(&p,NULL,routine,NULL)!=0)
1530 return 1;
1531 (void)pthread_detach(p);
1532 return 0;
1533}
Matthias Kloseb159a552010-04-25 21:00:44 +00001534]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001535CC="$ac_save_cc"])
1536AC_MSG_RESULT($ac_cv_kthread)
1537fi
1538
Skip Montanarod8d39a02003-07-10 20:44:10 +00001539if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001540then
1541# -pthread, if available, provides the right #defines
1542# and linker options to make pthread_create available
1543# Some compilers won't report that they do not support -pthread,
1544# so we need to run a program to see whether it really made the
1545# function available.
1546AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.org7981f202013-01-25 15:33:25 +01001547AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001548[ac_save_cc="$CC"
1549CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001550AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001551#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001552#include <pthread.h>
1553
1554void* routine(void* p){return NULL;}
1555
1556int main(){
1557 pthread_t p;
1558 if(pthread_create(&p,NULL,routine,NULL)!=0)
1559 return 1;
1560 (void)pthread_detach(p);
1561 return 0;
1562}
Matthias Kloseb159a552010-04-25 21:00:44 +00001563]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001564CC="$ac_save_cc"])
1565AC_MSG_RESULT($ac_cv_pthread)
1566fi
1567
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001568# If we have set a CC compiler flag for thread support then
1569# check if it works for CXX, too.
1570ac_cv_cxx_thread=no
1571if test ! -z "$CXX"
1572then
1573AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1574ac_save_cxx="$CXX"
1575
1576if test "$ac_cv_kpthread" = "yes"
1577then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001578 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001579 ac_cv_cxx_thread=yes
1580elif test "$ac_cv_kthread" = "yes"
1581then
1582 CXX="$CXX -Kthread"
1583 ac_cv_cxx_thread=yes
1584elif test "$ac_cv_pthread" = "yes"
1585then
1586 CXX="$CXX -pthread"
1587 ac_cv_cxx_thread=yes
1588fi
1589
1590if test $ac_cv_cxx_thread = yes
1591then
1592 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1593 $CXX -c conftest.$ac_ext 2>&5
1594 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1595 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1596 then
1597 ac_cv_cxx_thread=yes
1598 else
1599 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001600 fi
1601 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001602fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001603AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001604fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001605CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001606
Fred Drakece81d592000-07-09 14:39:29 +00001607dnl # check for ANSI or K&R ("traditional") preprocessor
1608dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001609dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001610dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1611dnl int foo;
1612dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001613dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001614dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001615
Guido van Rossum627b2d71993-12-24 10:39:16 +00001616# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001617AC_HEADER_STDC
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001618AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001619fcntl.h grp.h \
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001620ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
Benjamin Peterson94b580d2011-08-02 17:30:04 -05001621sched.h shadow.h signal.h stdint.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001622unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001623poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001624sys/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 +01001625sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001626sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001627sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001628sys/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 -07001629libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes985ecdc2013-11-20 11:46:18 +01001630bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h endian.h \
1631sys/endian.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001632AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001633AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001634
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001635# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
1636AC_CHECK_HEADERS([net/if.h], [], [],
1637[#include <stdio.h>
1638#ifdef STDC_HEADERS
1639# include <stdlib.h>
1640# include <stddef.h>
1641#else
1642# ifdef HAVE_STDLIB_H
1643# include <stdlib.h>
1644# endif
1645#endif
1646#ifdef HAVE_SYS_SOCKET_H
1647# include <sys/socket.h>
1648#endif
1649])
1650
Martin v. Löwis11017b12006-01-14 18:12:57 +00001651# On Linux, netlink.h requires asm/types.h
1652AC_CHECK_HEADERS(linux/netlink.h,,,[
1653#ifdef HAVE_ASM_TYPES_H
1654#include <asm/types.h>
1655#endif
1656#ifdef HAVE_SYS_SOCKET_H
1657#include <sys/socket.h>
1658#endif
1659])
1660
Charles-François Natali47413c12011-10-06 19:47:44 +02001661# On Linux, can.h and can/raw.h require sys/socket.h
Charles-François Natali773e42d2013-02-05 19:42:01 +01001662AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
Charles-François Natali47413c12011-10-06 19:47:44 +02001663#ifdef HAVE_SYS_SOCKET_H
1664#include <sys/socket.h>
1665#endif
1666])
1667
Guido van Rossum627b2d71993-12-24 10:39:16 +00001668# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001669was_it_defined=no
1670AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001671AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1672 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1673])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001674AC_MSG_RESULT($was_it_defined)
1675
Neal Norwitz11690112002-07-30 01:08:28 +00001676AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001677AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1678#if defined(MAJOR_IN_MKDEV)
1679#include <sys/mkdev.h>
1680#elif defined(MAJOR_IN_SYSMACROS)
1681#include <sys/sysmacros.h>
1682#else
1683#include <sys/types.h>
1684#endif
1685]], [[
1686 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001687],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001688AC_MSG_RESULT($ac_cv_has_makedev)
1689if test "$ac_cv_has_makedev" = "yes"; then
1690 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1691fi
1692
Christian Heimes985ecdc2013-11-20 11:46:18 +01001693# byte swapping
1694AC_MSG_CHECKING(for le64toh)
1695AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1696#ifdef HAVE_ENDIAN_H
1697#include <endian.h>
1698#elif defined(HAVE_SYS_ENDIAN_H)
1699#include <sys/endian.h>
1700#endif
1701]], [[
1702 le64toh(1) ]])
1703],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
1704AC_MSG_RESULT($ac_cv_has_le64toh)
1705if test "$ac_cv_has_le64toh" = "yes"; then
1706 AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
1707fi
1708
Martin v. Löwis399a6892002-10-04 10:22:02 +00001709# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1710# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1711# defined, but the compiler does not support pragma redefine_extname,
1712# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1713# structures (such as rlimit64) without declaring them. As a
1714# work-around, disable LFS on such configurations
1715
1716use_lfs=yes
1717AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001718AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001719#define _LARGEFILE_SOURCE 1
1720#define _FILE_OFFSET_BITS 64
1721#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001722]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001723AC_MSG_RESULT($sol_lfs_bug)
1724if test "$sol_lfs_bug" = "yes"; then
1725 use_lfs=no
1726fi
1727
1728if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001729# Two defines needed to enable largefile support on various platforms
1730# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001731case $ac_sys_system/$ac_sys_release in
1732AIX*)
1733 AC_DEFINE(_LARGE_FILES, 1,
1734 [This must be defined on AIX systems to enable large file support.])
1735 ;;
1736esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001737AC_DEFINE(_LARGEFILE_SOURCE, 1,
1738[This must be defined on some systems to enable large file support.])
1739AC_DEFINE(_FILE_OFFSET_BITS, 64,
1740[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001741fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001742
Guido van Rossum300fda71996-08-19 21:58:16 +00001743# Add some code to confdefs.h so that the test for off_t works on SCO
1744cat >> confdefs.h <<\EOF
1745#if defined(SCO_DS)
1746#undef _OFF_T
1747#endif
1748EOF
1749
Guido van Rossumef2255b2000-03-10 22:30:29 +00001750# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001751AC_TYPE_MODE_T
1752AC_TYPE_OFF_T
1753AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001754AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001755AC_TYPE_SIZE_T
1756AC_TYPE_UID_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001757
1758# There are two separate checks for each of the exact-width integer types we
1759# need. First we check whether the type is available using the usual
1760# AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
1761# and <stdint.h> where available). We then also use the special type checks of
1762# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
1763# directly, #define's uint32_t to be a suitable type.
1764
1765AC_CHECK_TYPE(uint32_t,
1766 AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001767AC_TYPE_UINT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001768
1769AC_CHECK_TYPE(uint64_t,
1770 AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001771AC_TYPE_UINT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001772
1773AC_CHECK_TYPE(int32_t,
1774 AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001775AC_TYPE_INT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001776
1777AC_CHECK_TYPE(int64_t,
1778 AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00001779AC_TYPE_INT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00001780
Christian Heimes400adb02008-02-01 08:12:03 +00001781AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001782 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01001783AC_CHECK_TYPE(__uint128_t,
1784 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001785
Guido van Rossumef2255b2000-03-10 22:30:29 +00001786# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001787# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001788AC_CHECK_SIZEOF(int, 4)
1789AC_CHECK_SIZEOF(long, 4)
1790AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001791AC_CHECK_SIZEOF(short, 2)
1792AC_CHECK_SIZEOF(float, 4)
1793AC_CHECK_SIZEOF(double, 8)
1794AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001795AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001796AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001797
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001798AC_MSG_CHECKING(for long long support)
1799have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001800AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001801 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1802 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001803],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001804AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001805if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001806AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001807fi
1808
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001809AC_MSG_CHECKING(for long double support)
1810have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001811AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001812 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1813 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001814],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001815AC_MSG_RESULT($have_long_double)
1816if test "$have_long_double" = yes ; then
1817AC_CHECK_SIZEOF(long double, 16)
1818fi
1819
1820
Thomas Woutersb2137042007-02-01 18:02:27 +00001821AC_MSG_CHECKING(for _Bool support)
1822have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001823AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001824 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1825 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001826],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001827AC_MSG_RESULT($have_c99_bool)
1828if test "$have_c99_bool" = yes ; then
1829AC_CHECK_SIZEOF(_Bool, 1)
1830fi
1831
Thomas Wouters89f507f2006-12-13 04:49:30 +00001832AC_CHECK_TYPES(uintptr_t,
1833 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1834 [], [#ifdef HAVE_STDINT_H
1835 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001836 #endif
1837 #ifdef HAVE_INTTYPES_H
1838 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001839 #endif])
1840
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001841AC_CHECK_SIZEOF(off_t, [], [
1842#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001843#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001844#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001845])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001846
1847AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001848if test "$have_long_long" = yes
1849then
1850if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001851 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001852 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1853 [Defined to enable large file support when an off_t is bigger than a long
1854 and long long is available and at least as big as an off_t. You may need
1855 to add some flags for configuration and compilation to enable this mode.
1856 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001857 AC_MSG_RESULT(yes)
1858else
1859 AC_MSG_RESULT(no)
1860fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001861else
1862 AC_MSG_RESULT(no)
1863fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001864
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001865AC_CHECK_SIZEOF(time_t, [], [
1866#ifdef HAVE_SYS_TYPES_H
1867#include <sys/types.h>
1868#endif
1869#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001870#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001871#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001872])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001873
Trent Mick635f6fb2000-08-23 21:33:05 +00001874# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001875ac_save_cc="$CC"
1876if test "$ac_cv_kpthread" = "yes"
1877then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001878elif test "$ac_cv_kthread" = "yes"
1879then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001880elif test "$ac_cv_pthread" = "yes"
1881then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001882fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001883
Trent Mick635f6fb2000-08-23 21:33:05 +00001884AC_MSG_CHECKING(for pthread_t)
1885have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001886AC_COMPILE_IFELSE([
1887 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1888],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001889AC_MSG_RESULT($have_pthread_t)
1890if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001891 AC_CHECK_SIZEOF(pthread_t, [], [
1892#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001893#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001894#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001895 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001896fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001897CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001898
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001899AC_SUBST(OTHER_LIBTOOL_OPT)
1900case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001901 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001902 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1903 ;;
1904 Darwin/*)
1905 OTHER_LIBTOOL_OPT=""
1906 ;;
1907esac
1908
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001909
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001910AC_SUBST(LIBTOOL_CRUFT)
1911case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001912 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001913 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1914 if test "${enable_universalsdk}"; then
1915 :
1916 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001917 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001918 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001919 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001920 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001921 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001922 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001923 if test ${gcc_version} '<' 4.0
1924 then
1925 LIBTOOL_CRUFT="-lcc_dynamic"
1926 else
1927 LIBTOOL_CRUFT=""
1928 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001929 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001930 #include <unistd.h>
1931 int main(int argc, char*argv[])
1932 {
1933 if (sizeof(long) == 4) {
1934 return 0;
1935 } else {
1936 return 1;
1937 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001938 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001939 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001940
1941 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001942 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001943 i386)
1944 MACOSX_DEFAULT_ARCH="i386"
1945 ;;
1946 ppc)
1947 MACOSX_DEFAULT_ARCH="ppc"
1948 ;;
1949 *)
1950 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1951 ;;
1952 esac
1953 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001954 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001955 i386)
1956 MACOSX_DEFAULT_ARCH="x86_64"
1957 ;;
1958 ppc)
1959 MACOSX_DEFAULT_ARCH="ppc64"
1960 ;;
1961 *)
1962 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1963 ;;
1964 esac
1965
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001966 fi
1967
1968 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001969 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001970 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001971esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001972AC_MSG_CHECKING(for --enable-framework)
1973if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001974then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001975 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001976 # -F. is needed to allow linking to the framework while
1977 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001978 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1979 [Define if you want to produce an OpenStep/Rhapsody framework
1980 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001981 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001982 if test $enable_shared = "yes"
1983 then
1984 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1985 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001986else
1987 AC_MSG_RESULT(no)
1988fi
1989
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001990AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001991case $ac_sys_system/$ac_sys_release in
1992 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001993 AC_DEFINE(WITH_DYLD, 1,
1994 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1995 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1996 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001997 AC_MSG_RESULT(always on for Darwin)
1998 ;;
1999 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002000 AC_MSG_RESULT(no)
2001 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002002esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002003
Guido van Rossumac405f61994-09-12 10:56:06 +00002004# Set info about shared libraries.
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002005AC_SUBST(SHLIB_SUFFIX)
Guido van Rossumac405f61994-09-12 10:56:06 +00002006AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002007AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002008AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002009AC_SUBST(CCSHARED)
2010AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00002011
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002012# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
2013# -- usually .so, .sl on HP-UX, .dll on Cygwin
2014AC_MSG_CHECKING(the extension of shared libraries)
2015if test -z "$SHLIB_SUFFIX"; then
2016 case $ac_sys_system in
2017 hp*|HP*)
2018 case `uname -m` in
2019 ia64) SHLIB_SUFFIX=.so;;
2020 *) SHLIB_SUFFIX=.sl;;
2021 esac
2022 ;;
2023 CYGWIN*) SHLIB_SUFFIX=.dll;;
2024 *) SHLIB_SUFFIX=.so;;
2025 esac
2026fi
2027AC_MSG_RESULT($SHLIB_SUFFIX)
2028
Guido van Rossumac405f61994-09-12 10:56:06 +00002029# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00002030# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002031# (Shared libraries in this instance are shared modules to be loaded into
2032# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002033AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002034if test -z "$LDSHARED"
2035then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002036 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002037 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00002038 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00002039 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002040 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002041 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00002042 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00002043 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002044 if test "$GCC" = "yes" ; then
2045 LDSHARED='$(CC) -shared'
2046 LDCXXSHARED='$(CXX) -shared'
2047 else
2048 LDSHARED='$(CC) -G'
2049 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00002050 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002051 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002052 if test "$GCC" = "yes" ; then
2053 LDSHARED='$(CC) -shared'
2054 LDCXXSHARED='$(CXX) -shared'
2055 else
2056 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002057 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00002058 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002059 LDSHARED='$(CC) -bundle'
2060 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002061 if test "$enable_framework" ; then
2062 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002063 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2064 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002065 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002066 else
2067 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002068 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002069 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002070 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002071 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002072 LDSHARED='$(CC) -bundle'
2073 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002074 if test "$enable_framework" ; then
2075 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002076 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2077 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002078 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002079 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002080 # No framework, use the Python app as bundle-loader
2081 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002082 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002083 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002084 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002085 Darwin/*)
2086 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2087 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00002088
Ned Deily36820b62014-06-25 13:44:22 -07002089 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2090 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2091 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2092 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2093 if test ${dep_target_major} -eq 10 && \
2094 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002095 then
Ned Deily36820b62014-06-25 13:44:22 -07002096 # building for OS X 10.0 through 10.2
Antoine Pitroud4958c22010-10-13 17:01:10 +00002097 LDSHARED='$(CC) -bundle'
2098 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002099 if test "$enable_framework" ; then
2100 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002101 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2102 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002103 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002104 else
2105 # No framework, use the Python app as bundle-loader
2106 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2107 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002108 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002109 fi
Ned Deily36820b62014-06-25 13:44:22 -07002110 else
2111 # building for OS X 10.3 and later
2112 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2113 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2114 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002115 fi
2116 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002117 Linux*|GNU*|QNX*)
2118 LDSHARED='$(CC) -shared'
2119 LDCXXSHARED='$(CXX) -shared';;
2120 BSD/OS*/4*)
2121 LDSHARED="gcc -shared"
2122 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002123 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002124 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002125 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002126 LDSHARED='$(CC) -shared'
2127 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002128 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00002129 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002130 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002131 OpenBSD*)
2132 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2133 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002134 LDSHARED='$(CC) -shared $(CCSHARED)'
2135 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002136 else
2137 case `uname -r` in
2138 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2139 LDSHARED="ld -Bshareable ${LDFLAGS}"
2140 ;;
2141 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002142 LDSHARED='$(CC) -shared $(CCSHARED)'
2143 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002144 ;;
2145 esac
2146 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002147 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00002148 LDSHARED='$(CC) -shared'
2149 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002150 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002151 if test "$GCC" = "yes" ; then
2152 LDSHARED='$(CC) -shared'
2153 LDCXXSHARED='$(CXX) -shared'
2154 else
2155 LDSHARED='$(CC) -G'
2156 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002157 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002158 SCO_SV*)
2159 LDSHARED='$(CC) -Wl,-G,-Bexport'
2160 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2161 CYGWIN*)
2162 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2163 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002164 *) LDSHARED="ld";;
2165 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002166fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002167AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002168LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002169BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002170# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002171# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002172AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002173if test -z "$CCSHARED"
2174then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002175 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002176 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002177 then CCSHARED="-fPIC";
2178 elif test `uname -p` = sparc;
2179 then CCSHARED="-xcode=pic32";
2180 else CCSHARED="-Kpic";
2181 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002182 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002183 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002184 else CCSHARED="+z";
2185 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002186 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002187 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002188 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002189 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002190 if test "$GCC" = "yes"
2191 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002192 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002193 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002194 SCO_SV*)
2195 if test "$GCC" = "yes"
2196 then CCSHARED="-fPIC"
2197 else CCSHARED="-Kpic -belf"
2198 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002199 IRIX*/6*) case $CC in
2200 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002201 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002202 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002203 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002204fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002205AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002206# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002207# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002208AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002209if test -z "$LINKFORSHARED"
2210then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002211 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002212 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002213 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002214 LINKFORSHARED="-Wl,-E -Wl,+s";;
2215# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002216 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002217 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002218 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002219 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002220 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Łukasz Langa335ab5b2013-05-30 20:58:53 +02002221
2222 # Issue #18075: the default maximum stack size (8MBytes) is too
2223 # small for the default recursion limit. Increase the stack size
2224 # to ensure that tests don't crash
2225 LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
2226
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002227 if test "$enable_framework"
2228 then
Jack Jansenda49e192005-01-07 13:08:22 +00002229 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002230 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002231 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002232 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002233 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002234 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002235 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002236 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2237 then
2238 LINKFORSHARED="-Wl,--export-dynamic"
2239 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002240 SunOS/5*) case $CC in
2241 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002242 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002243 then
2244 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002245 fi;;
2246 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002247 CYGWIN*)
2248 if test $enable_shared = "no"
2249 then
2250 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2251 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002252 QNX*)
2253 # -Wl,-E causes the symbols to be added to the dynamic
2254 # symbol table so that they can be found when a module
2255 # is loaded. -N 2048K causes the stack size to be set
2256 # to 2048 kilobytes so that the stack doesn't overflow
2257 # when running test_compile.py.
2258 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002259 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002260fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002261AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002262
Georg Brandl93de2162008-07-16 02:21:06 +00002263
Neil Schemenauer61c51152001-01-26 16:18:16 +00002264AC_SUBST(CFLAGSFORSHARED)
2265AC_MSG_CHECKING(CFLAGSFORSHARED)
2266if test ! "$LIBRARY" = "$LDLIBRARY"
2267then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002268 case $ac_sys_system in
2269 CYGWIN*)
2270 # Cygwin needs CCSHARED when building extension DLLs
2271 # but not when building the interpreter DLL.
2272 CFLAGSFORSHARED='';;
2273 *)
2274 CFLAGSFORSHARED='$(CCSHARED)'
2275 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002276fi
2277AC_MSG_RESULT($CFLAGSFORSHARED)
2278
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002279# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2280# library (with --enable-shared).
2281# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002282# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2283# if it is not required, since it creates a dependency of the shared library
2284# to LIBS. This, in turn, means that applications linking the shared libpython
2285# don't need to link LIBS explicitly. The default should be only changed
2286# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002287AC_SUBST(SHLIBS)
2288AC_MSG_CHECKING(SHLIBS)
2289case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002290 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002291 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002292esac
2293AC_MSG_RESULT($SHLIBS)
2294
2295
Guido van Rossum627b2d71993-12-24 10:39:16 +00002296# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002297AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002298AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2299AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Victor Stinnerbeeb5122014-11-28 13:28:25 +01002300AC_CHECK_LIB(crypto, RAND_egd,
2301 AC_DEFINE(HAVE_RAND_EGD, 1,
2302 [Define if the libcrypto has RAND_egd]))
Martin v. Löwis519adae2003-09-20 10:47:47 +00002303
Georg Brandleee31162008-12-07 15:15:22 +00002304# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002305if test "$with_threads" = "yes" -o -z "$with_threads"; then
2306 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2307 # posix4 on Solaris 2.6
2308 # pthread (first!) on Linux
2309fi
2310
Martin v. Löwis19d17342003-06-14 21:03:05 +00002311# check if we need libintl for locale functions
2312AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002313 [AC_DEFINE(WITH_LIBINTL, 1,
2314 [Define to 1 if libintl is needed for locale functions.])
2315 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002316
2317# checks for system dependent C++ extensions support
2318case "$ac_sys_system" in
2319 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002320 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002321 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002322 [[loadAndInit("", 0, "")]])
2323 ],[
2324 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002325 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2326 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002327 AC_MSG_RESULT(yes)
2328 ],[
2329 AC_MSG_RESULT(no)
2330 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002331 *) ;;
2332esac
2333
Christian Heimes985ecdc2013-11-20 11:46:18 +01002334# check for systems that require aligned memory access
2335AC_MSG_CHECKING(aligned memory access is required)
2336AC_TRY_RUN([
2337int main()
2338{
2339 char s[16];
2340 int i, *p1, *p2;
2341 for (i=0; i < 16; i++)
2342 s[i] = i;
2343 p1 = (int*)(s+1);
2344 p2 = (int*)(s+2);
2345 if (*p1 == *p2)
2346 return 1;
2347 return 0;
2348}
2349 ],
2350 [aligned_required=no],
2351 [aligned_required=yes],
2352 [aligned_required=yes])
2353
2354if test "$aligned_required" = yes ; then
2355 AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
2356 [Define if aligned memory access is required])
2357fi
2358AC_MSG_RESULT($aligned_required)
2359
2360
2361# str, bytes and memoryview hash algorithm
2362AH_TEMPLATE(Py_HASH_ALGORITHM,
2363 [Define hash algorithm for str, bytes and memoryview.
2364 SipHash24: 1, FNV: 2, externally defined: 0])
2365
2366AC_MSG_CHECKING(for --with-hash-algorithm)
2367dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
2368AC_ARG_WITH(hash_algorithm,
2369 AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
2370 [select hash algorithm]),
2371[
2372AC_MSG_RESULT($withval)
2373case "$withval" in
2374 siphash24)
2375 AC_DEFINE(Py_HASH_ALGORITHM, 1)
2376 ;;
2377 fnv)
2378 AC_DEFINE(Py_HASH_ALGORITHM, 2)
2379 ;;
2380 *)
2381 AC_MSG_ERROR([unknown hash algorithm '$withval'])
2382 ;;
2383esac
2384],
2385[AC_MSG_RESULT(default)])
2386
Charles-François Natalid30b0222014-05-08 23:08:51 +01002387AC_MSG_CHECKING(for --with-address-sanitizer)
2388AC_ARG_WITH(address_sanitizer,
2389 AS_HELP_STRING([--with-address-sanitizer],
2390 [enable AddressSanitizer]),
2391[
2392AC_MSG_RESULT($withval)
2393BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
2394LDFLAGS="-fsanitize=address $LDFLAGS"
2395],
2396[AC_MSG_RESULT(no)])
2397
Guido van Rossum70c7f481998-03-26 18:44:10 +00002398# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002399AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002400AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002401
Guido van Rossumc5a39031996-07-31 17:35:03 +00002402AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002403AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002404 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002405[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002406AC_MSG_RESULT($withval)
2407LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002408],
2409[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002410
Benjamin Peterson0f3cde12014-12-15 00:00:23 -05002411PKG_PROG_PKG_CONFIG
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002412
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002413# Check for use of the system expat library
2414AC_MSG_CHECKING(for --with-system-expat)
2415AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002416 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2417 [],
2418 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002419
2420AC_MSG_RESULT($with_system_expat)
2421
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002422# Check for use of the system libffi library
2423AC_MSG_CHECKING(for --with-system-ffi)
2424AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002425 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2426 [],
2427 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002428
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002429if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002430 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2431else
2432 LIBFFI_INCLUDEDIR=""
2433fi
2434AC_SUBST(LIBFFI_INCLUDEDIR)
2435
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002436AC_MSG_RESULT($with_system_ffi)
2437
Stefan Krah60187b52012-03-23 19:06:27 +01002438# Check for use of the system libmpdec library
2439AC_MSG_CHECKING(for --with-system-libmpdec)
2440AC_ARG_WITH(system_libmpdec,
2441 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2442 [],
2443 [with_system_libmpdec="no"])
2444
2445AC_MSG_RESULT($with_system_libmpdec)
2446
Benjamin Peterson076ed002010-10-31 17:11:02 +00002447# Check for support for loadable sqlite extensions
2448AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2449AC_ARG_ENABLE(loadable-sqlite-extensions,
2450 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2451 [],
2452 [enable_loadable_sqlite_extensions="no"])
2453
2454AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2455
Ned Deilyd819b932013-09-06 01:07:05 -07002456# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2457AC_SUBST(TCLTK_INCLUDES)
2458AC_SUBST(TCLTK_LIBS)
2459AC_MSG_CHECKING(for --with-tcltk-includes)
2460AC_ARG_WITH(tcltk-includes,
2461 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2462 [],
2463 [with_tcltk_includes="default"])
2464AC_MSG_RESULT($with_tcltk_includes)
2465AC_MSG_CHECKING(for --with-tcltk-libs)
2466AC_ARG_WITH(tcltk-libs,
2467 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2468 [],
2469 [with_tcltk_libs="default"])
2470AC_MSG_RESULT($with_tcltk_libs)
2471if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
2472then
2473 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
2474 then
2475 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
2476 fi
2477 TCLTK_INCLUDES=""
2478 TCLTK_LIBS=""
2479else
2480 TCLTK_INCLUDES="$with_tcltk_includes"
2481 TCLTK_LIBS="$with_tcltk_libs"
2482fi
2483
Matthias Klose55708cc2009-04-30 08:06:49 +00002484# Check for --with-dbmliborder
2485AC_MSG_CHECKING(for --with-dbmliborder)
2486AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002487 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 +00002488[
2489if test x$with_dbmliborder = xyes
2490then
2491AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2492else
2493 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2494 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2495 then
2496 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2497 fi
2498 done
2499fi])
2500AC_MSG_RESULT($with_dbmliborder)
2501
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002502# Determine if signalmodule should be used.
2503AC_SUBST(USE_SIGNAL_MODULE)
2504AC_SUBST(SIGNAL_OBJS)
2505AC_MSG_CHECKING(for --with-signal-module)
2506AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002507 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002508
2509if test -z "$with_signal_module"
2510then with_signal_module="yes"
2511fi
2512AC_MSG_RESULT($with_signal_module)
2513
2514if test "${with_signal_module}" = "yes"; then
2515 USE_SIGNAL_MODULE=""
2516 SIGNAL_OBJS=""
2517else
2518 USE_SIGNAL_MODULE="#"
2519 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2520fi
2521
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002522# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002523AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002524USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002525
Guido van Rossum54d93d41997-01-22 20:51:58 +00002526AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002527
Martin v. Löwis11437992002-04-12 09:54:03 +00002528# Templates for things AC_DEFINEd more than once.
2529# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002530AH_TEMPLATE(_REENTRANT,
2531 [Define to force use of thread-safe errno, h_errno, and other functions])
2532AH_TEMPLATE(WITH_THREAD,
2533 [Define if you want to compile in rudimentary thread support])
2534
Guido van Rossum54d93d41997-01-22 20:51:58 +00002535AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002536dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002537AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002538 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002539
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002540# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002541dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002542AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002543 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002544 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002545
2546if test -z "$with_threads"
2547then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002548fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002549AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002550
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002551AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002552if test "$with_threads" = "no"
2553then
2554 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002555elif test "$ac_cv_pthread_is_default" = yes
2556then
2557 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002558 # Defining _REENTRANT on system with POSIX threads should not hurt.
2559 AC_DEFINE(_REENTRANT)
2560 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002561 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002562elif test "$ac_cv_kpthread" = "yes"
2563then
2564 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002565 if test "$ac_cv_cxx_thread" = "yes"; then
2566 CXX="$CXX -Kpthread"
2567 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002568 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002569 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002570 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002571elif test "$ac_cv_kthread" = "yes"
2572then
2573 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002574 if test "$ac_cv_cxx_thread" = "yes"; then
2575 CXX="$CXX -Kthread"
2576 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002577 AC_DEFINE(WITH_THREAD)
2578 posix_threads=yes
2579 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002580elif test "$ac_cv_pthread" = "yes"
2581then
2582 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002583 if test "$ac_cv_cxx_thread" = "yes"; then
2584 CXX="$CXX -pthread"
2585 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002586 AC_DEFINE(WITH_THREAD)
2587 posix_threads=yes
2588 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002589else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002590 if test ! -z "$with_threads" -a -d "$with_threads"
2591 then LDFLAGS="$LDFLAGS -L$with_threads"
2592 fi
2593 if test ! -z "$withval" -a -d "$withval"
2594 then LDFLAGS="$LDFLAGS -L$withval"
2595 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002596
2597 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002598 # define _POSIX_THREADS in unistd.h. Some apparently don't
2599 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002600 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2601 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002602 [
2603#include <unistd.h>
2604#ifdef _POSIX_THREADS
2605yes
2606#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002607 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2608 AC_MSG_RESULT($unistd_defines_pthreads)
2609
Martin v. Löwis130fb172001-07-19 11:00:41 +00002610 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002611 # Just looking for pthread_create in libpthread is not enough:
2612 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2613 # So we really have to include pthread.h, and then link.
2614 _libs=$LIBS
2615 LIBS="$LIBS -lpthread"
2616 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krah7dba5942012-11-22 22:49:11 +01002617 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2618#include <stdio.h>
2619#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002620
Matthias Kloseb159a552010-04-25 21:00:44 +00002621void * start_routine (void *arg) { exit (0); }]], [[
2622pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002623 AC_MSG_RESULT(yes)
2624 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002625 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002626 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002627 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002628 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002629 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002630 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002631 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002632 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002633 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002634 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002635 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002636 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002637 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002638 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002639 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002640 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002641 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002642 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002643 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002644 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002645 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002646 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002647 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02002648 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002649
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002650 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2651 LIBS="$LIBS -lmpc"
2652 THREADOBJ="Python/thread.o"
2653 USE_THREAD_MODULE=""])
2654
2655 if test "$posix_threads" != "yes"; then
2656 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2657 LIBS="$LIBS -lthread"
2658 THREADOBJ="Python/thread.o"
2659 USE_THREAD_MODULE=""])
2660 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002661fi
2662
2663if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002664 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002665 AC_DEFINE(_POSIX_THREADS, 1,
2666 [Define if you have POSIX threads,
2667 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002668 fi
2669
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002670 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2671 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002672 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002673 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002674 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002675 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002676 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002677 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002678 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002679 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002680 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002681 esac
2682
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002683 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2684 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krah7dba5942012-11-22 22:49:11 +01002685 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
2686 #include <stdio.h>
2687 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002688 void *foo(void *parm) {
2689 return NULL;
2690 }
2691 main() {
2692 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002693 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002694 if (pthread_attr_init(&attr)) exit(-1);
2695 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002696 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002697 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002698 }]])],
2699 [ac_cv_pthread_system_supported=yes],
2700 [ac_cv_pthread_system_supported=no],
2701 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002702 ])
2703 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2704 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002705 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002706 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002707 AC_CHECK_FUNCS(pthread_sigmask,
2708 [case $ac_sys_system in
2709 CYGWIN*)
2710 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2711 [Define if pthread_sigmask() does not work on your system.])
2712 ;;
2713 esac])
Christian Heimesf77b4b22013-08-21 13:26:05 +02002714 AC_CHECK_FUNCS(pthread_atfork)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002715fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002716
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002717
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002718# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002719AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002720AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002721AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002722[ --enable-ipv6 Enable ipv6 (with ipv4) support
2723 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002724[ case "$enableval" in
2725 no)
2726 AC_MSG_RESULT(no)
2727 ipv6=no
2728 ;;
2729 *) AC_MSG_RESULT(yes)
2730 AC_DEFINE(ENABLE_IPV6)
2731 ipv6=yes
2732 ;;
2733 esac ],
2734
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002735[
2736dnl the check does not work on cross compilation case...
Charles-François Natalif6fd7942013-01-08 19:49:42 +01002737 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002738#include <sys/types.h>
Charles-François Natalif6fd7942013-01-08 19:49:42 +01002739#include <sys/socket.h>]],
2740[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002741 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002742 ipv6=yes
2743],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002744 AC_MSG_RESULT(no)
2745 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002746])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002747
2748if test "$ipv6" = "yes"; then
2749 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002750 AC_COMPILE_IFELSE([
2751 AC_LANG_PROGRAM([[#include <sys/types.h>
2752#include <netinet/in.h>]],
2753 [[struct sockaddr_in6 x;
2754 x.sin6_scope_id;]])
2755 ],[
2756 AC_MSG_RESULT(yes)
2757 ipv6=yes
2758 ],[
2759 AC_MSG_RESULT(no, IPv6 disabled)
2760 ipv6=no
2761 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002762fi
2763
2764if test "$ipv6" = "yes"; then
2765 AC_DEFINE(ENABLE_IPV6)
2766fi
2767])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002768
2769ipv6type=unknown
2770ipv6lib=none
2771ipv6trylibc=no
2772
2773if test "$ipv6" = "yes"; then
2774 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002775 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2776 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002777 case $i in
2778 inria)
2779 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002780 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002781#include <netinet/in.h>
2782#ifdef IPV6_INRIA_VERSION
2783yes
2784#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002785 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002786 ;;
2787 kame)
2788 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002789 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002790#include <netinet/in.h>
2791#ifdef __KAME__
2792yes
2793#endif],
2794 [ipv6type=$i;
2795 ipv6lib=inet6
2796 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002797 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002798 ;;
2799 linux-glibc)
2800 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002801 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002802#include <features.h>
2803#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2804yes
2805#endif],
2806 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002807 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002808 ;;
2809 linux-inet6)
2810 dnl http://www.v6.linux.or.jp/
2811 if test -d /usr/inet6; then
2812 ipv6type=$i
2813 ipv6lib=inet6
2814 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002815 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002816 fi
2817 ;;
2818 solaris)
2819 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002820 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002821 ipv6type=$i
2822 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002823 fi
2824 fi
2825 ;;
2826 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002827 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002828#include <sys/param.h>
2829#ifdef _TOSHIBA_INET6
2830yes
2831#endif],
2832 [ipv6type=$i;
2833 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002834 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002835 ;;
2836 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002837 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002838#include </usr/local/v6/include/sys/v6config.h>
2839#ifdef __V6D__
2840yes
2841#endif],
2842 [ipv6type=$i;
2843 ipv6lib=v6;
2844 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002845 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002846 ;;
2847 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002848 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002849#include <sys/param.h>
2850#ifdef _ZETA_MINAMI_INET6
2851yes
2852#endif],
2853 [ipv6type=$i;
2854 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002855 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002856 ;;
2857 esac
2858 if test "$ipv6type" != "unknown"; then
2859 break
2860 fi
2861 done
2862 AC_MSG_RESULT($ipv6type)
2863fi
2864
2865if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2866 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2867 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2868 echo "using lib$ipv6lib"
2869 else
2870 if test $ipv6trylibc = "yes"; then
2871 echo "using libc"
2872 else
2873 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2874 echo "You need to fetch lib$ipv6lib.a from appropriate"
2875 echo 'ipv6 kit and compile beforehand.'
2876 exit 1
2877 fi
2878 fi
2879fi
2880
Georg Brandl93de2162008-07-16 02:21:06 +00002881AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002882AC_COMPILE_IFELSE([
2883 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2884],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002885 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002886 AC_MSG_RESULT(yes)
2887],[
Georg Brandl93de2162008-07-16 02:21:06 +00002888 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002889])
Georg Brandl93de2162008-07-16 02:21:06 +00002890
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002891# Check for --with-doc-strings
2892AC_MSG_CHECKING(for --with-doc-strings)
2893AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002894 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002895
2896if test -z "$with_doc_strings"
2897then with_doc_strings="yes"
2898fi
2899if test "$with_doc_strings" != "no"
2900then
2901 AC_DEFINE(WITH_DOC_STRINGS, 1,
2902 [Define if you want documentation strings in extension modules])
2903fi
2904AC_MSG_RESULT($with_doc_strings)
2905
Georg Brandl9976a512010-08-02 21:02:36 +00002906# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002907AC_MSG_CHECKING(for --with-tsc)
2908AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002909 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002910if test "$withval" != no
2911then
2912 AC_DEFINE(WITH_TSC, 1,
2913 [Define to profile with the Pentium timestamp counter])
2914 AC_MSG_RESULT(yes)
2915else AC_MSG_RESULT(no)
2916fi],
2917[AC_MSG_RESULT(no)])
2918
2919# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002920AC_MSG_CHECKING(for --with-pymalloc)
2921AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002922 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002923
2924if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002925then
2926 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002927fi
2928if test "$with_pymalloc" != "no"
2929then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002930 AC_DEFINE(WITH_PYMALLOC, 1,
2931 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002932 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002933fi
2934AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002935
Benjamin Peterson05159c42009-12-03 03:01:27 +00002936# Check for Valgrind support
2937AC_MSG_CHECKING([for --with-valgrind])
2938AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002939 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002940 with_valgrind=no)
2941AC_MSG_RESULT([$with_valgrind])
2942if test "$with_valgrind" != no; then
2943 AC_CHECK_HEADER([valgrind/valgrind.h],
2944 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2945 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2946 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002947 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002948fi
2949
Guido van Rossum68242b51996-05-28 22:53:03 +00002950# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002951AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002952DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002953
Guido van Rossume97ee181999-12-20 21:27:22 +00002954# the dlopen() function means we might want to use dynload_shlib.o. some
2955# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002956AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002957
2958# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2959# loading of modules.
2960AC_SUBST(DYNLOADFILE)
2961AC_MSG_CHECKING(DYNLOADFILE)
2962if test -z "$DYNLOADFILE"
2963then
2964 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002965 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2966 if test "$ac_cv_func_dlopen" = yes
2967 then DYNLOADFILE="dynload_shlib.o"
2968 else DYNLOADFILE="dynload_aix.o"
2969 fi
2970 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002971 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002972 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2973 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002974 *)
2975 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2976 # out any dynamic loading
2977 if test "$ac_cv_func_dlopen" = yes
2978 then DYNLOADFILE="dynload_shlib.o"
2979 else DYNLOADFILE="dynload_stub.o"
2980 fi
2981 ;;
2982 esac
2983fi
2984AC_MSG_RESULT($DYNLOADFILE)
2985if test "$DYNLOADFILE" != "dynload_stub.o"
2986then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2988 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002989fi
2990
Jack Jansenc49e5b72001-06-19 15:00:23 +00002991# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2992
2993AC_SUBST(MACHDEP_OBJS)
2994AC_MSG_CHECKING(MACHDEP_OBJS)
2995if test -z "$MACHDEP_OBJS"
2996then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002997 MACHDEP_OBJS=$extra_machdep_objs
2998else
2999 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00003000fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003001if test -z "$MACHDEP_OBJS"; then
3002 AC_MSG_RESULT([none])
3003else
3004 AC_MSG_RESULT([$MACHDEP_OBJS])
3005fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00003006
Guido van Rossum627b2d71993-12-24 10:39:16 +00003007# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00003008AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Victor Stinnerdaf45552013-08-28 00:53:59 +02003009 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003010 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Victor Stinner4d6a3d62014-12-21 01:16:38 +01003011 futimens futimes gai_strerror getentropy \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02003012 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00003013 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07003014 if_nameindex \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01003015 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
3016 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02003017 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003018 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02003019 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00003020 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00003021 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00003022 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02003023 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
3024 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02003025 sigaction sigaltstack siginterrupt sigpending sigrelse \
3026 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00003027 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003028 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
Victor Stinnercd777ea2013-04-08 22:43:44 +02003029 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003030
Gregory P. Smithdf300d52012-01-21 18:20:15 -08003031AC_CHECK_DECL(dirfd,
3032 AC_DEFINE(HAVE_DIRFD, 1,
3033 Define if you have the 'dirfd' function or macro.), ,
3034 [#include <sys/types.h>
3035 #include <dirent.h>])
3036
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003037# For some functions, having a definition is not sufficient, since
3038# we want to take their address.
3039AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00003040AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
3041 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
3042 AC_MSG_RESULT(yes)],
3043 [AC_MSG_RESULT(no)
3044])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003045AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00003046AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
3047 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
3048 AC_MSG_RESULT(yes)],
3049 [AC_MSG_RESULT(no)
3050])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003051AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00003052AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
3053 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
3054 AC_MSG_RESULT(yes)],
3055 [AC_MSG_RESULT(no)
3056])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003057AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00003058AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
3059 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
3060 AC_MSG_RESULT(yes)],
3061 [AC_MSG_RESULT(no)
3062])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003063AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003064AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3065 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3066 AC_MSG_RESULT(yes)],
3067 [AC_MSG_RESULT(no)
3068])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003069AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003070AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3071 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3072 AC_MSG_RESULT(yes)],
3073 [AC_MSG_RESULT(no)
3074])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003075AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00003076AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3077 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3078 AC_MSG_RESULT(yes)],
3079 [AC_MSG_RESULT(no)
3080])
Benjamin Peterson95c16622011-12-27 15:36:32 -06003081AC_MSG_CHECKING(for epoll_create1)
3082AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
3083 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
3084 AC_MSG_RESULT(yes)],
3085 [AC_MSG_RESULT(no)
3086])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003087AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00003088AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003089#include <sys/types.h>
3090#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003091 ]], [[int x=kqueue()]])],
3092 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3093 AC_MSG_RESULT(yes)],
3094 [AC_MSG_RESULT(no)
3095])
Christian Heimesb7bd5df2013-10-22 11:21:54 +02003096AC_MSG_CHECKING(for prlimit)
3097AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3098#include <sys/time.h>
3099#include <sys/resource.h>
3100 ]], [[void *x=prlimit]])],
3101 [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
3102 AC_MSG_RESULT(yes)],
3103 [AC_MSG_RESULT(no)
3104])
3105
Martin v. Löwisd5843682002-11-21 20:41:28 +00003106# On some systems (eg. FreeBSD 5), we would find a definition of the
3107# functions ctermid_r, setgroups in the library, but no prototype
3108# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3109# address to avoid compiler warnings and potential miscompilations
3110# because of the missing prototypes.
3111
3112AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00003113AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003114#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003115]], [[void* p = ctermid_r]])],
3116 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3117 AC_MSG_RESULT(yes)],
3118 [AC_MSG_RESULT(no)
3119])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003120
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003121AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3122 [AC_COMPILE_IFELSE(
3123 [AC_LANG_PROGRAM(
3124 [#include <sys/file.h>],
3125 [void* p = flock]
3126 )],
3127 [ac_cv_flock_decl=yes],
3128 [ac_cv_flock_decl=no]
3129 )
Matthias Kloseb159a552010-04-25 21:00:44 +00003130])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003131if test "x${ac_cv_flock_decl}" = xyes; then
3132 AC_CHECK_FUNCS(flock,,
3133 AC_CHECK_LIB(bsd,flock,
3134 [AC_DEFINE(HAVE_FLOCK)
3135 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3136 ])
3137 )
Antoine Pitroua3000072010-09-07 14:52:42 +00003138fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003139
3140AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00003141AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003142#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003143]], [[void* p = getpagesize]])],
3144 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3145 AC_MSG_RESULT(yes)],
3146 [AC_MSG_RESULT(no)
3147])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003148
Victor Stinner984890f2011-11-24 13:53:38 +01003149AC_MSG_CHECKING(for broken unsetenv)
3150AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3151#include <stdlib.h>
3152]], [[int res = unsetenv("DUMMY")]])],
3153 [AC_MSG_RESULT(no)],
3154 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3155 AC_MSG_RESULT(yes)
3156])
3157
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003158dnl check for true
3159AC_CHECK_PROGS(TRUE, true, /bin/true)
3160
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003161dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3162dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003163AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003164 AC_CHECK_LIB(resolv, inet_aton)
3165)
3166
Christian Heimesd0764e22007-12-04 15:00:33 +00003167# On Tru64, chflags seems to be present, but calling it will
3168# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003169AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003170AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003171#include <sys/stat.h>
3172#include <unistd.h>
3173int main(int argc, char*argv[])
3174{
3175 if(chflags(argv[0], 0) != 0)
3176 return 1;
3177 return 0;
3178}
Ned Deily3eb67d52011-06-28 00:00:28 -07003179]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00003180[ac_cv_have_chflags=yes],
3181[ac_cv_have_chflags=no],
3182[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003183])
3184if test "$ac_cv_have_chflags" = cross ; then
3185 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3186fi
3187if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003188 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003189fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003190
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003191AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003192AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003193#include <sys/stat.h>
3194#include <unistd.h>
3195int main(int argc, char*argv[])
3196{
3197 if(lchflags(argv[0], 0) != 0)
3198 return 1;
3199 return 0;
3200}
Ned Deily3eb67d52011-06-28 00:00:28 -07003201]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003202])
3203if test "$ac_cv_have_lchflags" = cross ; then
3204 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3205fi
3206if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003207 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003208fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003209
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003210dnl Check if system zlib has *Copy() functions
3211dnl
3212dnl On MacOSX the linker will search for dylibs on the entire linker path
3213dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3214dnl to revert to a more traditional unix behaviour and make it possible to
3215dnl override the system libz with a local static library of libz. Temporarily
3216dnl add that flag to our CFLAGS as well to ensure that we check the version
3217dnl of libz that will be used by setup.py.
3218dnl The -L/usr/local/lib is needed as wel to get the same compilation
3219dnl environment as setup.py (and leaving it out can cause configure to use the
3220dnl wrong version of the library)
3221case $ac_sys_system/$ac_sys_release in
3222Darwin/*)
3223 _CUR_CFLAGS="${CFLAGS}"
3224 _CUR_LDFLAGS="${LDFLAGS}"
3225 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3226 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3227 ;;
3228esac
3229
Matthias Klosec80c93f2010-04-24 17:04:35 +00003230AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003231
3232case $ac_sys_system/$ac_sys_release in
3233Darwin/*)
3234 CFLAGS="${_CUR_CFLAGS}"
3235 LDFLAGS="${_CUR_LDFLAGS}"
3236 ;;
3237esac
3238
Martin v. Löwise9416172003-05-03 10:12:45 +00003239AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00003240AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003241#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003242]], [[void* p = hstrerror; hstrerror(0)]])],
3243 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3244 AC_MSG_RESULT(yes)],
3245 [AC_MSG_RESULT(no)
3246])
Martin v. Löwise9416172003-05-03 10:12:45 +00003247
3248AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003249AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003250#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003251#include <sys/socket.h>
3252#include <netinet/in.h>
3253#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003254]], [[void* p = inet_aton;inet_aton(0,0)]])],
3255 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3256 AC_MSG_RESULT(yes)],
3257 [AC_MSG_RESULT(no)
3258])
Martin v. Löwise9416172003-05-03 10:12:45 +00003259
3260AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003261AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003262#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003263#include <sys/socket.h>
3264#include <netinet/in.h>
3265#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003266]], [[void* p = inet_pton]])],
3267 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3268 AC_MSG_RESULT(yes)],
3269 [AC_MSG_RESULT(no)
3270])
Martin v. Löwise9416172003-05-03 10:12:45 +00003271
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003272# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003273AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00003274AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003275#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003276#ifdef HAVE_GRP_H
3277#include <grp.h>
3278#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003279]], [[void* p = setgroups]])],
3280 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3281 AC_MSG_RESULT(yes)],
3282 [AC_MSG_RESULT(no)
3283])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003284
Fred Drake8cef4cf2000-06-28 16:40:38 +00003285# check for openpty and forkpty
3286
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003287AC_CHECK_FUNCS(openpty,,
3288 AC_CHECK_LIB(util,openpty,
3289 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3290 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3291 )
3292)
3293AC_CHECK_FUNCS(forkpty,,
3294 AC_CHECK_LIB(util,forkpty,
3295 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3296 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3297 )
3298)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003299
Christian Heimesb186d002008-03-18 15:15:01 +00003300# Stuff for expat.
3301AC_CHECK_FUNCS(memmove)
3302
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003303# check for long file support functions
3304AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3305
Benjamin Peterson3a7dffa2013-08-23 21:01:48 -05003306AC_REPLACE_FUNCS(dup2 strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003307AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003308 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3309 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3310 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003311)
Jack Jansen150753c2003-03-29 22:07:47 +00003312AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003313 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3314 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3315 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003316)
3317AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003318 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3319 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3320 [],
3321 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3322 [Define if gettimeofday() does not have second (timezone) argument
3323 This is the case on Motorola V4 (R40V4.2)])
3324 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003325)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003326
Victor Stinnere0be4232011-10-25 13:06:09 +02003327AC_CHECK_FUNCS(clock_gettime, [], [
3328 AC_CHECK_LIB(rt, clock_gettime, [
Victor Stinner7efb8332014-08-29 15:41:08 +02003329 LIBS="$LIBS -lrt"
Victor Stinnere0be4232011-10-25 13:06:09 +02003330 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3331 AC_DEFINE(TIMEMODULE_LIB, [rt],
3332 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3333 ])
3334])
3335
3336AC_CHECK_FUNCS(clock_getres, [], [
3337 AC_CHECK_LIB(rt, clock_getres, [
3338 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3339 ])
3340])
3341
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003342AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003343AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003344#if defined(MAJOR_IN_MKDEV)
3345#include <sys/mkdev.h>
3346#elif defined(MAJOR_IN_SYSMACROS)
3347#include <sys/sysmacros.h>
3348#else
3349#include <sys/types.h>
3350#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003351]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003352 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003353]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003354 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3355 [Define to 1 if you have the device macros.])
3356 AC_MSG_RESULT(yes)
3357],[
3358 AC_MSG_RESULT(no)
3359])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003360
3361# On OSF/1 V5.1, getaddrinfo is available, but a define
3362# for [no]getaddrinfo in netdb.h.
3363AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003364AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003365#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003366#include <sys/socket.h>
3367#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003368#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003369]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3370[have_getaddrinfo=yes],
3371[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003372AC_MSG_RESULT($have_getaddrinfo)
3373if test $have_getaddrinfo = yes
3374then
3375 AC_MSG_CHECKING(getaddrinfo bug)
3376 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003377 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah19c21392012-11-22 23:47:32 +01003378#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003379#include <sys/types.h>
3380#include <netdb.h>
3381#include <string.h>
3382#include <sys/socket.h>
3383#include <netinet/in.h>
3384
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003385int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003386{
3387 int passive, gaierr, inet4 = 0, inet6 = 0;
3388 struct addrinfo hints, *ai, *aitop;
3389 char straddr[INET6_ADDRSTRLEN], strport[16];
3390
3391 for (passive = 0; passive <= 1; passive++) {
3392 memset(&hints, 0, sizeof(hints));
3393 hints.ai_family = AF_UNSPEC;
3394 hints.ai_flags = passive ? AI_PASSIVE : 0;
3395 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003396 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003397 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3398 (void)gai_strerror(gaierr);
3399 goto bad;
3400 }
3401 for (ai = aitop; ai; ai = ai->ai_next) {
3402 if (ai->ai_addr == NULL ||
3403 ai->ai_addrlen == 0 ||
3404 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3405 straddr, sizeof(straddr), strport, sizeof(strport),
3406 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3407 goto bad;
3408 }
3409 switch (ai->ai_family) {
3410 case AF_INET:
3411 if (strcmp(strport, "54321") != 0) {
3412 goto bad;
3413 }
3414 if (passive) {
3415 if (strcmp(straddr, "0.0.0.0") != 0) {
3416 goto bad;
3417 }
3418 } else {
3419 if (strcmp(straddr, "127.0.0.1") != 0) {
3420 goto bad;
3421 }
3422 }
3423 inet4++;
3424 break;
3425 case AF_INET6:
3426 if (strcmp(strport, "54321") != 0) {
3427 goto bad;
3428 }
3429 if (passive) {
3430 if (strcmp(straddr, "::") != 0) {
3431 goto bad;
3432 }
3433 } else {
3434 if (strcmp(straddr, "::1") != 0) {
3435 goto bad;
3436 }
3437 }
3438 inet6++;
3439 break;
3440 case AF_UNSPEC:
3441 goto bad;
3442 break;
3443 default:
3444 /* another family support? */
3445 break;
3446 }
3447 }
3448 }
3449
3450 if (!(inet4 == 0 || inet4 == 2))
3451 goto bad;
3452 if (!(inet6 == 0 || inet6 == 2))
3453 goto bad;
3454
3455 if (aitop)
3456 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003457 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003458
3459 bad:
3460 if (aitop)
3461 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003462 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003463}
Matthias Kloseb159a552010-04-25 21:00:44 +00003464]]])],
3465[ac_cv_buggy_getaddrinfo=no],
3466[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003467[
3468if test "${enable_ipv6+set}" = set; then
3469 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3470else
3471 ac_cv_buggy_getaddrinfo=yes
3472fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003473fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003474
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003475AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3476
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003477if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003478then
3479 if test $ipv6 = yes
3480 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003481 echo 'Fatal: You must get working getaddrinfo() function.'
3482 echo ' or you can specify "--disable-ipv6"'.
3483 exit 1
3484 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003485else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003486 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003487fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003488
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003489AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003490
Guido van Rossum627b2d71993-12-24 10:39:16 +00003491# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003492AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003493AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003494AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003495AC_CHECK_MEMBERS([struct stat.st_rdev])
3496AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003497AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003498AC_CHECK_MEMBERS([struct stat.st_gen])
3499AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003500AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003501
3502AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003503AC_CACHE_VAL(ac_cv_header_time_altzone,[
3504 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3505 [ac_cv_header_time_altzone=yes],
3506 [ac_cv_header_time_altzone=no])
3507 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003508AC_MSG_RESULT($ac_cv_header_time_altzone)
3509if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003510 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003511fi
3512
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003513was_it_defined=no
3514AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003515AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003516#include <sys/types.h>
3517#include <sys/select.h>
3518#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003519]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003520 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3521 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3522 (which you can't on SCO ODT 3.0).])
3523 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003524],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003525AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003526
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003527AC_MSG_CHECKING(for addrinfo)
3528AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003529AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3530 [ac_cv_struct_addrinfo=yes],
3531 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003532AC_MSG_RESULT($ac_cv_struct_addrinfo)
3533if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003534 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003535fi
3536
3537AC_MSG_CHECKING(for sockaddr_storage)
3538AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003539AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003540# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003541# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3542 [ac_cv_struct_sockaddr_storage=yes],
3543 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003544AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3545if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003546 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003547fi
3548
Guido van Rossum627b2d71993-12-24 10:39:16 +00003549# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003550
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003551AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003552AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003553
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003554works=no
3555AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003556AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3557 [works=yes],
3558 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003559)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003560AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003561
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003562works=no
3563AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003564AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3565 [works=yes],
3566 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003567)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003568AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003569
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003570have_prototypes=no
3571AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003572AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3573 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3574 [Define if your compiler supports function prototype])
3575 have_prototypes=yes],
3576 []
3577)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003578AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003579
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003580works=no
3581AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003582AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003583#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003584int foo(int x, ...) {
3585 va_list va;
3586 va_start(va, x);
3587 va_arg(va, int);
3588 va_arg(va, char *);
3589 va_arg(va, double);
3590 return 0;
3591}
Matthias Kloseb159a552010-04-25 21:00:44 +00003592]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003593 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3594 [Define if your compiler supports variable length function prototypes
3595 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3596 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003597],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003598AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003599
Dave Cole331708b2004-08-09 04:51:41 +00003600# check for socketpair
3601AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003602AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003603#include <sys/types.h>
3604#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003605]], [[void *x=socketpair]])],
3606 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3607 AC_MSG_RESULT(yes)],
3608 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003609)
3610
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003611# check if sockaddr has sa_len member
3612AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003613AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3614#include <sys/socket.h>]], [[struct sockaddr x;
3615x.sa_len = 0;]])],
3616 [AC_MSG_RESULT(yes)
3617 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3618 [AC_MSG_RESULT(no)]
3619)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003620
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003621va_list_is_array=no
3622AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003623AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003624#ifdef HAVE_STDARG_PROTOTYPES
3625#include <stdarg.h>
3626#else
3627#include <varargs.h>
3628#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003629]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003630 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3631 va_list_is_array=yes
3632])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003633AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003634
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003635# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003636AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3637 [Define this if you have some version of gethostbyname_r()])
3638
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003639AC_CHECK_FUNC(gethostbyname_r, [
3640 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3641 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3642 OLD_CFLAGS=$CFLAGS
3643 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003645# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003646 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003647 char *name;
3648 struct hostent *he, *res;
3649 char buffer[2048];
3650 int buflen = 2048;
3651 int h_errnop;
3652
3653 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003654 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003655 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003656 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3657 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003658 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003659 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003660 AC_MSG_RESULT(no)
3661 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003662 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003663# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003664 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003665 char *name;
3666 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003667 char buffer[2048];
3668 int buflen = 2048;
3669 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003670
Matthias Kloseb159a552010-04-25 21:00:44 +00003671 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3672 ]])],
3673 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003674 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003675 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3676 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003677 AC_MSG_RESULT(yes)
3678 ], [
3679 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003680 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3681 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3682# include <netdb.h>
3683 ]], [[
3684 char *name;
3685 struct hostent *he;
3686 struct hostent_data data;
3687
3688 (void) gethostbyname_r(name, he, &data);
3689 ]])],
3690 [
3691 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3692 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3693 [Define this if you have the 3-arg version of gethostbyname_r().])
3694 AC_MSG_RESULT(yes)
3695 ], [
3696 AC_MSG_RESULT(no)
3697 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003698 ])
3699 ])
3700 CFLAGS=$OLD_CFLAGS
3701], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003702 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003703])
3704AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3705AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3706AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003707AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003708AC_SUBST(HAVE_GETHOSTBYNAME)
3709
Guido van Rossum627b2d71993-12-24 10:39:16 +00003710# checks for system services
3711# (none yet)
3712
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003713# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003714AC_CHECK_FUNC(__fpu_control,
3715 [],
3716 [AC_CHECK_LIB(ieee, __fpu_control)
3717])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003718
Guido van Rossum93274221997-05-09 02:42:00 +00003719# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003720AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003721AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003722 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003723[
Guido van Rossum93274221997-05-09 02:42:00 +00003724if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003725then
3726 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3727 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3728 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003729else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003730fi],
3731[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003732
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003733# check for --with-libm=...
3734AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003735case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003736Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003737*) LIBM=-lm
3738esac
Guido van Rossum93274221997-05-09 02:42:00 +00003739AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003740AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003741 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003742[
Guido van Rossum93274221997-05-09 02:42:00 +00003743if test "$withval" = no
3744then LIBM=
3745 AC_MSG_RESULT(force LIBM empty)
3746elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003747then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003748 AC_MSG_RESULT(set LIBM="$withval")
3749else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003750fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003751[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003752
3753# check for --with-libc=...
3754AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003755AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003756AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003757 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003758[
Guido van Rossum93274221997-05-09 02:42:00 +00003759if test "$withval" = no
3760then LIBC=
3761 AC_MSG_RESULT(force LIBC empty)
3762elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003763then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003764 AC_MSG_RESULT(set LIBC="$withval")
3765else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003766fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003767[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003768
Stefan Krah1919b7e2012-03-21 18:25:23 +01003769# **************************************
3770# * Check for gcc x64 inline assembler *
3771# **************************************
3772
3773AC_MSG_CHECKING(for x64 gcc inline assembler)
3774AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
3775 __asm__ __volatile__ ("movq %rcx, %rax");
3776]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
3777AC_MSG_RESULT($have_gcc_asm_for_x64)
3778if test "$have_gcc_asm_for_x64" = yes
3779then
3780 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
3781 [Define if we can use x64 gcc inline assembler])
3782fi
3783
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003784# **************************************************
3785# * Check for various properties of floating point *
3786# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003787
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003788AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3789AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003790AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003791#include <string.h>
3792int main() {
3793 double x = 9006104071832581.0;
3794 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3795 return 0;
3796 else
3797 return 1;
3798}
Matthias Kloseb159a552010-04-25 21:00:44 +00003799]])],
3800[ac_cv_little_endian_double=yes],
3801[ac_cv_little_endian_double=no],
3802[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003803AC_MSG_RESULT($ac_cv_little_endian_double)
3804if test "$ac_cv_little_endian_double" = yes
3805then
3806 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3807 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3808 with the least significant byte first])
3809fi
3810
3811AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3812AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003813AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003814#include <string.h>
3815int main() {
3816 double x = 9006104071832581.0;
3817 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3818 return 0;
3819 else
3820 return 1;
3821}
Matthias Kloseb159a552010-04-25 21:00:44 +00003822]])],
3823[ac_cv_big_endian_double=yes],
3824[ac_cv_big_endian_double=no],
3825[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003826AC_MSG_RESULT($ac_cv_big_endian_double)
3827if test "$ac_cv_big_endian_double" = yes
3828then
3829 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3830 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3831 with the most significant byte first])
3832fi
3833
3834# Some ARM platforms use a mixed-endian representation for doubles.
3835# While Python doesn't currently have full support for these platforms
3836# (see e.g., issue 1762561), we can at least make sure that float <-> string
3837# conversions work.
3838AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3839AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003840AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003841#include <string.h>
3842int main() {
3843 double x = 9006104071832581.0;
3844 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3845 return 0;
3846 else
3847 return 1;
3848}
Matthias Kloseb159a552010-04-25 21:00:44 +00003849]])],
3850[ac_cv_mixed_endian_double=yes],
3851[ac_cv_mixed_endian_double=no],
3852[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003853AC_MSG_RESULT($ac_cv_mixed_endian_double)
3854if test "$ac_cv_mixed_endian_double" = yes
3855then
3856 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3857 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3858 in ARM mixed-endian order (byte order 45670123)])
3859fi
3860
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003861# The short float repr introduced in Python 3.1 requires the
3862# correctly-rounded string <-> double conversion functions from
3863# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3864# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003865# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003866# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003867
3868# This inline assembler syntax may also work for suncc and icc,
3869# so we try it on all platforms.
3870
3871AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003872AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003873 unsigned short cw;
3874 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3875 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003876]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003877AC_MSG_RESULT($have_gcc_asm_for_x87)
3878if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003879then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003880 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3881 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003882fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003883
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04003884AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set mc68881 fpcr)
3885AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
3886 unsigned int fpcr;
3887 __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr));
3888 __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr));
3889]])],[have_gcc_asm_for_mc68881=yes],[have_gcc_asm_for_mc68881=no])
3890AC_MSG_RESULT($have_gcc_asm_for_mc68881)
3891if test "$have_gcc_asm_for_mc68881" = yes
3892then
3893 AC_DEFINE(HAVE_GCC_ASM_FOR_MC68881, 1,
3894 [Define if we can use gcc inline assembler to get and set mc68881 fpcr])
3895fi
3896
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003897# Detect whether system arithmetic is subject to x87-style double
3898# rounding issues. The result of this test has little meaning on non
3899# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3900# mode is round-to-nearest and double rounding issues are present, and
3901# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3902AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003903# $BASECFLAGS may affect the result
3904ac_save_cc="$CC"
3905CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003906AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003907#include <stdlib.h>
3908#include <math.h>
3909int main() {
3910 volatile double x, y, z;
3911 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3912 x = 0.99999999999999989; /* 1-2**-53 */
3913 y = 1./x;
3914 if (y != 1.)
3915 exit(0);
3916 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3917 x = 1e16;
3918 y = 2.99999;
3919 z = x + y;
3920 if (z != 1e16+4.)
3921 exit(0);
3922 /* both tests show evidence of double rounding */
3923 exit(1);
3924}
Matthias Kloseb159a552010-04-25 21:00:44 +00003925]])],
3926[ac_cv_x87_double_rounding=no],
3927[ac_cv_x87_double_rounding=yes],
3928[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003929CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003930AC_MSG_RESULT($ac_cv_x87_double_rounding)
3931if test "$ac_cv_x87_double_rounding" = yes
3932then
3933 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3934 [Define if arithmetic is subject to x87-style double rounding issue])
3935fi
3936
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003937# ************************************
3938# * Check for mathematical functions *
3939# ************************************
3940
3941LIBS_SAVE=$LIBS
3942LIBS="$LIBS $LIBM"
3943
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003944AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003945AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003946AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3947
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003948# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3949# -0. on some architectures.
3950AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3951AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003952AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003953#include <math.h>
3954#include <stdlib.h>
3955int main() {
3956 /* return 0 if either negative zeros don't exist
3957 on this platform or if negative zeros exist
3958 and tanh(-0.) == -0. */
3959 if (atan2(0., -1.) == atan2(-0., -1.) ||
3960 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3961 else exit(1);
3962}
Matthias Kloseb159a552010-04-25 21:00:44 +00003963]])],
3964[ac_cv_tanh_preserves_zero_sign=yes],
3965[ac_cv_tanh_preserves_zero_sign=no],
3966[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003967AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3968if test "$ac_cv_tanh_preserves_zero_sign" = yes
3969then
3970 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3971 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3972fi
3973
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003974if test "$ac_cv_func_log1p" = yes
3975then
3976 # On some versions of AIX, log1p(-0.) returns 0. instead of
3977 # -0. See issue #9920.
3978 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3979 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3980 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3981 #include <math.h>
3982 #include <stdlib.h>
3983 int main() {
3984 /* Fail if the signs of log1p(-0.) and -0. can be
3985 distinguished. */
3986 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3987 return 0;
3988 else
3989 return 1;
3990 }
3991 ]])],
3992 [ac_cv_log1p_drops_zero_sign=no],
3993 [ac_cv_log1p_drops_zero_sign=yes],
3994 [ac_cv_log1p_drops_zero_sign=no])])
3995 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3996fi
3997if test "$ac_cv_log1p_drops_zero_sign" = yes
3998then
3999 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
4000 [Define if log1p(-0.) is 0. rather than -0.])
4001fi
Christian Heimes99170a52007-12-19 02:07:34 +00004002
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00004003LIBS=$LIBS_SAVE
4004
Mark Dickinsona614f042009-11-28 12:48:43 +00004005# For multiprocessing module, check that sem_open
4006# actually works. For FreeBSD versions <= 7.2,
4007# the kernel module that provides POSIX semaphores
4008# isn't loaded by default, so an attempt to call
4009# sem_open results in a 'Signal 12' error.
4010AC_MSG_CHECKING(whether POSIX semaphores are enabled)
4011AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00004012AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00004013#include <unistd.h>
4014#include <fcntl.h>
4015#include <stdio.h>
4016#include <semaphore.h>
4017#include <sys/stat.h>
4018
4019int main(void) {
4020 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
4021 if (a == SEM_FAILED) {
4022 perror("sem_open");
4023 return 1;
4024 }
4025 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004026 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00004027 return 0;
4028}
Matthias Kloseb159a552010-04-25 21:00:44 +00004029]])],
4030[ac_cv_posix_semaphores_enabled=yes],
4031[ac_cv_posix_semaphores_enabled=no],
4032[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00004033)
4034AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
4035if test $ac_cv_posix_semaphores_enabled = no
4036then
4037 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
4038 [Define if POSIX semaphores aren't enabled on your system])
4039fi
4040
Mark Dickinson10683072009-04-18 21:18:19 +00004041# Multiprocessing check for broken sem_getvalue
4042AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004043AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00004044AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00004045#include <unistd.h>
4046#include <fcntl.h>
4047#include <stdio.h>
4048#include <semaphore.h>
4049#include <sys/stat.h>
4050
4051int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00004052 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00004053 int count;
4054 int res;
4055 if(a==SEM_FAILED){
4056 perror("sem_open");
4057 return 1;
4058
4059 }
4060 res = sem_getvalue(a, &count);
4061 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004062 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00004063 return res==-1 ? 1 : 0;
4064}
Matthias Kloseb159a552010-04-25 21:00:44 +00004065]])],
4066[ac_cv_broken_sem_getvalue=no],
4067[ac_cv_broken_sem_getvalue=yes],
4068[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00004069)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004070AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
4071if test $ac_cv_broken_sem_getvalue = yes
4072then
4073 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
4074 [define to 1 if your sem_getvalue is broken.])
4075fi
Mark Dickinson10683072009-04-18 21:18:19 +00004076
Mark Dickinsonbd792642009-03-18 20:06:12 +00004077# determine what size digit to use for Python's longs
4078AC_MSG_CHECKING([digit size for Python's longs])
4079AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004080AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00004081[case $enable_big_digits in
4082yes)
4083 enable_big_digits=30 ;;
4084no)
4085 enable_big_digits=15 ;;
4086[15|30])
4087 ;;
4088*)
4089 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4090esac
4091AC_MSG_RESULT($enable_big_digits)
4092AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4093],
4094[AC_MSG_RESULT(no value specified)])
4095
Guido van Rossumef2255b2000-03-10 22:30:29 +00004096# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004097AC_CHECK_HEADER(wchar.h, [
4098 AC_DEFINE(HAVE_WCHAR_H, 1,
4099 [Define if the compiler provides a wchar.h header file.])
4100 wchar_h="yes"
4101],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004102wchar_h="no"
4103)
4104
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004105# determine wchar_t size
4106if test "$wchar_h" = yes
4107then
Guido van Rossum67b26592001-10-20 14:21:45 +00004108 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004109fi
4110
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004111AC_MSG_CHECKING(for UCS-4 tcl)
4112have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00004113AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004114#include <tcl.h>
4115#if TCL_UTF_MAX != 6
4116# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00004117#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004118 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4119 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004120],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004121AC_MSG_RESULT($have_ucs4_tcl)
4122
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004123# check whether wchar_t is signed or not
4124if test "$wchar_h" = yes
4125then
4126 # check whether wchar_t is signed or not
4127 AC_MSG_CHECKING(whether wchar_t is signed)
4128 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004129 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004130 #include <wchar.h>
4131 int main()
4132 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004133 /* Success: exit code 0 */
4134 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004135 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004136 ]])],
4137 [ac_cv_wchar_t_signed=yes],
4138 [ac_cv_wchar_t_signed=no],
4139 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004140 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4141fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004142
Georg Brandl52d168a2008-01-07 18:10:24 +00004143# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004144if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004145 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00004146then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004147 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00004148 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4149 [Define if you have a useable wchar_t type defined in wchar.h; useable
4150 means wchar_t must be an unsigned type with at least 16 bits. (see
4151 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00004152else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004153 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004154fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004155AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004156
4157# check for endianness
4158AC_C_BIGENDIAN
4159
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004160# ABI version string for Python extension modules. This appears between the
4161# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
4162# from the following attributes which affect the ABI of this Python build (in
4163# this order):
4164#
4165# * The Python implementation (always 'cpython-' for us)
4166# * The major and minor version numbers
4167# * --with-pydebug (adds a 'd')
4168# * --with-pymalloc (adds a 'm')
4169# * --with-wide-unicode (adds a 'u')
4170#
4171# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00004172# would get a shared library ABI version tag of 'cpython-32dmu' and shared
4173# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004174AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004175AC_MSG_CHECKING(ABIFLAGS)
4176AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004177AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004178SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004179AC_MSG_RESULT($SOABI)
4180
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004181AC_SUBST(EXT_SUFFIX)
4182case $ac_sys_system in
4183 Linux*|GNU*)
4184 EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
4185 *)
4186 EXT_SUFFIX=${SHLIB_SUFFIX};;
4187esac
4188
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004189AC_MSG_CHECKING(LDVERSION)
4190LDVERSION='$(VERSION)$(ABIFLAGS)'
4191AC_MSG_RESULT($LDVERSION)
4192
doko@python.org87421192013-01-26 11:39:31 +01004193dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
4194AC_SUBST(PY_ENABLE_SHARED)
4195LIBPL="${prefix}/lib/python${VERSION}/config-${LDVERSION}"
4196AC_SUBST(LIBPL)
4197
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004198# Check whether right shifting a negative integer extends the sign bit
4199# or fills with zeros (like the Cray J90, according to Tim Peters).
4200AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004201AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004202AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004203int main()
4204{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004205 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004206}
Matthias Kloseb159a552010-04-25 21:00:44 +00004207]])],
4208[ac_cv_rshift_extends_sign=yes],
4209[ac_cv_rshift_extends_sign=no],
4210[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004211AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4212if test "$ac_cv_rshift_extends_sign" = no
4213then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004214 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4215 [Define if i>>j for signed int i does not extend the sign bit
4216 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004217fi
4218
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004219# check for getc_unlocked and related locking functions
4220AC_MSG_CHECKING(for getc_unlocked() and friends)
4221AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004222AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004223 FILE *f = fopen("/dev/null", "r");
4224 flockfile(f);
4225 getc_unlocked(f);
4226 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00004227]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004228AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4229if test "$ac_cv_have_getc_unlocked" = yes
4230then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004231 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4232 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004233fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004234
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004235# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004236# save the value of LIBS so we don't actually link Python with readline
4237LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00004238
4239# On some systems we need to link readline to a termcap compatible
4240# library. NOTE: Keep the precedence of listed libraries synchronised
4241# with setup.py.
4242py_cv_lib_readline=no
4243AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02004244for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00004245 if test -z "$py_libtermcap"; then
4246 READLINE_LIBS="-lreadline"
4247 else
4248 READLINE_LIBS="-lreadline -l$py_libtermcap"
4249 fi
4250 LIBS="$READLINE_LIBS $LIBS_no_readline"
4251 AC_LINK_IFELSE(
4252 [AC_LANG_CALL([],[readline])],
4253 [py_cv_lib_readline=yes])
4254 if test $py_cv_lib_readline = yes; then
4255 break
4256 fi
4257done
4258# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4259#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00004260if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00004261 AC_MSG_RESULT([none])
4262else
4263 AC_MSG_RESULT([$READLINE_LIBS])
4264 AC_DEFINE(HAVE_LIBREADLINE, 1,
4265 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004266fi
4267
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004268# check for readline 2.1
4269AC_CHECK_LIB(readline, rl_callback_handler_install,
4270 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004271 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004272
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004273# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004274AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4275 [have_readline=yes],
4276 [have_readline=no]
4277)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004278if test $have_readline = yes
4279then
4280 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4281 [readline/readline.h],
4282 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4283 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004284 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4285 [readline/readline.h],
4286 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4287 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004288fi
4289
Martin v. Löwis0daad592001-09-30 21:09:59 +00004290# check for readline 4.0
4291AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004292 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004293 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004294
Thomas Wouters89d996e2007-09-08 17:39:28 +00004295# also in 4.0
4296AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4297 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004298 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004299
Guido van Rossum353ae582001-07-10 16:45:32 +00004300# check for readline 4.2
4301AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004302 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004303 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004304
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004305# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004306AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4307 [have_readline=yes],
4308 [have_readline=no]
4309)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004310if test $have_readline = yes
4311then
4312 AC_EGREP_HEADER([extern int rl_catch_signals;],
4313 [readline/readline.h],
4314 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4315 [Define if you can turn off readline's signal handling.]), )
4316fi
4317
Benjamin Petersond1e22ba2014-11-26 14:35:12 -06004318AC_CHECK_LIB(readline, append_history,
4319 AC_DEFINE(HAVE_RL_APPEND_HISTORY, 1,
4320 [Define if readline supports append_history]), ,$READLINE_LIBS)
4321
Martin v. Löwis82bca632006-02-10 20:49:30 +00004322# End of readline checks: restore LIBS
4323LIBS=$LIBS_no_readline
4324
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004325AC_MSG_CHECKING(for broken nice())
4326AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004327AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004328int main()
4329{
4330 int val1 = nice(1);
4331 if (val1 != -1 && val1 == nice(2))
4332 exit(0);
4333 exit(1);
4334}
Matthias Kloseb159a552010-04-25 21:00:44 +00004335]])],
4336[ac_cv_broken_nice=yes],
4337[ac_cv_broken_nice=no],
4338[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004339AC_MSG_RESULT($ac_cv_broken_nice)
4340if test "$ac_cv_broken_nice" = yes
4341then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004342 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4343 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004344fi
4345
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004346AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004347AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004348AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004349#include <poll.h>
4350
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004351int main()
4352{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004353 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004354 int poll_test;
4355
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004356 close (42);
4357
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004358 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004359 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004360 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004361 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004362 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004363 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004364 return 1;
4365}
Matthias Kloseb159a552010-04-25 21:00:44 +00004366]])],
4367[ac_cv_broken_poll=yes],
4368[ac_cv_broken_poll=no],
4369[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004370AC_MSG_RESULT($ac_cv_broken_poll)
4371if test "$ac_cv_broken_poll" = yes
4372then
4373 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4374 [Define if poll() sets errno on invalid file descriptors.])
4375fi
4376
Brett Cannon43802422005-02-10 20:48:03 +00004377# Before we can test tzset, we need to check if struct tm has a tm_zone
4378# (which is not required by ISO C or UNIX spec) and/or if we support
4379# tzname[]
4380AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004381
Brett Cannon43802422005-02-10 20:48:03 +00004382# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004383AC_MSG_CHECKING(for working tzset())
4384AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004385AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004386#include <stdlib.h>
4387#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004388#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004389
4390#if HAVE_TZNAME
4391extern char *tzname[];
4392#endif
4393
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004394int main()
4395{
Brett Cannon18367812003-09-19 00:59:16 +00004396 /* Note that we need to ensure that not only does tzset(3)
4397 do 'something' with localtime, but it works as documented
4398 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004399 This includes making sure that tzname is set properly if
4400 tm->tm_zone does not exist since it is the alternative way
4401 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004402
4403 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004404 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004405 */
4406
Brett Cannon43802422005-02-10 20:48:03 +00004407 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004408 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4409
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004410 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004411 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004412 if (localtime(&groundhogday)->tm_hour != 0)
4413 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004414#if HAVE_TZNAME
4415 /* For UTC, tzname[1] is sometimes "", sometimes " " */
4416 if (strcmp(tzname[0], "UTC") ||
4417 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4418 exit(1);
4419#endif
Brett Cannon18367812003-09-19 00:59:16 +00004420
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004421 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004422 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004423 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004424 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004425#if HAVE_TZNAME
4426 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4427 exit(1);
4428#endif
Brett Cannon18367812003-09-19 00:59:16 +00004429
4430 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4431 tzset();
4432 if (localtime(&groundhogday)->tm_hour != 11)
4433 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004434#if HAVE_TZNAME
4435 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4436 exit(1);
4437#endif
4438
4439#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004440 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4441 exit(1);
4442 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4443 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004444#endif
Brett Cannon18367812003-09-19 00:59:16 +00004445
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004446 exit(0);
4447}
Matthias Kloseb159a552010-04-25 21:00:44 +00004448]])],
4449[ac_cv_working_tzset=yes],
4450[ac_cv_working_tzset=no],
4451[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004452AC_MSG_RESULT($ac_cv_working_tzset)
4453if test "$ac_cv_working_tzset" = yes
4454then
4455 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4456 [Define if tzset() actually switches the local timezone in a meaningful way.])
4457fi
4458
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004459# Look for subsecond timestamps in struct stat
4460AC_MSG_CHECKING(for tv_nsec in struct stat)
4461AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004462AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004463struct stat st;
4464st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004465]])],
4466[ac_cv_stat_tv_nsec=yes],
4467[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004468AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4469if test "$ac_cv_stat_tv_nsec" = yes
4470then
4471 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4472 [Define if you have struct stat.st_mtim.tv_nsec])
4473fi
4474
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004475# Look for BSD style subsecond timestamps in struct stat
4476AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4477AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004478AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004479struct stat st;
4480st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004481]])],
4482[ac_cv_stat_tv_nsec2=yes],
4483[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004484AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4485if test "$ac_cv_stat_tv_nsec2" = yes
4486then
4487 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4488 [Define if you have struct stat.st_mtimensec])
4489fi
4490
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004491# first curses header check
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004492ac_save_cppflags="$CPPFLAGS"
4493CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004494
4495AC_CHECK_HEADERS(curses.h ncurses.h)
4496
4497# On Solaris, term.h requires curses.h
4498AC_CHECK_HEADERS(term.h,,,[
4499#ifdef HAVE_CURSES_H
4500#include <curses.h>
4501#endif
4502])
4503
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004504# On HP/UX 11.0, mvwdelch is a block with a return statement
4505AC_MSG_CHECKING(whether mvwdelch is an expression)
4506AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004507AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004508 int rtn;
4509 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004510]])],
4511[ac_cv_mvwdelch_is_expression=yes],
4512[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004513AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4514
4515if test "$ac_cv_mvwdelch_is_expression" = yes
4516then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004517 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4518 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004519fi
4520
4521AC_MSG_CHECKING(whether WINDOW has _flags)
4522AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004523AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004524 WINDOW *w;
4525 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004526]])],
4527[ac_cv_window_has_flags=yes],
4528[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004529AC_MSG_RESULT($ac_cv_window_has_flags)
4530
4531
4532if test "$ac_cv_window_has_flags" = yes
4533then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004534 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4535 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004536fi
4537
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004538AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004539AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4540 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4541 AC_MSG_RESULT(yes)],
4542 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004543)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004544
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004545AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004546AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4547 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4548 AC_MSG_RESULT(yes)],
4549 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004550)
4551
4552AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004553AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4554 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4555 AC_MSG_RESULT(yes)],
4556 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004557)
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004558# last curses configure check
4559CPPFLAGS=$ac_save_cppflags
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004560
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004561AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004562
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004563dnl NOTE: Inform user how to proceed with files when cross compiling.
4564if test "x$cross_compiling" = xyes; then
4565 if test "${ac_cv_file__dev_ptmx+set}" != set; then
4566 AC_MSG_CHECKING([for /dev/ptmx])
4567 AC_MSG_RESULT([not set])
4568 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
4569 fi
4570 if test "${ac_cv_file__dev_ptc+set}" != set; then
4571 AC_MSG_CHECKING([for /dev/ptc])
4572 AC_MSG_RESULT([not set])
4573 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
4574 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00004575fi
4576
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004577AC_CHECK_FILE(/dev/ptmx, [], [])
4578if test "x$ac_cv_file__dev_ptmx" = xyes; then
4579 AC_DEFINE(HAVE_DEV_PTMX, 1,
4580 [Define to 1 if you have the /dev/ptmx device file.])
4581fi
4582AC_CHECK_FILE(/dev/ptc, [], [])
4583if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00004584 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004585 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004586fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004587
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004588if test "$have_long_long" = yes
4589then
4590 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4591 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004592 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004593 #include <stdio.h>
4594 #include <stddef.h>
4595 #include <string.h>
4596
4597 #ifdef HAVE_SYS_TYPES_H
4598 #include <sys/types.h>
4599 #endif
4600
4601 int main()
4602 {
4603 char buffer[256];
4604
4605 if (sprintf(buffer, "%lld", (long long)123) < 0)
4606 return 1;
4607 if (strcmp(buffer, "123"))
4608 return 1;
4609
4610 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4611 return 1;
4612 if (strcmp(buffer, "-123"))
4613 return 1;
4614
4615 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4616 return 1;
4617 if (strcmp(buffer, "123"))
4618 return 1;
4619
4620 return 0;
4621 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004622 ]]])],
4623 [ac_cv_have_long_long_format=yes],
4624 [ac_cv_have_long_long_format=no],
Matthias Klose3b739b12012-03-15 19:31:06 +01004625 [ac_cv_have_long_long_format="cross -- assuming no"
4626 if test x$GCC = xyes; then
4627 save_CFLAGS=$CFLAGS
4628 CFLAGS="$CFLAGS -Werror -Wformat"
4629 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4630 #include <stdio.h>
4631 #include <stddef.h>
4632 ]], [[
4633 char *buffer;
4634 sprintf(buffer, "%lld", (long long)123);
4635 sprintf(buffer, "%lld", (long long)-123);
4636 sprintf(buffer, "%llu", (unsigned long long)123);
4637 ]])],
4638 ac_cv_have_long_long_format=yes
4639 )
4640 CFLAGS=$save_CFLAGS
4641 fi])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004642 )
4643 AC_MSG_RESULT($ac_cv_have_long_long_format)
4644fi
4645
Mark Dickinson89d7d412009-12-31 20:50:59 +00004646if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004647then
4648 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4649 [Define to printf format modifier for long long type])
4650fi
4651
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004652if test $ac_sys_system = Darwin
4653then
4654 LIBS="$LIBS -framework CoreFoundation"
4655fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004656
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004657AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004658AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004659#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004660#include <stddef.h>
4661#include <string.h>
4662
Christian Heimes2c181612007-12-17 20:04:13 +00004663#ifdef HAVE_SYS_TYPES_H
4664#include <sys/types.h>
4665#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004666
4667#ifdef HAVE_SSIZE_T
4668typedef ssize_t Py_ssize_t;
4669#elif SIZEOF_VOID_P == SIZEOF_LONG
4670typedef long Py_ssize_t;
4671#else
4672typedef int Py_ssize_t;
4673#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004674
Christian Heimes2c181612007-12-17 20:04:13 +00004675int main()
4676{
4677 char buffer[256];
4678
Thomas Wouters477c8d52006-05-27 19:21:47 +00004679 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4680 return 1;
4681
Thomas Wouters89f507f2006-12-13 04:49:30 +00004682 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004683 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004684
4685 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4686 return 1;
4687
4688 if (strcmp(buffer, "-123"))
4689 return 1;
4690
Thomas Wouters477c8d52006-05-27 19:21:47 +00004691 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004692}
Matthias Kloseb159a552010-04-25 21:00:44 +00004693]])],
4694 [ac_cv_have_size_t_format=yes],
4695 [ac_cv_have_size_t_format=no],
4696 [ac_cv_have_size_t_format="cross -- assuming yes"
4697])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004698if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004699 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4700 [Define to printf format modifier for Py_ssize_t])
4701fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004702
Martin v. Löwis01c04012002-11-11 14:58:44 +00004703AC_CHECK_TYPE(socklen_t,,
4704 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004705 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004706#ifdef HAVE_SYS_TYPES_H
4707#include <sys/types.h>
4708#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004709#ifdef HAVE_SYS_SOCKET_H
4710#include <sys/socket.h>
4711#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004712])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004713
Antoine Pitroufff95302008-09-03 18:58:51 +00004714AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004715AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004716AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah19c21392012-11-22 23:47:32 +01004717#include <stdio.h>
Antoine Pitroufff95302008-09-03 18:58:51 +00004718#include<stdlib.h>
4719int main() {
4720 size_t len = -1;
4721 const char *str = "text";
4722 len = mbstowcs(NULL, str, 0);
4723 return (len != 4);
4724}
Matthias Kloseb159a552010-04-25 21:00:44 +00004725]])],
4726[ac_cv_broken_mbstowcs=no],
4727[ac_cv_broken_mbstowcs=yes],
4728[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004729AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4730if test "$ac_cv_broken_mbstowcs" = yes
4731then
4732 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4733 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4734 wide chars that would be converted.])
4735fi
4736
Antoine Pitroub52ec782009-01-25 16:34:23 +00004737# Check for --with-computed-gotos
4738AC_MSG_CHECKING(for --with-computed-gotos)
4739AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004740 AS_HELP_STRING([--with(out)-computed-gotos],
4741 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004742[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004743if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004744then
4745 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4746 [Define if you want to use computed gotos in ceval.c.])
4747 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004748fi
4749if test "$withval" = no
4750then
4751 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4752 [Define if you want to use computed gotos in ceval.c.])
4753 AC_MSG_RESULT(no)
4754fi
4755],
4756[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004757
Matthias Kloseb17289e2012-03-15 19:51:34 +01004758AC_MSG_CHECKING(whether $CC supports computed gotos)
4759AC_CACHE_VAL(ac_cv_computed_gotos,
4760AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4761int main(int argc, char **argv)
4762{
4763 static void *targets[1] = { &&LABEL1 };
4764 goto LABEL2;
4765LABEL1:
4766 return 0;
4767LABEL2:
4768 goto *targets[0];
4769 return 1;
4770}
4771]]])],
4772[ac_cv_computed_gotos=yes],
4773[ac_cv_computed_gotos=no],
4774[if test "${with_computed_gotos+set}" = set; then
4775 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
4776 else
4777 ac_cv_computed_gotos=no
4778 fi]))
4779AC_MSG_RESULT($ac_cv_computed_gotos)
4780case "$ac_cv_computed_gotos" in yes*)
4781 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4782 [Define if the C compiler supports computed gotos.])
4783esac
4784
R. David Murraye16cda92010-10-15 23:12:57 +00004785case $ac_sys_system in
4786AIX*)
4787 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4788esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004789
Jesus Cea6a792292010-05-03 21:18:48 +00004790
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004791AC_SUBST(THREADHEADERS)
4792
4793for h in `(cd $srcdir;echo Python/thread_*.h)`
4794do
4795 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4796done
4797
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004798AC_SUBST(SRCDIRS)
Ned Deily0db50cf2014-07-25 12:41:31 -07004799SRCDIRS="Parser Grammar Objects Python Modules Mac Programs"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004800AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004801for dir in $SRCDIRS; do
4802 if test ! -d $dir; then
4803 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004804 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004805done
4806AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004807
Stefan Krah1919b7e2012-03-21 18:25:23 +01004808# Availability of -O2:
4809AC_MSG_CHECKING(for -O2)
4810saved_cflags="$CFLAGS"
4811CFLAGS="-O2"
4812AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
4813]])],[have_O2=yes],[have_O2=no])
4814AC_MSG_RESULT($have_O2)
4815CFLAGS="$saved_cflags"
4816
4817# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
4818# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
4819AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
4820saved_cflags="$CFLAGS"
4821CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
4822if test "$have_O2" = no; then
4823 CFLAGS=""
4824fi
4825AC_RUN_IFELSE([AC_LANG_SOURCE([[
4826#include <stdio.h>
4827#include <stdlib.h>
4828#include <string.h>
4829void foo(void *p, void *q) { memmove(p, q, 19); }
4830int main() {
4831 char a[32] = "123456789000000000";
4832 foo(&a[9], a);
4833 if (strcmp(a, "123456789123456789000000000") != 0)
4834 return 1;
4835 foo(a, &a[9]);
4836 if (strcmp(a, "123456789000000000") != 0)
4837 return 1;
4838 return 0;
4839}
4840]])],
4841[have_glibc_memmove_bug=no],
4842[have_glibc_memmove_bug=yes],
4843[have_glibc_memmove_bug=undefined])
4844CFLAGS="$saved_cflags"
4845AC_MSG_RESULT($have_glibc_memmove_bug)
4846if test "$have_glibc_memmove_bug" = yes; then
4847 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
4848 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
4849 for memmove and bcopy.])
4850fi
4851
4852if test "$have_gcc_asm_for_x87" = yes; then
4853 # Some versions of gcc miscompile inline asm:
4854 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
4855 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
4856 case $CC in
4857 *gcc*)
4858 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
4859 saved_cflags="$CFLAGS"
4860 CFLAGS="-O2"
4861 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4862 __attribute__((noinline)) int
4863 foo(int *p) {
4864 int r;
4865 asm ( "movl \$6, (%1)\n\t"
4866 "xorl %0, %0\n\t"
4867 : "=r" (r) : "r" (p) : "memory"
4868 );
4869 return r;
4870 }
4871 int main() {
4872 int p = 8;
4873 if ((foo(&p) ? : p) != 6)
4874 return 1;
4875 return 0;
4876 }
4877 ]])],
4878 [have_ipa_pure_const_bug=no],
4879 [have_ipa_pure_const_bug=yes],
4880 [have_ipa_pure_const_bug=undefined])
4881 CFLAGS="$saved_cflags"
4882 AC_MSG_RESULT($have_ipa_pure_const_bug)
4883 if test "$have_ipa_pure_const_bug" = yes; then
4884 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
4885 [Define if gcc has the ipa-pure-const bug.])
4886 fi
4887 ;;
4888 esac
4889fi
4890
Victor Stinner4f5366e2015-01-09 02:13:19 +01004891# Check for stdatomic.h
4892AC_MSG_CHECKING(for stdatomic.h)
4893AC_LINK_IFELSE(
4894[
4895 AC_LANG_SOURCE([[
4896 #include <stdatomic.h>
Victor Stinner923e06f2015-01-14 16:01:46 +01004897 atomic_int value = ATOMIC_VAR_INIT(1);
4898 _Atomic void *py_atomic_address = (void*) &value;
Victor Stinner4f5366e2015-01-09 02:13:19 +01004899 int main() {
4900 int loaded_value = atomic_load(&value);
4901 return 0;
4902 }
4903 ]])
4904],[have_stdatomic_h=yes],[have_stdatomic_h=no])
4905
4906AC_MSG_RESULT($have_stdatomic_h)
4907
4908if test "$have_stdatomic_h" = yes; then
Victor Stinner923e06f2015-01-14 16:01:46 +01004909 AC_DEFINE(HAVE_STD_ATOMIC, 1,
4910 [Has stdatomic.h, atomic_int and _Atomic void* types work])
Victor Stinner4f5366e2015-01-09 02:13:19 +01004911fi
4912
4913# Check for GCC >= 4.7 __atomic builtins
4914AC_MSG_CHECKING(for GCC >= 4.7 __atomic builtins)
4915AC_LINK_IFELSE(
4916[
4917 AC_LANG_SOURCE([[
4918 volatile int val = 1;
4919 int main() {
4920 __atomic_load_n(&val, __ATOMIC_SEQ_CST);
4921 return 0;
4922 }
4923 ]])
4924],[have_builtin_atomic=yes],[have_builtin_atomic=no])
4925
4926AC_MSG_RESULT($have_builtin_atomic)
4927
4928if test "$have_builtin_atomic" = yes; then
4929 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin atomics])
4930fi
4931
Ned Deily322f5ba2013-11-21 23:01:59 -08004932# ensurepip option
4933AC_MSG_CHECKING(for ensurepip)
4934AC_ARG_WITH(ensurepip,
4935 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
4936 ["install" or "upgrade" using bundled pip])],
4937 [],
4938 [with_ensurepip=upgrade])
4939AS_CASE($with_ensurepip,
4940 [yes|upgrade],[ENSUREPIP=upgrade],
4941 [install],[ENSUREPIP=install],
4942 [no],[ENSUREPIP=no],
4943 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
4944AC_MSG_RESULT($ENSUREPIP)
4945AC_SUBST(ENSUREPIP)
4946
Victor Stinner35a97c02015-03-08 02:59:09 +01004947# check if the dirent structure of a d_type field and DT_UNKNOWN is defined
4948AC_MSG_CHECKING(if the dirent structure of a d_type field)
4949AC_LINK_IFELSE(
4950[
4951 AC_LANG_SOURCE([[
4952 #include <dirent.h>
4953
4954 int main() {
4955 struct dirent entry;
4956 return entry.d_type == DT_UNKNOWN;
4957 }
4958 ]])
4959],[have_dirent_d_type=yes],[have_dirent_d_type=no])
4960AC_MSG_RESULT($have_dirent_d_type)
4961
4962if test "$have_dirent_d_type" = yes; then
4963 AC_DEFINE(HAVE_DIRENT_D_TYPE, 1,
4964 [Define to 1 if the dirent structure has a d_type field])
4965fi
4966
Guido van Rossum627b2d71993-12-24 10:39:16 +00004967# generate output files
doko@python.org87421192013-01-26 11:39:31 +01004968AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004969AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004970AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004971
Christian Heimes75ed8902013-11-20 01:11:18 +01004972echo "creating Modules/Setup" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004973if test ! -f Modules/Setup
4974then
4975 cp $srcdir/Modules/Setup.dist Modules/Setup
4976fi
4977
Christian Heimes75ed8902013-11-20 01:11:18 +01004978echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004979if test ! -f Modules/Setup.local
4980then
4981 echo "# Edit this file for local setup changes" >Modules/Setup.local
4982fi
4983
Christian Heimes75ed8902013-11-20 01:11:18 +01004984echo "creating Makefile" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00004985$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4986 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004987 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004988mv config.c Modules