blob: e065ce554b4ec92b33fc8225aa45b0d3225bb98f [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)
Ned Deily4829bc62016-09-12 17:29:04 -04006m4_define(PYTHON_VERSION, 3.7)
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
Benjamin Petersonc2fcbf42016-08-03 22:01:32 -070010AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
Trent Nelson4d4ec652012-10-16 08:51:24 -040012AC_SUBST(BASECPPFLAGS)
Martin Panterc5ee3ca2016-09-12 01:32:03 +000013if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; 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
Ned Deily5c4b0d02017-03-04 00:19:55 -050028AC_SUBST(GITVERSION)
29AC_SUBST(GITTAG)
30AC_SUBST(GITBRANCH)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050031
Victor Stinner5facdbb2017-05-02 21:42:48 +020032if test -e $srcdir/.git
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050033then
Ned Deily5c4b0d02017-03-04 00:19:55 -050034AC_CHECK_PROG(HAS_GIT, git, found, not-found)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050035else
Ned Deily5c4b0d02017-03-04 00:19:55 -050036HAS_GIT=no-repository
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050037fi
Ned Deily5c4b0d02017-03-04 00:19:55 -050038if test $HAS_GIT = found
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050039then
Ned Deily554626a2017-03-20 23:41:52 -040040 GITVERSION="git -C \$(srcdir) rev-parse --short HEAD"
41 GITTAG="git -C \$(srcdir) describe --all --always --dirty"
Ned Deily5c4b0d02017-03-04 00:19:55 -050042 GITBRANCH="git -C \$(srcdir) name-rev --name-only HEAD"
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050043else
Ned Deily5c4b0d02017-03-04 00:19:55 -050044 GITVERSION=""
45 GITTAG=""
46 GITBRANCH=""
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050047fi
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
Victor Stinnera5c62a82017-05-03 18:21:48 +020059AC_CHECK_PROGS(PYTHON_FOR_REGEN, python$PACKAGE_VERSION python3 python, python3)
60AC_SUBST(PYTHON_FOR_REGEN)
Xavier de Gayefd0d5932016-07-26 12:48:08 +020061
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020062if test "$cross_compiling" = yes; then
63 AC_MSG_CHECKING([for python interpreter for cross build])
64 if test -z "$PYTHON_FOR_BUILD"; then
65 for interp in python$PACKAGE_VERSION python3 python; do
66 which $interp >/dev/null 2>&1 || continue
Xavier de Gaye4afd1432016-07-07 18:00:22 +020067 if $interp -c "import sys;sys.exit(not '.'.join(str(n) for n in sys.version_info@<:@:2@:>@) == '$PACKAGE_VERSION')"; then
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020068 break
69 fi
70 interp=
71 done
72 if test x$interp = x; then
73 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
74 fi
75 AC_MSG_RESULT($interp)
Xavier de Gaye92dec542016-09-11 22:22:24 +020076 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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020077 fi
Christian Heimes954ac032012-12-12 13:10:21 +010078elif test "$cross_compiling" = maybe; then
79 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020080else
81 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
82fi
83AC_SUBST(PYTHON_FOR_BUILD)
84
Benjamin Petersond23f8222009-04-05 19:13:16 +000085dnl Ensure that if prefix is specified, it does not end in a slash. If
86dnl it does, we get path names containing '//' which is both ugly and
87dnl can cause trouble.
88
89dnl Last slash shouldn't be stripped if prefix=/
90if test "$prefix" != "/"; then
91 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
Victor Stinner1b80b242016-04-12 22:34:58 +020092fi
Benjamin Petersond23f8222009-04-05 19:13:16 +000093
Martin v. Löwis8316feb2003-06-14 07:48:07 +000094dnl This is for stuff that absolutely must end up in pyconfig.h.
95dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000096AH_TOP([
97#ifndef Py_PYCONFIG_H
98#define Py_PYCONFIG_H
99])
Martin v. Löwis11437992002-04-12 09:54:03 +0000100AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +0000101/* Define the macros needed if on a UnixWare 7.x system. */
102#if defined(__USLC__) && defined(__SCO_VERSION__)
103#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
104#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +0000105
106#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +0000107])
108
Martin v. Löwis8316feb2003-06-14 07:48:07 +0000109# We don't use PACKAGE_ variables, and they cause conflicts
110# with other autoconf-based packages that include Python.h
111grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
112rm confdefs.h
113mv confdefs.h.new confdefs.h
114
Guido van Rossum642b6781997-07-19 19:35:41 +0000115AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +0000116VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +0000117
Georg Brandlde7d8342010-09-03 22:19:07 +0000118# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +0000119AC_SUBST(SOVERSION)
120SOVERSION=1.0
121
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000122# The later defininition of _XOPEN_SOURCE disables certain features
123# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
124AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
125
Martin v. Löwisbcd93962003-05-03 10:32:18 +0000126# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
127# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
128# them.
129AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
130
Andrew MacIntyreabccf412003-07-02 13:53:25 +0000131# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
132# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
133# them.
134AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
135
Martin v. Löwisd6320502004-08-12 13:45:08 +0000136# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
137# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
138AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
139
Georg Brandlfcaf9102008-07-16 02:17:56 +0000140# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
141# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
142# them.
143AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
144
145
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000146define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000147
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000148# Arguments passed to configure.
149AC_SUBST(CONFIG_ARGS)
150CONFIG_ARGS="$ac_configure_args"
151
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000152AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000153AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700154 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000155[
156 case $enableval in
157 yes)
Ned Deilycbfb9a52012-06-23 16:02:19 -0700158 # Locate the best usable SDK, see Mac/README.txt for more
159 # information
160 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
Ned Deily87adb6e2013-10-18 21:09:56 -0700161 if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000162 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700163 enableval=/Developer/SDKs/MacOSX10.4u.sdk
164 if test ! -d "${enableval}"
165 then
166 enableval=/
167 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000168 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169 ;;
170 esac
171 case $enableval in
172 no)
173 UNIVERSALSDK=
174 enable_universalsdk=
175 ;;
176 *)
177 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000178 if test ! -d "${UNIVERSALSDK}"
179 then
180 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
181 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000182 ;;
183 esac
Victor Stinner1b80b242016-04-12 22:34:58 +0200184
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185],[
186 UNIVERSALSDK=
187 enable_universalsdk=
188])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000189if test -n "${UNIVERSALSDK}"
190then
191 AC_MSG_RESULT(${UNIVERSALSDK})
192else
193 AC_MSG_RESULT(no)
194fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000195AC_SUBST(UNIVERSALSDK)
196
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000197AC_SUBST(ARCH_RUN_32BIT)
Ned Deily87adb6e2013-10-18 21:09:56 -0700198ARCH_RUN_32BIT=""
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000199
Ned Deilycbfb9a52012-06-23 16:02:19 -0700200# For backward compatibility reasons we prefer to select '32-bit' if available,
201# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000202UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700203if test "`uname -s`" = "Darwin"
204then
205 if test -n "${UNIVERSALSDK}"
206 then
Ned Deily87adb6e2013-10-18 21:09:56 -0700207 if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700208 then
209 UNIVERSAL_ARCHS="intel"
210 fi
211 fi
212fi
213
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000214AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000215AC_MSG_CHECKING(for --with-universal-archs)
216AC_ARG_WITH(universal-archs,
Ned Deily87adb6e2013-10-18 21:09:56 -0700217 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 +0000218[
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219 UNIVERSAL_ARCHS="$withval"
220],
Ned Deily87adb6e2013-10-18 21:09:56 -0700221[])
222if test -n "${UNIVERSALSDK}"
223then
224 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
225else
226 AC_MSG_RESULT(no)
227fi
Georg Brandlfcaf9102008-07-16 02:17:56 +0000228
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000229AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000230 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000231 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000232[
233 PYTHONFRAMEWORK=${withval}
234 PYTHONFRAMEWORKDIR=${withval}.framework
235 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
236 ],[
237 PYTHONFRAMEWORK=Python
238 PYTHONFRAMEWORKDIR=Python.framework
239 PYTHONFRAMEWORKIDENTIFIER=org.python.python
240])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000241dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000242AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000243 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000244[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000245 case $enableval in
Victor Stinner1b80b242016-04-12 22:34:58 +0200246 yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000247 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000248 esac
249 case $enableval in
250 no)
251 PYTHONFRAMEWORK=
252 PYTHONFRAMEWORKDIR=no-framework
253 PYTHONFRAMEWORKPREFIX=
254 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000255 FRAMEWORKINSTALLFIRST=
256 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000257 FRAMEWORKALTINSTALLFIRST=
258 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800259 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000260 if test "x${prefix}" = "xNONE"; then
261 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
262 else
263 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
264 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000265 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000266 ;;
267 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000268 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000269 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000270 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000271 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000272 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
273 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ned Deilyb8f944f2013-11-21 22:42:25 -0800274 FRAMEWORKPYTHONW="frameworkpythonw"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000275 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000276
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000277 if test "x${prefix}" = "xNONE" ; then
278 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000279
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000280 else
281 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
282 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000283
284 case "${enableval}" in
285 /System*)
286 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
287 if test "${prefix}" = "NONE" ; then
288 # See below
289 FRAMEWORKUNIXTOOLSPREFIX="/usr"
290 fi
291 ;;
292
293 /Library*)
294 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
295 ;;
296
297 */Library/Frameworks)
298 MDIR="`dirname "${enableval}"`"
299 MDIR="`dirname "${MDIR}"`"
300 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
301
302 if test "${prefix}" = "NONE"; then
Victor Stinner1b80b242016-04-12 22:34:58 +0200303 # User hasn't specified the
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000304 # --prefix option, but wants to install
305 # the framework in a non-default location,
306 # ensure that the compatibility links get
307 # installed relative to that prefix as well
308 # instead of in /usr/local.
309 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
310 fi
311 ;;
312
313 *)
314 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
315 ;;
316 esac
317
Jack Jansen127e56e2001-09-11 14:41:54 +0000318 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000319
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000320 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000321 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000322 AC_CONFIG_FILES(Mac/Makefile)
323 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000324 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
325 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000326 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000327 ],[
328 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000329 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000330 PYTHONFRAMEWORKPREFIX=
331 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000332 FRAMEWORKINSTALLFIRST=
333 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000334 FRAMEWORKALTINSTALLFIRST=
335 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800336 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000337 if test "x${prefix}" = "xNONE" ; then
338 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
339 else
340 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
341 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000342 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000343
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000344])
345AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000346AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000347AC_SUBST(PYTHONFRAMEWORKDIR)
348AC_SUBST(PYTHONFRAMEWORKPREFIX)
349AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000350AC_SUBST(FRAMEWORKINSTALLFIRST)
351AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000352AC_SUBST(FRAMEWORKALTINSTALLFIRST)
353AC_SUBST(FRAMEWORKALTINSTALLLAST)
Ned Deilyb8f944f2013-11-21 22:42:25 -0800354AC_SUBST(FRAMEWORKPYTHONW)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000355AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000356AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000357
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000358##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000359## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000360## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000361##
Guido van Rossumb418f891996-07-30 18:06:02 +0000362# Set name for machine-dependent library files
doko@python.orgeab42bf2013-01-26 18:57:19 +0100363AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
Guido van Rossumb418f891996-07-30 18:06:02 +0000364AC_MSG_CHECKING(MACHDEP)
365if test -z "$MACHDEP"
366then
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100367 # avoid using uname for cross builds
368 if test "$cross_compiling" = yes; then
doko@python.org44bbbda2013-01-25 14:44:00 +0100369 # ac_sys_system and ac_sys_release are used for setting
370 # a lot of different things including 'define_xopen_source'
371 # in the case statement below.
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100372 case "$host" in
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100373 *-*-linux-android*)
374 ac_sys_system=Linux-android
375 ;;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100376 *-*-linux*)
377 ac_sys_system=Linux
378 ;;
379 *-*-cygwin*)
380 ac_sys_system=Cygwin
381 ;;
382 *)
383 # for now, limit cross builds to known configurations
384 MACHDEP="unknown"
385 AC_MSG_ERROR([cross build not supported for $host])
386 esac
387 ac_sys_release=
388 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000389 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000390 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000391 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000392 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000393 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000394 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000395 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100396 fi
397 ac_md_system=`echo $ac_sys_system |
398 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
399 ac_md_release=`echo $ac_sys_release |
400 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
401 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000402
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100403 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200404 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000405 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000406 darwin*) MACHDEP="darwin";;
doko@ubuntu.comba015832012-06-30 16:52:05 +0200407 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000408 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100409 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000410fi
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200411
412AC_SUBST(_PYTHON_HOST_PLATFORM)
413if test "$cross_compiling" = yes; then
414 case "$host" in
415 *-*-linux*)
416 case "$host_cpu" in
417 arm*)
418 _host_cpu=arm
419 ;;
420 *)
421 _host_cpu=$host_cpu
422 esac
423 ;;
424 *-*-cygwin*)
425 _host_cpu=
426 ;;
427 *)
428 # for now, limit cross builds to known configurations
429 MACHDEP="unknown"
430 AC_MSG_ERROR([cross build not supported for $host])
431 esac
432 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
433fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200434
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000435# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
436# disable features if it is defined, without any means to access these
437# features as extensions. For these systems, we skip the definition of
438# _XOPEN_SOURCE. Before adding a system to the list to gain access to
439# some feature, make sure there is no alternative way to access this
440# feature. Also, when using wildcards, make sure you have verified the
441# need for not defining _XOPEN_SOURCE on all systems matching the
442# wildcard, and that the wildcard does not include future systems
443# (which may remove their limitations).
444dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
445case $ac_sys_system/$ac_sys_release in
446 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
447 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000448 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000449 # In addition, Stefan Krah confirms that issue #1244610 exists through
450 # OpenBSD 4.6, but is fixed in 4.7.
Victor Stinner1b80b242016-04-12 22:34:58 +0200451 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000452 define_xopen_source=no
453 # 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 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200458 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000459 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
460 # also defined. This can be overridden by defining _BSD_SOURCE
461 # As this has a different meaning on Linux, only define it on OpenBSD
462 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
463 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000464 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
465 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
466 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000467 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 +0000468 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000469 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
470 # request to enable features supported by the standard as a request
471 # to disable features not supported by the standard. The best way
472 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
473 # entirely and define __EXTENSIONS__ instead.
474 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000475 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000476 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
477 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000478 # Reconfirmed for 7.1.4 by Martin v. Loewis.
479 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000480 define_xopen_source=no;;
481 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000482 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000483 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000484 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000485 # On FreeBSD 4, the math functions C89 does not cover are never defined
486 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
487 FreeBSD/4.*)
488 define_xopen_source=no;;
Victor Stinner1b80b242016-04-12 22:34:58 +0200489 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000490 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
491 # identifies itself as Darwin/7.*
492 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
493 # disables platform specific features beyond repair.
Victor Stinner1b80b242016-04-12 22:34:58 +0200494 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000495 # has no effect, don't bother defining them
496 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000497 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000498 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000499 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000500 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
501 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
502 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000503 AIX/4)
504 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000505 AIX/5)
506 if test `uname -r` -eq 1; then
507 define_xopen_source=no
508 fi
509 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000510 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
511 # defining NI_NUMERICHOST.
512 QNX/6.3.2)
513 define_xopen_source=no
514 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000515
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000516esac
517
518if test $define_xopen_source = yes
519then
Victor Stinner14d098d2011-09-07 22:29:43 +0200520 # X/Open 7, incorporating POSIX.1-2008
521 AC_DEFINE(_XOPEN_SOURCE, 700,
Martin v. Löwis1a415762010-05-28 15:44:20 +0000522 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000523
524 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
525 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
526 # several APIs are not declared. Since this is also needed in some
527 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000528 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
529 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000530
Victor Stinnerd169fdc2011-09-08 00:56:17 +0200531 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 +0000532fi
533
Christian Heimes647cd872013-12-07 23:39:33 +0100534# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE
535case $ac_sys_system in
Christian Heimesb02bcae2013-12-08 15:21:08 +0100536 hp*|HP*)
537 define_stdc_a1=yes;;
538 *)
539 define_stdc_a1=no;;
Christian Heimes647cd872013-12-07 23:39:33 +0100540esac
541
Christian Heimesb02bcae2013-12-08 15:21:08 +0100542if test $define_stdc_a1 = yes
543then
544 AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc)
545fi
546
Guido van Rossum91922671997-10-09 20:24:13 +0000547#
548# SGI compilers allow the specification of the both the ABI and the
549# ISA on the command line. Depending on the values of these switches,
Martin Panter46f50722016-05-26 05:35:26 +0000550# different and often incompatible code will be generated.
Guido van Rossum91922671997-10-09 20:24:13 +0000551#
552# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
553# thus supply support for various ABI/ISA combinations. The MACHDEP
554# variable is also adjusted.
555#
556AC_SUBST(SGI_ABI)
557if test ! -z "$SGI_ABI"
558then
559 CC="cc $SGI_ABI"
560 LDFLAGS="$SGI_ABI $LDFLAGS"
561 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
562fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000563AC_MSG_RESULT($MACHDEP)
564
Jack Jansen6b08a402004-06-03 12:41:45 +0000565# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
566# it may influence the way we can build extensions, so distutils
567# needs to check it
568AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000569AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000570CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000571EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000572
Guido van Rossum627b2d71993-12-24 10:39:16 +0000573# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000574
575# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
576# for debug/optimization stuff. BASECFLAGS is for flags that are required
577# just to get things to compile and link. Users are free to override OPT
578# when running configure or make. The build should not break if they do.
579# BASECFLAGS should generally not be messed with, however.
580
581# XXX shouldn't some/most/all of this code be merged with the stuff later
582# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000583AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000584AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000585 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000586[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000587 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000588 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000589 without_gcc=yes;;
590 yes) CC=gcc
591 without_gcc=no;;
592 *) CC=$withval
593 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000594 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000595 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000596 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000597 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000598 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000599 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000600AC_MSG_RESULT($without_gcc)
601
Zachary Ware5af85642015-12-21 12:09:17 -0600602AC_MSG_CHECKING(for --with-icc)
603AC_ARG_WITH(icc,
604 AS_HELP_STRING([--with-icc], [build with icc]),
605[
606 case $withval in
607 no) CC=${CC:-cc}
608 with_icc=no;;
609 yes) CC=icc
610 CXX=icpc
611 with_icc=yes;;
612 *) CC=$withval
613 with_icc=$withval;;
614 esac], [
615 with_icc=no])
616AC_MSG_RESULT($with_icc)
617
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000618# If the user switches compilers, we can't believe the cache
619if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
620then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000621 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
622(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000623fi
624
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000625# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
626# when the compiler supports them, but we don't always want -O2, and
627# we set -g later.
628if test -z "$CFLAGS"; then
629 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000630fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700631
632if test "$ac_sys_system" = "Darwin"
633then
634 # Compiler selection on MacOSX is more complicated than
635 # AC_PROG_CC can handle, see Mac/README.txt for more
636 # information
637 if test -z "${CC}"
638 then
639 found_gcc=
640 found_clang=
641 as_save_IFS=$IFS; IFS=:
642 for as_dir in $PATH
643 do
644 IFS=$as_save_IFS
645 if test -x $as_dir/gcc; then
646 if test -z "${found_gcc}"; then
647 found_gcc=$as_dir/gcc
648 fi
649 fi
650 if test -x $as_dir/clang; then
651 if test -z "${found_clang}"; then
652 found_clang=$as_dir/clang
653 fi
654 fi
655 done
656 IFS=$as_save_IFS
657
658 if test -n "$found_gcc" -a -n "$found_clang"
659 then
660 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
661 then
662 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
663 CC="$found_clang"
664 CXX="$found_clang++"
665 fi
666
667
668 elif test -z "$found_gcc" -a -n "$found_clang"
669 then
670 AC_MSG_NOTICE([No GCC found, use CLANG])
671 CC="$found_clang"
672 CXX="$found_clang++"
673
674 elif test -z "$found_gcc" -a -z "$found_clang"
675 then
676 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
677 if test -n "${found_clang}"
678 then
679 AC_MSG_NOTICE([Using clang from Xcode.app])
680 CC="${found_clang}"
681 CXX="`/usr/bin/xcrun -find clang++`"
682
683 # else: use default behaviour
684 fi
685 fi
686 fi
687fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000688AC_PROG_CC
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200689AC_PROG_CPP
690AC_PROG_GREP
Łukasz Langaa785c872016-09-09 17:37:37 -0700691AC_PROG_SED
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000692
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000693AC_SUBST(CXX)
694AC_SUBST(MAINCC)
695AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
696AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000697 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000698 [compile main() and link python executable with C++ compiler]),
699[
Victor Stinner1b80b242016-04-12 22:34:58 +0200700
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000701 case $withval in
702 no) with_cxx_main=no
703 MAINCC='$(CC)';;
704 yes) with_cxx_main=yes
705 MAINCC='$(CXX)';;
706 *) with_cxx_main=yes
707 MAINCC=$withval
708 if test -z "$CXX"
709 then
710 CXX=$withval
711 fi;;
712 esac], [
713 with_cxx_main=no
714 MAINCC='$(CC)'
715])
716AC_MSG_RESULT($with_cxx_main)
717
718preset_cxx="$CXX"
719if test -z "$CXX"
720then
721 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200722 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
723 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
724 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Zachary Ware5af85642015-12-21 12:09:17 -0600725 icc|*/icc) AC_PATH_TOOL(CXX, [icpc], [icpc], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000726 esac
727 if test "$CXX" = "notfound"
728 then
729 CXX=""
730 fi
731fi
732if test -z "$CXX"
733then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200734 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000735 if test "$CXX" = "notfound"
736 then
737 CXX=""
738 fi
739fi
740if test "$preset_cxx" != "$CXX"
741then
Christian Heimesfe32aec2013-11-20 01:18:26 +0100742 AC_MSG_NOTICE([
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000743
744 By default, distutils will build C++ extension modules with "$CXX".
745 If this is not intended, then set CXX on the configure command line.
746 ])
747fi
748
749
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200750MULTIARCH=$($CC --print-multiarch 2>/dev/null)
751AC_SUBST(MULTIARCH)
752
753AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
754cat >> conftest.c <<EOF
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200755#undef bfin
756#undef cris
757#undef fr30
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200758#undef linux
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200759#undef hppa
760#undef hpux
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200761#undef i386
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200762#undef mips
doko@ubuntu.com9abe0492015-04-15 23:31:02 +0200763#undef powerpc
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200764#undef sparc
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200765#undef unix
doko@ubuntu.com5c38cb22016-09-01 22:05:20 +0200766#if defined(__ANDROID__)
Xavier de Gaye32cf1ac2016-12-10 17:31:28 +0100767 # Android is not a multiarch system.
doko@ubuntu.com5c38cb22016-09-01 22:05:20 +0200768#elif defined(__linux__)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200769# if defined(__x86_64__) && defined(__LP64__)
770 x86_64-linux-gnu
771# elif defined(__x86_64__) && defined(__ILP32__)
772 x86_64-linux-gnux32
773# elif defined(__i386__)
774 i386-linux-gnu
775# elif defined(__aarch64__) && defined(__AARCH64EL__)
776# if defined(__ILP32__)
777 aarch64_ilp32-linux-gnu
778# else
779 aarch64-linux-gnu
780# endif
781# elif defined(__aarch64__) && defined(__AARCH64EB__)
782# if defined(__ILP32__)
783 aarch64_be_ilp32-linux-gnu
784# else
785 aarch64_be-linux-gnu
786# endif
787# elif defined(__alpha__)
788 alpha-linux-gnu
789# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
790# if defined(__ARMEL__)
791 arm-linux-gnueabihf
792# else
793 armeb-linux-gnueabihf
794# endif
795# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
796# if defined(__ARMEL__)
797 arm-linux-gnueabi
798# else
799 armeb-linux-gnueabi
800# endif
801# elif defined(__hppa__)
802 hppa-linux-gnu
803# elif defined(__ia64__)
804 ia64-linux-gnu
805# elif defined(__m68k__) && !defined(__mcoldfire__)
806 m68k-linux-gnu
807# elif defined(__mips_hard_float) && defined(_MIPSEL)
808# if _MIPS_SIM == _ABIO32
809 mipsel-linux-gnu
810# elif _MIPS_SIM == _ABIN32
811 mips64el-linux-gnuabin32
812# elif _MIPS_SIM == _ABI64
813 mips64el-linux-gnuabi64
814# else
815# error unknown platform triplet
816# endif
817# elif defined(__mips_hard_float)
818# if _MIPS_SIM == _ABIO32
819 mips-linux-gnu
820# elif _MIPS_SIM == _ABIN32
821 mips64-linux-gnuabin32
822# elif _MIPS_SIM == _ABI64
823 mips64-linux-gnuabi64
824# else
825# error unknown platform triplet
826# endif
827# elif defined(__or1k__)
828 or1k-linux-gnu
829# elif defined(__powerpc__) && defined(__SPE__)
830 powerpc-linux-gnuspe
831# elif defined(__powerpc64__)
832# if defined(__LITTLE_ENDIAN__)
833 powerpc64le-linux-gnu
834# else
835 powerpc64-linux-gnu
836# endif
837# elif defined(__powerpc__)
838 powerpc-linux-gnu
839# elif defined(__s390x__)
840 s390x-linux-gnu
841# elif defined(__s390__)
842 s390-linux-gnu
843# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
844 sh4-linux-gnu
845# elif defined(__sparc__) && defined(__arch64__)
846 sparc64-linux-gnu
847# elif defined(__sparc__)
848 sparc-linux-gnu
849# else
850# error unknown platform triplet
851# endif
852#elif defined(__FreeBSD_kernel__)
853# if defined(__LP64__)
854 x86_64-kfreebsd-gnu
855# elif defined(__i386__)
856 i386-kfreebsd-gnu
857# else
858# error unknown platform triplet
859# endif
860#elif defined(__gnu_hurd__)
861 i386-gnu
Ned Deily3b812482015-04-15 17:11:47 -0700862#elif defined(__APPLE__)
863 darwin
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200864#else
865# error unknown platform triplet
866#endif
867
868EOF
869
Xavier de Gaye3a32bdf2016-07-30 11:28:35 +0200870if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200871 PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '`
872 AC_MSG_RESULT([$PLATFORM_TRIPLET])
873else
874 AC_MSG_RESULT([none])
875fi
876rm -f conftest.c conftest.out
877
878if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
879 if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
880 AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report])
881 fi
doko@ubuntu.com75b1cb12016-08-29 20:03:25 +0200882elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
883 MULTIARCH=$PLATFORM_TRIPLET
Victor Stinner1b80b242016-04-12 22:34:58 +0200884fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200885AC_SUBST(PLATFORM_TRIPLET)
doko@ubuntu.com55532312016-06-14 08:55:19 +0200886if test x$MULTIARCH != x; then
887 MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
888fi
889AC_SUBST(MULTIARCH_CPPFLAGS)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200890
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200891AC_MSG_CHECKING([for -Wl,--no-as-needed])
892save_LDFLAGS="$LDFLAGS"
893LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
894AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
895 [NO_AS_NEEDED="-Wl,--no-as-needed"
896 AC_MSG_RESULT([yes])],
897 [NO_AS_NEEDED=""
898 AC_MSG_RESULT([no])])
899LDFLAGS="$save_LDFLAGS"
900AC_SUBST(NO_AS_NEEDED)
901
902
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000903# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000904AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000905
Xavier de Gaye95750b12016-07-09 11:05:42 +0200906AC_MSG_CHECKING([for the Android API level])
907cat >> conftest.c <<EOF
908#ifdef __ANDROID__
909#include <android/api-level.h>
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100910android_api = __ANDROID_API__
911arm_arch = __ARM_ARCH
Xavier de Gaye95750b12016-07-09 11:05:42 +0200912#else
913#error not Android
914#endif
915EOF
916
917if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100918 ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out`
919 _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out`
Xavier de Gaye95750b12016-07-09 11:05:42 +0200920 AC_MSG_RESULT([$ANDROID_API_LEVEL])
921 AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.])
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100922
923 AC_MSG_CHECKING([for the Android arm ABI])
924 AC_MSG_RESULT([$_arm_arch])
925 if test "$_arm_arch" = 7; then
926 BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16"
927 LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8"
928 fi
Xavier de Gaye95750b12016-07-09 11:05:42 +0200929else
930 AC_MSG_RESULT([not Android])
931fi
932rm -f conftest.c conftest.out
933
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000934# Check for unsupported systems
935case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000936atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000937 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
938 echo See README for details.
939 exit 1;;
940esac
941
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000942AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000943AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000944AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000945 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000946[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000947 case $withval in
948 no) EXEEXT=;;
949 yes) EXEEXT=.exe;;
950 *) EXEEXT=$withval;;
951 esac])
952AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000953
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000954# Test whether we're running on a non-case-sensitive system, in which
955# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000956AC_SUBST(BUILDEXEEXT)
957AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000958if test ! -d CaseSensitiveTestDir; then
959mkdir CaseSensitiveTestDir
960fi
961
962if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000963then
Jack Jansen1999ef42001-12-06 21:47:20 +0000964 AC_MSG_RESULT(yes)
965 BUILDEXEEXT=.exe
966else
967 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000968 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000969fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000970rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000971
Guido van Rossumdd997f71998-10-07 19:58:26 +0000972case $MACHDEP in
973bsdos*)
974 case $CC in
975 gcc) CC="$CC -D_HAVE_BSDI";;
976 esac;;
977esac
978
Guido van Rossum84561611997-08-21 00:08:11 +0000979case $ac_sys_system in
980hp*|HP*)
981 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000982 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000983 esac;;
984esac
985
Neil Schemenauer61c51152001-01-26 16:18:16 +0000986AC_SUBST(LIBRARY)
987AC_MSG_CHECKING(LIBRARY)
988if test -z "$LIBRARY"
989then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000990 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000991fi
992AC_MSG_RESULT($LIBRARY)
993
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000994# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000995# name of the library into which to insert object files). BLDLIBRARY is also
996# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
997# is blank as the main program is not linked directly against LDLIBRARY.
998# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
999# systems without shared libraries, LDLIBRARY is the same as LIBRARY
1000# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
1001# DLLLIBRARY is the shared (i.e., DLL) library.
Victor Stinner1b80b242016-04-12 22:34:58 +02001002#
Martin v. Löwis1142de32002-03-29 16:28:31 +00001003# RUNSHARED is used to run shared python without installed libraries
1004#
1005# INSTSONAME is the name of the shared library that will be use to install
1006# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001007#
1008# LDVERSION is the shared library version number, normally the Python version
1009# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001010AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +00001011AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001012AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001013AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001014AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001015AC_SUBST(INSTSONAME)
1016AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001017AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +00001018LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001019BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +00001020INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +00001021DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001022LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +00001023RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +00001024LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001025
Guido van Rossumfb842551997-08-06 23:42:07 +00001026# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +00001027# If CXX is set, and if it is needed to link a main function that was
1028# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
1029# python might then depend on the C++ runtime
Victor Stinner1b80b242016-04-12 22:34:58 +02001030# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001031# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +00001032AC_SUBST(LINKCC)
1033AC_MSG_CHECKING(LINKCC)
1034if test -z "$LINKCC"
1035then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001036 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +00001037 case $ac_sys_system in
1038 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +00001039 exp_extra="\"\""
1040 if test $ac_sys_release -ge 5 -o \
1041 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
1042 exp_extra="."
1043 fi
1044 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001045 QNX*)
1046 # qcc must be used because the other compilers do not
1047 # support -N.
1048 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +00001049 esac
1050fi
1051AC_MSG_RESULT($LINKCC)
1052
Tarek Ziadébe720e02009-05-09 11:55:12 +00001053# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
1054# make sure we default having it set to "no": this is used by
1055# distutils.unixccompiler to know if it should add --enable-new-dtags
1056# to linker command lines, and failing to detect GNU ld simply results
1057# in the same bahaviour as before.
1058AC_SUBST(GNULD)
1059AC_MSG_CHECKING(for GNU ld)
1060ac_prog=ld
1061if test "$GCC" = yes; then
1062 ac_prog=`$CC -print-prog-name=ld`
1063fi
1064case `"$ac_prog" -V 2>&1 < /dev/null` in
1065 *GNU*)
1066 GNULD=yes;;
1067 *)
1068 GNULD=no;;
1069esac
1070AC_MSG_RESULT($GNULD)
1071
Martin v. Löwis1142de32002-03-29 16:28:31 +00001072AC_MSG_CHECKING(for --enable-shared)
1073AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001074 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001075
Martin v. Löwis1142de32002-03-29 16:28:31 +00001076if test -z "$enable_shared"
Victor Stinner1b80b242016-04-12 22:34:58 +02001077then
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001078 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +00001079 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001080 enable_shared="yes";;
1081 *)
1082 enable_shared="no";;
1083 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001084fi
1085AC_MSG_RESULT($enable_shared)
1086
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001087AC_MSG_CHECKING(for --enable-profiling)
1088AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +02001089 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
1090if test "x$enable_profiling" = xyes; then
1091 ac_save_cc="$CC"
Benjamin Peterson615ea1a2013-03-26 08:55:37 -04001092 CC="$CC -pg"
doko@ubuntu.comba015832012-06-30 16:52:05 +02001093 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
1094 [],
1095 [enable_profiling=no])
1096 CC="$ac_save_cc"
1097else
1098 enable_profiling=no
1099fi
1100AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001101
doko@ubuntu.comba015832012-06-30 16:52:05 +02001102if test "x$enable_profiling" = xyes; then
1103 BASECFLAGS="-pg $BASECFLAGS"
1104 LDFLAGS="-pg $LDFLAGS"
1105fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001106
1107AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001108
Guido van Rossumb8552162001-09-05 14:58:11 +00001109# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
1110# library that we build, but we do not want to link against it (we
1111# will find it with a -framework option). For this reason there is an
1112# extra variable BLDLIBRARY against which Python and the extension
1113# modules are linked, BLDLIBRARY. This is normally the same as
1114# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001115if test "$enable_framework"
1116then
1117 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001118 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001119 BLDLIBRARY=''
1120else
1121 BLDLIBRARY='$(LDLIBRARY)'
Victor Stinner1b80b242016-04-12 22:34:58 +02001122fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001123
Martin v. Löwis1142de32002-03-29 16:28:31 +00001124# Other platforms follow
1125if test $enable_shared = "yes"; then
doko@python.org87421192013-01-26 11:39:31 +01001126 PY_ENABLE_SHARED=1
Mark Hammond8235ea12002-07-19 06:55:41 +00001127 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +00001128 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +00001129 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001130 LDLIBRARY='libpython$(LDVERSION).dll.a'
1131 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +00001132 ;;
1133 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001134 LDLIBRARY='libpython$(LDVERSION).so'
1135 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001136 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +00001137 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001138 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001139 then
1140 PY3LIBRARY=libpython3.so
1141 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001142 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +02001143 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001144 LDLIBRARY='libpython$(LDVERSION).so'
1145 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001146 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001147 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001148 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001149 then
1150 PY3LIBRARY=libpython3.so
1151 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001152 ;;
1153 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001154 case `uname -m` in
1155 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001156 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001157 ;;
1158 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001159 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001160 ;;
1161 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001162 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001163 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001164 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001165 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001166 LDLIBRARY='libpython$(LDVERSION).dylib'
1167 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001168 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Georg Brandlb1441c72009-01-03 22:33:39 +00001169 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001170 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001171 LDLIBRARY='libpython$(LDVERSION).so'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001172 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001173 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001174
Martin v. Löwis1142de32002-03-29 16:28:31 +00001175 esac
Jason Tishler30765592003-09-04 11:04:06 +00001176else # shared is disabled
doko@python.org87421192013-01-26 11:39:31 +01001177 PY_ENABLE_SHARED=0
Jason Tishler30765592003-09-04 11:04:06 +00001178 case $ac_sys_system in
1179 CYGWIN*)
1180 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001181 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +00001182 ;;
1183 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001184fi
1185
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +02001186if test "$cross_compiling" = yes; then
1187 RUNSHARED=
1188fi
1189
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001190AC_MSG_RESULT($LDLIBRARY)
1191
Guido van Rossum627b2d71993-12-24 10:39:16 +00001192AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001193AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +02001194AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +00001195
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001196# tweak ARFLAGS only if the user didn't set it on the command line
1197AC_SUBST(ARFLAGS)
1198if test -z "$ARFLAGS"
1199then
1200 ARFLAGS="rc"
1201fi
1202
doko@ubuntu.com58844492012-06-30 18:25:32 +02001203AC_CHECK_TOOLS([READELF], [readelf], [:])
1204if test "$cross_compiling" = yes; then
1205 case "$READELF" in
1206 readelf|:)
1207 AC_MSG_ERROR([readelf for the host is required for cross builds])
1208 ;;
1209 esac
1210fi
1211AC_SUBST(READELF)
1212
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001213
Neil Schemenauera42c8272001-03-31 00:01:55 +00001214case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +00001215bsdos*|hp*|HP*)
1216 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001217 if test -z "$INSTALL"
1218 then
1219 INSTALL="${srcdir}/install-sh -c"
1220 fi
1221esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001222AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001223AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001224
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001225# Not every filesystem supports hard links
1226AC_SUBST(LN)
1227if test -z "$LN" ; then
1228 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001229 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001230 *) LN=ln;;
1231 esac
1232fi
1233
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001234# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001235AC_SUBST(ABIFLAGS)
1236ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001237
Fred Drake9f715822001-07-11 06:27:00 +00001238# Check for --with-pydebug
1239AC_MSG_CHECKING(for --with-pydebug)
Victor Stinner1b80b242016-04-12 22:34:58 +02001240AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001241 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001242[
Fred Drake9f715822001-07-11 06:27:00 +00001243if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02001244then
1245 AC_DEFINE(Py_DEBUG, 1,
1246 [Define if you want to build an interpreter with many run-time checks.])
1247 AC_MSG_RESULT(yes);
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001248 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001249 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001250else AC_MSG_RESULT(no); Py_DEBUG='false'
1251fi],
1252[AC_MSG_RESULT(no)])
1253
Brett Cannon63d98bc2016-09-06 17:12:40 -07001254# Enable optimization flags
1255AC_SUBST(DEF_MAKE_ALL_RULE)
1256AC_SUBST(DEF_MAKE_RULE)
1257Py_OPT='false'
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001258AC_MSG_CHECKING(for --enable-optimizations)
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)164eea52016-11-20 21:13:16 +00001259AC_ARG_ENABLE(optimizations, AS_HELP_STRING([--enable-optimizations], [Enable expensive optimizations (PGO, etc). Disabled by default.]),
Brett Cannon63d98bc2016-09-06 17:12:40 -07001260[
Alex Wang8cea5922017-03-28 08:50:51 -04001261if test "$enableval" != no
Brett Cannon63d98bc2016-09-06 17:12:40 -07001262then
1263 Py_OPT='true'
1264 AC_MSG_RESULT(yes);
1265else
1266 Py_OPT='false'
1267 AC_MSG_RESULT(no);
1268fi],
1269[AC_MSG_RESULT(no)])
1270if test "$Py_OPT" = 'true' ; then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)14c7f712016-09-08 22:38:46 +00001271 # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not
1272 # compile working code using it and both test_distutils and test_gdb are
Brett Cannon1d8f7552016-11-03 16:20:00 -07001273 # broken when you do manage to get a toolchain that works with it. People
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)14c7f712016-09-08 22:38:46 +00001274 # who want LTO need to use --with-lto themselves.
Brett Cannon63d98bc2016-09-06 17:12:40 -07001275 DEF_MAKE_ALL_RULE="profile-opt"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001276 REQUIRE_PGO="yes"
Brett Cannon63d98bc2016-09-06 17:12:40 -07001277 DEF_MAKE_RULE="build_all"
1278else
1279 DEF_MAKE_ALL_RULE="build_all"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001280 REQUIRE_PGO="no"
Brett Cannon63d98bc2016-09-06 17:12:40 -07001281 DEF_MAKE_RULE="all"
1282fi
1283
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001284# Enable LTO flags
1285AC_SUBST(LTOFLAGS)
1286AC_MSG_CHECKING(for --with-lto)
1287AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
1288[
1289if test "$withval" != no
1290then
1291 Py_LTO='true'
1292 AC_MSG_RESULT(yes);
1293else
1294 Py_LTO='false'
1295 AC_MSG_RESULT(no);
1296fi],
1297[AC_MSG_RESULT(no)])
1298if test "$Py_LTO" = 'true' ; then
1299 case $CC in
1300 *clang*)
Ned Deily8482ce42016-09-06 15:09:20 -07001301 case $ac_sys_system in
1302 Darwin*)
1303 # Any changes made here should be reflected in the GCC+Darwin case below
1304 LTOFLAGS="-flto -Wl,-export_dynamic"
1305 ;;
1306 *)
1307 LTOFLAGS="-flto"
1308 ;;
1309 esac
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001310 ;;
1311 *gcc*)
1312 case $ac_sys_system in
1313 Darwin*)
Ned Deily8482ce42016-09-06 15:09:20 -07001314 LTOFLAGS="-flto -Wl,-export_dynamic"
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001315 ;;
1316 *)
1317 LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
1318 ;;
1319 esac
1320 ;;
1321 esac
1322fi
1323
Brett Cannon7188a3e2015-09-18 15:13:44 -07001324# Enable PGO flags.
1325AC_SUBST(PGO_PROF_GEN_FLAG)
1326AC_SUBST(PGO_PROF_USE_FLAG)
1327AC_SUBST(LLVM_PROF_MERGER)
1328AC_SUBST(LLVM_PROF_FILE)
1329AC_SUBST(LLVM_PROF_ERR)
Gregory P. Smith799520c2016-09-07 16:10:00 -07001330# Make this work on systems where llvm tools are not installed with their
1331# normal names in the default $PATH (ie: Ubuntu). They exist under the
1332# non-suffixed name in their versioned llvm directory.
1333llvm_bin_dir=''
1334llvm_path="${PATH}"
1335if test "${CC}" = "clang"
1336then
1337 clang_bin=`which clang`
1338 # Some systems install clang elsewhere as a symlink to the real path
1339 # which is where the related llvm tools are located.
1340 if test -L "${clang_bin}"
1341 then
1342 clang_dir=`dirname "${clang_bin}"`
1343 clang_bin=`readlink "${clang_bin}"`
1344 llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"`
1345 llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}"
1346 fi
1347fi
1348AC_SUBST(LLVM_PROFDATA)
1349AC_PATH_TARGET_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path})
Brett Cannon7188a3e2015-09-18 15:13:44 -07001350AC_SUBST(LLVM_PROF_FOUND)
Gregory P. Smith799520c2016-09-07 16:10:00 -07001351if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}"
1352then
1353 LLVM_PROF_FOUND="found"
1354else
1355 LLVM_PROF_FOUND="not-found"
1356fi
1357if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found"
1358then
1359 found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null`
1360 if test -n "${found_llvm_profdata}"
1361 then
1362 # llvm-profdata isn't directly in $PATH in some cases.
1363 # https://apple.stackexchange.com/questions/197053/
1364 LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata'
1365 LLVM_PROF_FOUND=found
1366 AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}])
1367 fi
1368fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001369LLVM_PROF_ERR=no
1370case $CC in
1371 *clang*)
1372 # Any changes made here should be reflected in the GCC+Darwin case below
1373 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1374 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001375 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001376 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
1377 if test $LLVM_PROF_FOUND = not-found
1378 then
1379 LLVM_PROF_ERR=yes
Gregory P. Smith799520c2016-09-07 16:10:00 -07001380 if test "${REQUIRE_PGO}" = "yes"
1381 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001382 AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
Gregory P. Smith799520c2016-09-07 16:10:00 -07001383 fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001384 fi
1385 ;;
1386 *gcc*)
1387 case $ac_sys_system in
1388 Darwin*)
1389 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1390 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001391 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001392 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
Gregory P. Smith799520c2016-09-07 16:10:00 -07001393 if test "${LLVM_PROF_FOUND}" = "not-found"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001394 then
1395 LLVM_PROF_ERR=yes
Gregory P. Smith799520c2016-09-07 16:10:00 -07001396 if test "${REQUIRE_PGO}" = "yes"
1397 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001398 AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
Gregory P. Smith799520c2016-09-07 16:10:00 -07001399 fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001400 fi
1401 ;;
1402 *)
1403 PGO_PROF_GEN_FLAG="-fprofile-generate"
1404 PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
1405 LLVM_PROF_MERGER="true"
1406 LLVM_PROF_FILE=""
1407 ;;
1408 esac
1409 ;;
Zachary Ware5af85642015-12-21 12:09:17 -06001410 *icc*)
1411 PGO_PROF_GEN_FLAG="-prof-gen"
1412 PGO_PROF_USE_FLAG="-prof-use"
1413 LLVM_PROF_MERGER="true"
1414 LLVM_PROF_FILE=""
1415 ;;
Brett Cannon7188a3e2015-09-18 15:13:44 -07001416esac
1417
Skip Montanarodecc6a42003-01-01 20:07:49 +00001418# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1419# merged with this chunk of code?
1420
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001421# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001422# ------------------------
1423# (The following bit of code is complicated enough - please keep things
1424# indented properly. Just pretend you're editing Python code. ;-)
1425
1426# There are two parallel sets of case statements below, one that checks to
1427# see if OPT was set and one that does BASECFLAGS setting based upon
1428# compiler and platform. BASECFLAGS tweaks need to be made even if the
1429# user set OPT.
1430
1431# tweak OPT based on compiler and platform, only if the user didn't set
1432# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001433AC_SUBST(OPT)
Victor Stinner826f83f2017-04-28 15:07:10 +02001434AC_SUBST(CFLAGS_ALIASING)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001435if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001436then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001437 case $GCC in
1438 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001439 if test "$CC" != 'g++' ; then
1440 STRICT_PROTO="-Wstrict-prototypes"
1441 fi
Christian Heimes38053212007-12-14 01:24:44 +00001442 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1443 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1444 WRAP="-fwrapv"
1445 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001446
Stefan Krahaf04ff22011-12-08 22:20:31 +01001447 case $CC in
Victor Stinner28205b22017-04-21 11:24:34 +02001448 *clang*)
Victor Stinner35f3d242017-04-21 12:35:24 +02001449 cc_is_clang=1
Victor Stinner28205b22017-04-21 11:24:34 +02001450 ;;
Victor Stinner35f3d242017-04-21 12:35:24 +02001451 *)
1452 if $CC --version 2>&1 | grep -q clang
1453 then
1454 cc_is_clang=1
1455 else
1456 cc_is_clang=
1457 fi
Stefan Krahaf04ff22011-12-08 22:20:31 +01001458 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001459
Victor Stinner35f3d242017-04-21 12:35:24 +02001460 if test -n "${cc_is_clang}"
1461 then
1462 # Clang also needs -fwrapv
1463 WRAP="-fwrapv"
Victor Stinner826f83f2017-04-28 15:07:10 +02001464 # bpo-30104: disable strict aliasing to compile correctly dtoa.c,
1465 # see Makefile.pre.in for more information
1466 CFLAGS_ALIASING="-fno-strict-aliasing"
Victor Stinner35f3d242017-04-21 12:35:24 +02001467 fi
1468
Skip Montanarodecc6a42003-01-01 20:07:49 +00001469 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001470 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001471 if test "$Py_DEBUG" = 'true' ; then
1472 # Optimization messes up debuggers, so turn it off for
1473 # debug builds.
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001474 if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
Victor Stinner28205b22017-04-21 11:24:34 +02001475 OPT="-g -Og -Wall"
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001476 else
Victor Stinner28205b22017-04-21 11:24:34 +02001477 OPT="-g -O0 -Wall"
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001478 fi
Fred Drake9f715822001-07-11 06:27:00 +00001479 else
Victor Stinner28205b22017-04-21 11:24:34 +02001480 OPT="-g $WRAP -O3 -Wall"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001481 fi
1482 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001483 *)
Victor Stinner28205b22017-04-21 11:24:34 +02001484 OPT="-O3 -Wall"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001485 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001486 esac
Victor Stinner28205b22017-04-21 11:24:34 +02001487
Victor Stinner826f83f2017-04-28 15:07:10 +02001488 OPT="$OPT $STRICT_PROTO"
Victor Stinner28205b22017-04-21 11:24:34 +02001489
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001490 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001491 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1492 ;;
1493 esac
Fred Drake9f715822001-07-11 06:27:00 +00001494 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001495
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001496 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001497 OPT="-O"
1498 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001499 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001500fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001501
Skip Montanarodecc6a42003-01-01 20:07:49 +00001502AC_SUBST(BASECFLAGS)
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001503AC_SUBST(CFLAGS_NODIST)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001504
1505# The -arch flags for universal builds on OSX
1506UNIVERSAL_ARCH_FLAGS=
1507AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1508
Skip Montanarodecc6a42003-01-01 20:07:49 +00001509# tweak BASECFLAGS based on compiler and platform
1510case $GCC in
1511yes)
Benjamin Peterson050af5d2016-09-10 17:53:13 -07001512 CFLAGS_NODIST="$CFLAGS_NODIST -std=c99"
Benjamin Petersond1702562016-09-07 12:00:06 -07001513
Serhiy Storchakaea80ffb2016-09-11 21:56:32 +03001514 AC_MSG_CHECKING(for -Wextra)
1515 ac_save_cc="$CC"
1516 CC="$CC -Wextra -Werror"
1517 AC_CACHE_VAL(ac_cv_extra_warnings,
1518 AC_COMPILE_IFELSE(
1519 [
1520 AC_LANG_PROGRAM([[]], [[]])
1521 ],[
1522 ac_cv_extra_warnings=yes
1523 ],[
1524 ac_cv_extra_warnings=no
1525 ]))
1526 CC="$ac_save_cc"
1527 AC_MSG_RESULT($ac_cv_extra_warnings)
1528
1529 if test $ac_cv_extra_warnings = yes
1530 then
1531 CFLAGS_NODIST="$CFLAGS_NODIST -Wextra"
1532 fi
1533
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001534 # Python doesn't violate C99 aliasing rules, but older versions of
1535 # GCC produce warnings for legal Python code. Enable
1536 # -fno-strict-aliasing on versions of GCC that support but produce
1537 # warnings. See Issue3326
1538 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001539 ac_save_cc="$CC"
1540 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001541 save_CFLAGS="$CFLAGS"
1542 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001543 AC_COMPILE_IFELSE(
1544 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001545 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001546 ],[
1547 CC="$ac_save_cc -fstrict-aliasing"
1548 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1549 AC_COMPILE_IFELSE(
1550 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001551 AC_LANG_PROGRAM([[void f(int **x) {}]],
1552 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001553 ],[
1554 ac_cv_no_strict_aliasing=no
1555 ],[
1556 ac_cv_no_strict_aliasing=yes
1557 ])
1558 ],[
1559 ac_cv_no_strict_aliasing=no
1560 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001561 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001562 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001563 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1564 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001565 then
1566 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1567 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001568
Zachary Ware5af85642015-12-21 12:09:17 -06001569 # ICC doesn't recognize the option, but only emits a warning
1570 ## XXX does it emit an unused result warning and can it be disabled?
1571 case "$CC" in
1572 *icc*)
1573 ac_cv_disable_unused_result_warning=no
1574 ;;
1575 *)
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001576 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1577 ac_save_cc="$CC"
1578 CC="$CC -Wunused-result -Werror"
1579 save_CFLAGS="$CFLAGS"
1580 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1581 AC_COMPILE_IFELSE(
1582 [
1583 AC_LANG_PROGRAM([[]], [[]])
1584 ],[
1585 ac_cv_disable_unused_result_warning=yes
1586 ],[
1587 ac_cv_disable_unused_result_warning=no
1588 ]))
1589 CFLAGS="$save_CFLAGS"
1590 CC="$ac_save_cc"
1591 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
Zachary Ware5af85642015-12-21 12:09:17 -06001592 ;;
1593 esac
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001594
1595 if test $ac_cv_disable_unused_result_warning = yes
1596 then
1597 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
Serhiy Storchakaea80ffb2016-09-11 21:56:32 +03001598 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result"
1599 fi
1600
1601 AC_MSG_CHECKING(if we can turn off $CC unused parameter warning)
1602 ac_save_cc="$CC"
1603 CC="$CC -Wunused-parameter -Werror"
1604 AC_CACHE_VAL(ac_cv_disable_unused_parameter_warning,
1605 AC_COMPILE_IFELSE(
1606 [
1607 AC_LANG_PROGRAM([[]], [[]])
1608 ],[
1609 ac_cv_disable_unused_parameter_warning=yes
1610 ],[
1611 ac_cv_disable_unused_parameter_warning=no
1612 ]))
1613 CC="$ac_save_cc"
1614 AC_MSG_RESULT($ac_cv_disable_unused_parameter_warning)
1615
1616 if test $ac_cv_disable_unused_parameter_warning = yes
1617 then
1618 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter"
1619 fi
1620
1621 AC_MSG_CHECKING(if we can turn off $CC missing field initializers warning)
1622 ac_save_cc="$CC"
1623 CC="$CC -Wmissing-field-initializers -Werror"
1624 AC_CACHE_VAL(ac_cv_disable_missing_field_initializers,
1625 AC_COMPILE_IFELSE(
1626 [
1627 AC_LANG_PROGRAM([[]], [[]])
1628 ],[
1629 ac_cv_disable_missing_field_initializers=yes
1630 ],[
1631 ac_cv_disable_missing_field_initializers=no
1632 ]))
1633 CC="$ac_save_cc"
1634 AC_MSG_RESULT($ac_cv_disable_missing_field_initializers)
1635
1636 if test $ac_cv_disable_missing_field_initializers = yes
1637 then
1638 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers"
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001639 fi
1640
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001641 AC_MSG_CHECKING(if we can turn on $CC mixed sign comparison warning)
1642 ac_save_cc="$CC"
1643 CC="$CC -Wsign-compare"
1644 save_CFLAGS="$CFLAGS"
1645 AC_CACHE_VAL(ac_cv_enable_sign_compare_warning,
1646 AC_COMPILE_IFELSE(
1647 [
1648 AC_LANG_PROGRAM([[]], [[]])
1649 ],[
1650 ac_cv_enable_sign_compare_warning=yes
1651 ],[
1652 ac_cv_enable_sign_compare_warning=no
1653 ]))
1654 CFLAGS="$save_CFLAGS"
1655 CC="$ac_save_cc"
1656 AC_MSG_RESULT($ac_cv_enable_sign_compare_warning)
1657
1658 if test $ac_cv_enable_sign_compare_warning = yes
1659 then
1660 BASECFLAGS="$BASECFLAGS -Wsign-compare"
1661 fi
1662
1663 AC_MSG_CHECKING(if we can turn on $CC unreachable code warning)
1664 ac_save_cc="$CC"
1665 CC="$CC -Wunreachable-code"
1666 save_CFLAGS="$CFLAGS"
1667 AC_CACHE_VAL(ac_cv_enable_unreachable_code_warning,
1668 AC_COMPILE_IFELSE(
1669 [
1670 AC_LANG_PROGRAM([[]], [[]])
1671 ],[
1672 ac_cv_enable_unreachable_code_warning=yes
1673 ],[
1674 ac_cv_enable_unreachable_code_warning=no
1675 ]))
1676 CFLAGS="$save_CFLAGS"
1677 CC="$ac_save_cc"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001678
1679 # Don't enable unreachable code warning in debug mode, since it usually
1680 # results in non-standard code paths.
Ned Deilybec699e2016-03-08 00:28:37 -05001681 # Issue #24324: Unfortunately, the unreachable code warning does not work
1682 # correctly on gcc and has been silently removed from the compiler.
1683 # It is supported on clang but on OS X systems gcc may be an alias
1684 # for clang. Try to determine if the compiler is not really gcc and,
1685 # if so, only then enable the warning.
1686 if test $ac_cv_enable_unreachable_code_warning = yes && \
1687 test "$Py_DEBUG" != "true" && \
1688 test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001689 then
1690 BASECFLAGS="$BASECFLAGS -Wunreachable-code"
Ned Deilybec699e2016-03-08 00:28:37 -05001691 else
1692 ac_cv_enable_unreachable_code_warning=no
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001693 fi
Ned Deilybec699e2016-03-08 00:28:37 -05001694 AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning)
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001695
Victor Stinner193ee0a2017-02-06 14:24:00 +01001696 AC_MSG_CHECKING(if we can make implicit function declaration an error in $CC)
1697 ac_save_cc="$CC"
1698 CC="$CC -Werror=implicit-function-declaration"
1699 AC_CACHE_VAL(ac_cv_enable_implicit_function_declaration_error,
1700 AC_COMPILE_IFELSE(
1701 [
1702 AC_LANG_PROGRAM([[]], [[]])
1703 ],[
1704 ac_cv_enable_implicit_function_declaration_error=yes
1705 ],[
1706 ac_cv_enable_implicit_function_declaration_error=no
1707 ]))
1708 CC="$ac_save_cc"
1709 AC_MSG_RESULT($ac_cv_enable_implicit_function_declaration_error)
1710
1711 if test $ac_cv_enable_implicit_function_declaration_error = yes
1712 then
1713 CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration"
1714 fi
1715
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001716 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1717 # support. Without this, treatment of subnormals doesn't follow
1718 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001719 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001720 alpha*)
1721 BASECFLAGS="$BASECFLAGS -mieee"
1722 ;;
1723 esac
1724
Skip Montanarodecc6a42003-01-01 20:07:49 +00001725 case $ac_sys_system in
1726 SCO_SV*)
1727 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1728 ;;
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001729
Ned Deily87adb6e2013-10-18 21:09:56 -07001730 # is there any other compiler on Darwin besides gcc?
1731 Darwin*)
1732 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1733 # used to be here, but non-Apple gcc doesn't accept them.
1734 if test "${CC}" = gcc
1735 then
1736 AC_MSG_CHECKING(which compiler should be used)
1737 case "${UNIVERSALSDK}" in
1738 */MacOSX10.4u.sdk)
1739 # Build using 10.4 SDK, force usage of gcc when the
1740 # compiler is gcc, otherwise the user will get very
1741 # confusing error messages when building on OSX 10.6
1742 CC=gcc-4.0
1743 CPP=cpp-4.0
1744 ;;
1745 esac
1746 AC_MSG_RESULT($CC)
1747 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001748
Ned Deily87adb6e2013-10-18 21:09:56 -07001749 if test "${enable_universalsdk}"
1750 then
1751 case "$UNIVERSAL_ARCHS" in
1752 32-bit)
1753 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1754 LIPO_32BIT_FLAGS=""
1755 ARCH_RUN_32BIT=""
1756 ;;
1757 64-bit)
1758 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1759 LIPO_32BIT_FLAGS=""
1760 ARCH_RUN_32BIT="true"
1761 ;;
1762 all)
1763 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1764 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1765 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1766 ;;
1767 intel)
1768 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1769 LIPO_32BIT_FLAGS="-extract i386"
1770 ARCH_RUN_32BIT="/usr/bin/arch -i386"
1771 ;;
1772 intel-32)
1773 UNIVERSAL_ARCH_FLAGS="-arch i386"
1774 LIPO_32BIT_FLAGS=""
1775 ARCH_RUN_32BIT=""
1776 ;;
1777 3-way)
1778 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1779 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1780 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1781 ;;
1782 *)
1783 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1784 ;;
1785 esac
Georg Brandlfcaf9102008-07-16 02:17:56 +00001786
Ned Deily87adb6e2013-10-18 21:09:56 -07001787 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1788 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1789 if test "${UNIVERSALSDK}" != "/"
1790 then
1791 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1792 fi
1793 fi
Georg Brandlfcaf9102008-07-16 02:17:56 +00001794
Ned Deily87adb6e2013-10-18 21:09:56 -07001795 # Calculate an appropriate deployment target for this build:
1796 # The deployment target value is used explicitly to enable certain
1797 # features are enabled (such as builtin libedit support for readline)
Raymond Hettinger15f44ab2016-08-30 10:47:49 -07001798 # through the use of Apple's Availability Macros and is used as a
Ned Deily87adb6e2013-10-18 21:09:56 -07001799 # component of the string returned by distutils.get_platform().
1800 #
1801 # Use the value from:
1802 # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
1803 # 2. the operating system version of the build machine if >= 10.6
1804 # 3. If running on OS X 10.3 through 10.5, use the legacy tests
1805 # below to pick either 10.3, 10.4, or 10.5 as the target.
1806 # 4. If we are running on OS X 10.2 or earlier, good luck!
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001807
Ned Deily87adb6e2013-10-18 21:09:56 -07001808 AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
Ned Deily36820b62014-06-25 13:44:22 -07001809 cur_target_major=`sw_vers -productVersion | \
1810 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1811 cur_target_minor=`sw_vers -productVersion | \
1812 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1813 cur_target="${cur_target_major}.${cur_target_minor}"
1814 if test ${cur_target_major} -eq 10 && \
1815 test ${cur_target_minor} -ge 3 && \
1816 test ${cur_target_minor} -le 5
Ned Deily87adb6e2013-10-18 21:09:56 -07001817 then
Ned Deily36820b62014-06-25 13:44:22 -07001818 # OS X 10.3 through 10.5
Ned Deily87adb6e2013-10-18 21:09:56 -07001819 cur_target=10.3
1820 if test ${enable_universalsdk}
1821 then
1822 case "$UNIVERSAL_ARCHS" in
1823 all|3-way|intel|64-bit)
1824 # These configurations were first supported in 10.5
1825 cur_target='10.5'
1826 ;;
1827 esac
1828 else
1829 if test `/usr/bin/arch` = "i386"
1830 then
1831 # 10.4 was the first release to support Intel archs
1832 cur_target="10.4"
1833 fi
1834 fi
1835 fi
1836 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001837
Ned Deily87adb6e2013-10-18 21:09:56 -07001838 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1839 # environment with a value that is the same as what we'll use
1840 # in the Makefile to ensure that we'll get the same compiler
1841 # environment during configure and build time.
1842 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1843 export MACOSX_DEPLOYMENT_TARGET
1844 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1845 AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001846
Ned Deily87adb6e2013-10-18 21:09:56 -07001847 # end of Darwin* tests
1848 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001849 esac
1850 ;;
1851
1852*)
1853 case $ac_sys_system in
1854 OpenUNIX*|UnixWare*)
1855 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1856 ;;
1857 SCO_SV*)
1858 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1859 ;;
1860 esac
1861 ;;
1862esac
1863
Zachary Ware5af85642015-12-21 12:09:17 -06001864# ICC needs -fp-model strict or floats behave badly
1865case "$CC" in
1866*icc*)
1867 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
1868 ;;
1869esac
1870
Fred Drakee1ceaa02001-12-04 20:55:47 +00001871if test "$Py_DEBUG" = 'true'; then
1872 :
1873else
1874 OPT="-DNDEBUG $OPT"
1875fi
1876
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001877if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001878then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001879 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001880fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001881
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001882# On some compilers, pthreads are available without further options
1883# (e.g. MacOS X). On some of these systems, the compiler will not
1884# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1885# So we have to see first whether pthreads are available without
1886# options before we can check whether -Kpthread improves anything.
1887AC_MSG_CHECKING(whether pthreads are available without options)
1888AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001889[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001890#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001891#include <pthread.h>
1892
1893void* routine(void* p){return NULL;}
1894
1895int main(){
1896 pthread_t p;
1897 if(pthread_create(&p,NULL,routine,NULL)!=0)
1898 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001899 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001900 return 0;
1901}
Matthias Kloseb159a552010-04-25 21:00:44 +00001902]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001903 ac_cv_pthread_is_default=yes
1904 ac_cv_kthread=no
1905 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001906],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001907])
1908AC_MSG_RESULT($ac_cv_pthread_is_default)
1909
1910
Victor Stinner1b80b242016-04-12 22:34:58 +02001911if test $ac_cv_pthread_is_default = yes
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001912then
1913 ac_cv_kpthread=no
1914else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001915# -Kpthread, if available, provides the right #defines
1916# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001917# Some compilers won't report that they do not support -Kpthread,
1918# so we need to run a program to see whether it really made the
1919# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001920AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1921AC_CACHE_VAL(ac_cv_kpthread,
1922[ac_save_cc="$CC"
1923CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001924AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001925#include <stdio.h>
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001926#include <pthread.h>
1927
1928void* routine(void* p){return NULL;}
1929
1930int main(){
1931 pthread_t p;
1932 if(pthread_create(&p,NULL,routine,NULL)!=0)
1933 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001934 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001935 return 0;
1936}
Matthias Kloseb159a552010-04-25 21:00:44 +00001937]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001938CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001939AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001940fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001941
Skip Montanarod8d39a02003-07-10 20:44:10 +00001942if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001943then
1944# -Kthread, if available, provides the right #defines
1945# and linker options to make pthread_create available
1946# Some compilers won't report that they do not support -Kthread,
1947# so we need to run a program to see whether it really made the
1948# function available.
1949AC_MSG_CHECKING(whether $CC accepts -Kthread)
1950AC_CACHE_VAL(ac_cv_kthread,
1951[ac_save_cc="$CC"
1952CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001953AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001954#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001955#include <pthread.h>
1956
1957void* routine(void* p){return NULL;}
1958
1959int main(){
1960 pthread_t p;
1961 if(pthread_create(&p,NULL,routine,NULL)!=0)
1962 return 1;
1963 (void)pthread_detach(p);
1964 return 0;
1965}
Matthias Kloseb159a552010-04-25 21:00:44 +00001966]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001967CC="$ac_save_cc"])
1968AC_MSG_RESULT($ac_cv_kthread)
1969fi
1970
Skip Montanarod8d39a02003-07-10 20:44:10 +00001971if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001972then
1973# -pthread, if available, provides the right #defines
1974# and linker options to make pthread_create available
1975# Some compilers won't report that they do not support -pthread,
1976# so we need to run a program to see whether it really made the
1977# function available.
1978AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.org7981f202013-01-25 15:33:25 +01001979AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001980[ac_save_cc="$CC"
1981CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001982AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001983#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001984#include <pthread.h>
1985
1986void* routine(void* p){return NULL;}
1987
1988int main(){
1989 pthread_t p;
1990 if(pthread_create(&p,NULL,routine,NULL)!=0)
1991 return 1;
1992 (void)pthread_detach(p);
1993 return 0;
1994}
Matthias Kloseb159a552010-04-25 21:00:44 +00001995]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001996CC="$ac_save_cc"])
1997AC_MSG_RESULT($ac_cv_pthread)
1998fi
1999
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002000# If we have set a CC compiler flag for thread support then
2001# check if it works for CXX, too.
2002ac_cv_cxx_thread=no
2003if test ! -z "$CXX"
2004then
2005AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
2006ac_save_cxx="$CXX"
2007
2008if test "$ac_cv_kpthread" = "yes"
2009then
Victor Stinner1b80b242016-04-12 22:34:58 +02002010 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002011 ac_cv_cxx_thread=yes
2012elif test "$ac_cv_kthread" = "yes"
2013then
2014 CXX="$CXX -Kthread"
2015 ac_cv_cxx_thread=yes
2016elif test "$ac_cv_pthread" = "yes"
Victor Stinner1b80b242016-04-12 22:34:58 +02002017then
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002018 CXX="$CXX -pthread"
2019 ac_cv_cxx_thread=yes
2020fi
2021
2022if test $ac_cv_cxx_thread = yes
2023then
2024 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
2025 $CXX -c conftest.$ac_ext 2>&5
2026 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
2027 && test -s conftest$ac_exeext && ./conftest$ac_exeext
2028 then
2029 ac_cv_cxx_thread=yes
2030 else
2031 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002032 fi
2033 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002034fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00002035AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002036fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00002037CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002038
Fred Drakece81d592000-07-09 14:39:29 +00002039dnl # check for ANSI or K&R ("traditional") preprocessor
2040dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00002041dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00002042dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
2043dnl int foo;
2044dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00002045dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00002046dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00002047
Guido van Rossum627b2d71993-12-24 10:39:16 +00002048# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002049AC_HEADER_STDC
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02002050AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002051fcntl.h grp.h \
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02002052ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
Benjamin Peterson4fe55102016-09-06 11:58:01 -07002053sched.h shadow.h signal.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00002054unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01002055poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01002056sys/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 +01002057sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Benjamin Petersonfb2ae152016-12-19 23:54:25 -08002058sys/param.h sys/random.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01002059sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002060sys/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 -07002061libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Benjamin Peterson93b2dee2016-09-09 10:22:45 -07002062linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \
Christian Heimes985ecdc2013-11-20 11:46:18 +01002063sys/endian.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002064AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002065AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00002066
Benjamin Peterson93b2dee2016-09-09 10:22:45 -07002067# bluetooth/bluetooth.h has been known to not compile with -std=c99.
2068# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
2069SAVE_CFLAGS=$CFLAGS
2070CFLAGS="-std=c99 $CFLAGS"
2071AC_CHECK_HEADERS(bluetooth/bluetooth.h)
2072CFLAGS=$SAVE_CFLAGS
2073
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07002074# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
2075AC_CHECK_HEADERS([net/if.h], [], [],
2076[#include <stdio.h>
2077#ifdef STDC_HEADERS
2078# include <stdlib.h>
2079# include <stddef.h>
2080#else
2081# ifdef HAVE_STDLIB_H
2082# include <stdlib.h>
2083# endif
2084#endif
2085#ifdef HAVE_SYS_SOCKET_H
2086# include <sys/socket.h>
2087#endif
2088])
2089
Martin v. Löwis11017b12006-01-14 18:12:57 +00002090# On Linux, netlink.h requires asm/types.h
2091AC_CHECK_HEADERS(linux/netlink.h,,,[
2092#ifdef HAVE_ASM_TYPES_H
2093#include <asm/types.h>
2094#endif
2095#ifdef HAVE_SYS_SOCKET_H
2096#include <sys/socket.h>
2097#endif
2098])
2099
Charles-François Natali47413c12011-10-06 19:47:44 +02002100# On Linux, can.h and can/raw.h require sys/socket.h
Charles-François Natali773e42d2013-02-05 19:42:01 +01002101AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
Charles-François Natali47413c12011-10-06 19:47:44 +02002102#ifdef HAVE_SYS_SOCKET_H
2103#include <sys/socket.h>
2104#endif
2105])
2106
Guido van Rossum627b2d71993-12-24 10:39:16 +00002107# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002108was_it_defined=no
2109AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002110AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
2111 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
2112])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002113AC_MSG_RESULT($was_it_defined)
2114
Neal Norwitz11690112002-07-30 01:08:28 +00002115AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00002116AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2117#if defined(MAJOR_IN_MKDEV)
2118#include <sys/mkdev.h>
2119#elif defined(MAJOR_IN_SYSMACROS)
2120#include <sys/sysmacros.h>
2121#else
2122#include <sys/types.h>
2123#endif
2124]], [[
2125 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00002126],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00002127AC_MSG_RESULT($ac_cv_has_makedev)
2128if test "$ac_cv_has_makedev" = "yes"; then
2129 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
2130fi
2131
Christian Heimes985ecdc2013-11-20 11:46:18 +01002132# byte swapping
2133AC_MSG_CHECKING(for le64toh)
2134AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2135#ifdef HAVE_ENDIAN_H
2136#include <endian.h>
2137#elif defined(HAVE_SYS_ENDIAN_H)
2138#include <sys/endian.h>
2139#endif
2140]], [[
2141 le64toh(1) ]])
2142],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
2143AC_MSG_RESULT($ac_cv_has_le64toh)
2144if test "$ac_cv_has_le64toh" = "yes"; then
2145 AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
2146fi
2147
Martin v. Löwis399a6892002-10-04 10:22:02 +00002148# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
2149# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
2150# defined, but the compiler does not support pragma redefine_extname,
2151# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
2152# structures (such as rlimit64) without declaring them. As a
2153# work-around, disable LFS on such configurations
2154
2155use_lfs=yes
2156AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00002157AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00002158#define _LARGEFILE_SOURCE 1
2159#define _FILE_OFFSET_BITS 64
2160#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002161]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00002162AC_MSG_RESULT($sol_lfs_bug)
2163if test "$sol_lfs_bug" = "yes"; then
2164 use_lfs=no
2165fi
2166
doko@ubuntu.com006a56c2016-06-14 10:15:25 +02002167# Don't use largefile support for GNU/Hurd
2168case $ac_sys_system in GNU*)
2169 use_lfs=no
2170esac
2171
Martin v. Löwis399a6892002-10-04 10:22:02 +00002172if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00002173# Two defines needed to enable largefile support on various platforms
2174# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00002175case $ac_sys_system/$ac_sys_release in
2176AIX*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002177 AC_DEFINE(_LARGE_FILES, 1,
Georg Brandl216e4042011-02-19 08:58:23 +00002178 [This must be defined on AIX systems to enable large file support.])
2179 ;;
2180esac
Victor Stinner1b80b242016-04-12 22:34:58 +02002181AC_DEFINE(_LARGEFILE_SOURCE, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002182[This must be defined on some systems to enable large file support.])
2183AC_DEFINE(_FILE_OFFSET_BITS, 64,
2184[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00002185fi
Guido van Rossum810cc512001-09-09 23:51:39 +00002186
Guido van Rossum300fda71996-08-19 21:58:16 +00002187# Add some code to confdefs.h so that the test for off_t works on SCO
2188cat >> confdefs.h <<\EOF
2189#if defined(SCO_DS)
2190#undef _OFF_T
2191#endif
2192EOF
2193
Guido van Rossumef2255b2000-03-10 22:30:29 +00002194# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002195AC_TYPE_MODE_T
2196AC_TYPE_OFF_T
2197AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00002198AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002199AC_TYPE_SIZE_T
2200AC_TYPE_UID_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002201
Christian Heimes400adb02008-02-01 08:12:03 +00002202AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002203 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01002204AC_CHECK_TYPE(__uint128_t,
2205 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002206
Guido van Rossumef2255b2000-03-10 22:30:29 +00002207# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00002208# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00002209AC_CHECK_SIZEOF(int, 4)
2210AC_CHECK_SIZEOF(long, 4)
Benjamin Petersoned4aa832016-09-05 17:44:18 -07002211AC_CHECK_SIZEOF(long long, 8)
Guido van Rossum3065c942001-09-17 04:03:14 +00002212AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00002213AC_CHECK_SIZEOF(short, 2)
2214AC_CHECK_SIZEOF(float, 4)
2215AC_CHECK_SIZEOF(double, 8)
2216AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00002217AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00002218AC_CHECK_SIZEOF(pid_t, 4)
Benjamin Petersondf6ff7b2016-09-06 13:53:14 -07002219AC_CHECK_SIZEOF(uintptr_t)
Guido van Rossumac405f61994-09-12 10:56:06 +00002220
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002221AC_MSG_CHECKING(for long double support)
2222have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002223AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Victor Stinner1b80b242016-04-12 22:34:58 +02002224 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002225 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002226],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002227AC_MSG_RESULT($have_long_double)
2228if test "$have_long_double" = yes ; then
2229AC_CHECK_SIZEOF(long double, 16)
2230fi
2231
Thomas Woutersb2137042007-02-01 18:02:27 +00002232AC_CHECK_SIZEOF(_Bool, 1)
Thomas Woutersb2137042007-02-01 18:02:27 +00002233
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002234AC_CHECK_SIZEOF(off_t, [], [
2235#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002236#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002237#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002238])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002239
2240AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00002241if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00002242 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Victor Stinner1b80b242016-04-12 22:34:58 +02002243 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002244 [Defined to enable large file support when an off_t is bigger than a long
2245 and long long is available and at least as big as an off_t. You may need
2246 to add some flags for configuration and compilation to enable this mode.
2247 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002248 AC_MSG_RESULT(yes)
2249else
2250 AC_MSG_RESULT(no)
2251fi
2252
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002253AC_CHECK_SIZEOF(time_t, [], [
2254#ifdef HAVE_SYS_TYPES_H
2255#include <sys/types.h>
2256#endif
2257#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00002258#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002259#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00002260])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002261
Trent Mick635f6fb2000-08-23 21:33:05 +00002262# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002263ac_save_cc="$CC"
2264if test "$ac_cv_kpthread" = "yes"
2265then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002266elif test "$ac_cv_kthread" = "yes"
2267then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002268elif test "$ac_cv_pthread" = "yes"
2269then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002270fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002271
Trent Mick635f6fb2000-08-23 21:33:05 +00002272AC_MSG_CHECKING(for pthread_t)
2273have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002274AC_COMPILE_IFELSE([
2275 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
2276],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00002277AC_MSG_RESULT($have_pthread_t)
2278if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002279 AC_CHECK_SIZEOF(pthread_t, [], [
2280#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002281#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002282#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00002283 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00002284fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002285CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00002286
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002287AC_SUBST(OTHER_LIBTOOL_OPT)
2288case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002289 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002290 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
2291 ;;
2292 Darwin/*)
2293 OTHER_LIBTOOL_OPT=""
2294 ;;
2295esac
2296
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002297
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002298AC_SUBST(LIBTOOL_CRUFT)
2299case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002300 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00002301 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
2302 if test "${enable_universalsdk}"; then
2303 :
2304 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002305 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00002306 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00002307 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002308 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00002309 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00002310 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002311 if test ${gcc_version} '<' 4.0
2312 then
2313 LIBTOOL_CRUFT="-lcc_dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002314 else
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002315 LIBTOOL_CRUFT=""
2316 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00002317 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002318 #include <unistd.h>
2319 int main(int argc, char*argv[])
2320 {
2321 if (sizeof(long) == 4) {
2322 return 0;
2323 } else {
2324 return 1;
2325 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00002326 }
Matthias Kloseb159a552010-04-25 21:00:44 +00002327 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Victor Stinner1b80b242016-04-12 22:34:58 +02002328
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002329 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002330 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002331 i386)
2332 MACOSX_DEFAULT_ARCH="i386"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002333 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002334 ppc)
2335 MACOSX_DEFAULT_ARCH="ppc"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002336 ;;
2337 *)
2338 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2339 ;;
2340 esac
2341 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002342 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002343 i386)
2344 MACOSX_DEFAULT_ARCH="x86_64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002345 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002346 ppc)
2347 MACOSX_DEFAULT_ARCH="ppc64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002348 ;;
2349 *)
2350 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2351 ;;
2352 esac
2353
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002354 fi
2355
2356 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00002357 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002358 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002359esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002360AC_MSG_CHECKING(for --enable-framework)
2361if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002362then
Skip Montanarodecc6a42003-01-01 20:07:49 +00002363 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002364 # -F. is needed to allow linking to the framework while
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002365 # in the build location.
Victor Stinner1b80b242016-04-12 22:34:58 +02002366 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002367 [Define if you want to produce an OpenStep/Rhapsody framework
2368 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002369 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00002370 if test $enable_shared = "yes"
2371 then
2372 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
2373 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002374else
2375 AC_MSG_RESULT(no)
2376fi
2377
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002378AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002379case $ac_sys_system/$ac_sys_release in
2380 Darwin/*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002381 AC_DEFINE(WITH_DYLD, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002382 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
2383 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
2384 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002385 AC_MSG_RESULT(always on for Darwin)
2386 ;;
2387 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002388 AC_MSG_RESULT(no)
2389 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002390esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002391
Guido van Rossumac405f61994-09-12 10:56:06 +00002392# Set info about shared libraries.
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002393AC_SUBST(SHLIB_SUFFIX)
Guido van Rossumac405f61994-09-12 10:56:06 +00002394AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002395AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002396AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002397AC_SUBST(CCSHARED)
2398AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00002399
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002400# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
2401# -- usually .so, .sl on HP-UX, .dll on Cygwin
2402AC_MSG_CHECKING(the extension of shared libraries)
2403if test -z "$SHLIB_SUFFIX"; then
2404 case $ac_sys_system in
2405 hp*|HP*)
2406 case `uname -m` in
2407 ia64) SHLIB_SUFFIX=.so;;
2408 *) SHLIB_SUFFIX=.sl;;
2409 esac
2410 ;;
2411 CYGWIN*) SHLIB_SUFFIX=.dll;;
2412 *) SHLIB_SUFFIX=.so;;
2413 esac
2414fi
2415AC_MSG_RESULT($SHLIB_SUFFIX)
2416
Guido van Rossumac405f61994-09-12 10:56:06 +00002417# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00002418# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002419# (Shared libraries in this instance are shared modules to be loaded into
2420# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002421AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002422if test -z "$LDSHARED"
2423then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002424 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002425 AIX*)
Martin Panter395733d2016-11-20 07:56:37 +00002426 BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Martin Panter5de141f2016-08-27 04:00:19 +00002427 LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002428 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002429 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00002430 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Victor Stinner1b80b242016-04-12 22:34:58 +02002431 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002432 if test "$GCC" = "yes" ; then
2433 LDSHARED='$(CC) -shared'
2434 LDCXXSHARED='$(CXX) -shared'
2435 else
2436 LDSHARED='$(CC) -G'
2437 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00002438 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002439 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002440 if test "$GCC" = "yes" ; then
2441 LDSHARED='$(CC) -shared'
2442 LDCXXSHARED='$(CXX) -shared'
2443 else
2444 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002445 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00002446 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002447 LDSHARED='$(CC) -bundle'
2448 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002449 if test "$enable_framework" ; then
2450 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002451 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2452 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002453 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002454 else
2455 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002456 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002457 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002458 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002459 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002460 LDSHARED='$(CC) -bundle'
2461 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002462 if test "$enable_framework" ; then
2463 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002464 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2465 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002466 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002467 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002468 # No framework, use the Python app as bundle-loader
2469 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002470 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002471 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002472 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002473 Darwin/*)
2474 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2475 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00002476
Ned Deily36820b62014-06-25 13:44:22 -07002477 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2478 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2479 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2480 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2481 if test ${dep_target_major} -eq 10 && \
2482 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002483 then
Ned Deily36820b62014-06-25 13:44:22 -07002484 # building for OS X 10.0 through 10.2
Antoine Pitroud4958c22010-10-13 17:01:10 +00002485 LDSHARED='$(CC) -bundle'
2486 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002487 if test "$enable_framework" ; then
2488 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002489 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2490 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002491 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002492 else
2493 # No framework, use the Python app as bundle-loader
2494 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2495 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002496 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002497 fi
Ned Deily36820b62014-06-25 13:44:22 -07002498 else
2499 # building for OS X 10.3 and later
2500 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2501 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2502 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002503 fi
2504 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002505 Linux*|GNU*|QNX*)
2506 LDSHARED='$(CC) -shared'
2507 LDCXXSHARED='$(CXX) -shared';;
2508 BSD/OS*/4*)
2509 LDSHARED="gcc -shared"
2510 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002511 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002512 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002513 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002514 LDSHARED='$(CC) -shared'
2515 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002516 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00002517 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002518 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002519 OpenBSD*)
2520 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2521 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002522 LDSHARED='$(CC) -shared $(CCSHARED)'
2523 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002524 else
2525 case `uname -r` in
2526 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2527 LDSHARED="ld -Bshareable ${LDFLAGS}"
2528 ;;
2529 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002530 LDSHARED='$(CC) -shared $(CCSHARED)'
2531 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002532 ;;
2533 esac
2534 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002535 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00002536 LDSHARED='$(CC) -shared'
2537 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002538 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002539 if test "$GCC" = "yes" ; then
2540 LDSHARED='$(CC) -shared'
2541 LDCXXSHARED='$(CXX) -shared'
2542 else
2543 LDSHARED='$(CC) -G'
2544 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002545 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002546 SCO_SV*)
2547 LDSHARED='$(CC) -Wl,-G,-Bexport'
2548 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2549 CYGWIN*)
2550 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2551 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002552 *) LDSHARED="ld";;
2553 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002554fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002555AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002556LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002557BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002558# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002559# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002560AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002561if test -z "$CCSHARED"
2562then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002563 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002564 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002565 then CCSHARED="-fPIC";
2566 elif test `uname -p` = sparc;
2567 then CCSHARED="-xcode=pic32";
2568 else CCSHARED="-Kpic";
2569 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002570 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002571 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002572 else CCSHARED="+z";
2573 fi;;
Xavier de Gaye2a352b62017-01-04 21:51:16 +01002574 Linux-android*) ;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002575 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002576 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002577 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002578 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002579 if test "$GCC" = "yes"
2580 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002581 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002582 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002583 SCO_SV*)
2584 if test "$GCC" = "yes"
2585 then CCSHARED="-fPIC"
2586 else CCSHARED="-Kpic -belf"
2587 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002588 IRIX*/6*) case $CC in
2589 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002590 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002591 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002592 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002593fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002594AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002595# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002596# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002597AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002598if test -z "$LINKFORSHARED"
2599then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002600 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002601 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002602 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002603 LINKFORSHARED="-Wl,-E -Wl,+s";;
2604# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002605 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Xavier de Gaye2a352b62017-01-04 21:51:16 +01002606 Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002607 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002608 # -u libsys_s pulls in all symbols in libsys
Victor Stinner1b80b242016-04-12 22:34:58 +02002609 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002610 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Łukasz Langa335ab5b2013-05-30 20:58:53 +02002611
2612 # Issue #18075: the default maximum stack size (8MBytes) is too
2613 # small for the default recursion limit. Increase the stack size
2614 # to ensure that tests don't crash
2615 LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
2616
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002617 if test "$enable_framework"
2618 then
Jack Jansenda49e192005-01-07 13:08:22 +00002619 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002620 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002621 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002622 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002623 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002624 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Victor Stinner1b80b242016-04-12 22:34:58 +02002625 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002626 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2627 then
2628 LINKFORSHARED="-Wl,--export-dynamic"
2629 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002630 SunOS/5*) case $CC in
2631 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002632 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002633 then
2634 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002635 fi;;
2636 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002637 CYGWIN*)
2638 if test $enable_shared = "no"
2639 then
2640 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2641 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002642 QNX*)
2643 # -Wl,-E causes the symbols to be added to the dynamic
2644 # symbol table so that they can be found when a module
2645 # is loaded. -N 2048K causes the stack size to be set
2646 # to 2048 kilobytes so that the stack doesn't overflow
2647 # when running test_compile.py.
2648 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002649 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002650fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002651AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002652
Georg Brandl93de2162008-07-16 02:21:06 +00002653
Neil Schemenauer61c51152001-01-26 16:18:16 +00002654AC_SUBST(CFLAGSFORSHARED)
2655AC_MSG_CHECKING(CFLAGSFORSHARED)
2656if test ! "$LIBRARY" = "$LDLIBRARY"
2657then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002658 case $ac_sys_system in
2659 CYGWIN*)
2660 # Cygwin needs CCSHARED when building extension DLLs
2661 # but not when building the interpreter DLL.
2662 CFLAGSFORSHARED='';;
2663 *)
2664 CFLAGSFORSHARED='$(CCSHARED)'
2665 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002666fi
2667AC_MSG_RESULT($CFLAGSFORSHARED)
2668
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002669# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2670# library (with --enable-shared).
2671# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002672# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2673# if it is not required, since it creates a dependency of the shared library
2674# to LIBS. This, in turn, means that applications linking the shared libpython
2675# don't need to link LIBS explicitly. The default should be only changed
2676# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002677AC_SUBST(SHLIBS)
2678AC_MSG_CHECKING(SHLIBS)
2679case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002680 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002681 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002682esac
2683AC_MSG_RESULT($SHLIBS)
2684
2685
Guido van Rossum627b2d71993-12-24 10:39:16 +00002686# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002687AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002688AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2689AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002690
Georg Brandleee31162008-12-07 15:15:22 +00002691# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002692if test "$with_threads" = "yes" -o -z "$with_threads"; then
2693 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2694 # posix4 on Solaris 2.6
2695 # pthread (first!) on Linux
2696fi
2697
Martin v. Löwis19d17342003-06-14 21:03:05 +00002698# check if we need libintl for locale functions
2699AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002700 [AC_DEFINE(WITH_LIBINTL, 1,
2701 [Define to 1 if libintl is needed for locale functions.])
2702 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002703
2704# checks for system dependent C++ extensions support
2705case "$ac_sys_system" in
2706 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002707 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002708 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002709 [[loadAndInit("", 0, "")]])
2710 ],[
2711 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002712 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2713 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002714 AC_MSG_RESULT(yes)
2715 ],[
2716 AC_MSG_RESULT(no)
2717 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002718 *) ;;
2719esac
2720
Christian Heimes985ecdc2013-11-20 11:46:18 +01002721# check for systems that require aligned memory access
2722AC_MSG_CHECKING(aligned memory access is required)
Benjamin Petersone4f961b2017-04-14 09:36:45 -07002723AC_CACHE_VAL(ac_cv_aligned_required,
2724[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes985ecdc2013-11-20 11:46:18 +01002725int main()
2726{
2727 char s[16];
2728 int i, *p1, *p2;
2729 for (i=0; i < 16; i++)
2730 s[i] = i;
2731 p1 = (int*)(s+1);
2732 p2 = (int*)(s+2);
2733 if (*p1 == *p2)
2734 return 1;
2735 return 0;
Benjamin Petersone4f961b2017-04-14 09:36:45 -07002736}]])],
2737[ac_cv_aligned_required=no],
2738[ac_cv_aligned_required=yes],
2739[ac_cv_aligned_required=yes])
2740])
2741AC_MSG_RESULT($ac_cv_aligned_required)
2742if test "$ac_cv_aligned_required" = yes ; then
Christian Heimes985ecdc2013-11-20 11:46:18 +01002743 AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
2744 [Define if aligned memory access is required])
2745fi
Christian Heimes985ecdc2013-11-20 11:46:18 +01002746
2747# str, bytes and memoryview hash algorithm
2748AH_TEMPLATE(Py_HASH_ALGORITHM,
2749 [Define hash algorithm for str, bytes and memoryview.
2750 SipHash24: 1, FNV: 2, externally defined: 0])
2751
2752AC_MSG_CHECKING(for --with-hash-algorithm)
2753dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
2754AC_ARG_WITH(hash_algorithm,
2755 AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
2756 [select hash algorithm]),
2757[
2758AC_MSG_RESULT($withval)
2759case "$withval" in
2760 siphash24)
2761 AC_DEFINE(Py_HASH_ALGORITHM, 1)
2762 ;;
2763 fnv)
2764 AC_DEFINE(Py_HASH_ALGORITHM, 2)
2765 ;;
2766 *)
2767 AC_MSG_ERROR([unknown hash algorithm '$withval'])
2768 ;;
2769esac
2770],
2771[AC_MSG_RESULT(default)])
2772
Charles-François Natalid30b0222014-05-08 23:08:51 +01002773AC_MSG_CHECKING(for --with-address-sanitizer)
2774AC_ARG_WITH(address_sanitizer,
2775 AS_HELP_STRING([--with-address-sanitizer],
2776 [enable AddressSanitizer]),
2777[
2778AC_MSG_RESULT($withval)
2779BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
2780LDFLAGS="-fsanitize=address $LDFLAGS"
2781],
2782[AC_MSG_RESULT(no)])
2783
Guido van Rossum70c7f481998-03-26 18:44:10 +00002784# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002785AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002786AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002787
Guido van Rossumc5a39031996-07-31 17:35:03 +00002788AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002789AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002790 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002791[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002792AC_MSG_RESULT($withval)
2793LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002794],
2795[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002796
Benjamin Peterson0f3cde12014-12-15 00:00:23 -05002797PKG_PROG_PKG_CONFIG
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002798
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002799# Check for use of the system expat library
2800AC_MSG_CHECKING(for --with-system-expat)
2801AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002802 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2803 [],
2804 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002805
2806AC_MSG_RESULT($with_system_expat)
2807
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002808# Check for use of the system libffi library
2809AC_MSG_CHECKING(for --with-system-ffi)
2810AC_ARG_WITH(system_ffi,
Zachary Ware935043d2016-09-09 17:01:21 -07002811 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),,,)
2812
Zachary Waref40d4dd2016-09-17 01:25:24 -05002813if test "$ac_sys_system" = "Darwin"
2814then
2815 case "$with_system_ffi" in
2816 "")
2817 with_system_ffi="no"
2818 ;;
2819 yes|no)
2820 ;;
2821 *)
2822 AC_MSG_ERROR([--with-system-ffi accepts no arguments])
2823 ;;
2824 esac
2825 AC_MSG_RESULT($with_system_ffi)
2826else
2827 AC_MSG_RESULT(yes)
2828 if test "$with_system_ffi" != ""
2829 then
2830 AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform])
2831 fi
2832 with_system_ffi="yes"
2833fi
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002834
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002835if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002836 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2837else
2838 LIBFFI_INCLUDEDIR=""
2839fi
2840AC_SUBST(LIBFFI_INCLUDEDIR)
2841
Stefan Krah60187b52012-03-23 19:06:27 +01002842# Check for use of the system libmpdec library
2843AC_MSG_CHECKING(for --with-system-libmpdec)
2844AC_ARG_WITH(system_libmpdec,
2845 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2846 [],
2847 [with_system_libmpdec="no"])
2848
2849AC_MSG_RESULT($with_system_libmpdec)
2850
Benjamin Peterson076ed002010-10-31 17:11:02 +00002851# Check for support for loadable sqlite extensions
2852AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2853AC_ARG_ENABLE(loadable-sqlite-extensions,
2854 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2855 [],
2856 [enable_loadable_sqlite_extensions="no"])
2857
2858AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2859
Ned Deilyd819b932013-09-06 01:07:05 -07002860# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2861AC_SUBST(TCLTK_INCLUDES)
2862AC_SUBST(TCLTK_LIBS)
2863AC_MSG_CHECKING(for --with-tcltk-includes)
2864AC_ARG_WITH(tcltk-includes,
2865 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2866 [],
2867 [with_tcltk_includes="default"])
2868AC_MSG_RESULT($with_tcltk_includes)
2869AC_MSG_CHECKING(for --with-tcltk-libs)
2870AC_ARG_WITH(tcltk-libs,
2871 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2872 [],
2873 [with_tcltk_libs="default"])
2874AC_MSG_RESULT($with_tcltk_libs)
2875if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
2876then
2877 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
2878 then
2879 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
2880 fi
2881 TCLTK_INCLUDES=""
2882 TCLTK_LIBS=""
2883else
2884 TCLTK_INCLUDES="$with_tcltk_includes"
2885 TCLTK_LIBS="$with_tcltk_libs"
2886fi
2887
Matthias Klose55708cc2009-04-30 08:06:49 +00002888# Check for --with-dbmliborder
2889AC_MSG_CHECKING(for --with-dbmliborder)
2890AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002891 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 +00002892[
2893if test x$with_dbmliborder = xyes
2894then
2895AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2896else
2897 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2898 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2899 then
2900 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2901 fi
2902 done
2903fi])
2904AC_MSG_RESULT($with_dbmliborder)
2905
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002906# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002907AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002908USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002909
Guido van Rossum54d93d41997-01-22 20:51:58 +00002910AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002911
Martin v. Löwis11437992002-04-12 09:54:03 +00002912# Templates for things AC_DEFINEd more than once.
2913# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002914AH_TEMPLATE(_REENTRANT,
2915 [Define to force use of thread-safe errno, h_errno, and other functions])
2916AH_TEMPLATE(WITH_THREAD,
2917 [Define if you want to compile in rudimentary thread support])
2918
Guido van Rossum54d93d41997-01-22 20:51:58 +00002919AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002920dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002921AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002922 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002923
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002924# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002925dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002926AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002927 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002928 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002929
2930if test -z "$with_threads"
2931then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002932fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002933AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002934
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002935AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002936if test "$with_threads" = "no"
2937then
2938 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002939elif test "$ac_cv_pthread_is_default" = yes
2940then
2941 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002942 # Defining _REENTRANT on system with POSIX threads should not hurt.
2943 AC_DEFINE(_REENTRANT)
2944 posix_threads=yes
Victor Stinner1b80b242016-04-12 22:34:58 +02002945 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002946elif test "$ac_cv_kpthread" = "yes"
2947then
2948 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002949 if test "$ac_cv_cxx_thread" = "yes"; then
2950 CXX="$CXX -Kpthread"
2951 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002952 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002953 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002954 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002955elif test "$ac_cv_kthread" = "yes"
2956then
2957 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002958 if test "$ac_cv_cxx_thread" = "yes"; then
2959 CXX="$CXX -Kthread"
2960 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002961 AC_DEFINE(WITH_THREAD)
2962 posix_threads=yes
2963 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002964elif test "$ac_cv_pthread" = "yes"
2965then
2966 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002967 if test "$ac_cv_cxx_thread" = "yes"; then
2968 CXX="$CXX -pthread"
2969 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002970 AC_DEFINE(WITH_THREAD)
2971 posix_threads=yes
2972 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002973else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002974 if test ! -z "$with_threads" -a -d "$with_threads"
2975 then LDFLAGS="$LDFLAGS -L$with_threads"
2976 fi
2977 if test ! -z "$withval" -a -d "$withval"
2978 then LDFLAGS="$LDFLAGS -L$withval"
2979 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002980
2981 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002982 # define _POSIX_THREADS in unistd.h. Some apparently don't
2983 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002984 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2985 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002986 [
2987#include <unistd.h>
2988#ifdef _POSIX_THREADS
2989yes
2990#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002991 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2992 AC_MSG_RESULT($unistd_defines_pthreads)
2993
Martin v. Löwis130fb172001-07-19 11:00:41 +00002994 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002995 # Just looking for pthread_create in libpthread is not enough:
2996 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2997 # So we really have to include pthread.h, and then link.
2998 _libs=$LIBS
2999 LIBS="$LIBS -lpthread"
3000 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krah7dba5942012-11-22 22:49:11 +01003001 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3002#include <stdio.h>
3003#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003004
Matthias Kloseb159a552010-04-25 21:00:44 +00003005void * start_routine (void *arg) { exit (0); }]], [[
3006pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003007 AC_MSG_RESULT(yes)
3008 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003009 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003010 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003011 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00003012 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003013 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003014 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00003015 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003016 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003017 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003018 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00003019 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003020 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003021 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003022 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00003023 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003024 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003025 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003026 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00003027 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003028 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003029 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00003030 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00003031 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02003032 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003033
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003034 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
3035 LIBS="$LIBS -lmpc"
3036 THREADOBJ="Python/thread.o"
3037 USE_THREAD_MODULE=""])
3038
Victor Stinner1b80b242016-04-12 22:34:58 +02003039 if test "$posix_threads" != "yes"; then
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003040 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
3041 LIBS="$LIBS -lthread"
3042 THREADOBJ="Python/thread.o"
3043 USE_THREAD_MODULE=""])
3044 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003045fi
3046
3047if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003048 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003049 AC_DEFINE(_POSIX_THREADS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02003050 [Define if you have POSIX threads,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003051 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003052 fi
3053
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003054 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
3055 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02003056 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003057 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003058 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003059 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003060 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003061 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02003062 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003063 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00003064 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003065 esac
3066
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003067 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
3068 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krah7dba5942012-11-22 22:49:11 +01003069 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
3070 #include <stdio.h>
3071 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003072 void *foo(void *parm) {
3073 return NULL;
3074 }
3075 main() {
3076 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00003077 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003078 if (pthread_attr_init(&attr)) exit(-1);
3079 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00003080 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003081 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003082 }]])],
3083 [ac_cv_pthread_system_supported=yes],
3084 [ac_cv_pthread_system_supported=no],
3085 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003086 ])
3087 AC_MSG_RESULT($ac_cv_pthread_system_supported)
3088 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003089 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003090 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00003091 AC_CHECK_FUNCS(pthread_sigmask,
3092 [case $ac_sys_system in
3093 CYGWIN*)
3094 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
3095 [Define if pthread_sigmask() does not work on your system.])
3096 ;;
3097 esac])
Christian Heimesf77b4b22013-08-21 13:26:05 +02003098 AC_CHECK_FUNCS(pthread_atfork)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003099fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003100
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003101
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003102# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00003103AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003104AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003105AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003106[ --enable-ipv6 Enable ipv6 (with ipv4) support
3107 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003108[ case "$enableval" in
3109 no)
3110 AC_MSG_RESULT(no)
3111 ipv6=no
3112 ;;
3113 *) AC_MSG_RESULT(yes)
3114 AC_DEFINE(ENABLE_IPV6)
3115 ipv6=yes
3116 ;;
3117 esac ],
3118
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003119[
3120dnl the check does not work on cross compilation case...
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003121 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003122#include <sys/types.h>
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003123#include <sys/socket.h>]],
3124[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003125 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003126 ipv6=yes
3127],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003128 AC_MSG_RESULT(no)
3129 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003130])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003131
3132if test "$ipv6" = "yes"; then
3133 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00003134 AC_COMPILE_IFELSE([
3135 AC_LANG_PROGRAM([[#include <sys/types.h>
3136#include <netinet/in.h>]],
3137 [[struct sockaddr_in6 x;
3138 x.sin6_scope_id;]])
3139 ],[
3140 AC_MSG_RESULT(yes)
3141 ipv6=yes
3142 ],[
3143 AC_MSG_RESULT(no, IPv6 disabled)
3144 ipv6=no
3145 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003146fi
3147
3148if test "$ipv6" = "yes"; then
3149 AC_DEFINE(ENABLE_IPV6)
3150fi
3151])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003152
3153ipv6type=unknown
3154ipv6lib=none
3155ipv6trylibc=no
3156
3157if test "$ipv6" = "yes"; then
3158 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00003159 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
3160 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003161 case $i in
3162 inria)
3163 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003164 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003165#include <netinet/in.h>
3166#ifdef IPV6_INRIA_VERSION
3167yes
3168#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003169 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003170 ;;
3171 kame)
3172 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003173 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003174#include <netinet/in.h>
3175#ifdef __KAME__
3176yes
3177#endif],
3178 [ipv6type=$i;
3179 ipv6lib=inet6
3180 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003181 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003182 ;;
3183 linux-glibc)
3184 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003185 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003186#include <features.h>
3187#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
3188yes
3189#endif],
3190 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003191 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003192 ;;
3193 linux-inet6)
3194 dnl http://www.v6.linux.or.jp/
3195 if test -d /usr/inet6; then
3196 ipv6type=$i
3197 ipv6lib=inet6
3198 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00003199 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003200 fi
3201 ;;
3202 solaris)
3203 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00003204 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003205 ipv6type=$i
3206 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003207 fi
3208 fi
3209 ;;
3210 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003211 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003212#include <sys/param.h>
3213#ifdef _TOSHIBA_INET6
3214yes
3215#endif],
3216 [ipv6type=$i;
3217 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003218 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003219 ;;
3220 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003221 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003222#include </usr/local/v6/include/sys/v6config.h>
3223#ifdef __V6D__
3224yes
3225#endif],
3226 [ipv6type=$i;
3227 ipv6lib=v6;
3228 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00003229 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003230 ;;
3231 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003232 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003233#include <sys/param.h>
3234#ifdef _ZETA_MINAMI_INET6
3235yes
3236#endif],
3237 [ipv6type=$i;
3238 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003239 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003240 ;;
3241 esac
3242 if test "$ipv6type" != "unknown"; then
3243 break
3244 fi
3245 done
3246 AC_MSG_RESULT($ipv6type)
3247fi
3248
3249if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
3250 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
3251 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
3252 echo "using lib$ipv6lib"
3253 else
3254 if test $ipv6trylibc = "yes"; then
3255 echo "using libc"
3256 else
3257 echo 'Fatal: no $ipv6lib library found. cannot continue.'
3258 echo "You need to fetch lib$ipv6lib.a from appropriate"
3259 echo 'ipv6 kit and compile beforehand.'
3260 exit 1
3261 fi
3262 fi
3263fi
3264
Larry Hastingsa6cc5512015-04-13 17:48:40 -04003265AC_MSG_CHECKING(for CAN_RAW_FD_FRAMES)
3266AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */
3267#include <linux/can/raw.h>]],
3268[[int can_raw_fd_frames = CAN_RAW_FD_FRAMES;]])],[
3269 AC_DEFINE(HAVE_LINUX_CAN_RAW_FD_FRAMES, 1, [Define if compiling using Linux 3.6 or later.])
3270 AC_MSG_RESULT(yes)
3271],[
3272 AC_MSG_RESULT(no)
3273])
3274
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003275# Check for --with-doc-strings
3276AC_MSG_CHECKING(for --with-doc-strings)
3277AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003278 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003279
3280if test -z "$with_doc_strings"
3281then with_doc_strings="yes"
3282fi
3283if test "$with_doc_strings" != "no"
3284then
3285 AC_DEFINE(WITH_DOC_STRINGS, 1,
3286 [Define if you want documentation strings in extension modules])
3287fi
3288AC_MSG_RESULT($with_doc_strings)
3289
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00003290# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00003291AC_MSG_CHECKING(for --with-pymalloc)
3292AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003293 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00003294
3295if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003296then
3297 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003298fi
3299if test "$with_pymalloc" != "no"
3300then
Victor Stinner1b80b242016-04-12 22:34:58 +02003301 AC_DEFINE(WITH_PYMALLOC, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003302 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003303 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003304fi
3305AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00003306
Benjamin Peterson05159c42009-12-03 03:01:27 +00003307# Check for Valgrind support
3308AC_MSG_CHECKING([for --with-valgrind])
3309AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00003310 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00003311 with_valgrind=no)
3312AC_MSG_RESULT([$with_valgrind])
3313if test "$with_valgrind" != no; then
3314 AC_CHECK_HEADER([valgrind/valgrind.h],
3315 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
3316 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
3317 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00003318 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00003319fi
3320
Łukasz Langaa785c872016-09-09 17:37:37 -07003321# Check for DTrace support
3322AC_MSG_CHECKING(for --with-dtrace)
3323AC_ARG_WITH(dtrace,
3324 AC_HELP_STRING(--with(out)-dtrace, [disable/enable DTrace support]),,
3325 with_dtrace=no)
3326AC_MSG_RESULT($with_dtrace)
3327
3328AC_SUBST(DTRACE)
3329AC_SUBST(DFLAGS)
3330AC_SUBST(DTRACE_HEADERS)
3331AC_SUBST(DTRACE_OBJS)
3332DTRACE=
3333DFLAGS=
3334DTRACE_HEADERS=
3335DTRACE_OBJS=
3336
3337if test "$with_dtrace" = "yes"
3338then
3339 AC_PATH_PROG(DTRACE, [dtrace], [not found])
3340 if test "$DTRACE" = "not found"; then
3341 AC_MSG_ERROR([dtrace command not found on \$PATH])
3342 fi
3343 AC_DEFINE(WITH_DTRACE, 1, [Define if you want to compile in DTrace support])
3344 DTRACE_HEADERS="Include/pydtrace_probes.h"
3345
3346 # On OS X, DTrace providers do not need to be explicitly compiled and
3347 # linked into the binary. Correspondingly, dtrace(1) is missing the ELF
3348 # generation flag '-G'. We check for presence of this flag, rather than
3349 # hardcoding support by OS, in the interest of robustness.
3350 AC_CACHE_CHECK([whether DTrace probes require linking],
3351 [ac_cv_dtrace_link], [dnl
3352 ac_cv_dtrace_link=no
3353 echo 'BEGIN' > conftest.d
3354 "$DTRACE" -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \
3355 ac_cv_dtrace_link=yes
3356 ])
3357 if test "$ac_cv_dtrace_link" = "yes"; then
3358 DTRACE_OBJS="Python/pydtrace.o"
3359 fi
3360fi
3361
Guido van Rossum68242b51996-05-28 22:53:03 +00003362# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003363AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00003364DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003365
Guido van Rossume97ee181999-12-20 21:27:22 +00003366# the dlopen() function means we might want to use dynload_shlib.o. some
3367# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00003368AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00003369
3370# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
3371# loading of modules.
3372AC_SUBST(DYNLOADFILE)
3373AC_MSG_CHECKING(DYNLOADFILE)
3374if test -z "$DYNLOADFILE"
3375then
3376 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00003377 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
3378 if test "$ac_cv_func_dlopen" = yes
3379 then DYNLOADFILE="dynload_shlib.o"
3380 else DYNLOADFILE="dynload_aix.o"
3381 fi
3382 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00003383 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003384 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
3385 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00003386 *)
3387 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
3388 # out any dynamic loading
3389 if test "$ac_cv_func_dlopen" = yes
3390 then DYNLOADFILE="dynload_shlib.o"
3391 else DYNLOADFILE="dynload_stub.o"
3392 fi
3393 ;;
3394 esac
3395fi
3396AC_MSG_RESULT($DYNLOADFILE)
3397if test "$DYNLOADFILE" != "dynload_stub.o"
3398then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003399 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
3400 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00003401fi
3402
Jack Jansenc49e5b72001-06-19 15:00:23 +00003403# MACHDEP_OBJS can be set to platform-specific object files needed by Python
3404
3405AC_SUBST(MACHDEP_OBJS)
3406AC_MSG_CHECKING(MACHDEP_OBJS)
3407if test -z "$MACHDEP_OBJS"
3408then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00003409 MACHDEP_OBJS=$extra_machdep_objs
3410else
3411 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00003412fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003413if test -z "$MACHDEP_OBJS"; then
3414 AC_MSG_RESULT([none])
3415else
3416 AC_MSG_RESULT([$MACHDEP_OBJS])
3417fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00003418
Guido van Rossum627b2d71993-12-24 10:39:16 +00003419# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00003420AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Victor Stinnerdaf45552013-08-28 00:53:59 +02003421 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003422 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Victor Stinner4d6a3d62014-12-21 01:16:38 +01003423 futimens futimes gai_strerror getentropy \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02003424 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00003425 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Xavier de Gayebdf0d0f2016-12-22 10:38:59 +01003426 initgroups kill killpg lchmod lchown linkat lstat lutimes mmap \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01003427 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02003428 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003429 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02003430 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00003431 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00003432 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00003433 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02003434 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
3435 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02003436 sigaction sigaltstack siginterrupt sigpending sigrelse \
3437 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00003438 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003439 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
Victor Stinnercd777ea2013-04-08 22:43:44 +02003440 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003441
Gregory P. Smithdf300d52012-01-21 18:20:15 -08003442AC_CHECK_DECL(dirfd,
3443 AC_DEFINE(HAVE_DIRFD, 1,
3444 Define if you have the 'dirfd' function or macro.), ,
3445 [#include <sys/types.h>
3446 #include <dirent.h>])
3447
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003448# For some functions, having a definition is not sufficient, since
3449# we want to take their address.
3450AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00003451AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
3452 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
3453 AC_MSG_RESULT(yes)],
3454 [AC_MSG_RESULT(no)
3455])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003456AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00003457AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
3458 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
3459 AC_MSG_RESULT(yes)],
3460 [AC_MSG_RESULT(no)
3461])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003462AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00003463AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
3464 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
3465 AC_MSG_RESULT(yes)],
3466 [AC_MSG_RESULT(no)
3467])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003468AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00003469AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
3470 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
3471 AC_MSG_RESULT(yes)],
3472 [AC_MSG_RESULT(no)
3473])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003474AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003475AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3476 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3477 AC_MSG_RESULT(yes)],
3478 [AC_MSG_RESULT(no)
3479])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003480AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003481AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3482 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3483 AC_MSG_RESULT(yes)],
3484 [AC_MSG_RESULT(no)
3485])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003486AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00003487AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3488 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3489 AC_MSG_RESULT(yes)],
3490 [AC_MSG_RESULT(no)
3491])
Benjamin Peterson95c16622011-12-27 15:36:32 -06003492AC_MSG_CHECKING(for epoll_create1)
3493AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
3494 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
3495 AC_MSG_RESULT(yes)],
3496 [AC_MSG_RESULT(no)
3497])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003498AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00003499AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003500#include <sys/types.h>
3501#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003502 ]], [[int x=kqueue()]])],
3503 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3504 AC_MSG_RESULT(yes)],
3505 [AC_MSG_RESULT(no)
3506])
Christian Heimesb7bd5df2013-10-22 11:21:54 +02003507AC_MSG_CHECKING(for prlimit)
3508AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3509#include <sys/time.h>
3510#include <sys/resource.h>
3511 ]], [[void *x=prlimit]])],
3512 [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
3513 AC_MSG_RESULT(yes)],
3514 [AC_MSG_RESULT(no)
3515])
3516
Martin v. Löwisd5843682002-11-21 20:41:28 +00003517# On some systems (eg. FreeBSD 5), we would find a definition of the
3518# functions ctermid_r, setgroups in the library, but no prototype
3519# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3520# address to avoid compiler warnings and potential miscompilations
3521# because of the missing prototypes.
3522
3523AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00003524AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003525#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003526]], [[void* p = ctermid_r]])],
3527 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3528 AC_MSG_RESULT(yes)],
3529 [AC_MSG_RESULT(no)
3530])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003531
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003532AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3533 [AC_COMPILE_IFELSE(
3534 [AC_LANG_PROGRAM(
3535 [#include <sys/file.h>],
3536 [void* p = flock]
3537 )],
3538 [ac_cv_flock_decl=yes],
3539 [ac_cv_flock_decl=no]
3540 )
Matthias Kloseb159a552010-04-25 21:00:44 +00003541])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003542if test "x${ac_cv_flock_decl}" = xyes; then
3543 AC_CHECK_FUNCS(flock,,
3544 AC_CHECK_LIB(bsd,flock,
3545 [AC_DEFINE(HAVE_FLOCK)
3546 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3547 ])
3548 )
Antoine Pitroua3000072010-09-07 14:52:42 +00003549fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003550
3551AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00003552AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003553#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003554]], [[void* p = getpagesize]])],
3555 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3556 AC_MSG_RESULT(yes)],
3557 [AC_MSG_RESULT(no)
3558])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003559
Victor Stinner984890f2011-11-24 13:53:38 +01003560AC_MSG_CHECKING(for broken unsetenv)
3561AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3562#include <stdlib.h>
3563]], [[int res = unsetenv("DUMMY")]])],
3564 [AC_MSG_RESULT(no)],
3565 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3566 AC_MSG_RESULT(yes)
3567])
3568
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003569dnl check for true
3570AC_CHECK_PROGS(TRUE, true, /bin/true)
3571
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003572dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3573dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003574AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003575 AC_CHECK_LIB(resolv, inet_aton)
3576)
3577
Christian Heimesd0764e22007-12-04 15:00:33 +00003578# On Tru64, chflags seems to be present, but calling it will
3579# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003580AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003581AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003582#include <sys/stat.h>
3583#include <unistd.h>
3584int main(int argc, char*argv[])
3585{
3586 if(chflags(argv[0], 0) != 0)
3587 return 1;
3588 return 0;
3589}
Ned Deily3eb67d52011-06-28 00:00:28 -07003590]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00003591[ac_cv_have_chflags=yes],
3592[ac_cv_have_chflags=no],
3593[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003594])
3595if test "$ac_cv_have_chflags" = cross ; then
3596 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3597fi
3598if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003599 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003600fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003601
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003602AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003603AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003604#include <sys/stat.h>
3605#include <unistd.h>
3606int main(int argc, char*argv[])
3607{
3608 if(lchflags(argv[0], 0) != 0)
3609 return 1;
3610 return 0;
3611}
Ned Deily3eb67d52011-06-28 00:00:28 -07003612]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003613])
3614if test "$ac_cv_have_lchflags" = cross ; then
3615 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3616fi
3617if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003618 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003619fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003620
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003621dnl Check if system zlib has *Copy() functions
3622dnl
3623dnl On MacOSX the linker will search for dylibs on the entire linker path
3624dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3625dnl to revert to a more traditional unix behaviour and make it possible to
3626dnl override the system libz with a local static library of libz. Temporarily
3627dnl add that flag to our CFLAGS as well to ensure that we check the version
Victor Stinner1b80b242016-04-12 22:34:58 +02003628dnl of libz that will be used by setup.py.
3629dnl The -L/usr/local/lib is needed as wel to get the same compilation
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003630dnl environment as setup.py (and leaving it out can cause configure to use the
3631dnl wrong version of the library)
3632case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003633Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003634 _CUR_CFLAGS="${CFLAGS}"
3635 _CUR_LDFLAGS="${LDFLAGS}"
3636 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3637 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3638 ;;
3639esac
3640
Matthias Klosec80c93f2010-04-24 17:04:35 +00003641AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003642
3643case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003644Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003645 CFLAGS="${_CUR_CFLAGS}"
3646 LDFLAGS="${_CUR_LDFLAGS}"
3647 ;;
3648esac
3649
Martin v. Löwise9416172003-05-03 10:12:45 +00003650AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00003651AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003652#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003653]], [[void* p = hstrerror; hstrerror(0)]])],
3654 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3655 AC_MSG_RESULT(yes)],
3656 [AC_MSG_RESULT(no)
3657])
Martin v. Löwise9416172003-05-03 10:12:45 +00003658
3659AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003660AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003661#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003662#include <sys/socket.h>
3663#include <netinet/in.h>
3664#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003665]], [[void* p = inet_aton;inet_aton(0,0)]])],
3666 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3667 AC_MSG_RESULT(yes)],
3668 [AC_MSG_RESULT(no)
3669])
Martin v. Löwise9416172003-05-03 10:12:45 +00003670
3671AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003672AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003673#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003674#include <sys/socket.h>
3675#include <netinet/in.h>
3676#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003677]], [[void* p = inet_pton]])],
3678 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3679 AC_MSG_RESULT(yes)],
3680 [AC_MSG_RESULT(no)
3681])
Martin v. Löwise9416172003-05-03 10:12:45 +00003682
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003683# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003684AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00003685AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003686#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003687#ifdef HAVE_GRP_H
3688#include <grp.h>
3689#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003690]], [[void* p = setgroups]])],
3691 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3692 AC_MSG_RESULT(yes)],
3693 [AC_MSG_RESULT(no)
3694])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003695
Fred Drake8cef4cf2000-06-28 16:40:38 +00003696# check for openpty and forkpty
3697
Victor Stinner1b80b242016-04-12 22:34:58 +02003698AC_CHECK_FUNCS(openpty,,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003699 AC_CHECK_LIB(util,openpty,
3700 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3701 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3702 )
3703)
Victor Stinner1b80b242016-04-12 22:34:58 +02003704AC_CHECK_FUNCS(forkpty,,
3705 AC_CHECK_LIB(util,forkpty,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003706 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3707 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3708 )
3709)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003710
Christian Heimesb186d002008-03-18 15:15:01 +00003711# Stuff for expat.
3712AC_CHECK_FUNCS(memmove)
3713
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003714# check for long file support functions
3715AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3716
Benjamin Peterson3a7dffa2013-08-23 21:01:48 -05003717AC_REPLACE_FUNCS(dup2 strdup)
Victor Stinner1b80b242016-04-12 22:34:58 +02003718AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003719 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3720 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3721 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003722)
Jack Jansen150753c2003-03-29 22:07:47 +00003723AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003724 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3725 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3726 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003727)
Victor Stinner1b80b242016-04-12 22:34:58 +02003728AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003729 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3730 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3731 [],
3732 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3733 [Define if gettimeofday() does not have second (timezone) argument
3734 This is the case on Motorola V4 (R40V4.2)])
3735 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003736)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003737
Victor Stinnere0be4232011-10-25 13:06:09 +02003738AC_CHECK_FUNCS(clock_gettime, [], [
3739 AC_CHECK_LIB(rt, clock_gettime, [
Victor Stinner7efb8332014-08-29 15:41:08 +02003740 LIBS="$LIBS -lrt"
Victor Stinnere0be4232011-10-25 13:06:09 +02003741 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3742 AC_DEFINE(TIMEMODULE_LIB, [rt],
3743 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3744 ])
3745])
3746
3747AC_CHECK_FUNCS(clock_getres, [], [
3748 AC_CHECK_LIB(rt, clock_getres, [
3749 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3750 ])
3751])
3752
Benjamin Peterson37098cd2016-09-13 22:55:09 -07003753AC_CHECK_FUNCS(clock_settime, [], [
3754 AC_CHECK_LIB(rt, clock_settime, [
3755 AC_DEFINE(HAVE_CLOCK_SETTIME, 1)
3756 ])
3757])
3758
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003759AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003760AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003761#if defined(MAJOR_IN_MKDEV)
3762#include <sys/mkdev.h>
3763#elif defined(MAJOR_IN_SYSMACROS)
3764#include <sys/sysmacros.h>
3765#else
3766#include <sys/types.h>
3767#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003768]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003769 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003770]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003771 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3772 [Define to 1 if you have the device macros.])
3773 AC_MSG_RESULT(yes)
3774],[
3775 AC_MSG_RESULT(no)
3776])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003777
Xavier de Gaye40e320b2016-12-21 17:29:59 +01003778# On Android API level 24 with android-ndk-r13, if_nameindex() is available,
3779# but the if_nameindex structure is not defined.
Xavier de Gaye70878422016-12-21 12:46:36 +01003780AC_MSG_CHECKING(for if_nameindex)
3781AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Xavier de Gaye40e320b2016-12-21 17:29:59 +01003782#include <stdio.h>
3783#ifdef STDC_HEADERS
3784# include <stdlib.h>
3785# include <stddef.h>
3786#else
3787# ifdef HAVE_STDLIB_H
3788# include <stdlib.h>
3789# endif
3790#endif
3791#ifdef HAVE_SYS_SOCKET_H
3792# include <sys/socket.h>
3793#endif
Xavier de Gaye70878422016-12-21 12:46:36 +01003794#ifdef HAVE_NET_IF_H
3795# include <net/if.h>
3796#endif
3797]], [[struct if_nameindex *ni = if_nameindex(); int x = ni[0].if_index;]])],
3798 [AC_DEFINE(HAVE_IF_NAMEINDEX, 1, Define to 1 if you have the 'if_nameindex' function.)
3799 AC_MSG_RESULT(yes)],
3800 [AC_MSG_RESULT(no)
3801])
3802
Xavier de Gayebdf0d0f2016-12-22 10:38:59 +01003803# Issue #28762: lockf() is available on Android API level 24, but the F_LOCK
3804# macro is not defined in android-ndk-r13.
3805AC_MSG_CHECKING(for lockf)
3806AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h> ]],[[lockf(0, F_LOCK, 0);]])],
3807 [AC_DEFINE(HAVE_LOCKF, 1, Define to 1 if you have the 'lockf' function and the F_LOCK macro.)
3808 AC_MSG_RESULT(yes)],
3809 [AC_MSG_RESULT(no)
3810])
3811
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003812# On OSF/1 V5.1, getaddrinfo is available, but a define
Victor Stinner1b80b242016-04-12 22:34:58 +02003813# for [no]getaddrinfo in netdb.h.
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003814AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003815AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003816#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003817#include <sys/socket.h>
3818#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003819#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003820]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3821[have_getaddrinfo=yes],
3822[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003823AC_MSG_RESULT($have_getaddrinfo)
3824if test $have_getaddrinfo = yes
3825then
3826 AC_MSG_CHECKING(getaddrinfo bug)
3827 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003828 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah19c21392012-11-22 23:47:32 +01003829#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003830#include <sys/types.h>
3831#include <netdb.h>
3832#include <string.h>
3833#include <sys/socket.h>
3834#include <netinet/in.h>
3835
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003836int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003837{
3838 int passive, gaierr, inet4 = 0, inet6 = 0;
3839 struct addrinfo hints, *ai, *aitop;
3840 char straddr[INET6_ADDRSTRLEN], strport[16];
3841
3842 for (passive = 0; passive <= 1; passive++) {
3843 memset(&hints, 0, sizeof(hints));
3844 hints.ai_family = AF_UNSPEC;
3845 hints.ai_flags = passive ? AI_PASSIVE : 0;
3846 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003847 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003848 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3849 (void)gai_strerror(gaierr);
3850 goto bad;
3851 }
3852 for (ai = aitop; ai; ai = ai->ai_next) {
3853 if (ai->ai_addr == NULL ||
3854 ai->ai_addrlen == 0 ||
3855 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3856 straddr, sizeof(straddr), strport, sizeof(strport),
3857 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3858 goto bad;
3859 }
3860 switch (ai->ai_family) {
3861 case AF_INET:
3862 if (strcmp(strport, "54321") != 0) {
3863 goto bad;
3864 }
3865 if (passive) {
3866 if (strcmp(straddr, "0.0.0.0") != 0) {
3867 goto bad;
3868 }
3869 } else {
3870 if (strcmp(straddr, "127.0.0.1") != 0) {
3871 goto bad;
3872 }
3873 }
3874 inet4++;
3875 break;
3876 case AF_INET6:
3877 if (strcmp(strport, "54321") != 0) {
3878 goto bad;
3879 }
3880 if (passive) {
3881 if (strcmp(straddr, "::") != 0) {
3882 goto bad;
3883 }
3884 } else {
3885 if (strcmp(straddr, "::1") != 0) {
3886 goto bad;
3887 }
3888 }
3889 inet6++;
3890 break;
3891 case AF_UNSPEC:
3892 goto bad;
3893 break;
3894 default:
3895 /* another family support? */
3896 break;
3897 }
3898 }
Benjamin Peterson01c340d2016-09-06 15:54:24 -07003899 freeaddrinfo(aitop);
3900 aitop = NULL;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003901 }
3902
3903 if (!(inet4 == 0 || inet4 == 2))
3904 goto bad;
3905 if (!(inet6 == 0 || inet6 == 2))
3906 goto bad;
3907
3908 if (aitop)
3909 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003910 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003911
3912 bad:
3913 if (aitop)
3914 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003915 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003916}
Matthias Kloseb159a552010-04-25 21:00:44 +00003917]]])],
3918[ac_cv_buggy_getaddrinfo=no],
3919[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003920[
3921if test "${enable_ipv6+set}" = set; then
3922 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3923else
3924 ac_cv_buggy_getaddrinfo=yes
3925fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003926fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003927
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003928AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3929
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003930if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003931then
3932 if test $ipv6 = yes
3933 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003934 echo 'Fatal: You must get working getaddrinfo() function.'
3935 echo ' or you can specify "--disable-ipv6"'.
3936 exit 1
3937 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003938else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003939 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003940fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003941
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003942AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003943
Guido van Rossum627b2d71993-12-24 10:39:16 +00003944# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003945AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003946AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003947AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003948AC_CHECK_MEMBERS([struct stat.st_rdev])
3949AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003950AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003951AC_CHECK_MEMBERS([struct stat.st_gen])
3952AC_CHECK_MEMBERS([struct stat.st_birthtime])
Martin Panterd887d1f2016-03-18 02:36:41 +00003953AC_CHECK_MEMBERS([struct stat.st_blocks])
Stefan Krah267b6392016-04-26 01:09:18 +02003954AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[
3955 #include <sys/types.h>
3956 #include <pwd.h>
3957]])
Zachary Waree999e962016-10-01 01:06:51 -05003958# Issue #21085: In Cygwin, siginfo_t does not have si_band field.
3959AC_CHECK_MEMBERS([siginfo_t.si_band], [], [], [[#include <signal.h>]])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003960
3961AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003962AC_CACHE_VAL(ac_cv_header_time_altzone,[
3963 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3964 [ac_cv_header_time_altzone=yes],
3965 [ac_cv_header_time_altzone=no])
3966 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003967AC_MSG_RESULT($ac_cv_header_time_altzone)
3968if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003969 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003970fi
3971
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003972was_it_defined=no
3973AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003974AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003975#include <sys/types.h>
3976#include <sys/select.h>
3977#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003978]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003979 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3980 [Define if you can safely include both <sys/select.h> and <sys/time.h>
Victor Stinner1b80b242016-04-12 22:34:58 +02003981 (which you can't on SCO ODT 3.0).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003982 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003983],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003984AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003985
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003986AC_MSG_CHECKING(for addrinfo)
3987AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003988AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3989 [ac_cv_struct_addrinfo=yes],
3990 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003991AC_MSG_RESULT($ac_cv_struct_addrinfo)
3992if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003993 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003994fi
3995
3996AC_MSG_CHECKING(for sockaddr_storage)
3997AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003998AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003999# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004000# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
4001 [ac_cv_struct_sockaddr_storage=yes],
4002 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004003AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
4004if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004005 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004006fi
4007
Christian Heimesdffa3942016-09-05 23:54:41 +02004008AC_MSG_CHECKING(for sockaddr_alg)
4009AC_CACHE_VAL(ac_cv_struct_sockaddr_alg,
4010AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4011# include <sys/types.h>
4012# include <sys/socket.h>
4013# include <linux/if_alg.h>]], [[struct sockaddr_alg s]])],
4014 [ac_cv_struct_sockaddr_alg=yes],
4015 [ac_cv_struct_sockaddr_alg=no]))
4016AC_MSG_RESULT($ac_cv_struct_sockaddr_alg)
4017if test $ac_cv_struct_sockaddr_alg = yes; then
4018 AC_DEFINE(HAVE_SOCKADDR_ALG, 1, [struct sockaddr_alg (linux/if_alg.h)])
4019fi
4020
Guido van Rossum627b2d71993-12-24 10:39:16 +00004021# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004022
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004023AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004024AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004025
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004026works=no
4027AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00004028AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
4029 [works=yes],
4030 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004031)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004032AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00004033
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004034works=no
4035AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00004036AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
4037 [works=yes],
4038 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004039)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004040AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004041
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004042have_prototypes=no
4043AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00004044AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
Victor Stinner1b80b242016-04-12 22:34:58 +02004045 [AC_DEFINE(HAVE_PROTOTYPES, 1,
4046 [Define if your compiler supports function prototype])
Matthias Kloseb159a552010-04-25 21:00:44 +00004047 have_prototypes=yes],
4048 []
4049)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004050AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004051
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004052works=no
4053AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00004054AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004055#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00004056int foo(int x, ...) {
4057 va_list va;
4058 va_start(va, x);
4059 va_arg(va, int);
4060 va_arg(va, char *);
4061 va_arg(va, double);
4062 return 0;
4063}
Matthias Kloseb159a552010-04-25 21:00:44 +00004064]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004065 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
4066 [Define if your compiler supports variable length function prototypes
Victor Stinner1b80b242016-04-12 22:34:58 +02004067 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004068 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004069],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004070AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004071
Dave Cole331708b2004-08-09 04:51:41 +00004072# check for socketpair
4073AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00004074AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00004075#include <sys/types.h>
4076#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004077]], [[void *x=socketpair]])],
4078 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
4079 AC_MSG_RESULT(yes)],
4080 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00004081)
4082
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004083# check if sockaddr has sa_len member
4084AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00004085AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
4086#include <sys/socket.h>]], [[struct sockaddr x;
4087x.sa_len = 0;]])],
4088 [AC_MSG_RESULT(yes)
4089 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
4090 [AC_MSG_RESULT(no)]
4091)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004092
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004093# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00004094AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
4095 [Define this if you have some version of gethostbyname_r()])
4096
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004097AC_CHECK_FUNC(gethostbyname_r, [
4098 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
4099 AC_MSG_CHECKING([gethostbyname_r with 6 args])
4100 OLD_CFLAGS=$CFLAGS
4101 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00004102 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004103# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004104 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004105 char *name;
4106 struct hostent *he, *res;
4107 char buffer[2048];
4108 int buflen = 2048;
4109 int h_errnop;
4110
4111 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00004112 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004113 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004114 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
4115 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004116 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00004117 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004118 AC_MSG_RESULT(no)
4119 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00004120 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004121# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004122 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004123 char *name;
4124 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00004125 char buffer[2048];
4126 int buflen = 2048;
4127 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004128
Matthias Kloseb159a552010-04-25 21:00:44 +00004129 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
4130 ]])],
4131 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004132 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00004133 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
4134 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004135 AC_MSG_RESULT(yes)
4136 ], [
4137 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00004138 AC_MSG_CHECKING([gethostbyname_r with 3 args])
4139 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4140# include <netdb.h>
4141 ]], [[
4142 char *name;
4143 struct hostent *he;
4144 struct hostent_data data;
4145
4146 (void) gethostbyname_r(name, he, &data);
4147 ]])],
4148 [
4149 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
4150 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
4151 [Define this if you have the 3-arg version of gethostbyname_r().])
4152 AC_MSG_RESULT(yes)
4153 ], [
4154 AC_MSG_RESULT(no)
4155 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004156 ])
4157 ])
4158 CFLAGS=$OLD_CFLAGS
4159], [
Thomas Wouters3a584202000-08-05 23:28:51 +00004160 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004161])
4162AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
4163AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
4164AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004165AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004166AC_SUBST(HAVE_GETHOSTBYNAME)
4167
Guido van Rossum627b2d71993-12-24 10:39:16 +00004168# checks for system services
4169# (none yet)
4170
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004171# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00004172AC_CHECK_FUNC(__fpu_control,
4173 [],
4174 [AC_CHECK_LIB(ieee, __fpu_control)
4175])
Guido van Rossum627b2d71993-12-24 10:39:16 +00004176
Guido van Rossum93274221997-05-09 02:42:00 +00004177# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00004178AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00004179AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004180 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004181[
Guido van Rossum93274221997-05-09 02:42:00 +00004182if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02004183then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004184 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02004185 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004186 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00004187else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004188fi],
4189[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00004190
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004191# check for --with-libm=...
4192AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004193case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00004194Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004195*) LIBM=-lm
4196esac
Guido van Rossum93274221997-05-09 02:42:00 +00004197AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004198AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004199 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004200[
Guido van Rossum93274221997-05-09 02:42:00 +00004201if test "$withval" = no
4202then LIBM=
4203 AC_MSG_RESULT(force LIBM empty)
4204elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004205then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004206 AC_MSG_RESULT(set LIBM="$withval")
4207else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004208fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004209[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004210
4211# check for --with-libc=...
4212AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00004213AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004214AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004215 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004216[
Guido van Rossum93274221997-05-09 02:42:00 +00004217if test "$withval" = no
4218then LIBC=
4219 AC_MSG_RESULT(force LIBC empty)
4220elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004221then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004222 AC_MSG_RESULT(set LIBC="$withval")
4223else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004224fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004225[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004226
Stefan Krah1919b7e2012-03-21 18:25:23 +01004227# **************************************
4228# * Check for gcc x64 inline assembler *
4229# **************************************
4230
4231AC_MSG_CHECKING(for x64 gcc inline assembler)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004232AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Stefan Krah1919b7e2012-03-21 18:25:23 +01004233 __asm__ __volatile__ ("movq %rcx, %rax");
4234]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
4235AC_MSG_RESULT($have_gcc_asm_for_x64)
4236if test "$have_gcc_asm_for_x64" = yes
4237then
4238 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
4239 [Define if we can use x64 gcc inline assembler])
4240fi
4241
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004242# **************************************************
4243# * Check for various properties of floating point *
4244# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004245
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004246AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
4247AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004248AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004249#include <string.h>
4250int main() {
4251 double x = 9006104071832581.0;
4252 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
4253 return 0;
4254 else
4255 return 1;
4256}
Matthias Kloseb159a552010-04-25 21:00:44 +00004257]])],
4258[ac_cv_little_endian_double=yes],
4259[ac_cv_little_endian_double=no],
4260[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004261AC_MSG_RESULT($ac_cv_little_endian_double)
4262if test "$ac_cv_little_endian_double" = yes
4263then
4264 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
4265 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4266 with the least significant byte first])
4267fi
4268
4269AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
4270AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004271AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004272#include <string.h>
4273int main() {
4274 double x = 9006104071832581.0;
4275 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
4276 return 0;
4277 else
4278 return 1;
4279}
Matthias Kloseb159a552010-04-25 21:00:44 +00004280]])],
4281[ac_cv_big_endian_double=yes],
4282[ac_cv_big_endian_double=no],
4283[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004284AC_MSG_RESULT($ac_cv_big_endian_double)
4285if test "$ac_cv_big_endian_double" = yes
4286then
4287 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
4288 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4289 with the most significant byte first])
4290fi
4291
4292# Some ARM platforms use a mixed-endian representation for doubles.
4293# While Python doesn't currently have full support for these platforms
4294# (see e.g., issue 1762561), we can at least make sure that float <-> string
4295# conversions work.
4296AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
4297AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004298AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004299#include <string.h>
4300int main() {
4301 double x = 9006104071832581.0;
4302 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
4303 return 0;
4304 else
4305 return 1;
4306}
Matthias Kloseb159a552010-04-25 21:00:44 +00004307]])],
4308[ac_cv_mixed_endian_double=yes],
4309[ac_cv_mixed_endian_double=no],
4310[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004311AC_MSG_RESULT($ac_cv_mixed_endian_double)
4312if test "$ac_cv_mixed_endian_double" = yes
4313then
4314 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
4315 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4316 in ARM mixed-endian order (byte order 45670123)])
4317fi
4318
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004319# The short float repr introduced in Python 3.1 requires the
4320# correctly-rounded string <-> double conversion functions from
4321# Python/dtoa.c, which in turn require that the FPU uses 53-bit
4322# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004323# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004324# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004325
4326# This inline assembler syntax may also work for suncc and icc,
4327# so we try it on all platforms.
4328
4329AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004330AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004331 unsigned short cw;
4332 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
4333 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00004334]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004335AC_MSG_RESULT($have_gcc_asm_for_x87)
4336if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004337then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004338 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
4339 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004340fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004341
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004342AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set mc68881 fpcr)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004343AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004344 unsigned int fpcr;
4345 __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr));
4346 __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr));
4347]])],[have_gcc_asm_for_mc68881=yes],[have_gcc_asm_for_mc68881=no])
4348AC_MSG_RESULT($have_gcc_asm_for_mc68881)
4349if test "$have_gcc_asm_for_mc68881" = yes
4350then
4351 AC_DEFINE(HAVE_GCC_ASM_FOR_MC68881, 1,
4352 [Define if we can use gcc inline assembler to get and set mc68881 fpcr])
4353fi
4354
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004355# Detect whether system arithmetic is subject to x87-style double
4356# rounding issues. The result of this test has little meaning on non
4357# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
4358# mode is round-to-nearest and double rounding issues are present, and
4359# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
4360AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004361# $BASECFLAGS may affect the result
4362ac_save_cc="$CC"
4363CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00004364AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004365#include <stdlib.h>
4366#include <math.h>
4367int main() {
4368 volatile double x, y, z;
4369 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
4370 x = 0.99999999999999989; /* 1-2**-53 */
4371 y = 1./x;
4372 if (y != 1.)
4373 exit(0);
4374 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
4375 x = 1e16;
4376 y = 2.99999;
4377 z = x + y;
4378 if (z != 1e16+4.)
4379 exit(0);
4380 /* both tests show evidence of double rounding */
4381 exit(1);
4382}
Matthias Kloseb159a552010-04-25 21:00:44 +00004383]])],
4384[ac_cv_x87_double_rounding=no],
4385[ac_cv_x87_double_rounding=yes],
4386[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004387CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004388AC_MSG_RESULT($ac_cv_x87_double_rounding)
4389if test "$ac_cv_x87_double_rounding" = yes
4390then
4391 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
4392 [Define if arithmetic is subject to x87-style double rounding issue])
4393fi
4394
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004395# ************************************
4396# * Check for mathematical functions *
4397# ************************************
4398
4399LIBS_SAVE=$LIBS
4400LIBS="$LIBS $LIBM"
4401
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004402AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02004403AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004404AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
4405
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004406# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
4407# -0. on some architectures.
4408AC_MSG_CHECKING(whether tanh preserves the sign of zero)
4409AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004410AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004411#include <math.h>
4412#include <stdlib.h>
4413int main() {
4414 /* return 0 if either negative zeros don't exist
4415 on this platform or if negative zeros exist
4416 and tanh(-0.) == -0. */
4417 if (atan2(0., -1.) == atan2(-0., -1.) ||
4418 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
4419 else exit(1);
4420}
Matthias Kloseb159a552010-04-25 21:00:44 +00004421]])],
4422[ac_cv_tanh_preserves_zero_sign=yes],
4423[ac_cv_tanh_preserves_zero_sign=no],
4424[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004425AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
4426if test "$ac_cv_tanh_preserves_zero_sign" = yes
4427then
4428 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
4429 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
4430fi
4431
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004432if test "$ac_cv_func_log1p" = yes
4433then
4434 # On some versions of AIX, log1p(-0.) returns 0. instead of
4435 # -0. See issue #9920.
4436 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
4437 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
4438 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4439 #include <math.h>
4440 #include <stdlib.h>
4441 int main() {
4442 /* Fail if the signs of log1p(-0.) and -0. can be
4443 distinguished. */
4444 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
4445 return 0;
4446 else
4447 return 1;
4448 }
4449 ]])],
4450 [ac_cv_log1p_drops_zero_sign=no],
4451 [ac_cv_log1p_drops_zero_sign=yes],
4452 [ac_cv_log1p_drops_zero_sign=no])])
4453 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
4454fi
4455if test "$ac_cv_log1p_drops_zero_sign" = yes
4456then
4457 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
4458 [Define if log1p(-0.) is 0. rather than -0.])
4459fi
Christian Heimes99170a52007-12-19 02:07:34 +00004460
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00004461LIBS=$LIBS_SAVE
4462
Mark Dickinsona614f042009-11-28 12:48:43 +00004463# For multiprocessing module, check that sem_open
4464# actually works. For FreeBSD versions <= 7.2,
4465# the kernel module that provides POSIX semaphores
4466# isn't loaded by default, so an attempt to call
4467# sem_open results in a 'Signal 12' error.
4468AC_MSG_CHECKING(whether POSIX semaphores are enabled)
4469AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00004470AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00004471#include <unistd.h>
4472#include <fcntl.h>
4473#include <stdio.h>
4474#include <semaphore.h>
4475#include <sys/stat.h>
4476
4477int main(void) {
4478 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
4479 if (a == SEM_FAILED) {
4480 perror("sem_open");
4481 return 1;
4482 }
4483 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004484 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00004485 return 0;
4486}
Matthias Kloseb159a552010-04-25 21:00:44 +00004487]])],
4488[ac_cv_posix_semaphores_enabled=yes],
4489[ac_cv_posix_semaphores_enabled=no],
4490[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00004491)
4492AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
4493if test $ac_cv_posix_semaphores_enabled = no
4494then
4495 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
4496 [Define if POSIX semaphores aren't enabled on your system])
4497fi
4498
Mark Dickinson10683072009-04-18 21:18:19 +00004499# Multiprocessing check for broken sem_getvalue
4500AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004501AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00004502AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00004503#include <unistd.h>
4504#include <fcntl.h>
4505#include <stdio.h>
4506#include <semaphore.h>
4507#include <sys/stat.h>
4508
4509int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00004510 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00004511 int count;
4512 int res;
4513 if(a==SEM_FAILED){
4514 perror("sem_open");
4515 return 1;
4516
4517 }
4518 res = sem_getvalue(a, &count);
4519 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004520 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00004521 return res==-1 ? 1 : 0;
4522}
Matthias Kloseb159a552010-04-25 21:00:44 +00004523]])],
4524[ac_cv_broken_sem_getvalue=no],
4525[ac_cv_broken_sem_getvalue=yes],
4526[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00004527)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004528AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
4529if test $ac_cv_broken_sem_getvalue = yes
4530then
4531 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
4532 [define to 1 if your sem_getvalue is broken.])
4533fi
Mark Dickinson10683072009-04-18 21:18:19 +00004534
Serhiy Storchakac2f7d872016-05-04 09:44:44 +03004535AC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND], [], [], [[#include <dlfcn.h>]])
4536
Mark Dickinsonbd792642009-03-18 20:06:12 +00004537# determine what size digit to use for Python's longs
4538AC_MSG_CHECKING([digit size for Python's longs])
4539AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004540AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00004541[case $enable_big_digits in
4542yes)
4543 enable_big_digits=30 ;;
4544no)
4545 enable_big_digits=15 ;;
4546[15|30])
4547 ;;
4548*)
4549 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4550esac
4551AC_MSG_RESULT($enable_big_digits)
4552AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4553],
4554[AC_MSG_RESULT(no value specified)])
4555
Guido van Rossumef2255b2000-03-10 22:30:29 +00004556# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004557AC_CHECK_HEADER(wchar.h, [
Victor Stinner1b80b242016-04-12 22:34:58 +02004558 AC_DEFINE(HAVE_WCHAR_H, 1,
4559 [Define if the compiler provides a wchar.h header file.])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004560 wchar_h="yes"
4561],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004562wchar_h="no"
4563)
4564
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004565# determine wchar_t size
4566if test "$wchar_h" = yes
4567then
Guido van Rossum67b26592001-10-20 14:21:45 +00004568 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004569fi
4570
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004571AC_MSG_CHECKING(for UCS-4 tcl)
4572have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00004573AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004574#include <tcl.h>
4575#if TCL_UTF_MAX != 6
4576# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00004577#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004578 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4579 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004580],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004581AC_MSG_RESULT($have_ucs4_tcl)
4582
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004583# check whether wchar_t is signed or not
4584if test "$wchar_h" = yes
4585then
4586 # check whether wchar_t is signed or not
4587 AC_MSG_CHECKING(whether wchar_t is signed)
4588 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004589 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004590 #include <wchar.h>
4591 int main()
4592 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004593 /* Success: exit code 0 */
4594 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004595 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004596 ]])],
4597 [ac_cv_wchar_t_signed=yes],
4598 [ac_cv_wchar_t_signed=no],
4599 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004600 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4601fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004602
Georg Brandl52d168a2008-01-07 18:10:24 +00004603# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004604if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004605 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00004606then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004607 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00004608 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4609 [Define if you have a useable wchar_t type defined in wchar.h; useable
4610 means wchar_t must be an unsigned type with at least 16 bits. (see
4611 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00004612else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004613 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004614fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004615AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004616
4617# check for endianness
4618AC_C_BIGENDIAN
4619
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004620# ABI version string for Python extension modules. This appears between the
4621# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
4622# from the following attributes which affect the ABI of this Python build (in
4623# this order):
4624#
4625# * The Python implementation (always 'cpython-' for us)
4626# * The major and minor version numbers
4627# * --with-pydebug (adds a 'd')
4628# * --with-pymalloc (adds a 'm')
4629# * --with-wide-unicode (adds a 'u')
4630#
4631# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00004632# would get a shared library ABI version tag of 'cpython-32dmu' and shared
4633# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004634AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004635AC_MSG_CHECKING(ABIFLAGS)
4636AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004637AC_MSG_CHECKING(SOABI)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +02004638SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004639AC_MSG_RESULT($SOABI)
4640
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004641AC_SUBST(EXT_SUFFIX)
4642case $ac_sys_system in
Ned Deily3b812482015-04-15 17:11:47 -07004643 Linux*|GNU*|Darwin)
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004644 EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
4645 *)
4646 EXT_SUFFIX=${SHLIB_SUFFIX};;
4647esac
4648
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004649AC_MSG_CHECKING(LDVERSION)
4650LDVERSION='$(VERSION)$(ABIFLAGS)'
4651AC_MSG_RESULT($LDVERSION)
4652
doko@python.org87421192013-01-26 11:39:31 +01004653dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
4654AC_SUBST(PY_ENABLE_SHARED)
doko@ubuntu.com55532312016-06-14 08:55:19 +02004655if test x$PLATFORM_TRIPLET = x; then
4656 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
4657else
4658 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
4659fi
doko@python.org87421192013-01-26 11:39:31 +01004660AC_SUBST(LIBPL)
4661
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004662# Check whether right shifting a negative integer extends the sign bit
4663# or fills with zeros (like the Cray J90, according to Tim Peters).
4664AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004665AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004666AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004667int main()
4668{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004669 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004670}
Matthias Kloseb159a552010-04-25 21:00:44 +00004671]])],
4672[ac_cv_rshift_extends_sign=yes],
4673[ac_cv_rshift_extends_sign=no],
4674[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004675AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4676if test "$ac_cv_rshift_extends_sign" = no
4677then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004678 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4679 [Define if i>>j for signed int i does not extend the sign bit
4680 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004681fi
4682
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004683# check for getc_unlocked and related locking functions
4684AC_MSG_CHECKING(for getc_unlocked() and friends)
4685AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004686AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004687 FILE *f = fopen("/dev/null", "r");
4688 flockfile(f);
4689 getc_unlocked(f);
4690 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00004691]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004692AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4693if test "$ac_cv_have_getc_unlocked" = yes
4694then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004695 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4696 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004697fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004698
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004699# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004700# save the value of LIBS so we don't actually link Python with readline
4701LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00004702
4703# On some systems we need to link readline to a termcap compatible
4704# library. NOTE: Keep the precedence of listed libraries synchronised
4705# with setup.py.
4706py_cv_lib_readline=no
4707AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02004708for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00004709 if test -z "$py_libtermcap"; then
4710 READLINE_LIBS="-lreadline"
4711 else
4712 READLINE_LIBS="-lreadline -l$py_libtermcap"
4713 fi
4714 LIBS="$READLINE_LIBS $LIBS_no_readline"
4715 AC_LINK_IFELSE(
4716 [AC_LANG_CALL([],[readline])],
4717 [py_cv_lib_readline=yes])
4718 if test $py_cv_lib_readline = yes; then
4719 break
4720 fi
4721done
4722# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4723#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00004724if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00004725 AC_MSG_RESULT([none])
4726else
4727 AC_MSG_RESULT([$READLINE_LIBS])
4728 AC_DEFINE(HAVE_LIBREADLINE, 1,
4729 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004730fi
4731
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004732# check for readline 2.1
4733AC_CHECK_LIB(readline, rl_callback_handler_install,
4734 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004735 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004736
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004737# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004738AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4739 [have_readline=yes],
4740 [have_readline=no]
4741)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004742if test $have_readline = yes
4743then
4744 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4745 [readline/readline.h],
4746 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4747 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004748 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4749 [readline/readline.h],
4750 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4751 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004752fi
4753
Martin v. Löwis0daad592001-09-30 21:09:59 +00004754# check for readline 4.0
4755AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004756 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004757 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004758
Thomas Wouters89d996e2007-09-08 17:39:28 +00004759# also in 4.0
4760AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4761 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004762 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004763
Martin Panter5dbbf1a2016-04-03 02:54:58 +00004764# also in 4.0, but not in editline
4765AC_CHECK_LIB(readline, rl_resize_terminal,
4766 AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1,
4767 [Define if you have readline 4.0]), ,$READLINE_LIBS)
4768
Guido van Rossum353ae582001-07-10 16:45:32 +00004769# check for readline 4.2
4770AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004771 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004772 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004773
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004774# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004775AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4776 [have_readline=yes],
4777 [have_readline=no]
4778)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004779if test $have_readline = yes
4780then
4781 AC_EGREP_HEADER([extern int rl_catch_signals;],
4782 [readline/readline.h],
4783 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4784 [Define if you can turn off readline's signal handling.]), )
4785fi
4786
Benjamin Petersond1e22ba2014-11-26 14:35:12 -06004787AC_CHECK_LIB(readline, append_history,
4788 AC_DEFINE(HAVE_RL_APPEND_HISTORY, 1,
4789 [Define if readline supports append_history]), ,$READLINE_LIBS)
4790
Martin v. Löwis82bca632006-02-10 20:49:30 +00004791# End of readline checks: restore LIBS
4792LIBS=$LIBS_no_readline
4793
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004794AC_MSG_CHECKING(for broken nice())
4795AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004796AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004797int main()
4798{
4799 int val1 = nice(1);
4800 if (val1 != -1 && val1 == nice(2))
4801 exit(0);
4802 exit(1);
4803}
Matthias Kloseb159a552010-04-25 21:00:44 +00004804]])],
4805[ac_cv_broken_nice=yes],
4806[ac_cv_broken_nice=no],
4807[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004808AC_MSG_RESULT($ac_cv_broken_nice)
4809if test "$ac_cv_broken_nice" = yes
4810then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004811 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4812 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004813fi
4814
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004815AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004816AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004817AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004818#include <poll.h>
4819
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004820int main()
4821{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004822 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004823 int poll_test;
4824
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004825 close (42);
4826
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004827 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004828 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004829 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004830 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004831 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004832 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004833 return 1;
4834}
Matthias Kloseb159a552010-04-25 21:00:44 +00004835]])],
4836[ac_cv_broken_poll=yes],
4837[ac_cv_broken_poll=no],
4838[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004839AC_MSG_RESULT($ac_cv_broken_poll)
4840if test "$ac_cv_broken_poll" = yes
4841then
4842 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4843 [Define if poll() sets errno on invalid file descriptors.])
4844fi
4845
Victor Stinner1b80b242016-04-12 22:34:58 +02004846# Before we can test tzset, we need to check if struct tm has a tm_zone
Brett Cannon43802422005-02-10 20:48:03 +00004847# (which is not required by ISO C or UNIX spec) and/or if we support
4848# tzname[]
4849AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004850
Brett Cannon43802422005-02-10 20:48:03 +00004851# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004852AC_MSG_CHECKING(for working tzset())
4853AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004854AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004855#include <stdlib.h>
4856#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004857#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004858
4859#if HAVE_TZNAME
4860extern char *tzname[];
4861#endif
4862
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004863int main()
4864{
Brett Cannon18367812003-09-19 00:59:16 +00004865 /* Note that we need to ensure that not only does tzset(3)
4866 do 'something' with localtime, but it works as documented
4867 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004868 This includes making sure that tzname is set properly if
4869 tm->tm_zone does not exist since it is the alternative way
4870 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004871
Victor Stinner1b80b242016-04-12 22:34:58 +02004872 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004873 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004874 */
4875
Brett Cannon43802422005-02-10 20:48:03 +00004876 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004877 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4878
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004879 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004880 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004881 if (localtime(&groundhogday)->tm_hour != 0)
4882 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004883#if HAVE_TZNAME
4884 /* For UTC, tzname[1] is sometimes "", sometimes " " */
Victor Stinner1b80b242016-04-12 22:34:58 +02004885 if (strcmp(tzname[0], "UTC") ||
Brett Cannon43802422005-02-10 20:48:03 +00004886 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4887 exit(1);
4888#endif
Brett Cannon18367812003-09-19 00:59:16 +00004889
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004890 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004891 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004892 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004893 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004894#if HAVE_TZNAME
4895 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4896 exit(1);
4897#endif
Brett Cannon18367812003-09-19 00:59:16 +00004898
4899 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4900 tzset();
4901 if (localtime(&groundhogday)->tm_hour != 11)
4902 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004903#if HAVE_TZNAME
4904 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4905 exit(1);
4906#endif
4907
4908#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004909 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4910 exit(1);
4911 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4912 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004913#endif
Brett Cannon18367812003-09-19 00:59:16 +00004914
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004915 exit(0);
4916}
Matthias Kloseb159a552010-04-25 21:00:44 +00004917]])],
4918[ac_cv_working_tzset=yes],
4919[ac_cv_working_tzset=no],
4920[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004921AC_MSG_RESULT($ac_cv_working_tzset)
4922if test "$ac_cv_working_tzset" = yes
4923then
4924 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4925 [Define if tzset() actually switches the local timezone in a meaningful way.])
4926fi
4927
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004928# Look for subsecond timestamps in struct stat
4929AC_MSG_CHECKING(for tv_nsec in struct stat)
4930AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004931AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004932struct stat st;
4933st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004934]])],
4935[ac_cv_stat_tv_nsec=yes],
4936[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004937AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4938if test "$ac_cv_stat_tv_nsec" = yes
4939then
4940 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4941 [Define if you have struct stat.st_mtim.tv_nsec])
4942fi
4943
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004944# Look for BSD style subsecond timestamps in struct stat
4945AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4946AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004947AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004948struct stat st;
4949st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004950]])],
4951[ac_cv_stat_tv_nsec2=yes],
4952[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004953AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4954if test "$ac_cv_stat_tv_nsec2" = yes
4955then
4956 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4957 [Define if you have struct stat.st_mtimensec])
4958fi
4959
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004960# first curses header check
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004961ac_save_cppflags="$CPPFLAGS"
Xavier de Gayee13c3202016-12-13 16:04:14 +01004962if test "$cross_compiling" = no; then
4963 CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
4964fi
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004965
4966AC_CHECK_HEADERS(curses.h ncurses.h)
4967
4968# On Solaris, term.h requires curses.h
4969AC_CHECK_HEADERS(term.h,,,[
4970#ifdef HAVE_CURSES_H
4971#include <curses.h>
4972#endif
4973])
4974
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004975# On HP/UX 11.0, mvwdelch is a block with a return statement
4976AC_MSG_CHECKING(whether mvwdelch is an expression)
4977AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004978AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004979 int rtn;
4980 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004981]])],
4982[ac_cv_mvwdelch_is_expression=yes],
4983[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004984AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4985
4986if test "$ac_cv_mvwdelch_is_expression" = yes
4987then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004988 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4989 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004990fi
4991
4992AC_MSG_CHECKING(whether WINDOW has _flags)
4993AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004994AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004995 WINDOW *w;
4996 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004997]])],
4998[ac_cv_window_has_flags=yes],
4999[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00005000AC_MSG_RESULT($ac_cv_window_has_flags)
5001
5002
5003if test "$ac_cv_window_has_flags" = yes
5004then
Victor Stinner1b80b242016-04-12 22:34:58 +02005005 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00005006 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00005007fi
5008
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005009AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00005010AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
5011 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
5012 AC_MSG_RESULT(yes)],
5013 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005014)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00005015
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005016AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00005017AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
5018 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
5019 AC_MSG_RESULT(yes)],
5020 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005021)
5022
5023AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00005024AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
5025 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
5026 AC_MSG_RESULT(yes)],
5027 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005028)
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02005029# last curses configure check
5030CPPFLAGS=$ac_save_cppflags
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005031
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005032AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00005033
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005034dnl NOTE: Inform user how to proceed with files when cross compiling.
5035if test "x$cross_compiling" = xyes; then
5036 if test "${ac_cv_file__dev_ptmx+set}" != set; then
5037 AC_MSG_CHECKING([for /dev/ptmx])
5038 AC_MSG_RESULT([not set])
5039 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
5040 fi
5041 if test "${ac_cv_file__dev_ptc+set}" != set; then
5042 AC_MSG_CHECKING([for /dev/ptc])
5043 AC_MSG_RESULT([not set])
5044 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
5045 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00005046fi
5047
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005048AC_CHECK_FILE(/dev/ptmx, [], [])
5049if test "x$ac_cv_file__dev_ptmx" = xyes; then
5050 AC_DEFINE(HAVE_DEV_PTMX, 1,
5051 [Define to 1 if you have the /dev/ptmx device file.])
5052fi
5053AC_CHECK_FILE(/dev/ptc, [], [])
5054if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00005055 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005056 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00005057fi
Neal Norwitz865400f2003-03-21 01:42:58 +00005058
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00005059if test $ac_sys_system = Darwin
5060then
5061 LIBS="$LIBS -framework CoreFoundation"
5062fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00005063
Benjamin Peterson8f326b22009-12-13 02:10:36 +00005064AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00005065AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00005066#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00005067#include <stddef.h>
5068#include <string.h>
5069
Christian Heimes2c181612007-12-17 20:04:13 +00005070#ifdef HAVE_SYS_TYPES_H
5071#include <sys/types.h>
5072#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00005073
5074#ifdef HAVE_SSIZE_T
5075typedef ssize_t Py_ssize_t;
5076#elif SIZEOF_VOID_P == SIZEOF_LONG
5077typedef long Py_ssize_t;
5078#else
5079typedef int Py_ssize_t;
5080#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00005081
Christian Heimes2c181612007-12-17 20:04:13 +00005082int main()
5083{
5084 char buffer[256];
5085
Thomas Wouters477c8d52006-05-27 19:21:47 +00005086 if(sprintf(buffer, "%zd", (size_t)123) < 0)
5087 return 1;
5088
Thomas Wouters89f507f2006-12-13 04:49:30 +00005089 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00005090 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00005091
5092 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
5093 return 1;
5094
5095 if (strcmp(buffer, "-123"))
5096 return 1;
5097
Thomas Wouters477c8d52006-05-27 19:21:47 +00005098 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005099}
Matthias Kloseb159a552010-04-25 21:00:44 +00005100]])],
5101 [ac_cv_have_size_t_format=yes],
5102 [ac_cv_have_size_t_format=no],
5103 [ac_cv_have_size_t_format="cross -- assuming yes"
5104])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00005105if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005106 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
5107 [Define to printf format modifier for Py_ssize_t])
5108fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00005109
Martin v. Löwis01c04012002-11-11 14:58:44 +00005110AC_CHECK_TYPE(socklen_t,,
5111 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00005112 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00005113#ifdef HAVE_SYS_TYPES_H
5114#include <sys/types.h>
5115#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00005116#ifdef HAVE_SYS_SOCKET_H
5117#include <sys/socket.h>
5118#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00005119])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005120
Antoine Pitroufff95302008-09-03 18:58:51 +00005121AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005122AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00005123AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah19c21392012-11-22 23:47:32 +01005124#include <stdio.h>
Antoine Pitroufff95302008-09-03 18:58:51 +00005125#include<stdlib.h>
5126int main() {
5127 size_t len = -1;
5128 const char *str = "text";
5129 len = mbstowcs(NULL, str, 0);
5130 return (len != 4);
5131}
Matthias Kloseb159a552010-04-25 21:00:44 +00005132]])],
5133[ac_cv_broken_mbstowcs=no],
5134[ac_cv_broken_mbstowcs=yes],
5135[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00005136AC_MSG_RESULT($ac_cv_broken_mbstowcs)
5137if test "$ac_cv_broken_mbstowcs" = yes
5138then
5139 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005140 [Define if mbstowcs(NULL, "text", 0) does not return the number of
Antoine Pitroufff95302008-09-03 18:58:51 +00005141 wide chars that would be converted.])
5142fi
5143
Antoine Pitroub52ec782009-01-25 16:34:23 +00005144# Check for --with-computed-gotos
5145AC_MSG_CHECKING(for --with-computed-gotos)
5146AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00005147 AS_HELP_STRING([--with(out)-computed-gotos],
5148 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00005149[
Antoine Pitrou042b1282010-08-13 21:15:58 +00005150if test "$withval" = yes
Victor Stinner1b80b242016-04-12 22:34:58 +02005151then
Antoine Pitroub52ec782009-01-25 16:34:23 +00005152 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005153 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005154 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00005155fi
5156if test "$withval" = no
Victor Stinner1b80b242016-04-12 22:34:58 +02005157then
Antoine Pitrou042b1282010-08-13 21:15:58 +00005158 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
Victor Stinner1b80b242016-04-12 22:34:58 +02005159 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitrou042b1282010-08-13 21:15:58 +00005160 AC_MSG_RESULT(no)
5161fi
5162],
5163[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005164
Matthias Kloseb17289e2012-03-15 19:51:34 +01005165AC_MSG_CHECKING(whether $CC supports computed gotos)
5166AC_CACHE_VAL(ac_cv_computed_gotos,
5167AC_RUN_IFELSE([AC_LANG_SOURCE([[[
5168int main(int argc, char **argv)
5169{
5170 static void *targets[1] = { &&LABEL1 };
5171 goto LABEL2;
5172LABEL1:
5173 return 0;
5174LABEL2:
5175 goto *targets[0];
5176 return 1;
5177}
5178]]])],
5179[ac_cv_computed_gotos=yes],
5180[ac_cv_computed_gotos=no],
5181[if test "${with_computed_gotos+set}" = set; then
5182 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
5183 else
5184 ac_cv_computed_gotos=no
5185 fi]))
5186AC_MSG_RESULT($ac_cv_computed_gotos)
5187case "$ac_cv_computed_gotos" in yes*)
5188 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
5189 [Define if the C compiler supports computed gotos.])
5190esac
5191
R. David Murraye16cda92010-10-15 23:12:57 +00005192case $ac_sys_system in
Victor Stinner1b80b242016-04-12 22:34:58 +02005193AIX*)
R. David Murraye16cda92010-10-15 23:12:57 +00005194 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
5195esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00005196
Jesus Cea6a792292010-05-03 21:18:48 +00005197
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00005198AC_SUBST(THREADHEADERS)
5199
5200for h in `(cd $srcdir;echo Python/thread_*.h)`
5201do
5202 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
5203done
5204
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005205AC_SUBST(SRCDIRS)
Alex Dzyoba8a543c02017-03-24 11:23:43 +03005206SRCDIRS="Parser Objects Python Modules Programs"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00005207AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005208for dir in $SRCDIRS; do
5209 if test ! -d $dir; then
5210 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00005211 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005212done
5213AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00005214
Stefan Krah1919b7e2012-03-21 18:25:23 +01005215# Availability of -O2:
5216AC_MSG_CHECKING(for -O2)
5217saved_cflags="$CFLAGS"
5218CFLAGS="-O2"
5219AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
5220]])],[have_O2=yes],[have_O2=no])
5221AC_MSG_RESULT($have_O2)
5222CFLAGS="$saved_cflags"
5223
5224# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
5225# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
5226AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
5227saved_cflags="$CFLAGS"
5228CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
5229if test "$have_O2" = no; then
5230 CFLAGS=""
5231fi
5232AC_RUN_IFELSE([AC_LANG_SOURCE([[
5233#include <stdio.h>
5234#include <stdlib.h>
5235#include <string.h>
5236void foo(void *p, void *q) { memmove(p, q, 19); }
5237int main() {
5238 char a[32] = "123456789000000000";
5239 foo(&a[9], a);
5240 if (strcmp(a, "123456789123456789000000000") != 0)
5241 return 1;
5242 foo(a, &a[9]);
5243 if (strcmp(a, "123456789000000000") != 0)
5244 return 1;
5245 return 0;
5246}
5247]])],
5248[have_glibc_memmove_bug=no],
5249[have_glibc_memmove_bug=yes],
5250[have_glibc_memmove_bug=undefined])
5251CFLAGS="$saved_cflags"
5252AC_MSG_RESULT($have_glibc_memmove_bug)
5253if test "$have_glibc_memmove_bug" = yes; then
5254 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
5255 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
5256 for memmove and bcopy.])
5257fi
5258
5259if test "$have_gcc_asm_for_x87" = yes; then
5260 # Some versions of gcc miscompile inline asm:
5261 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
5262 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
5263 case $CC in
5264 *gcc*)
5265 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
5266 saved_cflags="$CFLAGS"
5267 CFLAGS="-O2"
5268 AC_RUN_IFELSE([AC_LANG_SOURCE([[
5269 __attribute__((noinline)) int
5270 foo(int *p) {
5271 int r;
5272 asm ( "movl \$6, (%1)\n\t"
5273 "xorl %0, %0\n\t"
5274 : "=r" (r) : "r" (p) : "memory"
5275 );
5276 return r;
5277 }
5278 int main() {
5279 int p = 8;
5280 if ((foo(&p) ? : p) != 6)
5281 return 1;
5282 return 0;
5283 }
5284 ]])],
5285 [have_ipa_pure_const_bug=no],
5286 [have_ipa_pure_const_bug=yes],
5287 [have_ipa_pure_const_bug=undefined])
5288 CFLAGS="$saved_cflags"
5289 AC_MSG_RESULT($have_ipa_pure_const_bug)
5290 if test "$have_ipa_pure_const_bug" = yes; then
5291 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
5292 [Define if gcc has the ipa-pure-const bug.])
5293 fi
5294 ;;
5295 esac
5296fi
5297
Victor Stinner4f5366e2015-01-09 02:13:19 +01005298# Check for stdatomic.h
5299AC_MSG_CHECKING(for stdatomic.h)
5300AC_LINK_IFELSE(
5301[
5302 AC_LANG_SOURCE([[
5303 #include <stdatomic.h>
Victor Stinner923e06f2015-01-14 16:01:46 +01005304 atomic_int value = ATOMIC_VAR_INIT(1);
5305 _Atomic void *py_atomic_address = (void*) &value;
Victor Stinner4f5366e2015-01-09 02:13:19 +01005306 int main() {
5307 int loaded_value = atomic_load(&value);
5308 return 0;
5309 }
5310 ]])
5311],[have_stdatomic_h=yes],[have_stdatomic_h=no])
5312
5313AC_MSG_RESULT($have_stdatomic_h)
5314
5315if test "$have_stdatomic_h" = yes; then
Victor Stinner923e06f2015-01-14 16:01:46 +01005316 AC_DEFINE(HAVE_STD_ATOMIC, 1,
5317 [Has stdatomic.h, atomic_int and _Atomic void* types work])
Victor Stinner4f5366e2015-01-09 02:13:19 +01005318fi
5319
5320# Check for GCC >= 4.7 __atomic builtins
5321AC_MSG_CHECKING(for GCC >= 4.7 __atomic builtins)
5322AC_LINK_IFELSE(
5323[
5324 AC_LANG_SOURCE([[
5325 volatile int val = 1;
5326 int main() {
5327 __atomic_load_n(&val, __ATOMIC_SEQ_CST);
5328 return 0;
5329 }
5330 ]])
5331],[have_builtin_atomic=yes],[have_builtin_atomic=no])
5332
5333AC_MSG_RESULT($have_builtin_atomic)
5334
5335if test "$have_builtin_atomic" = yes; then
5336 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin atomics])
5337fi
5338
Ned Deily322f5ba2013-11-21 23:01:59 -08005339# ensurepip option
5340AC_MSG_CHECKING(for ensurepip)
5341AC_ARG_WITH(ensurepip,
5342 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
5343 ["install" or "upgrade" using bundled pip])],
5344 [],
5345 [with_ensurepip=upgrade])
5346AS_CASE($with_ensurepip,
5347 [yes|upgrade],[ENSUREPIP=upgrade],
5348 [install],[ENSUREPIP=install],
5349 [no],[ENSUREPIP=no],
5350 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
5351AC_MSG_RESULT($ENSUREPIP)
5352AC_SUBST(ENSUREPIP)
5353
Victor Stinner35a97c02015-03-08 02:59:09 +01005354# check if the dirent structure of a d_type field and DT_UNKNOWN is defined
5355AC_MSG_CHECKING(if the dirent structure of a d_type field)
5356AC_LINK_IFELSE(
5357[
5358 AC_LANG_SOURCE([[
5359 #include <dirent.h>
5360
5361 int main() {
5362 struct dirent entry;
5363 return entry.d_type == DT_UNKNOWN;
5364 }
5365 ]])
5366],[have_dirent_d_type=yes],[have_dirent_d_type=no])
5367AC_MSG_RESULT($have_dirent_d_type)
5368
5369if test "$have_dirent_d_type" = yes; then
5370 AC_DEFINE(HAVE_DIRENT_D_TYPE, 1,
5371 [Define to 1 if the dirent structure has a d_type field])
5372fi
5373
Victor Stinner9eb57c52015-03-19 22:21:49 +01005374# check if the Linux getrandom() syscall is available
5375AC_MSG_CHECKING(for the Linux getrandom() syscall)
5376AC_LINK_IFELSE(
5377[
5378 AC_LANG_SOURCE([[
Victor Stinner1b80b242016-04-12 22:34:58 +02005379 #include <unistd.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005380 #include <sys/syscall.h>
Victor Stinnerdddf4842016-06-07 11:21:42 +02005381 #include <linux/random.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005382
5383 int main() {
Victor Stinner9eb57c52015-03-19 22:21:49 +01005384 char buffer[1];
Victor Stinner3abf44e2015-09-18 15:38:37 +02005385 const size_t buflen = sizeof(buffer);
Victor Stinnerdddf4842016-06-07 11:21:42 +02005386 const int flags = GRND_NONBLOCK;
5387 /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */
Victor Stinner3abf44e2015-09-18 15:38:37 +02005388 (void)syscall(SYS_getrandom, buffer, buflen, flags);
Victor Stinner9eb57c52015-03-19 22:21:49 +01005389 return 0;
5390 }
5391 ]])
5392],[have_getrandom_syscall=yes],[have_getrandom_syscall=no])
5393AC_MSG_RESULT($have_getrandom_syscall)
5394
5395if test "$have_getrandom_syscall" = yes; then
5396 AC_DEFINE(HAVE_GETRANDOM_SYSCALL, 1,
5397 [Define to 1 if the Linux getrandom() syscall is available])
5398fi
5399
Victor Stinner3abf44e2015-09-18 15:38:37 +02005400# check if the getrandom() function is available
5401# the test was written for the Solaris function of <sys/random.h>
5402AC_MSG_CHECKING(for the getrandom() function)
5403AC_LINK_IFELSE(
5404[
5405 AC_LANG_SOURCE([[
5406 #include <sys/random.h>
5407
5408 int main() {
5409 char buffer[1];
5410 const size_t buflen = sizeof(buffer);
5411 const int flags = 0;
5412 /* ignore the result, Python checks for ENOSYS at runtime */
5413 (void)getrandom(buffer, buflen, flags);
5414 return 0;
5415 }
5416 ]])
5417],[have_getrandom=yes],[have_getrandom=no])
5418AC_MSG_RESULT($have_getrandom)
5419
5420if test "$have_getrandom" = yes; then
5421 AC_DEFINE(HAVE_GETRANDOM, 1,
5422 [Define to 1 if the getrandom() function is available])
5423fi
5424
Guido van Rossum627b2d71993-12-24 10:39:16 +00005425# generate output files
doko@python.org87421192013-01-26 11:39:31 +01005426AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00005427AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00005428AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00005429
Christian Heimes75ed8902013-11-20 01:11:18 +01005430echo "creating Modules/Setup" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005431if test ! -f Modules/Setup
5432then
5433 cp $srcdir/Modules/Setup.dist Modules/Setup
5434fi
5435
Christian Heimes75ed8902013-11-20 01:11:18 +01005436echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005437if test ! -f Modules/Setup.local
5438then
5439 echo "# Edit this file for local setup changes" >Modules/Setup.local
5440fi
5441
Christian Heimes75ed8902013-11-20 01:11:18 +01005442echo "creating Makefile" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005443$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
5444 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00005445 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00005446mv config.c Modules
Brett Cannon63d98bc2016-09-06 17:12:40 -07005447
5448if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then
5449 echo "" >&AS_MESSAGE_FD
5450 echo "" >&AS_MESSAGE_FD
Christian Heimes938da642016-09-24 12:34:25 +02005451 echo "If you want a release build with all optimizations active (LTO, PGO, etc)," >&AS_MESSAGE_FD
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00005452 echo "please run ./configure --enable-optimizations" >&AS_MESSAGE_FD
Brett Cannon63d98bc2016-09-06 17:12:40 -07005453 echo "" >&AS_MESSAGE_FD
5454 echo "" >&AS_MESSAGE_FD
5455fi
5456