blob: 73ee71c6d249972a9eb8a19b1cbcca2a6604da50 [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 Deily5489bda2018-01-31 17:44:09 -05006m4_define(PYTHON_VERSION, 3.8)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Eitan Adler24f68462018-09-14 15:55:20 -07008AC_PREREQ([2.69])
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009
Eitan Adler24f68462018-09-14 15:55:20 -070010AC_INIT([python],[PYTHON_VERSION],[https://bugs.python.org/])
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
Christian Heimesff5be6e2018-01-20 13:19:21 +010012AC_CONFIG_MACRO_DIR(m4)
13
Trent Nelson4d4ec652012-10-16 08:51:24 -040014AC_SUBST(BASECPPFLAGS)
Martin Panterc5ee3ca2016-09-12 01:32:03 +000015if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then
Trent Nelson4d4ec652012-10-16 08:51:24 -040016 # If we're building out-of-tree, we need to make sure the following
17 # resources get picked up before their $srcdir counterparts.
18 # Objects/ -> typeslots.inc
19 # Include/ -> Python-ast.h, graminit.h
20 # Python/ -> importlib.h
21 # (A side effect of this is that these resources will automatically be
22 # regenerated when building out-of-tree, regardless of whether or not
23 # the $srcdir counterpart is up-to-date. This is an acceptable trade
24 # off.)
25 BASECPPFLAGS="-IObjects -IInclude -IPython"
26else
27 BASECPPFLAGS=""
28fi
29
Ned Deily5c4b0d02017-03-04 00:19:55 -050030AC_SUBST(GITVERSION)
31AC_SUBST(GITTAG)
32AC_SUBST(GITBRANCH)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050033
Victor Stinner5facdbb2017-05-02 21:42:48 +020034if test -e $srcdir/.git
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050035then
Ned Deily5c4b0d02017-03-04 00:19:55 -050036AC_CHECK_PROG(HAS_GIT, git, found, not-found)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050037else
Ned Deily5c4b0d02017-03-04 00:19:55 -050038HAS_GIT=no-repository
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050039fi
Ned Deily5c4b0d02017-03-04 00:19:55 -050040if test $HAS_GIT = found
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050041then
Xiang Zhang4c855572018-08-20 22:36:19 +080042 GITVERSION="git --git-dir \$(srcdir)/.git rev-parse --short HEAD"
43 GITTAG="git --git-dir \$(srcdir)/.git describe --all --always --dirty"
44 GITBRANCH="git --git-dir \$(srcdir)/.git name-rev --name-only HEAD"
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050045else
Ned Deily5c4b0d02017-03-04 00:19:55 -050046 GITVERSION=""
47 GITTAG=""
48 GITBRANCH=""
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050049fi
50
Martin v. Löwis88afe662002-10-26 13:47:44 +000051AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000052AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000053
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010054AC_CANONICAL_HOST
doko@python.orga10e4a92013-01-25 18:45:12 +010055AC_SUBST(build)
56AC_SUBST(host)
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010057
Ned Deilyfcbc2462014-08-22 13:32:49 -070058# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
59rm -f pybuilddir.txt
60
Victor Stinnera5c62a82017-05-03 18:21:48 +020061AC_CHECK_PROGS(PYTHON_FOR_REGEN, python$PACKAGE_VERSION python3 python, python3)
62AC_SUBST(PYTHON_FOR_REGEN)
Xavier de Gayefd0d5932016-07-26 12:48:08 +020063
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020064if test "$cross_compiling" = yes; then
65 AC_MSG_CHECKING([for python interpreter for cross build])
66 if test -z "$PYTHON_FOR_BUILD"; then
67 for interp in python$PACKAGE_VERSION python3 python; do
68 which $interp >/dev/null 2>&1 || continue
Xavier de Gaye4afd1432016-07-07 18:00:22 +020069 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 +020070 break
71 fi
72 interp=
73 done
74 if test x$interp = x; then
75 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
76 fi
77 AC_MSG_RESULT($interp)
Xavier de Gaye92dec542016-09-11 22:22:24 +020078 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 +020079 fi
Christian Heimes954ac032012-12-12 13:10:21 +010080elif test "$cross_compiling" = maybe; then
81 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020082else
83 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
84fi
85AC_SUBST(PYTHON_FOR_BUILD)
86
Benjamin Petersond23f8222009-04-05 19:13:16 +000087dnl Ensure that if prefix is specified, it does not end in a slash. If
88dnl it does, we get path names containing '//' which is both ugly and
89dnl can cause trouble.
90
91dnl Last slash shouldn't be stripped if prefix=/
92if test "$prefix" != "/"; then
93 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
Victor Stinner1b80b242016-04-12 22:34:58 +020094fi
Benjamin Petersond23f8222009-04-05 19:13:16 +000095
Martin v. Löwis8316feb2003-06-14 07:48:07 +000096dnl This is for stuff that absolutely must end up in pyconfig.h.
97dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000098AH_TOP([
99#ifndef Py_PYCONFIG_H
100#define Py_PYCONFIG_H
101])
Martin v. Löwis11437992002-04-12 09:54:03 +0000102AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +0000103/* Define the macros needed if on a UnixWare 7.x system. */
104#if defined(__USLC__) && defined(__SCO_VERSION__)
105#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
106#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +0000107
108#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +0000109])
110
Martin v. Löwis8316feb2003-06-14 07:48:07 +0000111# We don't use PACKAGE_ variables, and they cause conflicts
112# with other autoconf-based packages that include Python.h
113grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
114rm confdefs.h
115mv confdefs.h.new confdefs.h
116
Guido van Rossum642b6781997-07-19 19:35:41 +0000117AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +0000118VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +0000119
Georg Brandlde7d8342010-09-03 22:19:07 +0000120# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +0000121AC_SUBST(SOVERSION)
122SOVERSION=1.0
123
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000124# The later defininition of _XOPEN_SOURCE disables certain features
125# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
126AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
127
Martin v. Löwisbcd93962003-05-03 10:32:18 +0000128# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
129# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
130# them.
131AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
132
Andrew MacIntyreabccf412003-07-02 13:53:25 +0000133# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
134# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
135# them.
136AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
137
Martin v. Löwisd6320502004-08-12 13:45:08 +0000138# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
Georg Brandlfcaf9102008-07-16 02:17:56 +0000139# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
140# them.
141AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
142
143
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000144define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000145
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000146# Arguments passed to configure.
147AC_SUBST(CONFIG_ARGS)
148CONFIG_ARGS="$ac_configure_args"
149
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000150AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000151AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700152 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000153[
154 case $enableval in
155 yes)
Eitan Adlerb5c246f2018-06-02 07:16:19 -0700156 # Locate the best usable SDK, see Mac/README for more
Ned Deilycbfb9a52012-06-23 16:02:19 -0700157 # information
158 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
Ned Deily87adb6e2013-10-18 21:09:56 -0700159 if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000160 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700161 enableval=/Developer/SDKs/MacOSX10.4u.sdk
162 if test ! -d "${enableval}"
163 then
164 enableval=/
165 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000166 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000167 ;;
168 esac
169 case $enableval in
170 no)
171 UNIVERSALSDK=
172 enable_universalsdk=
173 ;;
174 *)
175 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000176 if test ! -d "${UNIVERSALSDK}"
177 then
178 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
179 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000180 ;;
181 esac
Victor Stinner1b80b242016-04-12 22:34:58 +0200182
Thomas Wouters477c8d52006-05-27 19:21:47 +0000183],[
184 UNIVERSALSDK=
185 enable_universalsdk=
186])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000187if test -n "${UNIVERSALSDK}"
188then
189 AC_MSG_RESULT(${UNIVERSALSDK})
190else
191 AC_MSG_RESULT(no)
192fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000193AC_SUBST(UNIVERSALSDK)
194
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000195AC_SUBST(ARCH_RUN_32BIT)
Ned Deily87adb6e2013-10-18 21:09:56 -0700196ARCH_RUN_32BIT=""
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000197
Ned Deilycbfb9a52012-06-23 16:02:19 -0700198# For backward compatibility reasons we prefer to select '32-bit' if available,
199# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000200UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700201if test "`uname -s`" = "Darwin"
202then
203 if test -n "${UNIVERSALSDK}"
204 then
Ned Deily87adb6e2013-10-18 21:09:56 -0700205 if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700206 then
207 UNIVERSAL_ARCHS="intel"
208 fi
209 fi
210fi
211
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000212AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000213AC_MSG_CHECKING(for --with-universal-archs)
214AC_ARG_WITH(universal-archs,
Ned Deily8c9bb722018-01-30 07:42:14 -0500215 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel", "intel-32", "intel-64", or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000216[
Georg Brandlfcaf9102008-07-16 02:17:56 +0000217 UNIVERSAL_ARCHS="$withval"
218],
Ned Deily87adb6e2013-10-18 21:09:56 -0700219[])
220if test -n "${UNIVERSALSDK}"
221then
222 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
223else
224 AC_MSG_RESULT(no)
225fi
Georg Brandlfcaf9102008-07-16 02:17:56 +0000226
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000227AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000228 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000229 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000230[
231 PYTHONFRAMEWORK=${withval}
232 PYTHONFRAMEWORKDIR=${withval}.framework
233 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
234 ],[
235 PYTHONFRAMEWORK=Python
236 PYTHONFRAMEWORKDIR=Python.framework
237 PYTHONFRAMEWORKIDENTIFIER=org.python.python
238])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000239dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000240AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000241 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000242[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000243 case $enableval in
Victor Stinner1b80b242016-04-12 22:34:58 +0200244 yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000245 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000246 esac
247 case $enableval in
248 no)
249 PYTHONFRAMEWORK=
250 PYTHONFRAMEWORKDIR=no-framework
251 PYTHONFRAMEWORKPREFIX=
252 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000253 FRAMEWORKINSTALLFIRST=
254 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000255 FRAMEWORKALTINSTALLFIRST=
256 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800257 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000258 if test "x${prefix}" = "xNONE"; then
259 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
260 else
261 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
262 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000263 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000264 ;;
265 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000266 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000267 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000268 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000269 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000270 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
271 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ned Deilyb8f944f2013-11-21 22:42:25 -0800272 FRAMEWORKPYTHONW="frameworkpythonw"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000273 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000274
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000275 if test "x${prefix}" = "xNONE" ; then
276 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000277
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000278 else
279 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
280 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000281
282 case "${enableval}" in
283 /System*)
284 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
285 if test "${prefix}" = "NONE" ; then
286 # See below
287 FRAMEWORKUNIXTOOLSPREFIX="/usr"
288 fi
289 ;;
290
291 /Library*)
292 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
293 ;;
294
295 */Library/Frameworks)
296 MDIR="`dirname "${enableval}"`"
297 MDIR="`dirname "${MDIR}"`"
298 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
299
300 if test "${prefix}" = "NONE"; then
Victor Stinner1b80b242016-04-12 22:34:58 +0200301 # User hasn't specified the
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000302 # --prefix option, but wants to install
303 # the framework in a non-default location,
304 # ensure that the compatibility links get
305 # installed relative to that prefix as well
306 # instead of in /usr/local.
307 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
308 fi
309 ;;
310
311 *)
312 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
313 ;;
314 esac
315
Jack Jansen127e56e2001-09-11 14:41:54 +0000316 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000317
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000318 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000319 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000320 AC_CONFIG_FILES(Mac/Makefile)
321 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000322 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
323 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000324 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000325 ],[
326 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000327 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000328 PYTHONFRAMEWORKPREFIX=
329 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000330 FRAMEWORKINSTALLFIRST=
331 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000332 FRAMEWORKALTINSTALLFIRST=
333 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800334 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000335 if test "x${prefix}" = "xNONE" ; then
336 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
337 else
338 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
339 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000340 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000341
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000342])
343AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000344AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000345AC_SUBST(PYTHONFRAMEWORKDIR)
346AC_SUBST(PYTHONFRAMEWORKPREFIX)
347AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000348AC_SUBST(FRAMEWORKINSTALLFIRST)
349AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000350AC_SUBST(FRAMEWORKALTINSTALLFIRST)
351AC_SUBST(FRAMEWORKALTINSTALLLAST)
Ned Deilyb8f944f2013-11-21 22:42:25 -0800352AC_SUBST(FRAMEWORKPYTHONW)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000353AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000354AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000355
INADA Naoki6b42eb12017-06-29 15:31:38 +0900356AC_DEFINE_UNQUOTED(_PYTHONFRAMEWORK, "${PYTHONFRAMEWORK}", [framework name])
INADA Naokia8f8d5b2017-06-29 00:31:53 +0900357
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 ;;
pxinwr32f5fdd2019-02-27 19:09:28 +0800382 *-*-vxworks*)
383 ac_sys_system=VxWorks
384 ;;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100385 *)
386 # for now, limit cross builds to known configurations
387 MACHDEP="unknown"
388 AC_MSG_ERROR([cross build not supported for $host])
389 esac
390 ac_sys_release=
391 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000392 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000393 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000394 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000395 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000396 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000397 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000398 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100399 fi
400 ac_md_system=`echo $ac_sys_system |
401 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
402 ac_md_release=`echo $ac_sys_release |
403 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
404 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000405
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100406 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200407 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000408 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000409 darwin*) MACHDEP="darwin";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000410 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100411 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000412fi
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200413
414AC_SUBST(_PYTHON_HOST_PLATFORM)
415if test "$cross_compiling" = yes; then
416 case "$host" in
417 *-*-linux*)
418 case "$host_cpu" in
419 arm*)
420 _host_cpu=arm
421 ;;
422 *)
423 _host_cpu=$host_cpu
424 esac
425 ;;
426 *-*-cygwin*)
427 _host_cpu=
428 ;;
pxinwr32f5fdd2019-02-27 19:09:28 +0800429 *-*-vxworks*)
430 _host_cpu=$host_cpu
431 ;;
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200432 *)
433 # for now, limit cross builds to known configurations
434 MACHDEP="unknown"
435 AC_MSG_ERROR([cross build not supported for $host])
436 esac
437 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
438fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200439
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000440# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
441# disable features if it is defined, without any means to access these
442# features as extensions. For these systems, we skip the definition of
443# _XOPEN_SOURCE. Before adding a system to the list to gain access to
444# some feature, make sure there is no alternative way to access this
445# feature. Also, when using wildcards, make sure you have verified the
446# need for not defining _XOPEN_SOURCE on all systems matching the
447# wildcard, and that the wildcard does not include future systems
448# (which may remove their limitations).
449dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
450case $ac_sys_system/$ac_sys_release in
451 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
452 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000453 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000454 # In addition, Stefan Krah confirms that issue #1244610 exists through
455 # OpenBSD 4.6, but is fixed in 4.7.
Victor Stinner1b80b242016-04-12 22:34:58 +0200456 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000457 define_xopen_source=no
458 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
459 # also defined. This can be overridden by defining _BSD_SOURCE
460 # As this has a different meaning on Linux, only define it on OpenBSD
461 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
462 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200463 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000464 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
465 # also defined. This can be overridden by defining _BSD_SOURCE
466 # As this has a different meaning on Linux, only define it on OpenBSD
467 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
468 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000469 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
470 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
471 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000472 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 +0000473 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000474 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
475 # request to enable features supported by the standard as a request
476 # to disable features not supported by the standard. The best way
477 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
478 # entirely and define __EXTENSIONS__ instead.
479 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000480 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000481 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
482 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000483 # Reconfirmed for 7.1.4 by Martin v. Loewis.
484 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000485 define_xopen_source=no;;
486 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000487 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000488 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000489 define_xopen_source=no;;
Victor Stinner1b80b242016-04-12 22:34:58 +0200490 # 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 +0000491 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
492 # identifies itself as Darwin/7.*
493 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
494 # disables platform specific features beyond repair.
Victor Stinner1b80b242016-04-12 22:34:58 +0200495 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000496 # has no effect, don't bother defining them
497 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000498 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000499 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000500 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000501 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
502 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
503 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000504 AIX/4)
505 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000506 AIX/5)
507 if test `uname -r` -eq 1; then
508 define_xopen_source=no
509 fi
510 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000511 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
512 # defining NI_NUMERICHOST.
513 QNX/6.3.2)
514 define_xopen_source=no
515 ;;
pxinwr32f5fdd2019-02-27 19:09:28 +0800516 # On VxWorks, defining _XOPEN_SOURCE causes compile failures
517 # in network headers still using system V types.
518 VxWorks/*)
519 define_xopen_source=no
520 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000521
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000522esac
523
524if test $define_xopen_source = yes
525then
Victor Stinner14d098d2011-09-07 22:29:43 +0200526 # X/Open 7, incorporating POSIX.1-2008
527 AC_DEFINE(_XOPEN_SOURCE, 700,
Martin v. Löwis1a415762010-05-28 15:44:20 +0000528 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000529
530 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
531 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
532 # several APIs are not declared. Since this is also needed in some
533 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000534 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
535 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000536
Victor Stinnerd169fdc2011-09-08 00:56:17 +0200537 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 +0000538fi
539
Christian Heimes647cd872013-12-07 23:39:33 +0100540# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE
541case $ac_sys_system in
Christian Heimesb02bcae2013-12-08 15:21:08 +0100542 hp*|HP*)
543 define_stdc_a1=yes;;
544 *)
545 define_stdc_a1=no;;
Christian Heimes647cd872013-12-07 23:39:33 +0100546esac
547
Christian Heimesb02bcae2013-12-08 15:21:08 +0100548if test $define_stdc_a1 = yes
549then
550 AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc)
551fi
552
Jack Jansen6b08a402004-06-03 12:41:45 +0000553# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
554# it may influence the way we can build extensions, so distutils
555# needs to check it
556AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000557AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000558CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000559EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000560
Guido van Rossum627b2d71993-12-24 10:39:16 +0000561# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000562
563# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
564# for debug/optimization stuff. BASECFLAGS is for flags that are required
565# just to get things to compile and link. Users are free to override OPT
566# when running configure or make. The build should not break if they do.
567# BASECFLAGS should generally not be messed with, however.
568
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000569# If the user switches compilers, we can't believe the cache
570if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
571then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000572 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
573(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000574fi
575
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000576# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
577# when the compiler supports them, but we don't always want -O2, and
578# we set -g later.
579if test -z "$CFLAGS"; then
580 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000581fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700582
583if test "$ac_sys_system" = "Darwin"
584then
585 # Compiler selection on MacOSX is more complicated than
Eitan Adlerb5c246f2018-06-02 07:16:19 -0700586 # AC_PROG_CC can handle, see Mac/README for more
Ned Deilycbfb9a52012-06-23 16:02:19 -0700587 # information
588 if test -z "${CC}"
589 then
590 found_gcc=
591 found_clang=
592 as_save_IFS=$IFS; IFS=:
593 for as_dir in $PATH
594 do
595 IFS=$as_save_IFS
Ned Deily14aa00b2017-10-09 13:53:27 -0400596 if test -x "${as_dir}/gcc"; then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700597 if test -z "${found_gcc}"; then
Ned Deily14aa00b2017-10-09 13:53:27 -0400598 found_gcc="${as_dir}/gcc"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700599 fi
600 fi
Ned Deily14aa00b2017-10-09 13:53:27 -0400601 if test -x "${as_dir}/clang"; then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700602 if test -z "${found_clang}"; then
Ned Deily14aa00b2017-10-09 13:53:27 -0400603 found_clang="${as_dir}/clang"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700604 fi
605 fi
606 done
607 IFS=$as_save_IFS
608
609 if test -n "$found_gcc" -a -n "$found_clang"
610 then
611 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
612 then
613 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
614 CC="$found_clang"
615 CXX="$found_clang++"
616 fi
617
618
619 elif test -z "$found_gcc" -a -n "$found_clang"
620 then
621 AC_MSG_NOTICE([No GCC found, use CLANG])
622 CC="$found_clang"
623 CXX="$found_clang++"
624
625 elif test -z "$found_gcc" -a -z "$found_clang"
626 then
627 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
628 if test -n "${found_clang}"
629 then
630 AC_MSG_NOTICE([Using clang from Xcode.app])
631 CC="${found_clang}"
632 CXX="`/usr/bin/xcrun -find clang++`"
633
634 # else: use default behaviour
635 fi
636 fi
637 fi
638fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000639AC_PROG_CC
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200640AC_PROG_CPP
641AC_PROG_GREP
Łukasz Langaa785c872016-09-09 17:37:37 -0700642AC_PROG_SED
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000643
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000644AC_SUBST(CXX)
645AC_SUBST(MAINCC)
646AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
647AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000648 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000649 [compile main() and link python executable with C++ compiler]),
650[
Victor Stinner1b80b242016-04-12 22:34:58 +0200651
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000652 case $withval in
653 no) with_cxx_main=no
654 MAINCC='$(CC)';;
655 yes) with_cxx_main=yes
656 MAINCC='$(CXX)';;
657 *) with_cxx_main=yes
658 MAINCC=$withval
659 if test -z "$CXX"
660 then
661 CXX=$withval
662 fi;;
663 esac], [
664 with_cxx_main=no
665 MAINCC='$(CC)'
666])
667AC_MSG_RESULT($with_cxx_main)
668
669preset_cxx="$CXX"
670if test -z "$CXX"
671then
672 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200673 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
674 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
675 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Zachary Ware5af85642015-12-21 12:09:17 -0600676 icc|*/icc) AC_PATH_TOOL(CXX, [icpc], [icpc], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000677 esac
678 if test "$CXX" = "notfound"
679 then
680 CXX=""
681 fi
682fi
683if test -z "$CXX"
684then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200685 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000686 if test "$CXX" = "notfound"
687 then
688 CXX=""
689 fi
690fi
691if test "$preset_cxx" != "$CXX"
692then
Christian Heimesfe32aec2013-11-20 01:18:26 +0100693 AC_MSG_NOTICE([
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000694
695 By default, distutils will build C++ extension modules with "$CXX".
696 If this is not intended, then set CXX on the configure command line.
697 ])
698fi
699
700
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200701MULTIARCH=$($CC --print-multiarch 2>/dev/null)
702AC_SUBST(MULTIARCH)
703
704AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
705cat >> conftest.c <<EOF
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200706#undef bfin
707#undef cris
708#undef fr30
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200709#undef linux
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200710#undef hppa
711#undef hpux
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200712#undef i386
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200713#undef mips
doko@ubuntu.com9abe0492015-04-15 23:31:02 +0200714#undef powerpc
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200715#undef sparc
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200716#undef unix
doko@ubuntu.com5c38cb22016-09-01 22:05:20 +0200717#if defined(__ANDROID__)
Xavier de Gaye32cf1ac2016-12-10 17:31:28 +0100718 # Android is not a multiarch system.
doko@ubuntu.com5c38cb22016-09-01 22:05:20 +0200719#elif defined(__linux__)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200720# if defined(__x86_64__) && defined(__LP64__)
721 x86_64-linux-gnu
722# elif defined(__x86_64__) && defined(__ILP32__)
723 x86_64-linux-gnux32
724# elif defined(__i386__)
725 i386-linux-gnu
726# elif defined(__aarch64__) && defined(__AARCH64EL__)
727# if defined(__ILP32__)
728 aarch64_ilp32-linux-gnu
729# else
730 aarch64-linux-gnu
731# endif
732# elif defined(__aarch64__) && defined(__AARCH64EB__)
733# if defined(__ILP32__)
734 aarch64_be_ilp32-linux-gnu
735# else
736 aarch64_be-linux-gnu
737# endif
738# elif defined(__alpha__)
739 alpha-linux-gnu
740# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
741# if defined(__ARMEL__)
742 arm-linux-gnueabihf
743# else
744 armeb-linux-gnueabihf
745# endif
746# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
747# if defined(__ARMEL__)
748 arm-linux-gnueabi
749# else
750 armeb-linux-gnueabi
751# endif
752# elif defined(__hppa__)
753 hppa-linux-gnu
754# elif defined(__ia64__)
755 ia64-linux-gnu
756# elif defined(__m68k__) && !defined(__mcoldfire__)
757 m68k-linux-gnu
Matthias Kloseddbe9762018-04-30 19:22:16 +0200758# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
759# if _MIPS_SIM == _ABIO32
760 mipsisa32r6el-linux-gnu
761# elif _MIPS_SIM == _ABIN32
762 mipsisa64r6el-linux-gnuabin32
763# elif _MIPS_SIM == _ABI64
764 mipsisa64r6el-linux-gnuabi64
765# else
766# error unknown platform triplet
767# endif
768# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6)
769# if _MIPS_SIM == _ABIO32
770 mipsisa32r6-linux-gnu
771# elif _MIPS_SIM == _ABIN32
772 mipsisa64r6-linux-gnuabin32
773# elif _MIPS_SIM == _ABI64
774 mipsisa64r6-linux-gnuabi64
775# else
776# error unknown platform triplet
777# endif
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200778# elif defined(__mips_hard_float) && defined(_MIPSEL)
779# if _MIPS_SIM == _ABIO32
780 mipsel-linux-gnu
781# elif _MIPS_SIM == _ABIN32
782 mips64el-linux-gnuabin32
783# elif _MIPS_SIM == _ABI64
784 mips64el-linux-gnuabi64
785# else
786# error unknown platform triplet
787# endif
788# elif defined(__mips_hard_float)
789# if _MIPS_SIM == _ABIO32
790 mips-linux-gnu
791# elif _MIPS_SIM == _ABIN32
792 mips64-linux-gnuabin32
793# elif _MIPS_SIM == _ABI64
794 mips64-linux-gnuabi64
795# else
796# error unknown platform triplet
797# endif
798# elif defined(__or1k__)
799 or1k-linux-gnu
800# elif defined(__powerpc__) && defined(__SPE__)
801 powerpc-linux-gnuspe
802# elif defined(__powerpc64__)
803# if defined(__LITTLE_ENDIAN__)
804 powerpc64le-linux-gnu
805# else
806 powerpc64-linux-gnu
807# endif
808# elif defined(__powerpc__)
809 powerpc-linux-gnu
810# elif defined(__s390x__)
811 s390x-linux-gnu
812# elif defined(__s390__)
813 s390-linux-gnu
814# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
815 sh4-linux-gnu
816# elif defined(__sparc__) && defined(__arch64__)
817 sparc64-linux-gnu
818# elif defined(__sparc__)
819 sparc-linux-gnu
Matthias Kloseddbe9762018-04-30 19:22:16 +0200820# elif defined(__riscv)
821# if __riscv_xlen == 32
822 riscv32-linux-gnu
823# elif __riscv_xlen == 64
824 riscv64-linux-gnu
825# else
826# error unknown platform triplet
827# endif
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200828# else
829# error unknown platform triplet
830# endif
831#elif defined(__FreeBSD_kernel__)
832# if defined(__LP64__)
833 x86_64-kfreebsd-gnu
834# elif defined(__i386__)
835 i386-kfreebsd-gnu
836# else
837# error unknown platform triplet
838# endif
839#elif defined(__gnu_hurd__)
840 i386-gnu
Ned Deily3b812482015-04-15 17:11:47 -0700841#elif defined(__APPLE__)
842 darwin
pxinwr32f5fdd2019-02-27 19:09:28 +0800843#elif defined(__VXWORKS__)
844 vxworks
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200845#else
846# error unknown platform triplet
847#endif
848
849EOF
850
Xavier de Gaye3a32bdf2016-07-30 11:28:35 +0200851if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200852 PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '`
853 AC_MSG_RESULT([$PLATFORM_TRIPLET])
854else
855 AC_MSG_RESULT([none])
856fi
857rm -f conftest.c conftest.out
858
859if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
860 if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
861 AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report])
862 fi
doko@ubuntu.com75b1cb12016-08-29 20:03:25 +0200863elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
864 MULTIARCH=$PLATFORM_TRIPLET
Victor Stinner1b80b242016-04-12 22:34:58 +0200865fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200866AC_SUBST(PLATFORM_TRIPLET)
doko@ubuntu.com55532312016-06-14 08:55:19 +0200867if test x$MULTIARCH != x; then
868 MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
869fi
870AC_SUBST(MULTIARCH_CPPFLAGS)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200871
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200872AC_MSG_CHECKING([for -Wl,--no-as-needed])
873save_LDFLAGS="$LDFLAGS"
874LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
875AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
876 [NO_AS_NEEDED="-Wl,--no-as-needed"
877 AC_MSG_RESULT([yes])],
878 [NO_AS_NEEDED=""
879 AC_MSG_RESULT([no])])
880LDFLAGS="$save_LDFLAGS"
881AC_SUBST(NO_AS_NEEDED)
882
883
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000884# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000885AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000886
Xavier de Gaye95750b12016-07-09 11:05:42 +0200887AC_MSG_CHECKING([for the Android API level])
888cat >> conftest.c <<EOF
889#ifdef __ANDROID__
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100890android_api = __ANDROID_API__
891arm_arch = __ARM_ARCH
Xavier de Gaye95750b12016-07-09 11:05:42 +0200892#else
893#error not Android
894#endif
895EOF
896
897if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100898 ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out`
899 _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out`
Xavier de Gaye95750b12016-07-09 11:05:42 +0200900 AC_MSG_RESULT([$ANDROID_API_LEVEL])
xdegayec06c22e2017-11-23 11:44:38 +0100901 if test -z "$ANDROID_API_LEVEL"; then
902 echo 'Fatal: you must define __ANDROID_API__'
903 exit 1
904 fi
Xavier de Gaye95750b12016-07-09 11:05:42 +0200905 AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.])
Xavier de Gaye2a352b62017-01-04 21:51:16 +0100906
907 AC_MSG_CHECKING([for the Android arm ABI])
908 AC_MSG_RESULT([$_arm_arch])
909 if test "$_arm_arch" = 7; then
910 BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16"
911 LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8"
912 fi
Xavier de Gaye95750b12016-07-09 11:05:42 +0200913else
914 AC_MSG_RESULT([not Android])
915fi
916rm -f conftest.c conftest.out
917
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000918# Check for unsupported systems
919case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000920atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000921 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
922 echo See README for details.
923 exit 1;;
924esac
925
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000926AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000927AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000928AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000929 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000930[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000931 case $withval in
932 no) EXEEXT=;;
933 yes) EXEEXT=.exe;;
934 *) EXEEXT=$withval;;
935 esac])
936AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000937
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000938# Test whether we're running on a non-case-sensitive system, in which
939# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000940AC_SUBST(BUILDEXEEXT)
941AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000942if test ! -d CaseSensitiveTestDir; then
943mkdir CaseSensitiveTestDir
944fi
945
946if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000947then
Jack Jansen1999ef42001-12-06 21:47:20 +0000948 AC_MSG_RESULT(yes)
949 BUILDEXEEXT=.exe
950else
951 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000952 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000953fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000954rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000955
Guido van Rossum84561611997-08-21 00:08:11 +0000956case $ac_sys_system in
957hp*|HP*)
958 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000959 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000960 esac;;
961esac
962
Neil Schemenauer61c51152001-01-26 16:18:16 +0000963AC_SUBST(LIBRARY)
964AC_MSG_CHECKING(LIBRARY)
965if test -z "$LIBRARY"
966then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000967 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000968fi
969AC_MSG_RESULT($LIBRARY)
970
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000971# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000972# name of the library into which to insert object files). BLDLIBRARY is also
973# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
974# is blank as the main program is not linked directly against LDLIBRARY.
975# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
976# systems without shared libraries, LDLIBRARY is the same as LIBRARY
977# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
978# DLLLIBRARY is the shared (i.e., DLL) library.
Victor Stinner1b80b242016-04-12 22:34:58 +0200979#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000980# RUNSHARED is used to run shared python without installed libraries
981#
982# INSTSONAME is the name of the shared library that will be use to install
983# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000984#
985# LDVERSION is the shared library version number, normally the Python version
986# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000987AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000988AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000989AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000990AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000991AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000992AC_SUBST(INSTSONAME)
993AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000994AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000995LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000996BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000997INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000998DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000999LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +00001000RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +00001001LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001002
Guido van Rossumfb842551997-08-06 23:42:07 +00001003# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +00001004# If CXX is set, and if it is needed to link a main function that was
1005# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
1006# python might then depend on the C++ runtime
Victor Stinner1b80b242016-04-12 22:34:58 +02001007# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001008# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +00001009AC_SUBST(LINKCC)
1010AC_MSG_CHECKING(LINKCC)
1011if test -z "$LINKCC"
1012then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001013 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +00001014 case $ac_sys_system in
1015 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +00001016 exp_extra="\"\""
1017 if test $ac_sys_release -ge 5 -o \
1018 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
1019 exp_extra="."
1020 fi
1021 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001022 QNX*)
1023 # qcc must be used because the other compilers do not
1024 # support -N.
1025 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +00001026 esac
1027fi
1028AC_MSG_RESULT($LINKCC)
1029
Tarek Ziadébe720e02009-05-09 11:55:12 +00001030# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
1031# make sure we default having it set to "no": this is used by
1032# distutils.unixccompiler to know if it should add --enable-new-dtags
1033# to linker command lines, and failing to detect GNU ld simply results
1034# in the same bahaviour as before.
1035AC_SUBST(GNULD)
1036AC_MSG_CHECKING(for GNU ld)
1037ac_prog=ld
1038if test "$GCC" = yes; then
1039 ac_prog=`$CC -print-prog-name=ld`
1040fi
1041case `"$ac_prog" -V 2>&1 < /dev/null` in
1042 *GNU*)
1043 GNULD=yes;;
1044 *)
1045 GNULD=no;;
1046esac
1047AC_MSG_RESULT($GNULD)
1048
Martin v. Löwis1142de32002-03-29 16:28:31 +00001049AC_MSG_CHECKING(for --enable-shared)
1050AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001051 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001052
Martin v. Löwis1142de32002-03-29 16:28:31 +00001053if test -z "$enable_shared"
Victor Stinner1b80b242016-04-12 22:34:58 +02001054then
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001055 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +00001056 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001057 enable_shared="yes";;
1058 *)
1059 enable_shared="no";;
1060 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001061fi
1062AC_MSG_RESULT($enable_shared)
1063
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001064AC_MSG_CHECKING(for --enable-profiling)
1065AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +02001066 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
1067if test "x$enable_profiling" = xyes; then
1068 ac_save_cc="$CC"
Benjamin Peterson615ea1a2013-03-26 08:55:37 -04001069 CC="$CC -pg"
doko@ubuntu.comba015832012-06-30 16:52:05 +02001070 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
1071 [],
1072 [enable_profiling=no])
1073 CC="$ac_save_cc"
1074else
1075 enable_profiling=no
1076fi
1077AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001078
doko@ubuntu.comba015832012-06-30 16:52:05 +02001079if test "x$enable_profiling" = xyes; then
1080 BASECFLAGS="-pg $BASECFLAGS"
1081 LDFLAGS="-pg $LDFLAGS"
1082fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001083
1084AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001085
Guido van Rossumb8552162001-09-05 14:58:11 +00001086# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
1087# library that we build, but we do not want to link against it (we
1088# will find it with a -framework option). For this reason there is an
1089# extra variable BLDLIBRARY against which Python and the extension
1090# modules are linked, BLDLIBRARY. This is normally the same as
1091# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001092if test "$enable_framework"
1093then
1094 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001095 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001096 BLDLIBRARY=''
1097else
1098 BLDLIBRARY='$(LDLIBRARY)'
Victor Stinner1b80b242016-04-12 22:34:58 +02001099fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001100
Martin v. Löwis1142de32002-03-29 16:28:31 +00001101# Other platforms follow
1102if test $enable_shared = "yes"; then
doko@python.org87421192013-01-26 11:39:31 +01001103 PY_ENABLE_SHARED=1
Mark Hammond8235ea12002-07-19 06:55:41 +00001104 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +00001105 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +00001106 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001107 LDLIBRARY='libpython$(LDVERSION).dll.a'
1108 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +00001109 ;;
1110 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001111 LDLIBRARY='libpython$(LDVERSION).so'
1112 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001113 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +00001114 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001115 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001116 then
1117 PY3LIBRARY=libpython3.so
1118 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001119 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +02001120 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001121 LDLIBRARY='libpython$(LDVERSION).so'
1122 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001123 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001124 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001125 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001126 then
1127 PY3LIBRARY=libpython3.so
1128 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001129 ;;
1130 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001131 case `uname -m` in
1132 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001133 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001134 ;;
1135 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001136 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001137 ;;
1138 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001139 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001140 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001141 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001142 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001143 LDLIBRARY='libpython$(LDVERSION).dylib'
1144 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001145 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Georg Brandlb1441c72009-01-03 22:33:39 +00001146 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001147 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001148 LDLIBRARY='libpython$(LDVERSION).so'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001149 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001150 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001151
Martin v. Löwis1142de32002-03-29 16:28:31 +00001152 esac
Jason Tishler30765592003-09-04 11:04:06 +00001153else # shared is disabled
doko@python.org87421192013-01-26 11:39:31 +01001154 PY_ENABLE_SHARED=0
Jason Tishler30765592003-09-04 11:04:06 +00001155 case $ac_sys_system in
1156 CYGWIN*)
1157 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001158 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +00001159 ;;
1160 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001161fi
1162
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +02001163if test "$cross_compiling" = yes; then
1164 RUNSHARED=
1165fi
1166
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001167AC_MSG_RESULT($LDLIBRARY)
1168
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001169AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +02001170AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +00001171
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001172# tweak ARFLAGS only if the user didn't set it on the command line
1173AC_SUBST(ARFLAGS)
1174if test -z "$ARFLAGS"
1175then
Benjamin Petersond15108a2017-09-29 08:42:41 -07001176 ARFLAGS="rcs"
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001177fi
1178
doko@ubuntu.com58844492012-06-30 18:25:32 +02001179AC_CHECK_TOOLS([READELF], [readelf], [:])
1180if test "$cross_compiling" = yes; then
1181 case "$READELF" in
1182 readelf|:)
1183 AC_MSG_ERROR([readelf for the host is required for cross builds])
1184 ;;
1185 esac
1186fi
1187AC_SUBST(READELF)
1188
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001189
Neil Schemenauera42c8272001-03-31 00:01:55 +00001190case $MACHDEP in
Benjamin Peterson288d1da2017-09-28 22:44:27 -07001191hp*|HP*)
1192 # install -d does not work on HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001193 if test -z "$INSTALL"
1194 then
1195 INSTALL="${srcdir}/install-sh -c"
1196 fi
1197esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001198AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001199AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001200
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001201# Not every filesystem supports hard links
1202AC_SUBST(LN)
1203if test -z "$LN" ; then
1204 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001205 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001206 *) LN=ln;;
1207 esac
1208fi
1209
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001210# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001211AC_SUBST(ABIFLAGS)
1212ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001213
Fred Drake9f715822001-07-11 06:27:00 +00001214# Check for --with-pydebug
1215AC_MSG_CHECKING(for --with-pydebug)
Victor Stinner1b80b242016-04-12 22:34:58 +02001216AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001217 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001218[
Fred Drake9f715822001-07-11 06:27:00 +00001219if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02001220then
1221 AC_DEFINE(Py_DEBUG, 1,
1222 [Define if you want to build an interpreter with many run-time checks.])
1223 AC_MSG_RESULT(yes);
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001224 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001225 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001226else AC_MSG_RESULT(no); Py_DEBUG='false'
1227fi],
1228[AC_MSG_RESULT(no)])
1229
T. Woutersddbfa2c2017-05-23 01:30:49 +02001230# Check for --with-assertions. Py_DEBUG implies assertions, but also changes
1231# the ABI. This allows enabling assertions without changing the ABI.
1232assertions='false'
1233AC_MSG_CHECKING(for --with-assertions)
1234AC_ARG_WITH(assertions,
Eitan Adler24f68462018-09-14 15:55:20 -07001235 AS_HELP_STRING([--with-assertions],[build with C assertions enabled]),
T. Woutersddbfa2c2017-05-23 01:30:49 +02001236[
1237if test "$withval" != no
1238then
1239 assertions='true'
1240fi],
1241[])
1242if test "$assertions" = 'true'; then
1243 AC_MSG_RESULT(yes)
1244elif test "$Py_DEBUG" = 'true'; then
1245 assertions='true'
1246 AC_MSG_RESULT(implied by --with-pydebug)
1247else
1248 AC_MSG_RESULT(no)
1249fi
1250
Brett Cannon63d98bc2016-09-06 17:12:40 -07001251# Enable optimization flags
1252AC_SUBST(DEF_MAKE_ALL_RULE)
1253AC_SUBST(DEF_MAKE_RULE)
1254Py_OPT='false'
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001255AC_MSG_CHECKING(for --enable-optimizations)
Brett Cannonb4e5fee2017-06-09 13:56:57 -07001256AC_ARG_ENABLE(optimizations, AS_HELP_STRING([--enable-optimizations], [Enable expensive, stable optimizations (PGO, etc). Disabled by default.]),
Brett Cannon63d98bc2016-09-06 17:12:40 -07001257[
Alex Wang8cea5922017-03-28 08:50:51 -04001258if test "$enableval" != no
Brett Cannon63d98bc2016-09-06 17:12:40 -07001259then
1260 Py_OPT='true'
1261 AC_MSG_RESULT(yes);
1262else
1263 Py_OPT='false'
1264 AC_MSG_RESULT(no);
1265fi],
1266[AC_MSG_RESULT(no)])
1267if test "$Py_OPT" = 'true' ; then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)14c7f712016-09-08 22:38:46 +00001268 # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not
1269 # compile working code using it and both test_distutils and test_gdb are
Brett Cannon1d8f7552016-11-03 16:20:00 -07001270 # 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 +00001271 # who want LTO need to use --with-lto themselves.
Brett Cannon63d98bc2016-09-06 17:12:40 -07001272 DEF_MAKE_ALL_RULE="profile-opt"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001273 REQUIRE_PGO="yes"
Brett Cannon63d98bc2016-09-06 17:12:40 -07001274 DEF_MAKE_RULE="build_all"
1275else
1276 DEF_MAKE_ALL_RULE="build_all"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001277 REQUIRE_PGO="no"
Brett Cannon63d98bc2016-09-06 17:12:40 -07001278 DEF_MAKE_RULE="all"
1279fi
1280
serge-sans-paille5ad36f92018-10-25 01:54:22 +02001281# Make llvm-relatec checks work on systems where llvm tools are not installed with their
1282# normal names in the default $PATH (ie: Ubuntu). They exist under the
1283# non-suffixed name in their versioned llvm directory.
1284
1285llvm_bin_dir=''
1286llvm_path="${PATH}"
1287if test "${CC}" = "clang"
1288then
1289 clang_bin=`which clang`
1290 # Some systems install clang elsewhere as a symlink to the real path
1291 # which is where the related llvm tools are located.
1292 if test -L "${clang_bin}"
1293 then
1294 clang_dir=`dirname "${clang_bin}"`
1295 clang_bin=`readlink "${clang_bin}"`
1296 llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"`
1297 llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}"
1298 fi
1299fi
1300
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001301# Enable LTO flags
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001302AC_MSG_CHECKING(for --with-lto)
octaviansoldea4c814012017-09-08 12:14:33 -07001303AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in any build. Disabled by default.]),
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001304[
1305if test "$withval" != no
1306then
1307 Py_LTO='true'
1308 AC_MSG_RESULT(yes);
1309else
1310 Py_LTO='false'
1311 AC_MSG_RESULT(no);
1312fi],
1313[AC_MSG_RESULT(no)])
1314if test "$Py_LTO" = 'true' ; then
1315 case $CC in
1316 *clang*)
serge-sans-paille5ad36f92018-10-25 01:54:22 +02001317 AC_SUBST(LLVM_AR)
1318 AC_PATH_TARGET_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
1319 AC_SUBST(LLVM_AR_FOUND)
1320 if test -n "${LLVM_AR}" -a -x "${LLVM_AR}"
1321 then
1322 LLVM_AR_FOUND="found"
1323 else
1324 LLVM_AR_FOUND="not-found"
1325 fi
1326 if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found"
1327 then
1328 found_llvm_ar=`/usr/bin/xcrun -find llvm-ar 2>/dev/null`
1329 if test -n "${found_llvm_ar}"
1330 then
1331 LLVM_AR='/usr/bin/xcrun llvm-ar'
1332 LLVM_AR_FOUND=found
1333 AC_MSG_NOTICE([llvm-ar found via xcrun: ${LLVM_AR}])
1334 fi
1335 fi
1336 if test $LLVM_AR_FOUND = not-found
1337 then
1338 LLVM_PROFR_ERR=yes
1339 AC_MSG_ERROR([llvm-ar is required for a --with-lto build with clang but could not be found.])
1340 else
1341 LLVM_AR_ERR=no
1342 fi
1343 AR="${LLVM_AR}"
Ned Deily8482ce42016-09-06 15:09:20 -07001344 case $ac_sys_system in
1345 Darwin*)
1346 # Any changes made here should be reflected in the GCC+Darwin case below
1347 LTOFLAGS="-flto -Wl,-export_dynamic"
1348 ;;
1349 *)
1350 LTOFLAGS="-flto"
1351 ;;
1352 esac
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001353 ;;
1354 *gcc*)
1355 case $ac_sys_system in
1356 Darwin*)
Ned Deily8482ce42016-09-06 15:09:20 -07001357 LTOFLAGS="-flto -Wl,-export_dynamic"
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001358 ;;
1359 *)
1360 LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
1361 ;;
1362 esac
1363 ;;
1364 esac
Victor Stinner06fe77a2018-06-19 18:24:58 +02001365
1366 if test "$ac_cv_prog_cc_g" = "yes"
1367 then
1368 # bpo-30345: Add -g to LDFLAGS when compiling with LTO
1369 # to get debug symbols.
1370 LTOFLAGS="$LTOFLAGS -g"
1371 fi
1372
stratakisf92c7aa2018-12-04 15:54:01 +01001373 CFLAGS_NODIST="$CFLAGS_NODIST $LTOFLAGS"
stratakiscf10a752018-12-19 18:19:01 +01001374 LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS"
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001375fi
1376
Brett Cannon7188a3e2015-09-18 15:13:44 -07001377# Enable PGO flags.
1378AC_SUBST(PGO_PROF_GEN_FLAG)
1379AC_SUBST(PGO_PROF_USE_FLAG)
1380AC_SUBST(LLVM_PROF_MERGER)
1381AC_SUBST(LLVM_PROF_FILE)
1382AC_SUBST(LLVM_PROF_ERR)
Gregory P. Smith799520c2016-09-07 16:10:00 -07001383AC_SUBST(LLVM_PROFDATA)
1384AC_PATH_TARGET_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path})
Brett Cannon7188a3e2015-09-18 15:13:44 -07001385AC_SUBST(LLVM_PROF_FOUND)
Gregory P. Smith799520c2016-09-07 16:10:00 -07001386if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}"
1387then
1388 LLVM_PROF_FOUND="found"
1389else
1390 LLVM_PROF_FOUND="not-found"
1391fi
1392if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found"
1393then
1394 found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null`
1395 if test -n "${found_llvm_profdata}"
1396 then
1397 # llvm-profdata isn't directly in $PATH in some cases.
1398 # https://apple.stackexchange.com/questions/197053/
1399 LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata'
1400 LLVM_PROF_FOUND=found
1401 AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}])
1402 fi
1403fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001404LLVM_PROF_ERR=no
1405case $CC in
1406 *clang*)
1407 # Any changes made here should be reflected in the GCC+Darwin case below
1408 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1409 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001410 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001411 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
1412 if test $LLVM_PROF_FOUND = not-found
1413 then
1414 LLVM_PROF_ERR=yes
Gregory P. Smith799520c2016-09-07 16:10:00 -07001415 if test "${REQUIRE_PGO}" = "yes"
1416 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001417 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 -07001418 fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001419 fi
1420 ;;
1421 *gcc*)
1422 case $ac_sys_system in
1423 Darwin*)
1424 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1425 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith799520c2016-09-07 16:10:00 -07001426 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001427 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
Gregory P. Smith799520c2016-09-07 16:10:00 -07001428 if test "${LLVM_PROF_FOUND}" = "not-found"
Brett Cannon7188a3e2015-09-18 15:13:44 -07001429 then
1430 LLVM_PROF_ERR=yes
Gregory P. Smith799520c2016-09-07 16:10:00 -07001431 if test "${REQUIRE_PGO}" = "yes"
1432 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00001433 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 -07001434 fi
Brett Cannon7188a3e2015-09-18 15:13:44 -07001435 fi
1436 ;;
1437 *)
1438 PGO_PROF_GEN_FLAG="-fprofile-generate"
1439 PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
1440 LLVM_PROF_MERGER="true"
1441 LLVM_PROF_FILE=""
1442 ;;
1443 esac
1444 ;;
Zachary Ware5af85642015-12-21 12:09:17 -06001445 *icc*)
1446 PGO_PROF_GEN_FLAG="-prof-gen"
1447 PGO_PROF_USE_FLAG="-prof-use"
1448 LLVM_PROF_MERGER="true"
1449 LLVM_PROF_FILE=""
1450 ;;
Brett Cannon7188a3e2015-09-18 15:13:44 -07001451esac
1452
Skip Montanarodecc6a42003-01-01 20:07:49 +00001453# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1454# merged with this chunk of code?
1455
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001456# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001457# ------------------------
1458# (The following bit of code is complicated enough - please keep things
1459# indented properly. Just pretend you're editing Python code. ;-)
1460
1461# There are two parallel sets of case statements below, one that checks to
1462# see if OPT was set and one that does BASECFLAGS setting based upon
1463# compiler and platform. BASECFLAGS tweaks need to be made even if the
1464# user set OPT.
1465
1466# tweak OPT based on compiler and platform, only if the user didn't set
1467# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001468AC_SUBST(OPT)
Victor Stinner826f83f2017-04-28 15:07:10 +02001469AC_SUBST(CFLAGS_ALIASING)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001470if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001471then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001472 case $GCC in
1473 yes)
Christian Heimes38053212007-12-14 01:24:44 +00001474 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1475 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1476 WRAP="-fwrapv"
1477 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001478
Stefan Krahaf04ff22011-12-08 22:20:31 +01001479 case $CC in
Victor Stinner28205b22017-04-21 11:24:34 +02001480 *clang*)
Victor Stinner35f3d242017-04-21 12:35:24 +02001481 cc_is_clang=1
Victor Stinner28205b22017-04-21 11:24:34 +02001482 ;;
Victor Stinner35f3d242017-04-21 12:35:24 +02001483 *)
1484 if $CC --version 2>&1 | grep -q clang
1485 then
1486 cc_is_clang=1
1487 else
1488 cc_is_clang=
1489 fi
Stefan Krahaf04ff22011-12-08 22:20:31 +01001490 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001491
Victor Stinner35f3d242017-04-21 12:35:24 +02001492 if test -n "${cc_is_clang}"
1493 then
1494 # Clang also needs -fwrapv
1495 WRAP="-fwrapv"
Victor Stinner826f83f2017-04-28 15:07:10 +02001496 # bpo-30104: disable strict aliasing to compile correctly dtoa.c,
1497 # see Makefile.pre.in for more information
1498 CFLAGS_ALIASING="-fno-strict-aliasing"
Victor Stinner35f3d242017-04-21 12:35:24 +02001499 fi
1500
Skip Montanarodecc6a42003-01-01 20:07:49 +00001501 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001502 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001503 if test "$Py_DEBUG" = 'true' ; then
1504 # Optimization messes up debuggers, so turn it off for
1505 # debug builds.
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001506 if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
Victor Stinner28205b22017-04-21 11:24:34 +02001507 OPT="-g -Og -Wall"
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001508 else
Victor Stinner28205b22017-04-21 11:24:34 +02001509 OPT="-g -O0 -Wall"
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001510 fi
Fred Drake9f715822001-07-11 06:27:00 +00001511 else
Victor Stinner28205b22017-04-21 11:24:34 +02001512 OPT="-g $WRAP -O3 -Wall"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001513 fi
1514 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001515 *)
Victor Stinner28205b22017-04-21 11:24:34 +02001516 OPT="-O3 -Wall"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001517 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001518 esac
Victor Stinner28205b22017-04-21 11:24:34 +02001519
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001520 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001521 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1522 ;;
1523 esac
Fred Drake9f715822001-07-11 06:27:00 +00001524 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001525
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001526 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001527 OPT="-O"
1528 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001529 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001530fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001531
Skip Montanarodecc6a42003-01-01 20:07:49 +00001532AC_SUBST(BASECFLAGS)
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001533AC_SUBST(CFLAGS_NODIST)
stratakiscf10a752018-12-19 18:19:01 +01001534AC_SUBST(LDFLAGS_NODIST)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001535
1536# The -arch flags for universal builds on OSX
1537UNIVERSAL_ARCH_FLAGS=
1538AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1539
Skip Montanarodecc6a42003-01-01 20:07:49 +00001540# tweak BASECFLAGS based on compiler and platform
1541case $GCC in
1542yes)
Benjamin Peterson050af5d2016-09-10 17:53:13 -07001543 CFLAGS_NODIST="$CFLAGS_NODIST -std=c99"
Benjamin Petersond1702562016-09-07 12:00:06 -07001544
Serhiy Storchakaea80ffb2016-09-11 21:56:32 +03001545 AC_MSG_CHECKING(for -Wextra)
1546 ac_save_cc="$CC"
1547 CC="$CC -Wextra -Werror"
1548 AC_CACHE_VAL(ac_cv_extra_warnings,
1549 AC_COMPILE_IFELSE(
1550 [
1551 AC_LANG_PROGRAM([[]], [[]])
1552 ],[
1553 ac_cv_extra_warnings=yes
1554 ],[
1555 ac_cv_extra_warnings=no
1556 ]))
1557 CC="$ac_save_cc"
1558 AC_MSG_RESULT($ac_cv_extra_warnings)
1559
1560 if test $ac_cv_extra_warnings = yes
1561 then
1562 CFLAGS_NODIST="$CFLAGS_NODIST -Wextra"
1563 fi
1564
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001565 # Python doesn't violate C99 aliasing rules, but older versions of
1566 # GCC produce warnings for legal Python code. Enable
1567 # -fno-strict-aliasing on versions of GCC that support but produce
1568 # warnings. See Issue3326
1569 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001570 ac_save_cc="$CC"
1571 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001572 save_CFLAGS="$CFLAGS"
1573 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001574 AC_COMPILE_IFELSE(
1575 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001576 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001577 ],[
1578 CC="$ac_save_cc -fstrict-aliasing"
1579 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1580 AC_COMPILE_IFELSE(
1581 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001582 AC_LANG_PROGRAM([[void f(int **x) {}]],
1583 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001584 ],[
1585 ac_cv_no_strict_aliasing=no
1586 ],[
1587 ac_cv_no_strict_aliasing=yes
1588 ])
1589 ],[
1590 ac_cv_no_strict_aliasing=no
1591 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001592 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001593 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001594 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1595 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001596 then
1597 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1598 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001599
Zachary Ware5af85642015-12-21 12:09:17 -06001600 # ICC doesn't recognize the option, but only emits a warning
1601 ## XXX does it emit an unused result warning and can it be disabled?
1602 case "$CC" in
1603 *icc*)
1604 ac_cv_disable_unused_result_warning=no
1605 ;;
1606 *)
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001607 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1608 ac_save_cc="$CC"
1609 CC="$CC -Wunused-result -Werror"
1610 save_CFLAGS="$CFLAGS"
1611 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1612 AC_COMPILE_IFELSE(
1613 [
1614 AC_LANG_PROGRAM([[]], [[]])
1615 ],[
1616 ac_cv_disable_unused_result_warning=yes
1617 ],[
1618 ac_cv_disable_unused_result_warning=no
1619 ]))
1620 CFLAGS="$save_CFLAGS"
1621 CC="$ac_save_cc"
1622 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
Zachary Ware5af85642015-12-21 12:09:17 -06001623 ;;
1624 esac
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001625
1626 if test $ac_cv_disable_unused_result_warning = yes
1627 then
1628 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
Serhiy Storchakaea80ffb2016-09-11 21:56:32 +03001629 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result"
1630 fi
1631
1632 AC_MSG_CHECKING(if we can turn off $CC unused parameter warning)
1633 ac_save_cc="$CC"
1634 CC="$CC -Wunused-parameter -Werror"
1635 AC_CACHE_VAL(ac_cv_disable_unused_parameter_warning,
1636 AC_COMPILE_IFELSE(
1637 [
1638 AC_LANG_PROGRAM([[]], [[]])
1639 ],[
1640 ac_cv_disable_unused_parameter_warning=yes
1641 ],[
1642 ac_cv_disable_unused_parameter_warning=no
1643 ]))
1644 CC="$ac_save_cc"
1645 AC_MSG_RESULT($ac_cv_disable_unused_parameter_warning)
1646
1647 if test $ac_cv_disable_unused_parameter_warning = yes
1648 then
1649 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter"
1650 fi
1651
1652 AC_MSG_CHECKING(if we can turn off $CC missing field initializers warning)
1653 ac_save_cc="$CC"
1654 CC="$CC -Wmissing-field-initializers -Werror"
1655 AC_CACHE_VAL(ac_cv_disable_missing_field_initializers,
1656 AC_COMPILE_IFELSE(
1657 [
1658 AC_LANG_PROGRAM([[]], [[]])
1659 ],[
1660 ac_cv_disable_missing_field_initializers=yes
1661 ],[
1662 ac_cv_disable_missing_field_initializers=no
1663 ]))
1664 CC="$ac_save_cc"
1665 AC_MSG_RESULT($ac_cv_disable_missing_field_initializers)
1666
1667 if test $ac_cv_disable_missing_field_initializers = yes
1668 then
1669 CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers"
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001670 fi
1671
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001672 AC_MSG_CHECKING(if we can turn on $CC mixed sign comparison warning)
1673 ac_save_cc="$CC"
1674 CC="$CC -Wsign-compare"
1675 save_CFLAGS="$CFLAGS"
1676 AC_CACHE_VAL(ac_cv_enable_sign_compare_warning,
1677 AC_COMPILE_IFELSE(
1678 [
1679 AC_LANG_PROGRAM([[]], [[]])
1680 ],[
1681 ac_cv_enable_sign_compare_warning=yes
1682 ],[
1683 ac_cv_enable_sign_compare_warning=no
1684 ]))
1685 CFLAGS="$save_CFLAGS"
1686 CC="$ac_save_cc"
1687 AC_MSG_RESULT($ac_cv_enable_sign_compare_warning)
1688
1689 if test $ac_cv_enable_sign_compare_warning = yes
1690 then
1691 BASECFLAGS="$BASECFLAGS -Wsign-compare"
1692 fi
1693
1694 AC_MSG_CHECKING(if we can turn on $CC unreachable code warning)
1695 ac_save_cc="$CC"
1696 CC="$CC -Wunreachable-code"
1697 save_CFLAGS="$CFLAGS"
1698 AC_CACHE_VAL(ac_cv_enable_unreachable_code_warning,
1699 AC_COMPILE_IFELSE(
1700 [
1701 AC_LANG_PROGRAM([[]], [[]])
1702 ],[
1703 ac_cv_enable_unreachable_code_warning=yes
1704 ],[
1705 ac_cv_enable_unreachable_code_warning=no
1706 ]))
1707 CFLAGS="$save_CFLAGS"
1708 CC="$ac_save_cc"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001709
1710 # Don't enable unreachable code warning in debug mode, since it usually
1711 # results in non-standard code paths.
Ned Deilybec699e2016-03-08 00:28:37 -05001712 # Issue #24324: Unfortunately, the unreachable code warning does not work
1713 # correctly on gcc and has been silently removed from the compiler.
1714 # It is supported on clang but on OS X systems gcc may be an alias
1715 # for clang. Try to determine if the compiler is not really gcc and,
1716 # if so, only then enable the warning.
1717 if test $ac_cv_enable_unreachable_code_warning = yes && \
1718 test "$Py_DEBUG" != "true" && \
1719 test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001720 then
1721 BASECFLAGS="$BASECFLAGS -Wunreachable-code"
Ned Deilybec699e2016-03-08 00:28:37 -05001722 else
1723 ac_cv_enable_unreachable_code_warning=no
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001724 fi
Ned Deilybec699e2016-03-08 00:28:37 -05001725 AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning)
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001726
INADA Naokie3364842018-06-05 20:40:53 +09001727 AC_MSG_CHECKING(if we can turn on $CC strict-prototypes warning)
1728 ac_save_cc="$CC"
1729 CC="$CC -Werror -Wstrict-prototypes"
1730 AC_CACHE_VAL(ac_cv_enable_enable_strict_prototypes_warning,
1731 AC_COMPILE_IFELSE(
1732 [
1733 AC_LANG_PROGRAM([[]], [[]])
1734 ],[
1735 ac_cv_enable_strict_prototypes_warning=yes
1736 ],[
1737 ac_cv_enable_strict_prototypes_warning=no
1738 ]))
1739 CC="$ac_save_cc"
1740 AC_MSG_RESULT($ac_cv_enable_strict_prototypes_warning)
1741
1742 if test $ac_cv_enable_strict_prototypes_warning = yes
1743 then
1744 CFLAGS_NODIST="$CFLAGS_NODIST -Wstrict-prototypes"
1745 fi
1746
Victor Stinner193ee0a2017-02-06 14:24:00 +01001747 AC_MSG_CHECKING(if we can make implicit function declaration an error in $CC)
1748 ac_save_cc="$CC"
1749 CC="$CC -Werror=implicit-function-declaration"
1750 AC_CACHE_VAL(ac_cv_enable_implicit_function_declaration_error,
1751 AC_COMPILE_IFELSE(
1752 [
1753 AC_LANG_PROGRAM([[]], [[]])
1754 ],[
1755 ac_cv_enable_implicit_function_declaration_error=yes
1756 ],[
1757 ac_cv_enable_implicit_function_declaration_error=no
1758 ]))
1759 CC="$ac_save_cc"
1760 AC_MSG_RESULT($ac_cv_enable_implicit_function_declaration_error)
1761
1762 if test $ac_cv_enable_implicit_function_declaration_error = yes
1763 then
1764 CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration"
1765 fi
1766
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001767 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1768 # support. Without this, treatment of subnormals doesn't follow
1769 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001770 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001771 alpha*)
1772 BASECFLAGS="$BASECFLAGS -mieee"
1773 ;;
1774 esac
1775
Skip Montanarodecc6a42003-01-01 20:07:49 +00001776 case $ac_sys_system in
1777 SCO_SV*)
1778 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1779 ;;
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001780
Ned Deily87adb6e2013-10-18 21:09:56 -07001781 Darwin*)
1782 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1783 # used to be here, but non-Apple gcc doesn't accept them.
1784 if test "${CC}" = gcc
1785 then
1786 AC_MSG_CHECKING(which compiler should be used)
1787 case "${UNIVERSALSDK}" in
1788 */MacOSX10.4u.sdk)
1789 # Build using 10.4 SDK, force usage of gcc when the
1790 # compiler is gcc, otherwise the user will get very
1791 # confusing error messages when building on OSX 10.6
1792 CC=gcc-4.0
1793 CPP=cpp-4.0
1794 ;;
1795 esac
1796 AC_MSG_RESULT($CC)
1797 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001798
Ned Deily87adb6e2013-10-18 21:09:56 -07001799 if test "${enable_universalsdk}"
1800 then
1801 case "$UNIVERSAL_ARCHS" in
1802 32-bit)
1803 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1804 LIPO_32BIT_FLAGS=""
1805 ARCH_RUN_32BIT=""
1806 ;;
1807 64-bit)
1808 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1809 LIPO_32BIT_FLAGS=""
1810 ARCH_RUN_32BIT="true"
1811 ;;
1812 all)
1813 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1814 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1815 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1816 ;;
1817 intel)
1818 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1819 LIPO_32BIT_FLAGS="-extract i386"
1820 ARCH_RUN_32BIT="/usr/bin/arch -i386"
1821 ;;
1822 intel-32)
1823 UNIVERSAL_ARCH_FLAGS="-arch i386"
1824 LIPO_32BIT_FLAGS=""
1825 ARCH_RUN_32BIT=""
1826 ;;
Ned Deily8c9bb722018-01-30 07:42:14 -05001827 intel-64)
1828 UNIVERSAL_ARCH_FLAGS="-arch x86_64"
1829 LIPO_32BIT_FLAGS=""
1830 ARCH_RUN_32BIT="true"
1831 ;;
Ned Deily87adb6e2013-10-18 21:09:56 -07001832 3-way)
1833 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1834 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1835 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1836 ;;
1837 *)
1838 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1839 ;;
1840 esac
Georg Brandlfcaf9102008-07-16 02:17:56 +00001841
Ned Deily87adb6e2013-10-18 21:09:56 -07001842 if test "${UNIVERSALSDK}" != "/"
1843 then
Ned Deily8c9bb722018-01-30 07:42:14 -05001844 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1845 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ned Deily87adb6e2013-10-18 21:09:56 -07001846 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Ned Deily8c9bb722018-01-30 07:42:14 -05001847 else
1848 CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
1849 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} ${LDFLAGS}"
Ned Deily87adb6e2013-10-18 21:09:56 -07001850 fi
1851 fi
Georg Brandlfcaf9102008-07-16 02:17:56 +00001852
Ned Deily87adb6e2013-10-18 21:09:56 -07001853 # Calculate an appropriate deployment target for this build:
1854 # The deployment target value is used explicitly to enable certain
1855 # features are enabled (such as builtin libedit support for readline)
Raymond Hettinger15f44ab2016-08-30 10:47:49 -07001856 # through the use of Apple's Availability Macros and is used as a
Ned Deily87adb6e2013-10-18 21:09:56 -07001857 # component of the string returned by distutils.get_platform().
1858 #
1859 # Use the value from:
1860 # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
1861 # 2. the operating system version of the build machine if >= 10.6
1862 # 3. If running on OS X 10.3 through 10.5, use the legacy tests
1863 # below to pick either 10.3, 10.4, or 10.5 as the target.
1864 # 4. If we are running on OS X 10.2 or earlier, good luck!
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001865
Ned Deily87adb6e2013-10-18 21:09:56 -07001866 AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
Ned Deily36820b62014-06-25 13:44:22 -07001867 cur_target_major=`sw_vers -productVersion | \
1868 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1869 cur_target_minor=`sw_vers -productVersion | \
1870 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1871 cur_target="${cur_target_major}.${cur_target_minor}"
1872 if test ${cur_target_major} -eq 10 && \
1873 test ${cur_target_minor} -ge 3 && \
1874 test ${cur_target_minor} -le 5
Ned Deily87adb6e2013-10-18 21:09:56 -07001875 then
Ned Deily36820b62014-06-25 13:44:22 -07001876 # OS X 10.3 through 10.5
Ned Deily87adb6e2013-10-18 21:09:56 -07001877 cur_target=10.3
1878 if test ${enable_universalsdk}
1879 then
1880 case "$UNIVERSAL_ARCHS" in
1881 all|3-way|intel|64-bit)
1882 # These configurations were first supported in 10.5
1883 cur_target='10.5'
1884 ;;
1885 esac
1886 else
1887 if test `/usr/bin/arch` = "i386"
1888 then
1889 # 10.4 was the first release to support Intel archs
1890 cur_target="10.4"
1891 fi
1892 fi
1893 fi
1894 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001895
Ned Deily87adb6e2013-10-18 21:09:56 -07001896 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1897 # environment with a value that is the same as what we'll use
1898 # in the Makefile to ensure that we'll get the same compiler
1899 # environment during configure and build time.
1900 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1901 export MACOSX_DEPLOYMENT_TARGET
1902 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1903 AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001904
Ned Deily87adb6e2013-10-18 21:09:56 -07001905 # end of Darwin* tests
1906 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001907 esac
1908 ;;
1909
1910*)
1911 case $ac_sys_system in
1912 OpenUNIX*|UnixWare*)
1913 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1914 ;;
1915 SCO_SV*)
1916 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1917 ;;
1918 esac
1919 ;;
1920esac
1921
Zachary Ware5af85642015-12-21 12:09:17 -06001922# ICC needs -fp-model strict or floats behave badly
1923case "$CC" in
1924*icc*)
1925 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
1926 ;;
1927esac
1928
T. Woutersddbfa2c2017-05-23 01:30:49 +02001929if test "$assertions" = 'true'; then
Fred Drakee1ceaa02001-12-04 20:55:47 +00001930 :
1931else
1932 OPT="-DNDEBUG $OPT"
1933fi
1934
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001935if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001936then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001937 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001938fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001939
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001940# On some compilers, pthreads are available without further options
1941# (e.g. MacOS X). On some of these systems, the compiler will not
1942# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1943# So we have to see first whether pthreads are available without
1944# options before we can check whether -Kpthread improves anything.
1945AC_MSG_CHECKING(whether pthreads are available without options)
1946AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001947[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001948#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001949#include <pthread.h>
1950
1951void* routine(void* p){return NULL;}
1952
1953int main(){
1954 pthread_t p;
1955 if(pthread_create(&p,NULL,routine,NULL)!=0)
1956 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001957 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001958 return 0;
1959}
Matthias Kloseb159a552010-04-25 21:00:44 +00001960]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001961 ac_cv_pthread_is_default=yes
1962 ac_cv_kthread=no
1963 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001964],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001965])
1966AC_MSG_RESULT($ac_cv_pthread_is_default)
1967
1968
Victor Stinner1b80b242016-04-12 22:34:58 +02001969if test $ac_cv_pthread_is_default = yes
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001970then
1971 ac_cv_kpthread=no
1972else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001973# -Kpthread, if available, provides the right #defines
1974# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001975# Some compilers won't report that they do not support -Kpthread,
1976# so we need to run a program to see whether it really made the
1977# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001978AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1979AC_CACHE_VAL(ac_cv_kpthread,
1980[ac_save_cc="$CC"
1981CC="$CC -Kpthread"
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öwis260aecc2001-10-07 08:14:41 +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;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001992 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001993 return 0;
1994}
Matthias Kloseb159a552010-04-25 21:00:44 +00001995]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001996CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001997AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001998fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001999
Skip Montanarod8d39a02003-07-10 20:44:10 +00002000if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002001then
2002# -Kthread, if available, provides the right #defines
2003# and linker options to make pthread_create available
2004# Some compilers won't report that they do not support -Kthread,
2005# so we need to run a program to see whether it really made the
2006# function available.
2007AC_MSG_CHECKING(whether $CC accepts -Kthread)
2008AC_CACHE_VAL(ac_cv_kthread,
2009[ac_save_cc="$CC"
2010CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00002011AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01002012#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002013#include <pthread.h>
2014
2015void* routine(void* p){return NULL;}
2016
2017int main(){
2018 pthread_t p;
2019 if(pthread_create(&p,NULL,routine,NULL)!=0)
2020 return 1;
2021 (void)pthread_detach(p);
2022 return 0;
2023}
Matthias Kloseb159a552010-04-25 21:00:44 +00002024]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002025CC="$ac_save_cc"])
2026AC_MSG_RESULT($ac_cv_kthread)
2027fi
2028
Skip Montanarod8d39a02003-07-10 20:44:10 +00002029if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002030then
2031# -pthread, if available, provides the right #defines
2032# and linker options to make pthread_create available
2033# Some compilers won't report that they do not support -pthread,
2034# so we need to run a program to see whether it really made the
2035# function available.
2036AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.org7981f202013-01-25 15:33:25 +01002037AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002038[ac_save_cc="$CC"
2039CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00002040AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01002041#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002042#include <pthread.h>
2043
2044void* routine(void* p){return NULL;}
2045
2046int main(){
2047 pthread_t p;
2048 if(pthread_create(&p,NULL,routine,NULL)!=0)
2049 return 1;
2050 (void)pthread_detach(p);
2051 return 0;
2052}
Matthias Kloseb159a552010-04-25 21:00:44 +00002053]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002054CC="$ac_save_cc"])
2055AC_MSG_RESULT($ac_cv_pthread)
2056fi
2057
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002058# If we have set a CC compiler flag for thread support then
2059# check if it works for CXX, too.
2060ac_cv_cxx_thread=no
2061if test ! -z "$CXX"
2062then
2063AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
2064ac_save_cxx="$CXX"
2065
2066if test "$ac_cv_kpthread" = "yes"
2067then
Victor Stinner1b80b242016-04-12 22:34:58 +02002068 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002069 ac_cv_cxx_thread=yes
2070elif test "$ac_cv_kthread" = "yes"
2071then
2072 CXX="$CXX -Kthread"
2073 ac_cv_cxx_thread=yes
2074elif test "$ac_cv_pthread" = "yes"
Victor Stinner1b80b242016-04-12 22:34:58 +02002075then
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002076 CXX="$CXX -pthread"
2077 ac_cv_cxx_thread=yes
2078fi
2079
2080if test $ac_cv_cxx_thread = yes
2081then
2082 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
2083 $CXX -c conftest.$ac_ext 2>&5
2084 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
2085 && test -s conftest$ac_exeext && ./conftest$ac_exeext
2086 then
2087 ac_cv_cxx_thread=yes
2088 else
2089 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002090 fi
2091 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002092fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00002093AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002094fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00002095CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00002096
Fred Drakece81d592000-07-09 14:39:29 +00002097dnl # check for ANSI or K&R ("traditional") preprocessor
2098dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00002099dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00002100dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
2101dnl int foo;
2102dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00002103dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00002104dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00002105
Guido van Rossum627b2d71993-12-24 10:39:16 +00002106# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002107AC_HEADER_STDC
stratakise768c862018-01-23 16:11:24 +01002108AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002109fcntl.h grp.h \
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02002110ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
Benjamin Peterson4fe55102016-09-06 11:58:01 -07002111sched.h shadow.h signal.h stropts.h termios.h \
Benjamin Petersonea137402018-09-13 21:57:31 -07002112utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01002113poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01002114sys/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 +01002115sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Benjamin Petersonfb2ae152016-12-19 23:54:25 -08002116sys/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 +01002117sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002118sys/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 -07002119libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Benjamin Peterson93b2dee2016-09-09 10:22:45 -07002120linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \
Christian Heimes75b96182017-09-05 15:53:09 +02002121sys/endian.h sys/sysmacros.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002122AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002123AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00002124
Benjamin Peterson93b2dee2016-09-09 10:22:45 -07002125# bluetooth/bluetooth.h has been known to not compile with -std=c99.
2126# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
2127SAVE_CFLAGS=$CFLAGS
2128CFLAGS="-std=c99 $CFLAGS"
2129AC_CHECK_HEADERS(bluetooth/bluetooth.h)
2130CFLAGS=$SAVE_CFLAGS
2131
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07002132# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
2133AC_CHECK_HEADERS([net/if.h], [], [],
2134[#include <stdio.h>
2135#ifdef STDC_HEADERS
2136# include <stdlib.h>
2137# include <stddef.h>
2138#else
2139# ifdef HAVE_STDLIB_H
2140# include <stdlib.h>
2141# endif
2142#endif
2143#ifdef HAVE_SYS_SOCKET_H
2144# include <sys/socket.h>
2145#endif
2146])
2147
Martin v. Löwis11017b12006-01-14 18:12:57 +00002148# On Linux, netlink.h requires asm/types.h
2149AC_CHECK_HEADERS(linux/netlink.h,,,[
2150#ifdef HAVE_ASM_TYPES_H
2151#include <asm/types.h>
2152#endif
2153#ifdef HAVE_SYS_SOCKET_H
2154#include <sys/socket.h>
2155#endif
2156])
2157
Bjorn Anderssonbb816512018-09-26 06:47:52 -07002158# On Linux, qrtr.h requires asm/types.h
2159AC_CHECK_HEADERS(linux/qrtr.h,,,[
2160#ifdef HAVE_ASM_TYPES_H
2161#include <asm/types.h>
2162#endif
2163#ifdef HAVE_SYS_SOCKET_H
2164#include <sys/socket.h>
2165#endif
2166])
2167
caaveryeffc12f2017-09-06 18:18:10 -04002168AC_CHECK_HEADERS(linux/vm_sockets.h,,,[
2169#ifdef HAVE_SYS_SOCKET_H
2170#include <sys/socket.h>
2171#endif
2172])
2173
Charles-François Natali47413c12011-10-06 19:47:44 +02002174# On Linux, can.h and can/raw.h require sys/socket.h
Charles-François Natali773e42d2013-02-05 19:42:01 +01002175AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
Charles-François Natali47413c12011-10-06 19:47:44 +02002176#ifdef HAVE_SYS_SOCKET_H
2177#include <sys/socket.h>
2178#endif
2179])
2180
Guido van Rossum627b2d71993-12-24 10:39:16 +00002181# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002182was_it_defined=no
2183AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002184AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
2185 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
2186])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002187AC_MSG_RESULT($was_it_defined)
2188
Neal Norwitz11690112002-07-30 01:08:28 +00002189AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00002190AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2191#if defined(MAJOR_IN_MKDEV)
2192#include <sys/mkdev.h>
2193#elif defined(MAJOR_IN_SYSMACROS)
2194#include <sys/sysmacros.h>
2195#else
2196#include <sys/types.h>
2197#endif
2198]], [[
2199 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00002200],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00002201AC_MSG_RESULT($ac_cv_has_makedev)
2202if test "$ac_cv_has_makedev" = "yes"; then
2203 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
2204fi
2205
Christian Heimes985ecdc2013-11-20 11:46:18 +01002206# byte swapping
2207AC_MSG_CHECKING(for le64toh)
2208AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2209#ifdef HAVE_ENDIAN_H
2210#include <endian.h>
2211#elif defined(HAVE_SYS_ENDIAN_H)
2212#include <sys/endian.h>
2213#endif
2214]], [[
2215 le64toh(1) ]])
2216],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
2217AC_MSG_RESULT($ac_cv_has_le64toh)
2218if test "$ac_cv_has_le64toh" = "yes"; then
2219 AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
2220fi
2221
Martin v. Löwis399a6892002-10-04 10:22:02 +00002222use_lfs=yes
doko@ubuntu.com006a56c2016-06-14 10:15:25 +02002223# Don't use largefile support for GNU/Hurd
2224case $ac_sys_system in GNU*)
2225 use_lfs=no
2226esac
2227
Martin v. Löwis399a6892002-10-04 10:22:02 +00002228if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00002229# Two defines needed to enable largefile support on various platforms
2230# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00002231case $ac_sys_system/$ac_sys_release in
2232AIX*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002233 AC_DEFINE(_LARGE_FILES, 1,
Georg Brandl216e4042011-02-19 08:58:23 +00002234 [This must be defined on AIX systems to enable large file support.])
2235 ;;
2236esac
Victor Stinner1b80b242016-04-12 22:34:58 +02002237AC_DEFINE(_LARGEFILE_SOURCE, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002238[This must be defined on some systems to enable large file support.])
2239AC_DEFINE(_FILE_OFFSET_BITS, 64,
2240[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00002241fi
Guido van Rossum810cc512001-09-09 23:51:39 +00002242
Guido van Rossum300fda71996-08-19 21:58:16 +00002243# Add some code to confdefs.h so that the test for off_t works on SCO
2244cat >> confdefs.h <<\EOF
2245#if defined(SCO_DS)
2246#undef _OFF_T
2247#endif
2248EOF
2249
Guido van Rossumef2255b2000-03-10 22:30:29 +00002250# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002251AC_TYPE_MODE_T
2252AC_TYPE_OFF_T
2253AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00002254AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002255AC_TYPE_SIZE_T
2256AC_TYPE_UID_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002257
Christian Heimes400adb02008-02-01 08:12:03 +00002258AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002259 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01002260AC_CHECK_TYPE(__uint128_t,
2261 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002262
Guido van Rossumef2255b2000-03-10 22:30:29 +00002263# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00002264# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00002265AC_CHECK_SIZEOF(int, 4)
2266AC_CHECK_SIZEOF(long, 4)
Benjamin Petersoned4aa832016-09-05 17:44:18 -07002267AC_CHECK_SIZEOF(long long, 8)
Guido van Rossum3065c942001-09-17 04:03:14 +00002268AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00002269AC_CHECK_SIZEOF(short, 2)
2270AC_CHECK_SIZEOF(float, 4)
2271AC_CHECK_SIZEOF(double, 8)
2272AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00002273AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00002274AC_CHECK_SIZEOF(pid_t, 4)
Benjamin Petersondf6ff7b2016-09-06 13:53:14 -07002275AC_CHECK_SIZEOF(uintptr_t)
Guido van Rossumac405f61994-09-12 10:56:06 +00002276
Eitan Adler3055c942018-05-15 22:58:09 -07002277AC_TYPE_LONG_DOUBLE
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002278AC_CHECK_SIZEOF(long double, 16)
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002279
Thomas Woutersb2137042007-02-01 18:02:27 +00002280AC_CHECK_SIZEOF(_Bool, 1)
Thomas Woutersb2137042007-02-01 18:02:27 +00002281
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002282AC_CHECK_SIZEOF(off_t, [], [
2283#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002284#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002285#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002286])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002287
2288AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00002289if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00002290 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Victor Stinner1b80b242016-04-12 22:34:58 +02002291 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002292 [Defined to enable large file support when an off_t is bigger than a long
2293 and long long is available and at least as big as an off_t. You may need
2294 to add some flags for configuration and compilation to enable this mode.
2295 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002296 AC_MSG_RESULT(yes)
2297else
2298 AC_MSG_RESULT(no)
2299fi
2300
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002301AC_CHECK_SIZEOF(time_t, [], [
2302#ifdef HAVE_SYS_TYPES_H
2303#include <sys/types.h>
2304#endif
2305#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00002306#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002307#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00002308])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002309
Trent Mick635f6fb2000-08-23 21:33:05 +00002310# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002311ac_save_cc="$CC"
2312if test "$ac_cv_kpthread" = "yes"
2313then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002314elif test "$ac_cv_kthread" = "yes"
2315then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002316elif test "$ac_cv_pthread" = "yes"
2317then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002318fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002319
Trent Mick635f6fb2000-08-23 21:33:05 +00002320AC_MSG_CHECKING(for pthread_t)
2321have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002322AC_COMPILE_IFELSE([
2323 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
2324],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00002325AC_MSG_RESULT($have_pthread_t)
2326if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002327 AC_CHECK_SIZEOF(pthread_t, [], [
2328#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002329#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002330#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00002331 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00002332fi
Masayuki Yamamoto731e1892017-10-06 19:41:34 +09002333
2334# Issue #25658: POSIX hasn't defined that pthread_key_t is compatible with int.
2335# This checking will be unnecessary after removing deprecated TLS API.
2336AC_CHECK_SIZEOF(pthread_key_t, [], [[#include <pthread.h>]])
2337AC_MSG_CHECKING(whether pthread_key_t is compatible with int)
2338if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then
2339 AC_COMPILE_IFELSE(
2340 [AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_key_t k; k * 1;]])],
2341 [ac_pthread_key_t_is_arithmetic_type=yes],
2342 [ac_pthread_key_t_is_arithmetic_type=no]
2343 )
2344 AC_MSG_RESULT($ac_pthread_key_t_is_arithmetic_type)
2345 if test "$ac_pthread_key_t_is_arithmetic_type" = yes ; then
2346 AC_DEFINE(PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT, 1,
2347 [Define if pthread_key_t is compatible with int.])
2348 fi
2349else
2350 AC_MSG_RESULT(no)
2351fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002352CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00002353
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002354AC_SUBST(OTHER_LIBTOOL_OPT)
2355case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002356 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002357 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
2358 ;;
2359 Darwin/*)
2360 OTHER_LIBTOOL_OPT=""
2361 ;;
2362esac
2363
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002364
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002365AC_SUBST(LIBTOOL_CRUFT)
2366case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002367 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00002368 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
2369 if test "${enable_universalsdk}"; then
2370 :
2371 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002372 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00002373 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00002374 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002375 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00002376 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00002377 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002378 if test ${gcc_version} '<' 4.0
2379 then
2380 LIBTOOL_CRUFT="-lcc_dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002381 else
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002382 LIBTOOL_CRUFT=""
2383 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00002384 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002385 #include <unistd.h>
2386 int main(int argc, char*argv[])
2387 {
2388 if (sizeof(long) == 4) {
2389 return 0;
2390 } else {
2391 return 1;
2392 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00002393 }
Matthias Kloseb159a552010-04-25 21:00:44 +00002394 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Victor Stinner1b80b242016-04-12 22:34:58 +02002395
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002396 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002397 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002398 i386)
2399 MACOSX_DEFAULT_ARCH="i386"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002400 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002401 ppc)
2402 MACOSX_DEFAULT_ARCH="ppc"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002403 ;;
2404 *)
2405 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2406 ;;
2407 esac
2408 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002409 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002410 i386)
2411 MACOSX_DEFAULT_ARCH="x86_64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002412 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002413 ppc)
2414 MACOSX_DEFAULT_ARCH="ppc64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002415 ;;
2416 *)
2417 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2418 ;;
2419 esac
2420
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002421 fi
2422
2423 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00002424 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002425 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002426esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002427AC_MSG_CHECKING(for --enable-framework)
2428if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002429then
Skip Montanarodecc6a42003-01-01 20:07:49 +00002430 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002431 # -F. is needed to allow linking to the framework while
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002432 # in the build location.
Victor Stinner1b80b242016-04-12 22:34:58 +02002433 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002434 [Define if you want to produce an OpenStep/Rhapsody framework
2435 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002436 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00002437 if test $enable_shared = "yes"
2438 then
2439 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
2440 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002441else
2442 AC_MSG_RESULT(no)
2443fi
2444
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002445AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002446case $ac_sys_system/$ac_sys_release in
2447 Darwin/*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002448 AC_DEFINE(WITH_DYLD, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002449 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
2450 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
2451 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002452 AC_MSG_RESULT(always on for Darwin)
2453 ;;
2454 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002455 AC_MSG_RESULT(no)
2456 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002457esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002458
Guido van Rossumac405f61994-09-12 10:56:06 +00002459# Set info about shared libraries.
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002460AC_SUBST(SHLIB_SUFFIX)
Guido van Rossumac405f61994-09-12 10:56:06 +00002461AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002462AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002463AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002464AC_SUBST(CCSHARED)
2465AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00002466
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002467# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
2468# -- usually .so, .sl on HP-UX, .dll on Cygwin
2469AC_MSG_CHECKING(the extension of shared libraries)
2470if test -z "$SHLIB_SUFFIX"; then
2471 case $ac_sys_system in
2472 hp*|HP*)
2473 case `uname -m` in
2474 ia64) SHLIB_SUFFIX=.so;;
2475 *) SHLIB_SUFFIX=.sl;;
2476 esac
2477 ;;
2478 CYGWIN*) SHLIB_SUFFIX=.dll;;
2479 *) SHLIB_SUFFIX=.so;;
2480 esac
2481fi
2482AC_MSG_RESULT($SHLIB_SUFFIX)
2483
Guido van Rossumac405f61994-09-12 10:56:06 +00002484# LDSHARED is the ld *command* used to create shared library
Benjamin Peterson06930632017-09-04 16:36:05 -07002485# -- "cc -G" on SunOS 5.x.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002486# (Shared libraries in this instance are shared modules to be loaded into
2487# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002488AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002489if test -z "$LDSHARED"
2490then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002491 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002492 AIX*)
Martin Panter395733d2016-11-20 07:56:37 +00002493 BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Martin Panter5de141f2016-08-27 04:00:19 +00002494 LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002495 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002496 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002497 if test "$GCC" = "yes" ; then
2498 LDSHARED='$(CC) -shared'
2499 LDCXXSHARED='$(CXX) -shared'
2500 else
2501 LDSHARED='$(CC) -G'
2502 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00002503 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002504 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002505 if test "$GCC" = "yes" ; then
2506 LDSHARED='$(CC) -shared'
2507 LDCXXSHARED='$(CXX) -shared'
2508 else
Rob Boehne9d25bd12017-12-06 11:58:17 -06002509 LDSHARED='$(CC) -b'
2510 LDCXXSHARED='$(CXX) -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002511 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00002512 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002513 LDSHARED='$(CC) -bundle'
2514 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002515 if test "$enable_framework" ; then
2516 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002517 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2518 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002519 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002520 else
2521 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002522 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002523 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002524 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002525 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002526 LDSHARED='$(CC) -bundle'
2527 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002528 if test "$enable_framework" ; then
2529 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002530 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2531 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002532 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002533 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002534 # No framework, use the Python app as bundle-loader
2535 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002536 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002537 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002538 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002539 Darwin/*)
2540 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2541 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00002542
Ned Deily36820b62014-06-25 13:44:22 -07002543 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2544 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2545 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2546 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2547 if test ${dep_target_major} -eq 10 && \
2548 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002549 then
Ned Deily36820b62014-06-25 13:44:22 -07002550 # building for OS X 10.0 through 10.2
Antoine Pitroud4958c22010-10-13 17:01:10 +00002551 LDSHARED='$(CC) -bundle'
2552 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002553 if test "$enable_framework" ; then
2554 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002555 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2556 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002557 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002558 else
2559 # No framework, use the Python app as bundle-loader
2560 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2561 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002562 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002563 fi
Ned Deily36820b62014-06-25 13:44:22 -07002564 else
2565 # building for OS X 10.3 and later
2566 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2567 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2568 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002569 fi
2570 ;;
pxinwr32f5fdd2019-02-27 19:09:28 +08002571 Linux*|GNU*|QNX*|VxWorks*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002572 LDSHARED='$(CC) -shared'
2573 LDCXXSHARED='$(CXX) -shared';;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002574 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002575 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002576 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002577 LDSHARED='$(CC) -shared'
2578 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002579 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00002580 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002581 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002582 OpenBSD*)
2583 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2584 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002585 LDSHARED='$(CC) -shared $(CCSHARED)'
2586 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002587 else
2588 case `uname -r` in
2589 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2590 LDSHARED="ld -Bshareable ${LDFLAGS}"
2591 ;;
2592 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002593 LDSHARED='$(CC) -shared $(CCSHARED)'
2594 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002595 ;;
2596 esac
2597 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002598 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00002599 LDSHARED='$(CC) -shared'
2600 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002601 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002602 if test "$GCC" = "yes" ; then
2603 LDSHARED='$(CC) -shared'
2604 LDCXXSHARED='$(CXX) -shared'
2605 else
2606 LDSHARED='$(CC) -G'
2607 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002608 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002609 SCO_SV*)
2610 LDSHARED='$(CC) -Wl,-G,-Bexport'
2611 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2612 CYGWIN*)
2613 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2614 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002615 *) LDSHARED="ld";;
2616 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002617fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002618AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002619LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002620BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002621# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002622# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002623AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002624if test -z "$CCSHARED"
2625then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002626 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002627 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002628 then CCSHARED="-fPIC";
2629 elif test `uname -p` = sparc;
2630 then CCSHARED="-xcode=pic32";
2631 else CCSHARED="-Kpic";
2632 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002633 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002634 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002635 else CCSHARED="+z";
2636 fi;;
Xavier de Gaye2a352b62017-01-04 21:51:16 +01002637 Linux-android*) ;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002638 Linux*|GNU*) CCSHARED="-fPIC";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002639 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002640 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002641 if test "$GCC" = "yes"
2642 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002643 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002644 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002645 SCO_SV*)
2646 if test "$GCC" = "yes"
2647 then CCSHARED="-fPIC"
2648 else CCSHARED="-Kpic -belf"
2649 fi;;
pxinwr32f5fdd2019-02-27 19:09:28 +08002650 VxWorks*)
2651 CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic"
Guido van Rossumac405f61994-09-12 10:56:06 +00002652 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002653fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002654AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002655# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002656# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002657AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002658if test -z "$LINKFORSHARED"
2659then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002660 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002661 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002662 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002663 LINKFORSHARED="-Wl,-E -Wl,+s";;
2664# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Xavier de Gaye2a352b62017-01-04 21:51:16 +01002665 Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002666 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002667 # -u libsys_s pulls in all symbols in libsys
Victor Stinner1b80b242016-04-12 22:34:58 +02002668 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002669 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Łukasz Langa335ab5b2013-05-30 20:58:53 +02002670
2671 # Issue #18075: the default maximum stack size (8MBytes) is too
2672 # small for the default recursion limit. Increase the stack size
2673 # to ensure that tests don't crash
2674 LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
2675
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002676 if test "$enable_framework"
2677 then
Jack Jansenda49e192005-01-07 13:08:22 +00002678 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002679 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002680 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002681 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002682 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002683 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Victor Stinner1b80b242016-04-12 22:34:58 +02002684 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002685 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2686 then
2687 LINKFORSHARED="-Wl,--export-dynamic"
2688 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002689 SunOS/5*) case $CC in
2690 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002691 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002692 then
2693 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002694 fi;;
2695 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002696 CYGWIN*)
2697 if test $enable_shared = "no"
2698 then
2699 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2700 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002701 QNX*)
2702 # -Wl,-E causes the symbols to be added to the dynamic
2703 # symbol table so that they can be found when a module
2704 # is loaded. -N 2048K causes the stack size to be set
2705 # to 2048 kilobytes so that the stack doesn't overflow
2706 # when running test_compile.py.
2707 LINKFORSHARED='-Wl,-E -N 2048K';;
pxinwr32f5fdd2019-02-27 19:09:28 +08002708 VxWorks*)
2709 LINKFORSHARED='--export-dynamic';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002710 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002711fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002712AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002713
Georg Brandl93de2162008-07-16 02:21:06 +00002714
Neil Schemenauer61c51152001-01-26 16:18:16 +00002715AC_SUBST(CFLAGSFORSHARED)
2716AC_MSG_CHECKING(CFLAGSFORSHARED)
2717if test ! "$LIBRARY" = "$LDLIBRARY"
2718then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002719 case $ac_sys_system in
2720 CYGWIN*)
2721 # Cygwin needs CCSHARED when building extension DLLs
2722 # but not when building the interpreter DLL.
2723 CFLAGSFORSHARED='';;
2724 *)
2725 CFLAGSFORSHARED='$(CCSHARED)'
2726 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002727fi
2728AC_MSG_RESULT($CFLAGSFORSHARED)
2729
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002730# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2731# library (with --enable-shared).
2732# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002733# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2734# if it is not required, since it creates a dependency of the shared library
2735# to LIBS. This, in turn, means that applications linking the shared libpython
2736# don't need to link LIBS explicitly. The default should be only changed
2737# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002738AC_SUBST(SHLIBS)
2739AC_MSG_CHECKING(SHLIBS)
2740case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002741 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002742 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002743esac
2744AC_MSG_RESULT($SHLIBS)
2745
2746
Guido van Rossum627b2d71993-12-24 10:39:16 +00002747# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002748AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002749AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2750AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002751
Michael Felt0d3ccb42017-12-30 22:39:20 +01002752# checks for uuid.h location
2753AC_CHECK_HEADERS([uuid/uuid.h uuid.h])
2754
Berker Peksag9a10ff42017-11-08 23:09:16 +03002755AC_MSG_CHECKING(for uuid_generate_time_safe)
2756AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uuid/uuid.h>]], [[
2757#ifndef uuid_generate_time_safe
Berker Peksag0e163d22017-11-09 00:43:14 +03002758void *x = uuid_generate_time_safe
Berker Peksag9a10ff42017-11-08 23:09:16 +03002759#endif
2760]])],
2761 [AC_DEFINE(HAVE_UUID_GENERATE_TIME_SAFE, 1, Define if uuid_generate_time_safe() exists.)
2762 AC_MSG_RESULT(yes)],
2763 [AC_MSG_RESULT(no)]
2764)
2765
Michael Felt0d3ccb42017-12-30 22:39:20 +01002766# AIX provides support for RFC4122 (uuid) in libc.a starting with AIX 6.1 (anno 2007)
David Carlierb4ebaa72018-01-09 19:38:07 +00002767# FreeBSD and OpenBSD provides support as well
2768AC_MSG_CHECKING(for uuid_create)
Michael Felt0d3ccb42017-12-30 22:39:20 +01002769AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uuid.h>]], [[
2770#ifndef uuid_create
2771void *x = uuid_create
2772#endif
2773]])],
David Carlierb4ebaa72018-01-09 19:38:07 +00002774 [AC_DEFINE(HAVE_UUID_CREATE, 1, Define if uuid_create() exists.)
Michael Felt0d3ccb42017-12-30 22:39:20 +01002775 AC_MSG_RESULT(yes)],
2776 [AC_MSG_RESULT(no)]
2777)
2778
Serhiy Storchaka17d88302018-05-25 01:45:09 +03002779# Little-endian FreeBSD, OpenBSD and NetBSD needs encoding into an octet
2780# stream in big-endian byte-order
2781AC_MSG_CHECKING(for uuid_enc_be)
2782AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uuid.h>]], [[
2783#ifndef uuid_enc_be
Ned Deilyced0adb2018-06-09 18:19:57 -04002784void *x = uuid_enc_be
Serhiy Storchaka17d88302018-05-25 01:45:09 +03002785#endif
2786]])],
2787 [AC_DEFINE(HAVE_UUID_ENC_BE, 1, Define if uuid_enc_be() exists.)
2788 AC_MSG_RESULT(yes)],
2789 [AC_MSG_RESULT(no)]
2790)
2791
Serhiy Storchaka9e78dc22017-11-11 19:18:28 +02002792# 'Real Time' functions on Solaris
2793# posix4 on Solaris 2.6
2794# pthread (first!) on Linux
2795AC_SEARCH_LIBS(sem_init, pthread rt posix4)
Martin v. Löwis519adae2003-09-20 10:47:47 +00002796
Martin v. Löwis19d17342003-06-14 21:03:05 +00002797# check if we need libintl for locale functions
2798AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002799 [AC_DEFINE(WITH_LIBINTL, 1,
2800 [Define to 1 if libintl is needed for locale functions.])
2801 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002802
2803# checks for system dependent C++ extensions support
2804case "$ac_sys_system" in
2805 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002806 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002807 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002808 [[loadAndInit("", 0, "")]])
2809 ],[
2810 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002811 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2812 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002813 AC_MSG_RESULT(yes)
2814 ],[
2815 AC_MSG_RESULT(no)
2816 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002817 *) ;;
2818esac
2819
Christian Heimes985ecdc2013-11-20 11:46:18 +01002820# check for systems that require aligned memory access
2821AC_MSG_CHECKING(aligned memory access is required)
Benjamin Petersone4f961b2017-04-14 09:36:45 -07002822AC_CACHE_VAL(ac_cv_aligned_required,
2823[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes985ecdc2013-11-20 11:46:18 +01002824int main()
2825{
2826 char s[16];
2827 int i, *p1, *p2;
2828 for (i=0; i < 16; i++)
2829 s[i] = i;
2830 p1 = (int*)(s+1);
2831 p2 = (int*)(s+2);
2832 if (*p1 == *p2)
2833 return 1;
2834 return 0;
Benjamin Petersone4f961b2017-04-14 09:36:45 -07002835}]])],
2836[ac_cv_aligned_required=no],
2837[ac_cv_aligned_required=yes],
2838[ac_cv_aligned_required=yes])
2839])
2840AC_MSG_RESULT($ac_cv_aligned_required)
2841if test "$ac_cv_aligned_required" = yes ; then
Christian Heimes985ecdc2013-11-20 11:46:18 +01002842 AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
2843 [Define if aligned memory access is required])
2844fi
Christian Heimes985ecdc2013-11-20 11:46:18 +01002845
2846# str, bytes and memoryview hash algorithm
2847AH_TEMPLATE(Py_HASH_ALGORITHM,
2848 [Define hash algorithm for str, bytes and memoryview.
2849 SipHash24: 1, FNV: 2, externally defined: 0])
2850
2851AC_MSG_CHECKING(for --with-hash-algorithm)
2852dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
2853AC_ARG_WITH(hash_algorithm,
2854 AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
2855 [select hash algorithm]),
2856[
2857AC_MSG_RESULT($withval)
2858case "$withval" in
2859 siphash24)
2860 AC_DEFINE(Py_HASH_ALGORITHM, 1)
2861 ;;
2862 fnv)
2863 AC_DEFINE(Py_HASH_ALGORITHM, 2)
2864 ;;
2865 *)
2866 AC_MSG_ERROR([unknown hash algorithm '$withval'])
2867 ;;
2868esac
2869],
2870[AC_MSG_RESULT(default)])
2871
Charles-François Natalid30b0222014-05-08 23:08:51 +01002872AC_MSG_CHECKING(for --with-address-sanitizer)
2873AC_ARG_WITH(address_sanitizer,
2874 AS_HELP_STRING([--with-address-sanitizer],
Gregory P. Smith1584a002018-11-12 12:07:14 -08002875 [enable AddressSanitizer (asan)]),
Charles-François Natalid30b0222014-05-08 23:08:51 +01002876[
2877AC_MSG_RESULT($withval)
2878BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
2879LDFLAGS="-fsanitize=address $LDFLAGS"
Gregory P. Smith1584a002018-11-12 12:07:14 -08002880# ASan works by controlling memory allocation, our own malloc interferes.
2881with_pymalloc="no"
2882],
2883[AC_MSG_RESULT(no)])
2884
2885AC_MSG_CHECKING(for --with-memory-sanitizer)
2886AC_ARG_WITH(memory_sanitizer,
2887 AS_HELP_STRING([--with-memory-sanitizer],
2888 [enable MemorySanitizer (msan)]),
2889[
2890AC_MSG_RESULT($withval)
2891BASECFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer $BASECFLAGS"
2892LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 $LDFLAGS"
2893# MSan works by controlling memory allocation, our own malloc interferes.
2894with_pymalloc="no"
2895],
2896[AC_MSG_RESULT(no)])
2897
2898AC_MSG_CHECKING(for --with-undefined-behavior-sanitizer)
2899AC_ARG_WITH(undefined_behavior_sanitizer,
2900 AS_HELP_STRING([--with-undefined-behavior-sanitizer],
2901 [enable UndefinedBehaviorSanitizer (ubsan)]),
2902[
2903AC_MSG_RESULT($withval)
2904BASECFLAGS="-fsanitize=undefined $BASECFLAGS"
2905LDFLAGS="-fsanitize=undefined $LDFLAGS"
Charles-François Natalid30b0222014-05-08 23:08:51 +01002906],
2907[AC_MSG_RESULT(no)])
2908
Guido van Rossum70c7f481998-03-26 18:44:10 +00002909# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002910AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002911AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002912
Guido van Rossumc5a39031996-07-31 17:35:03 +00002913AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002914AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002915 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002916[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002917AC_MSG_RESULT($withval)
2918LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002919],
2920[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002921
Benjamin Peterson0f3cde12014-12-15 00:00:23 -05002922PKG_PROG_PKG_CONFIG
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002923
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002924# Check for use of the system expat library
2925AC_MSG_CHECKING(for --with-system-expat)
2926AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002927 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2928 [],
2929 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002930
2931AC_MSG_RESULT($with_system_expat)
2932
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002933# Check for use of the system libffi library
2934AC_MSG_CHECKING(for --with-system-ffi)
2935AC_ARG_WITH(system_ffi,
Zachary Ware935043d2016-09-09 17:01:21 -07002936 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),,,)
2937
Zachary Waref40d4dd2016-09-17 01:25:24 -05002938if test "$ac_sys_system" = "Darwin"
2939then
2940 case "$with_system_ffi" in
2941 "")
2942 with_system_ffi="no"
2943 ;;
2944 yes|no)
2945 ;;
2946 *)
2947 AC_MSG_ERROR([--with-system-ffi accepts no arguments])
2948 ;;
2949 esac
2950 AC_MSG_RESULT($with_system_ffi)
2951else
2952 AC_MSG_RESULT(yes)
2953 if test "$with_system_ffi" != ""
2954 then
2955 AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform])
2956 fi
2957 with_system_ffi="yes"
2958fi
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002959
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002960if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002961 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2962else
2963 LIBFFI_INCLUDEDIR=""
2964fi
2965AC_SUBST(LIBFFI_INCLUDEDIR)
2966
Stefan Krah60187b52012-03-23 19:06:27 +01002967# Check for use of the system libmpdec library
2968AC_MSG_CHECKING(for --with-system-libmpdec)
2969AC_ARG_WITH(system_libmpdec,
2970 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2971 [],
2972 [with_system_libmpdec="no"])
2973
2974AC_MSG_RESULT($with_system_libmpdec)
2975
Benjamin Peterson076ed002010-10-31 17:11:02 +00002976# Check for support for loadable sqlite extensions
2977AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2978AC_ARG_ENABLE(loadable-sqlite-extensions,
2979 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2980 [],
2981 [enable_loadable_sqlite_extensions="no"])
2982
2983AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2984
Ned Deilyd819b932013-09-06 01:07:05 -07002985# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2986AC_SUBST(TCLTK_INCLUDES)
2987AC_SUBST(TCLTK_LIBS)
2988AC_MSG_CHECKING(for --with-tcltk-includes)
2989AC_ARG_WITH(tcltk-includes,
2990 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2991 [],
2992 [with_tcltk_includes="default"])
2993AC_MSG_RESULT($with_tcltk_includes)
2994AC_MSG_CHECKING(for --with-tcltk-libs)
2995AC_ARG_WITH(tcltk-libs,
2996 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2997 [],
2998 [with_tcltk_libs="default"])
2999AC_MSG_RESULT($with_tcltk_libs)
3000if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
3001then
3002 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
3003 then
3004 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
3005 fi
3006 TCLTK_INCLUDES=""
3007 TCLTK_LIBS=""
3008else
3009 TCLTK_INCLUDES="$with_tcltk_includes"
3010 TCLTK_LIBS="$with_tcltk_libs"
3011fi
3012
Matthias Klose55708cc2009-04-30 08:06:49 +00003013# Check for --with-dbmliborder
3014AC_MSG_CHECKING(for --with-dbmliborder)
3015AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003016 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 +00003017[
3018if test x$with_dbmliborder = xyes
3019then
3020AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
3021else
3022 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
3023 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
3024 then
3025 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
3026 fi
3027 done
3028fi])
3029AC_MSG_RESULT($with_dbmliborder)
3030
Martin v. Löwis11437992002-04-12 09:54:03 +00003031# Templates for things AC_DEFINEd more than once.
3032# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00003033AH_TEMPLATE(_REENTRANT,
3034 [Define to force use of thread-safe errno, h_errno, and other functions])
Martin v. Löwis11437992002-04-12 09:54:03 +00003035
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003036if test "$ac_cv_pthread_is_default" = yes
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003037then
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003038 # Defining _REENTRANT on system with POSIX threads should not hurt.
3039 AC_DEFINE(_REENTRANT)
3040 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003041elif test "$ac_cv_kpthread" = "yes"
3042then
3043 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00003044 if test "$ac_cv_cxx_thread" = "yes"; then
3045 CXX="$CXX -Kpthread"
3046 fi
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003047 posix_threads=yes
Martin v. Löwis5f433f02003-05-05 05:05:30 +00003048elif test "$ac_cv_kthread" = "yes"
3049then
3050 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00003051 if test "$ac_cv_cxx_thread" = "yes"; then
3052 CXX="$CXX -Kthread"
3053 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00003054 posix_threads=yes
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003055elif test "$ac_cv_pthread" = "yes"
3056then
3057 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00003058 if test "$ac_cv_cxx_thread" = "yes"; then
3059 CXX="$CXX -pthread"
3060 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003061 posix_threads=yes
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003062else
Martin v. Löwis130fb172001-07-19 11:00:41 +00003063 if test ! -z "$withval" -a -d "$withval"
3064 then LDFLAGS="$LDFLAGS -L$withval"
3065 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003066
3067 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00003068 # define _POSIX_THREADS in unistd.h. Some apparently don't
3069 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003070 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
3071 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003072 [
3073#include <unistd.h>
3074#ifdef _POSIX_THREADS
3075yes
3076#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003077 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
3078 AC_MSG_RESULT($unistd_defines_pthreads)
3079
Martin v. Löwis130fb172001-07-19 11:00:41 +00003080 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003081 # Just looking for pthread_create in libpthread is not enough:
3082 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
3083 # So we really have to include pthread.h, and then link.
3084 _libs=$LIBS
3085 LIBS="$LIBS -lpthread"
3086 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krah7dba5942012-11-22 22:49:11 +01003087 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3088#include <stdio.h>
3089#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003090
Matthias Kloseb159a552010-04-25 21:00:44 +00003091void * start_routine (void *arg) { exit (0); }]], [[
3092pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003093 AC_MSG_RESULT(yes)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003094 posix_threads=yes
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003095 ],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00003096 LIBS=$_libs
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003097 AC_CHECK_FUNC(pthread_detach, [
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003098 posix_threads=yes
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003099 ],[
3100 AC_CHECK_LIB(pthreads, pthread_create, [
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003101 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003102 LIBS="$LIBS -lpthreads"
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003103 ], [
3104 AC_CHECK_LIB(c_r, pthread_create, [
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003105 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003106 LIBS="$LIBS -lc_r"
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003107 ], [
3108 AC_CHECK_LIB(pthread, __pthread_create_system, [
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003109 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003110 LIBS="$LIBS -lpthread"
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003111 ], [
3112 AC_CHECK_LIB(cma, pthread_create, [
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003113 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00003114 LIBS="$LIBS -lcma"
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003115 ],[
3116 AC_MSG_ERROR([could not find pthreads on your system])
3117 ])
Antoine Pitrou37009202011-07-08 23:47:50 +02003118 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003119
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003120 AC_CHECK_LIB(mpc, usconfig, [
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003121 LIBS="$LIBS -lmpc"
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02003122 ])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003123
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003124fi
3125
3126if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003127 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003128 AC_DEFINE(_POSIX_THREADS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02003129 [Define if you have POSIX threads,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003130 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00003131 fi
3132
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003133 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
3134 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02003135 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003136 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003137 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003138 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003139 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003140 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02003141 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00003142 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00003143 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00003144 esac
3145
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003146 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
3147 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krah7dba5942012-11-22 22:49:11 +01003148 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
3149 #include <stdio.h>
3150 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003151 void *foo(void *parm) {
3152 return NULL;
3153 }
3154 main() {
3155 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00003156 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003157 if (pthread_attr_init(&attr)) exit(-1);
3158 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00003159 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003160 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003161 }]])],
3162 [ac_cv_pthread_system_supported=yes],
3163 [ac_cv_pthread_system_supported=no],
3164 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003165 ])
3166 AC_MSG_RESULT($ac_cv_pthread_system_supported)
3167 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003168 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00003169 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00003170 AC_CHECK_FUNCS(pthread_sigmask,
3171 [case $ac_sys_system in
3172 CYGWIN*)
3173 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
3174 [Define if pthread_sigmask() does not work on your system.])
3175 ;;
3176 esac])
pdoxe14679c2017-10-05 00:01:56 -07003177 AC_CHECK_FUNCS(pthread_getcpuclockid)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003178fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003179
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003180
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003181# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00003182AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003183AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003184AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003185[ --enable-ipv6 Enable ipv6 (with ipv4) support
3186 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003187[ case "$enableval" in
3188 no)
3189 AC_MSG_RESULT(no)
3190 ipv6=no
3191 ;;
3192 *) AC_MSG_RESULT(yes)
3193 AC_DEFINE(ENABLE_IPV6)
3194 ipv6=yes
3195 ;;
3196 esac ],
3197
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003198[
3199dnl the check does not work on cross compilation case...
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003200 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003201#include <sys/types.h>
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003202#include <sys/socket.h>]],
3203[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003204 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003205 ipv6=yes
3206],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003207 AC_MSG_RESULT(no)
3208 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003209])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003210
3211if test "$ipv6" = "yes"; then
3212 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00003213 AC_COMPILE_IFELSE([
3214 AC_LANG_PROGRAM([[#include <sys/types.h>
3215#include <netinet/in.h>]],
3216 [[struct sockaddr_in6 x;
3217 x.sin6_scope_id;]])
3218 ],[
3219 AC_MSG_RESULT(yes)
3220 ipv6=yes
3221 ],[
3222 AC_MSG_RESULT(no, IPv6 disabled)
3223 ipv6=no
3224 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003225fi
3226
3227if test "$ipv6" = "yes"; then
3228 AC_DEFINE(ENABLE_IPV6)
3229fi
3230])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003231
3232ipv6type=unknown
3233ipv6lib=none
3234ipv6trylibc=no
3235
3236if test "$ipv6" = "yes"; then
3237 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00003238 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
3239 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003240 case $i in
3241 inria)
3242 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003243 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003244#include <netinet/in.h>
3245#ifdef IPV6_INRIA_VERSION
3246yes
3247#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003248 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003249 ;;
3250 kame)
3251 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003252 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003253#include <netinet/in.h>
3254#ifdef __KAME__
3255yes
3256#endif],
3257 [ipv6type=$i;
3258 ipv6lib=inet6
3259 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003260 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003261 ;;
3262 linux-glibc)
3263 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003264 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003265#include <features.h>
3266#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
3267yes
3268#endif],
3269 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003270 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003271 ;;
3272 linux-inet6)
3273 dnl http://www.v6.linux.or.jp/
3274 if test -d /usr/inet6; then
3275 ipv6type=$i
3276 ipv6lib=inet6
3277 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00003278 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003279 fi
3280 ;;
3281 solaris)
3282 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00003283 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003284 ipv6type=$i
3285 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003286 fi
3287 fi
3288 ;;
3289 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003290 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003291#include <sys/param.h>
3292#ifdef _TOSHIBA_INET6
3293yes
3294#endif],
3295 [ipv6type=$i;
3296 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003297 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003298 ;;
3299 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003300 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003301#include </usr/local/v6/include/sys/v6config.h>
3302#ifdef __V6D__
3303yes
3304#endif],
3305 [ipv6type=$i;
3306 ipv6lib=v6;
3307 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00003308 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003309 ;;
3310 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003311 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003312#include <sys/param.h>
3313#ifdef _ZETA_MINAMI_INET6
3314yes
3315#endif],
3316 [ipv6type=$i;
3317 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003318 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003319 ;;
3320 esac
3321 if test "$ipv6type" != "unknown"; then
3322 break
3323 fi
3324 done
3325 AC_MSG_RESULT($ipv6type)
3326fi
3327
3328if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
3329 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
3330 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
3331 echo "using lib$ipv6lib"
3332 else
3333 if test $ipv6trylibc = "yes"; then
3334 echo "using libc"
3335 else
3336 echo 'Fatal: no $ipv6lib library found. cannot continue.'
3337 echo "You need to fetch lib$ipv6lib.a from appropriate"
3338 echo 'ipv6 kit and compile beforehand.'
3339 exit 1
3340 fi
3341 fi
3342fi
3343
Larry Hastingsa6cc5512015-04-13 17:48:40 -04003344AC_MSG_CHECKING(for CAN_RAW_FD_FRAMES)
3345AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */
3346#include <linux/can/raw.h>]],
3347[[int can_raw_fd_frames = CAN_RAW_FD_FRAMES;]])],[
3348 AC_DEFINE(HAVE_LINUX_CAN_RAW_FD_FRAMES, 1, [Define if compiling using Linux 3.6 or later.])
3349 AC_MSG_RESULT(yes)
3350],[
3351 AC_MSG_RESULT(no)
3352])
3353
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003354# Check for --with-doc-strings
3355AC_MSG_CHECKING(for --with-doc-strings)
3356AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003357 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003358
3359if test -z "$with_doc_strings"
3360then with_doc_strings="yes"
3361fi
3362if test "$with_doc_strings" != "no"
3363then
3364 AC_DEFINE(WITH_DOC_STRINGS, 1,
3365 [Define if you want documentation strings in extension modules])
3366fi
3367AC_MSG_RESULT($with_doc_strings)
3368
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00003369# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00003370AC_MSG_CHECKING(for --with-pymalloc)
3371AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003372 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00003373
3374if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003375then
3376 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003377fi
3378if test "$with_pymalloc" != "no"
3379then
Victor Stinner1b80b242016-04-12 22:34:58 +02003380 AC_DEFINE(WITH_PYMALLOC, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003381 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003382 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003383fi
3384AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00003385
Nick Coghlan6ea41862017-06-11 13:16:15 +10003386# Check for --with-c-locale-coercion
3387AC_MSG_CHECKING(for --with-c-locale-coercion)
3388AC_ARG_WITH(c-locale-coercion,
3389 AS_HELP_STRING([--with(out)-c-locale-coercion],
3390 [disable/enable C locale coercion to a UTF-8 based locale]))
3391
3392if test -z "$with_c_locale_coercion"
3393then
3394 with_c_locale_coercion="yes"
3395fi
3396if test "$with_c_locale_coercion" != "no"
3397then
3398 AC_DEFINE(PY_COERCE_C_LOCALE, 1,
3399 [Define if you want to coerce the C locale to a UTF-8 based locale])
3400fi
3401AC_MSG_RESULT($with_c_locale_coercion)
3402
Benjamin Peterson05159c42009-12-03 03:01:27 +00003403# Check for Valgrind support
3404AC_MSG_CHECKING([for --with-valgrind])
3405AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00003406 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00003407 with_valgrind=no)
3408AC_MSG_RESULT([$with_valgrind])
3409if test "$with_valgrind" != no; then
3410 AC_CHECK_HEADER([valgrind/valgrind.h],
3411 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
3412 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
3413 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00003414 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00003415fi
3416
Łukasz Langaa785c872016-09-09 17:37:37 -07003417# Check for DTrace support
3418AC_MSG_CHECKING(for --with-dtrace)
3419AC_ARG_WITH(dtrace,
Eitan Adler24f68462018-09-14 15:55:20 -07003420 AS_HELP_STRING([--with(out)-dtrace],[disable/enable DTrace support]),,
Łukasz Langaa785c872016-09-09 17:37:37 -07003421 with_dtrace=no)
3422AC_MSG_RESULT($with_dtrace)
3423
3424AC_SUBST(DTRACE)
3425AC_SUBST(DFLAGS)
3426AC_SUBST(DTRACE_HEADERS)
3427AC_SUBST(DTRACE_OBJS)
3428DTRACE=
3429DFLAGS=
3430DTRACE_HEADERS=
3431DTRACE_OBJS=
3432
3433if test "$with_dtrace" = "yes"
3434then
3435 AC_PATH_PROG(DTRACE, [dtrace], [not found])
3436 if test "$DTRACE" = "not found"; then
3437 AC_MSG_ERROR([dtrace command not found on \$PATH])
3438 fi
3439 AC_DEFINE(WITH_DTRACE, 1, [Define if you want to compile in DTrace support])
3440 DTRACE_HEADERS="Include/pydtrace_probes.h"
3441
3442 # On OS X, DTrace providers do not need to be explicitly compiled and
3443 # linked into the binary. Correspondingly, dtrace(1) is missing the ELF
3444 # generation flag '-G'. We check for presence of this flag, rather than
3445 # hardcoding support by OS, in the interest of robustness.
3446 AC_CACHE_CHECK([whether DTrace probes require linking],
3447 [ac_cv_dtrace_link], [dnl
3448 ac_cv_dtrace_link=no
Jakub Kulík5c8f5372019-01-24 18:29:48 +01003449 echo 'BEGIN{}' > conftest.d
Łukasz Langaa785c872016-09-09 17:37:37 -07003450 "$DTRACE" -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \
3451 ac_cv_dtrace_link=yes
3452 ])
3453 if test "$ac_cv_dtrace_link" = "yes"; then
3454 DTRACE_OBJS="Python/pydtrace.o"
3455 fi
3456fi
3457
Guido van Rossum68242b51996-05-28 22:53:03 +00003458# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003459AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00003460DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003461
Guido van Rossume97ee181999-12-20 21:27:22 +00003462# the dlopen() function means we might want to use dynload_shlib.o. some
3463# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00003464AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00003465
3466# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
3467# loading of modules.
3468AC_SUBST(DYNLOADFILE)
3469AC_MSG_CHECKING(DYNLOADFILE)
3470if test -z "$DYNLOADFILE"
3471then
3472 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00003473 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
3474 if test "$ac_cv_func_dlopen" = yes
3475 then DYNLOADFILE="dynload_shlib.o"
3476 else DYNLOADFILE="dynload_aix.o"
3477 fi
3478 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00003479 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00003480 *)
3481 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
3482 # out any dynamic loading
3483 if test "$ac_cv_func_dlopen" = yes
3484 then DYNLOADFILE="dynload_shlib.o"
3485 else DYNLOADFILE="dynload_stub.o"
3486 fi
3487 ;;
3488 esac
3489fi
3490AC_MSG_RESULT($DYNLOADFILE)
3491if test "$DYNLOADFILE" != "dynload_stub.o"
3492then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003493 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
3494 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00003495fi
3496
Jack Jansenc49e5b72001-06-19 15:00:23 +00003497# MACHDEP_OBJS can be set to platform-specific object files needed by Python
3498
3499AC_SUBST(MACHDEP_OBJS)
3500AC_MSG_CHECKING(MACHDEP_OBJS)
3501if test -z "$MACHDEP_OBJS"
3502then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00003503 MACHDEP_OBJS=$extra_machdep_objs
3504else
3505 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00003506fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003507if test -z "$MACHDEP_OBJS"; then
3508 AC_MSG_RESULT([none])
3509else
3510 AC_MSG_RESULT([$MACHDEP_OBJS])
3511fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00003512
Guido van Rossum627b2d71993-12-24 10:39:16 +00003513# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00003514AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Victor Stinnerdaf45552013-08-28 00:53:59 +02003515 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003516 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Victor Stinner4d6a3d62014-12-21 01:16:38 +01003517 futimens futimes gai_strerror getentropy \
William Grzybowski23e65b22018-09-07 09:06:15 -03003518 getgrgid_r getgrnam_r \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02003519 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
William Grzybowski23e65b22018-09-07 09:06:15 -03003520 getpriority getresuid getresgid getpwent getpwnam_r getpwuid_r getspnam getspent getsid getwd \
xdegaye5ad7ef82017-11-23 11:13:22 +01003521 if_nameindex \
Benjamin Petersoned709d52018-09-12 17:22:11 -07003522 initgroups kill killpg lchown lockf linkat lstat lutimes mmap \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01003523 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02003524 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003525 posix_fallocate posix_fadvise posix_spawn posix_spawnp pread preadv preadv2 \
Inada Naoki001fee12019-02-20 10:00:09 +09003526 pthread_condattr_setclock pthread_init pthread_kill putenv pwrite pwritev pwritev2 \
3527 readlink readlinkat readv realpath renameat \
Benjamin Petersona2344852017-09-04 10:21:42 -07003528 sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00003529 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00003530 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02003531 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
3532 sched_rr_get_interval \
Antoine Pitrou9d3627e2018-05-04 13:00:50 +02003533 sigaction sigaltstack sigfillset siginterrupt sigpending sigrelse \
Michael Osipov48ce4892018-08-23 15:27:19 +02003534 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy strsignal symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00003535 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003536 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
Victor Stinnercd777ea2013-04-08 22:43:44 +02003537 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003538
Benjamin Peterson40caa052018-09-12 15:52:40 -07003539# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
3540# links. Some libc implementations have a stub lchmod implementation that always
3541# returns an error.
3542if test "$MACHDEP" != linux; then
Benjamin Petersoned709d52018-09-12 17:22:11 -07003543 AC_CHECK_FUNCS(lchmod)
Benjamin Peterson40caa052018-09-12 15:52:40 -07003544fi
3545
Gregory P. Smithdf300d52012-01-21 18:20:15 -08003546AC_CHECK_DECL(dirfd,
3547 AC_DEFINE(HAVE_DIRFD, 1,
3548 Define if you have the 'dirfd' function or macro.), ,
3549 [#include <sys/types.h>
3550 #include <dirent.h>])
3551
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003552# For some functions, having a definition is not sufficient, since
3553# we want to take their address.
3554AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00003555AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
3556 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
3557 AC_MSG_RESULT(yes)],
3558 [AC_MSG_RESULT(no)
3559])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003560AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00003561AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
3562 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
3563 AC_MSG_RESULT(yes)],
3564 [AC_MSG_RESULT(no)
3565])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003566AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00003567AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
3568 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
3569 AC_MSG_RESULT(yes)],
3570 [AC_MSG_RESULT(no)
3571])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003572AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00003573AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
3574 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
3575 AC_MSG_RESULT(yes)],
3576 [AC_MSG_RESULT(no)
3577])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003578AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003579AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3580 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3581 AC_MSG_RESULT(yes)],
3582 [AC_MSG_RESULT(no)
3583])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003584AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003585AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3586 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3587 AC_MSG_RESULT(yes)],
3588 [AC_MSG_RESULT(no)
3589])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003590AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00003591AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3592 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3593 AC_MSG_RESULT(yes)],
3594 [AC_MSG_RESULT(no)
3595])
Benjamin Peterson95c16622011-12-27 15:36:32 -06003596AC_MSG_CHECKING(for epoll_create1)
3597AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
3598 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
3599 AC_MSG_RESULT(yes)],
3600 [AC_MSG_RESULT(no)
3601])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003602AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00003603AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003604#include <sys/types.h>
3605#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003606 ]], [[int x=kqueue()]])],
3607 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3608 AC_MSG_RESULT(yes)],
3609 [AC_MSG_RESULT(no)
3610])
Christian Heimesb7bd5df2013-10-22 11:21:54 +02003611AC_MSG_CHECKING(for prlimit)
3612AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3613#include <sys/time.h>
3614#include <sys/resource.h>
3615 ]], [[void *x=prlimit]])],
3616 [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
3617 AC_MSG_RESULT(yes)],
3618 [AC_MSG_RESULT(no)
3619])
3620
Martin v. Löwisd5843682002-11-21 20:41:28 +00003621# On some systems (eg. FreeBSD 5), we would find a definition of the
3622# functions ctermid_r, setgroups in the library, but no prototype
3623# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3624# address to avoid compiler warnings and potential miscompilations
3625# because of the missing prototypes.
3626
3627AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00003628AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003629#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003630]], [[void* p = ctermid_r]])],
3631 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3632 AC_MSG_RESULT(yes)],
3633 [AC_MSG_RESULT(no)
3634])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003635
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003636AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3637 [AC_COMPILE_IFELSE(
3638 [AC_LANG_PROGRAM(
3639 [#include <sys/file.h>],
3640 [void* p = flock]
3641 )],
3642 [ac_cv_flock_decl=yes],
3643 [ac_cv_flock_decl=no]
3644 )
Matthias Kloseb159a552010-04-25 21:00:44 +00003645])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003646if test "x${ac_cv_flock_decl}" = xyes; then
3647 AC_CHECK_FUNCS(flock,,
3648 AC_CHECK_LIB(bsd,flock,
3649 [AC_DEFINE(HAVE_FLOCK)
3650 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3651 ])
3652 )
Antoine Pitroua3000072010-09-07 14:52:42 +00003653fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003654
3655AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00003656AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003657#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003658]], [[void* p = getpagesize]])],
3659 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3660 AC_MSG_RESULT(yes)],
3661 [AC_MSG_RESULT(no)
3662])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003663
Victor Stinner984890f2011-11-24 13:53:38 +01003664AC_MSG_CHECKING(for broken unsetenv)
3665AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3666#include <stdlib.h>
3667]], [[int res = unsetenv("DUMMY")]])],
3668 [AC_MSG_RESULT(no)],
3669 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3670 AC_MSG_RESULT(yes)
3671])
3672
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003673dnl check for true
3674AC_CHECK_PROGS(TRUE, true, /bin/true)
3675
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003676dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3677dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003678AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003679 AC_CHECK_LIB(resolv, inet_aton)
3680)
3681
Christian Heimesd0764e22007-12-04 15:00:33 +00003682# On Tru64, chflags seems to be present, but calling it will
3683# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003684AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003685AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003686#include <sys/stat.h>
3687#include <unistd.h>
3688int main(int argc, char*argv[])
3689{
3690 if(chflags(argv[0], 0) != 0)
3691 return 1;
3692 return 0;
3693}
Ned Deily3eb67d52011-06-28 00:00:28 -07003694]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00003695[ac_cv_have_chflags=yes],
3696[ac_cv_have_chflags=no],
3697[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003698])
3699if test "$ac_cv_have_chflags" = cross ; then
3700 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3701fi
3702if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003703 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003704fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003705
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003706AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003707AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003708#include <sys/stat.h>
3709#include <unistd.h>
3710int main(int argc, char*argv[])
3711{
3712 if(lchflags(argv[0], 0) != 0)
3713 return 1;
3714 return 0;
3715}
Ned Deily3eb67d52011-06-28 00:00:28 -07003716]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003717])
3718if test "$ac_cv_have_lchflags" = cross ; then
3719 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3720fi
3721if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003722 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003723fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003724
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003725dnl Check if system zlib has *Copy() functions
3726dnl
3727dnl On MacOSX the linker will search for dylibs on the entire linker path
3728dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3729dnl to revert to a more traditional unix behaviour and make it possible to
3730dnl override the system libz with a local static library of libz. Temporarily
3731dnl add that flag to our CFLAGS as well to ensure that we check the version
Victor Stinner1b80b242016-04-12 22:34:58 +02003732dnl of libz that will be used by setup.py.
3733dnl The -L/usr/local/lib is needed as wel to get the same compilation
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003734dnl environment as setup.py (and leaving it out can cause configure to use the
3735dnl wrong version of the library)
3736case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003737Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003738 _CUR_CFLAGS="${CFLAGS}"
3739 _CUR_LDFLAGS="${LDFLAGS}"
3740 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3741 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3742 ;;
3743esac
3744
Matthias Klosec80c93f2010-04-24 17:04:35 +00003745AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003746
3747case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003748Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003749 CFLAGS="${_CUR_CFLAGS}"
3750 LDFLAGS="${_CUR_LDFLAGS}"
3751 ;;
3752esac
3753
Martin v. Löwise9416172003-05-03 10:12:45 +00003754AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00003755AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003756#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003757]], [[void* p = hstrerror; hstrerror(0)]])],
3758 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3759 AC_MSG_RESULT(yes)],
3760 [AC_MSG_RESULT(no)
3761])
Martin v. Löwise9416172003-05-03 10:12:45 +00003762
3763AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003764AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003765#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003766#include <sys/socket.h>
3767#include <netinet/in.h>
3768#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003769]], [[void* p = inet_aton;inet_aton(0,0)]])],
3770 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3771 AC_MSG_RESULT(yes)],
3772 [AC_MSG_RESULT(no)
3773])
Martin v. Löwise9416172003-05-03 10:12:45 +00003774
3775AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003776AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003777#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003778#include <sys/socket.h>
3779#include <netinet/in.h>
3780#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003781]], [[void* p = inet_pton]])],
3782 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3783 AC_MSG_RESULT(yes)],
3784 [AC_MSG_RESULT(no)
3785])
Martin v. Löwise9416172003-05-03 10:12:45 +00003786
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003787# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003788AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00003789AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003790#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003791#ifdef HAVE_GRP_H
3792#include <grp.h>
3793#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003794]], [[void* p = setgroups]])],
3795 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3796 AC_MSG_RESULT(yes)],
3797 [AC_MSG_RESULT(no)
3798])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003799
Fred Drake8cef4cf2000-06-28 16:40:38 +00003800# check for openpty and forkpty
3801
Victor Stinner1b80b242016-04-12 22:34:58 +02003802AC_CHECK_FUNCS(openpty,,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003803 AC_CHECK_LIB(util,openpty,
3804 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3805 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3806 )
3807)
Victor Stinner1b80b242016-04-12 22:34:58 +02003808AC_CHECK_FUNCS(forkpty,,
3809 AC_CHECK_LIB(util,forkpty,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003810 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3811 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3812 )
3813)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003814
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003815# check for long file support functions
3816AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3817
Benjamin Peterson3a7dffa2013-08-23 21:01:48 -05003818AC_REPLACE_FUNCS(dup2 strdup)
Victor Stinner1b80b242016-04-12 22:34:58 +02003819AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003820 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3821 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3822 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003823)
Jack Jansen150753c2003-03-29 22:07:47 +00003824AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003825 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3826 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3827 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003828)
Victor Stinner1b80b242016-04-12 22:34:58 +02003829AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003830 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3831 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3832 [],
3833 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3834 [Define if gettimeofday() does not have second (timezone) argument
3835 This is the case on Motorola V4 (R40V4.2)])
3836 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003837)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003838
Gregory P. Smith387512c2018-12-30 15:42:32 -08003839# We search for both crypt and crypt_r as one or the other may be defined
3840# This gets us our -lcrypt in LIBS when required on the target platform.
3841AC_SEARCH_LIBS(crypt, crypt)
3842AC_SEARCH_LIBS(crypt_r, crypt)
3843
3844AC_CHECK_FUNC(crypt_r,
3845 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3846#define _GNU_SOURCE /* Required for crypt_r()'s prototype in glibc. */
3847#include <crypt.h>
3848]], [[
3849struct crypt_data d;
3850char *r = crypt_r("", "", &d);
3851]])],
3852 [AC_DEFINE(HAVE_CRYPT_R, 1, [Define if you have the crypt_r() function.])],
3853 [])
3854)
3855
Victor Stinnere0be4232011-10-25 13:06:09 +02003856AC_CHECK_FUNCS(clock_gettime, [], [
3857 AC_CHECK_LIB(rt, clock_gettime, [
Victor Stinner7efb8332014-08-29 15:41:08 +02003858 LIBS="$LIBS -lrt"
Victor Stinnere0be4232011-10-25 13:06:09 +02003859 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3860 AC_DEFINE(TIMEMODULE_LIB, [rt],
3861 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3862 ])
3863])
3864
3865AC_CHECK_FUNCS(clock_getres, [], [
3866 AC_CHECK_LIB(rt, clock_getres, [
3867 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3868 ])
3869])
3870
Benjamin Peterson37098cd2016-09-13 22:55:09 -07003871AC_CHECK_FUNCS(clock_settime, [], [
3872 AC_CHECK_LIB(rt, clock_settime, [
3873 AC_DEFINE(HAVE_CLOCK_SETTIME, 1)
3874 ])
3875])
3876
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003877AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003878AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003879#if defined(MAJOR_IN_MKDEV)
3880#include <sys/mkdev.h>
3881#elif defined(MAJOR_IN_SYSMACROS)
3882#include <sys/sysmacros.h>
3883#else
3884#include <sys/types.h>
3885#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003886]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003887 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003888]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003889 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3890 [Define to 1 if you have the device macros.])
3891 AC_MSG_RESULT(yes)
3892],[
3893 AC_MSG_RESULT(no)
3894])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003895
3896# On OSF/1 V5.1, getaddrinfo is available, but a define
Victor Stinner1b80b242016-04-12 22:34:58 +02003897# for [no]getaddrinfo in netdb.h.
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003898AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003899AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003900#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003901#include <sys/socket.h>
3902#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003903#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003904]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3905[have_getaddrinfo=yes],
3906[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003907AC_MSG_RESULT($have_getaddrinfo)
3908if test $have_getaddrinfo = yes
3909then
3910 AC_MSG_CHECKING(getaddrinfo bug)
3911 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003912 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah19c21392012-11-22 23:47:32 +01003913#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003914#include <sys/types.h>
3915#include <netdb.h>
3916#include <string.h>
3917#include <sys/socket.h>
3918#include <netinet/in.h>
3919
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003920int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003921{
3922 int passive, gaierr, inet4 = 0, inet6 = 0;
3923 struct addrinfo hints, *ai, *aitop;
3924 char straddr[INET6_ADDRSTRLEN], strport[16];
3925
3926 for (passive = 0; passive <= 1; passive++) {
3927 memset(&hints, 0, sizeof(hints));
3928 hints.ai_family = AF_UNSPEC;
3929 hints.ai_flags = passive ? AI_PASSIVE : 0;
3930 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003931 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003932 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3933 (void)gai_strerror(gaierr);
3934 goto bad;
3935 }
3936 for (ai = aitop; ai; ai = ai->ai_next) {
3937 if (ai->ai_addr == NULL ||
3938 ai->ai_addrlen == 0 ||
3939 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3940 straddr, sizeof(straddr), strport, sizeof(strport),
3941 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3942 goto bad;
3943 }
3944 switch (ai->ai_family) {
3945 case AF_INET:
3946 if (strcmp(strport, "54321") != 0) {
3947 goto bad;
3948 }
3949 if (passive) {
3950 if (strcmp(straddr, "0.0.0.0") != 0) {
3951 goto bad;
3952 }
3953 } else {
3954 if (strcmp(straddr, "127.0.0.1") != 0) {
3955 goto bad;
3956 }
3957 }
3958 inet4++;
3959 break;
3960 case AF_INET6:
3961 if (strcmp(strport, "54321") != 0) {
3962 goto bad;
3963 }
3964 if (passive) {
3965 if (strcmp(straddr, "::") != 0) {
3966 goto bad;
3967 }
3968 } else {
3969 if (strcmp(straddr, "::1") != 0) {
3970 goto bad;
3971 }
3972 }
3973 inet6++;
3974 break;
3975 case AF_UNSPEC:
3976 goto bad;
3977 break;
3978 default:
3979 /* another family support? */
3980 break;
3981 }
3982 }
Benjamin Peterson01c340d2016-09-06 15:54:24 -07003983 freeaddrinfo(aitop);
3984 aitop = NULL;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003985 }
3986
3987 if (!(inet4 == 0 || inet4 == 2))
3988 goto bad;
3989 if (!(inet6 == 0 || inet6 == 2))
3990 goto bad;
3991
3992 if (aitop)
3993 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003994 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003995
3996 bad:
3997 if (aitop)
3998 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003999 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004000}
Matthias Kloseb159a552010-04-25 21:00:44 +00004001]]])],
4002[ac_cv_buggy_getaddrinfo=no],
4003[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01004004[
4005if test "${enable_ipv6+set}" = set; then
4006 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
4007else
4008 ac_cv_buggy_getaddrinfo=yes
4009fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004010fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004011
Benjamin Petersond4694ed2010-11-01 01:44:30 +00004012AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
4013
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02004014if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004015then
4016 if test $ipv6 = yes
4017 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004018 echo 'Fatal: You must get working getaddrinfo() function.'
4019 echo ' or you can specify "--disable-ipv6"'.
4020 exit 1
4021 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00004022else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004023 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004024fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00004025
Thomas Woutersb0db85a2001-08-08 10:39:03 +00004026AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004027
Guido van Rossum627b2d71993-12-24 10:39:16 +00004028# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004029AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00004030AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004031AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00004032AC_CHECK_MEMBERS([struct stat.st_rdev])
4033AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00004034AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004035AC_CHECK_MEMBERS([struct stat.st_gen])
4036AC_CHECK_MEMBERS([struct stat.st_birthtime])
Martin Panterd887d1f2016-03-18 02:36:41 +00004037AC_CHECK_MEMBERS([struct stat.st_blocks])
Stefan Krah267b6392016-04-26 01:09:18 +02004038AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[
4039 #include <sys/types.h>
4040 #include <pwd.h>
4041]])
Zachary Waree999e962016-10-01 01:06:51 -05004042# Issue #21085: In Cygwin, siginfo_t does not have si_band field.
4043AC_CHECK_MEMBERS([siginfo_t.si_band], [], [], [[#include <signal.h>]])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004044
4045AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00004046AC_CACHE_VAL(ac_cv_header_time_altzone,[
4047 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
4048 [ac_cv_header_time_altzone=yes],
4049 [ac_cv_header_time_altzone=no])
4050 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004051AC_MSG_RESULT($ac_cv_header_time_altzone)
4052if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004053 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004054fi
4055
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004056was_it_defined=no
4057AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00004058AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004059#include <sys/types.h>
4060#include <sys/select.h>
4061#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004062]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004063 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
4064 [Define if you can safely include both <sys/select.h> and <sys/time.h>
Victor Stinner1b80b242016-04-12 22:34:58 +02004065 (which you can't on SCO ODT 3.0).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004066 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004067],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004068AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00004069
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004070AC_MSG_CHECKING(for addrinfo)
4071AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00004072AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
4073 [ac_cv_struct_addrinfo=yes],
4074 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004075AC_MSG_RESULT($ac_cv_struct_addrinfo)
4076if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004077 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004078fi
4079
4080AC_MSG_CHECKING(for sockaddr_storage)
4081AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00004082AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004083# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004084# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
4085 [ac_cv_struct_sockaddr_storage=yes],
4086 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004087AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
4088if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004089 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004090fi
4091
Christian Heimesdffa3942016-09-05 23:54:41 +02004092AC_MSG_CHECKING(for sockaddr_alg)
4093AC_CACHE_VAL(ac_cv_struct_sockaddr_alg,
4094AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4095# include <sys/types.h>
4096# include <sys/socket.h>
4097# include <linux/if_alg.h>]], [[struct sockaddr_alg s]])],
4098 [ac_cv_struct_sockaddr_alg=yes],
4099 [ac_cv_struct_sockaddr_alg=no]))
4100AC_MSG_RESULT($ac_cv_struct_sockaddr_alg)
4101if test $ac_cv_struct_sockaddr_alg = yes; then
4102 AC_DEFINE(HAVE_SOCKADDR_ALG, 1, [struct sockaddr_alg (linux/if_alg.h)])
4103fi
4104
Guido van Rossum627b2d71993-12-24 10:39:16 +00004105# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004106
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004107AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004108AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004109
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004110works=no
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004111AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00004112AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
4113 [works=yes],
4114 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004115)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004116AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004117
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004118have_prototypes=no
4119AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00004120AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
Victor Stinner1b80b242016-04-12 22:34:58 +02004121 [AC_DEFINE(HAVE_PROTOTYPES, 1,
4122 [Define if your compiler supports function prototype])
Matthias Kloseb159a552010-04-25 21:00:44 +00004123 have_prototypes=yes],
4124 []
4125)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004126AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004127
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004128works=no
4129AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00004130AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004131#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00004132int foo(int x, ...) {
4133 va_list va;
4134 va_start(va, x);
4135 va_arg(va, int);
4136 va_arg(va, char *);
4137 va_arg(va, double);
4138 return 0;
4139}
Matthias Kloseb159a552010-04-25 21:00:44 +00004140]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004141 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
4142 [Define if your compiler supports variable length function prototypes
Victor Stinner1b80b242016-04-12 22:34:58 +02004143 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004144 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004145],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00004146AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004147
Dave Cole331708b2004-08-09 04:51:41 +00004148# check for socketpair
4149AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00004150AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00004151#include <sys/types.h>
4152#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004153]], [[void *x=socketpair]])],
4154 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
4155 AC_MSG_RESULT(yes)],
4156 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00004157)
4158
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004159# check if sockaddr has sa_len member
4160AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00004161AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
4162#include <sys/socket.h>]], [[struct sockaddr x;
4163x.sa_len = 0;]])],
4164 [AC_MSG_RESULT(yes)
4165 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
4166 [AC_MSG_RESULT(no)]
4167)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00004168
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004169# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00004170AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
4171 [Define this if you have some version of gethostbyname_r()])
4172
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004173AC_CHECK_FUNC(gethostbyname_r, [
4174 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
4175 AC_MSG_CHECKING([gethostbyname_r with 6 args])
4176 OLD_CFLAGS=$CFLAGS
4177 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00004178 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004179# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004180 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004181 char *name;
4182 struct hostent *he, *res;
4183 char buffer[2048];
4184 int buflen = 2048;
4185 int h_errnop;
4186
4187 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00004188 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004189 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004190 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
4191 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004192 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00004193 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004194 AC_MSG_RESULT(no)
4195 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00004196 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004197# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00004198 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004199 char *name;
4200 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00004201 char buffer[2048];
4202 int buflen = 2048;
4203 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004204
Matthias Kloseb159a552010-04-25 21:00:44 +00004205 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
4206 ]])],
4207 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004208 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00004209 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
4210 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004211 AC_MSG_RESULT(yes)
4212 ], [
4213 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00004214 AC_MSG_CHECKING([gethostbyname_r with 3 args])
4215 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4216# include <netdb.h>
4217 ]], [[
4218 char *name;
4219 struct hostent *he;
4220 struct hostent_data data;
4221
4222 (void) gethostbyname_r(name, he, &data);
4223 ]])],
4224 [
4225 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
4226 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
4227 [Define this if you have the 3-arg version of gethostbyname_r().])
4228 AC_MSG_RESULT(yes)
4229 ], [
4230 AC_MSG_RESULT(no)
4231 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004232 ])
4233 ])
4234 CFLAGS=$OLD_CFLAGS
4235], [
Thomas Wouters3a584202000-08-05 23:28:51 +00004236 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004237])
4238AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
4239AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
4240AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00004241AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00004242AC_SUBST(HAVE_GETHOSTBYNAME)
4243
Guido van Rossum627b2d71993-12-24 10:39:16 +00004244# checks for system services
4245# (none yet)
4246
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004247# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00004248AC_CHECK_FUNC(__fpu_control,
4249 [],
4250 [AC_CHECK_LIB(ieee, __fpu_control)
4251])
Guido van Rossum627b2d71993-12-24 10:39:16 +00004252
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004253# check for --with-libm=...
4254AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004255case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00004256Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004257*) LIBM=-lm
4258esac
Guido van Rossum93274221997-05-09 02:42:00 +00004259AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004260AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004261 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004262[
Guido van Rossum93274221997-05-09 02:42:00 +00004263if test "$withval" = no
4264then LIBM=
4265 AC_MSG_RESULT(force LIBM empty)
4266elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004267then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004268 AC_MSG_RESULT(set LIBM="$withval")
4269else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004270fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004271[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004272
4273# check for --with-libc=...
4274AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00004275AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004276AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004277 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004278[
Guido van Rossum93274221997-05-09 02:42:00 +00004279if test "$withval" = no
4280then LIBC=
4281 AC_MSG_RESULT(force LIBC empty)
4282elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004283then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004284 AC_MSG_RESULT(set LIBC="$withval")
4285else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004286fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004287[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004288
Stefan Krah1919b7e2012-03-21 18:25:23 +01004289# **************************************
4290# * Check for gcc x64 inline assembler *
4291# **************************************
4292
4293AC_MSG_CHECKING(for x64 gcc inline assembler)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004294AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Stefan Krah1919b7e2012-03-21 18:25:23 +01004295 __asm__ __volatile__ ("movq %rcx, %rax");
4296]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
4297AC_MSG_RESULT($have_gcc_asm_for_x64)
4298if test "$have_gcc_asm_for_x64" = yes
4299then
4300 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
4301 [Define if we can use x64 gcc inline assembler])
4302fi
4303
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004304# **************************************************
4305# * Check for various properties of floating point *
4306# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004307
Ross Burton2a9c3802018-09-19 07:25:48 +01004308AX_C_FLOAT_WORDS_BIGENDIAN
4309if test "$ax_cv_c_float_words_bigendian" = "yes"
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004310then
4311 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
4312 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4313 with the most significant byte first])
Ross Burton2a9c3802018-09-19 07:25:48 +01004314elif test "$ax_cv_c_float_words_bigendian" = "no"
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004315then
Ross Burton2a9c3802018-09-19 07:25:48 +01004316 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
4317 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4318 with the least significant byte first])
4319else
4320 # Some ARM platforms use a mixed-endian representation for doubles.
4321 # While Python doesn't currently have full support for these platforms
4322 # (see e.g., issue 1762561), we can at least make sure that float <-> string
4323 # conversions work.
4324 # FLOAT_WORDS_BIGENDIAN doesnt actually detect this case, but if it's not big
4325 # or little, then it must be this?
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004326 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
4327 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4328 in ARM mixed-endian order (byte order 45670123)])
4329fi
4330
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004331# The short float repr introduced in Python 3.1 requires the
4332# correctly-rounded string <-> double conversion functions from
4333# Python/dtoa.c, which in turn require that the FPU uses 53-bit
4334# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004335# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004336# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004337
4338# This inline assembler syntax may also work for suncc and icc,
4339# so we try it on all platforms.
4340
4341AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004342AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004343 unsigned short cw;
4344 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
4345 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00004346]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004347AC_MSG_RESULT($have_gcc_asm_for_x87)
4348if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004349then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004350 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
4351 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004352fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004353
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004354AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set mc68881 fpcr)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004355AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004356 unsigned int fpcr;
4357 __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr));
4358 __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr));
4359]])],[have_gcc_asm_for_mc68881=yes],[have_gcc_asm_for_mc68881=no])
4360AC_MSG_RESULT($have_gcc_asm_for_mc68881)
4361if test "$have_gcc_asm_for_mc68881" = yes
4362then
4363 AC_DEFINE(HAVE_GCC_ASM_FOR_MC68881, 1,
4364 [Define if we can use gcc inline assembler to get and set mc68881 fpcr])
4365fi
4366
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004367# Detect whether system arithmetic is subject to x87-style double
4368# rounding issues. The result of this test has little meaning on non
4369# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
4370# mode is round-to-nearest and double rounding issues are present, and
4371# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
4372AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004373# $BASECFLAGS may affect the result
4374ac_save_cc="$CC"
4375CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00004376AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004377#include <stdlib.h>
4378#include <math.h>
4379int main() {
4380 volatile double x, y, z;
4381 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
4382 x = 0.99999999999999989; /* 1-2**-53 */
4383 y = 1./x;
4384 if (y != 1.)
4385 exit(0);
4386 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
4387 x = 1e16;
4388 y = 2.99999;
4389 z = x + y;
4390 if (z != 1e16+4.)
4391 exit(0);
4392 /* both tests show evidence of double rounding */
4393 exit(1);
4394}
Matthias Kloseb159a552010-04-25 21:00:44 +00004395]])],
4396[ac_cv_x87_double_rounding=no],
4397[ac_cv_x87_double_rounding=yes],
4398[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004399CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004400AC_MSG_RESULT($ac_cv_x87_double_rounding)
4401if test "$ac_cv_x87_double_rounding" = yes
4402then
4403 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
4404 [Define if arithmetic is subject to x87-style double rounding issue])
4405fi
4406
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004407# ************************************
4408# * Check for mathematical functions *
4409# ************************************
4410
4411LIBS_SAVE=$LIBS
4412LIBS="$LIBS $LIBM"
4413
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004414AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02004415AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004416AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
4417
Mark Dickinsona614f042009-11-28 12:48:43 +00004418# For multiprocessing module, check that sem_open
4419# actually works. For FreeBSD versions <= 7.2,
4420# the kernel module that provides POSIX semaphores
4421# isn't loaded by default, so an attempt to call
4422# sem_open results in a 'Signal 12' error.
4423AC_MSG_CHECKING(whether POSIX semaphores are enabled)
4424AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00004425AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00004426#include <unistd.h>
4427#include <fcntl.h>
4428#include <stdio.h>
4429#include <semaphore.h>
4430#include <sys/stat.h>
4431
4432int main(void) {
4433 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
4434 if (a == SEM_FAILED) {
4435 perror("sem_open");
4436 return 1;
4437 }
4438 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004439 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00004440 return 0;
4441}
Matthias Kloseb159a552010-04-25 21:00:44 +00004442]])],
4443[ac_cv_posix_semaphores_enabled=yes],
4444[ac_cv_posix_semaphores_enabled=no],
4445[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00004446)
4447AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
4448if test $ac_cv_posix_semaphores_enabled = no
4449then
4450 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
4451 [Define if POSIX semaphores aren't enabled on your system])
4452fi
4453
Mark Dickinson10683072009-04-18 21:18:19 +00004454# Multiprocessing check for broken sem_getvalue
4455AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004456AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00004457AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00004458#include <unistd.h>
4459#include <fcntl.h>
4460#include <stdio.h>
4461#include <semaphore.h>
4462#include <sys/stat.h>
4463
4464int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00004465 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00004466 int count;
4467 int res;
4468 if(a==SEM_FAILED){
4469 perror("sem_open");
4470 return 1;
4471
4472 }
4473 res = sem_getvalue(a, &count);
4474 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004475 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00004476 return res==-1 ? 1 : 0;
4477}
Matthias Kloseb159a552010-04-25 21:00:44 +00004478]])],
4479[ac_cv_broken_sem_getvalue=no],
4480[ac_cv_broken_sem_getvalue=yes],
4481[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00004482)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004483AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
4484if test $ac_cv_broken_sem_getvalue = yes
4485then
4486 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
4487 [define to 1 if your sem_getvalue is broken.])
4488fi
Mark Dickinson10683072009-04-18 21:18:19 +00004489
Michael Feltc5ae1692017-12-19 13:58:49 +01004490AC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, RTLD_MEMBER], [], [], [[#include <dlfcn.h>]])
Serhiy Storchakac2f7d872016-05-04 09:44:44 +03004491
Mark Dickinsonbd792642009-03-18 20:06:12 +00004492# determine what size digit to use for Python's longs
4493AC_MSG_CHECKING([digit size for Python's longs])
4494AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004495AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00004496[case $enable_big_digits in
4497yes)
4498 enable_big_digits=30 ;;
4499no)
4500 enable_big_digits=15 ;;
4501[15|30])
4502 ;;
4503*)
4504 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4505esac
4506AC_MSG_RESULT($enable_big_digits)
4507AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4508],
4509[AC_MSG_RESULT(no value specified)])
4510
Guido van Rossumef2255b2000-03-10 22:30:29 +00004511# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004512AC_CHECK_HEADER(wchar.h, [
Victor Stinner1b80b242016-04-12 22:34:58 +02004513 AC_DEFINE(HAVE_WCHAR_H, 1,
4514 [Define if the compiler provides a wchar.h header file.])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004515 wchar_h="yes"
4516],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004517wchar_h="no"
4518)
4519
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004520# determine wchar_t size
4521if test "$wchar_h" = yes
4522then
Guido van Rossum67b26592001-10-20 14:21:45 +00004523 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004524fi
4525
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004526AC_MSG_CHECKING(for UCS-4 tcl)
4527have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00004528AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004529#include <tcl.h>
4530#if TCL_UTF_MAX != 6
4531# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00004532#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004533 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4534 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004535],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004536AC_MSG_RESULT($have_ucs4_tcl)
4537
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004538# check whether wchar_t is signed or not
4539if test "$wchar_h" = yes
4540then
4541 # check whether wchar_t is signed or not
4542 AC_MSG_CHECKING(whether wchar_t is signed)
4543 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004544 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004545 #include <wchar.h>
4546 int main()
4547 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004548 /* Success: exit code 0 */
4549 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004550 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004551 ]])],
4552 [ac_cv_wchar_t_signed=yes],
4553 [ac_cv_wchar_t_signed=no],
4554 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004555 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4556fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004557
Michael Osipov3738fad2018-08-24 18:17:19 +02004558AC_MSG_CHECKING(whether wchar_t is usable)
Georg Brandl52d168a2008-01-07 18:10:24 +00004559# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004560if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004561 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00004562then
Georg Brandl52d168a2008-01-07 18:10:24 +00004563 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4564 [Define if you have a useable wchar_t type defined in wchar.h; useable
4565 means wchar_t must be an unsigned type with at least 16 bits. (see
4566 Include/unicodeobject.h).])
Michael Osipov3738fad2018-08-24 18:17:19 +02004567 AC_MSG_RESULT(yes)
Georg Brandl52d168a2008-01-07 18:10:24 +00004568else
Michael Osipov3738fad2018-08-24 18:17:19 +02004569 AC_MSG_RESULT(no)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004570fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00004571
4572# check for endianness
4573AC_C_BIGENDIAN
4574
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004575# ABI version string for Python extension modules. This appears between the
4576# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
4577# from the following attributes which affect the ABI of this Python build (in
4578# this order):
4579#
4580# * The Python implementation (always 'cpython-' for us)
4581# * The major and minor version numbers
4582# * --with-pydebug (adds a 'd')
4583# * --with-pymalloc (adds a 'm')
4584# * --with-wide-unicode (adds a 'u')
4585#
4586# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00004587# would get a shared library ABI version tag of 'cpython-32dmu' and shared
4588# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004589AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004590AC_MSG_CHECKING(ABIFLAGS)
4591AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004592AC_MSG_CHECKING(SOABI)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +02004593SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004594AC_MSG_RESULT($SOABI)
4595
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004596AC_SUBST(EXT_SUFFIX)
4597case $ac_sys_system in
pxinwr32f5fdd2019-02-27 19:09:28 +08004598 Linux*|GNU*|Darwin|VxWorks)
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004599 EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
4600 *)
4601 EXT_SUFFIX=${SHLIB_SUFFIX};;
4602esac
4603
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004604AC_MSG_CHECKING(LDVERSION)
4605LDVERSION='$(VERSION)$(ABIFLAGS)'
4606AC_MSG_RESULT($LDVERSION)
4607
doko@python.org87421192013-01-26 11:39:31 +01004608dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
4609AC_SUBST(PY_ENABLE_SHARED)
doko@ubuntu.com55532312016-06-14 08:55:19 +02004610if test x$PLATFORM_TRIPLET = x; then
4611 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
4612else
4613 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
4614fi
doko@python.org87421192013-01-26 11:39:31 +01004615AC_SUBST(LIBPL)
4616
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004617# Check whether right shifting a negative integer extends the sign bit
4618# or fills with zeros (like the Cray J90, according to Tim Peters).
4619AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004620AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004621AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004622int main()
4623{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004624 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004625}
Matthias Kloseb159a552010-04-25 21:00:44 +00004626]])],
4627[ac_cv_rshift_extends_sign=yes],
4628[ac_cv_rshift_extends_sign=no],
4629[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004630AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4631if test "$ac_cv_rshift_extends_sign" = no
4632then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004633 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4634 [Define if i>>j for signed int i does not extend the sign bit
4635 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004636fi
4637
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004638# check for getc_unlocked and related locking functions
4639AC_MSG_CHECKING(for getc_unlocked() and friends)
4640AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004641AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004642 FILE *f = fopen("/dev/null", "r");
4643 flockfile(f);
4644 getc_unlocked(f);
4645 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00004646]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004647AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4648if test "$ac_cv_have_getc_unlocked" = yes
4649then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004650 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4651 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004652fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004653
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004654# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004655# save the value of LIBS so we don't actually link Python with readline
4656LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00004657
4658# On some systems we need to link readline to a termcap compatible
4659# library. NOTE: Keep the precedence of listed libraries synchronised
4660# with setup.py.
4661py_cv_lib_readline=no
4662AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02004663for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00004664 if test -z "$py_libtermcap"; then
4665 READLINE_LIBS="-lreadline"
4666 else
4667 READLINE_LIBS="-lreadline -l$py_libtermcap"
4668 fi
4669 LIBS="$READLINE_LIBS $LIBS_no_readline"
4670 AC_LINK_IFELSE(
4671 [AC_LANG_CALL([],[readline])],
4672 [py_cv_lib_readline=yes])
4673 if test $py_cv_lib_readline = yes; then
4674 break
4675 fi
4676done
4677# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4678#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00004679if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00004680 AC_MSG_RESULT([none])
4681else
4682 AC_MSG_RESULT([$READLINE_LIBS])
4683 AC_DEFINE(HAVE_LIBREADLINE, 1,
4684 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004685fi
4686
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004687# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004688AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4689 [have_readline=yes],
4690 [have_readline=no]
4691)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004692if test $have_readline = yes
4693then
4694 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4695 [readline/readline.h],
4696 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4697 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004698 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4699 [readline/readline.h],
4700 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4701 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004702fi
4703
Martin v. Löwis0daad592001-09-30 21:09:59 +00004704# check for readline 4.0
4705AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004706 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004707 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004708
Thomas Wouters89d996e2007-09-08 17:39:28 +00004709# also in 4.0
4710AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4711 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004712 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004713
Martin Panter5dbbf1a2016-04-03 02:54:58 +00004714# also in 4.0, but not in editline
4715AC_CHECK_LIB(readline, rl_resize_terminal,
4716 AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1,
4717 [Define if you have readline 4.0]), ,$READLINE_LIBS)
4718
Guido van Rossum353ae582001-07-10 16:45:32 +00004719# check for readline 4.2
4720AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004721 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004722 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004723
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004724# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004725AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4726 [have_readline=yes],
4727 [have_readline=no]
4728)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004729if test $have_readline = yes
4730then
4731 AC_EGREP_HEADER([extern int rl_catch_signals;],
4732 [readline/readline.h],
4733 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4734 [Define if you can turn off readline's signal handling.]), )
4735fi
4736
Benjamin Petersond1e22ba2014-11-26 14:35:12 -06004737AC_CHECK_LIB(readline, append_history,
4738 AC_DEFINE(HAVE_RL_APPEND_HISTORY, 1,
4739 [Define if readline supports append_history]), ,$READLINE_LIBS)
4740
Martin v. Löwis82bca632006-02-10 20:49:30 +00004741# End of readline checks: restore LIBS
4742LIBS=$LIBS_no_readline
4743
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004744AC_MSG_CHECKING(for broken nice())
4745AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004746AC_RUN_IFELSE([AC_LANG_SOURCE([[
ngie-eign90c6fac2019-02-25 21:34:24 -08004747#include <stdlib.h>
4748#include <unistd.h>
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004749int main()
4750{
4751 int val1 = nice(1);
4752 if (val1 != -1 && val1 == nice(2))
4753 exit(0);
4754 exit(1);
4755}
Matthias Kloseb159a552010-04-25 21:00:44 +00004756]])],
4757[ac_cv_broken_nice=yes],
4758[ac_cv_broken_nice=no],
4759[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004760AC_MSG_RESULT($ac_cv_broken_nice)
4761if test "$ac_cv_broken_nice" = yes
4762then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004763 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4764 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004765fi
4766
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004767AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004768AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004769AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004770#include <poll.h>
4771
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004772int main()
4773{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004774 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004775 int poll_test;
4776
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004777 close (42);
4778
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004779 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004780 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004781 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004782 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004783 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004784 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004785 return 1;
4786}
Matthias Kloseb159a552010-04-25 21:00:44 +00004787]])],
4788[ac_cv_broken_poll=yes],
4789[ac_cv_broken_poll=no],
4790[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004791AC_MSG_RESULT($ac_cv_broken_poll)
4792if test "$ac_cv_broken_poll" = yes
4793then
4794 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4795 [Define if poll() sets errno on invalid file descriptors.])
4796fi
4797
Brett Cannon43802422005-02-10 20:48:03 +00004798# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004799AC_MSG_CHECKING(for working tzset())
4800AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004801AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004802#include <stdlib.h>
4803#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004804#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004805
4806#if HAVE_TZNAME
4807extern char *tzname[];
4808#endif
4809
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004810int main()
4811{
Brett Cannon18367812003-09-19 00:59:16 +00004812 /* Note that we need to ensure that not only does tzset(3)
4813 do 'something' with localtime, but it works as documented
4814 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004815 This includes making sure that tzname is set properly if
4816 tm->tm_zone does not exist since it is the alternative way
4817 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004818
Victor Stinner1b80b242016-04-12 22:34:58 +02004819 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004820 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004821 */
4822
Brett Cannon43802422005-02-10 20:48:03 +00004823 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004824 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4825
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004826 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004827 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004828 if (localtime(&groundhogday)->tm_hour != 0)
4829 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004830#if HAVE_TZNAME
4831 /* For UTC, tzname[1] is sometimes "", sometimes " " */
Victor Stinner1b80b242016-04-12 22:34:58 +02004832 if (strcmp(tzname[0], "UTC") ||
Brett Cannon43802422005-02-10 20:48:03 +00004833 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4834 exit(1);
4835#endif
Brett Cannon18367812003-09-19 00:59:16 +00004836
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004837 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004838 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004839 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004840 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004841#if HAVE_TZNAME
4842 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4843 exit(1);
4844#endif
Brett Cannon18367812003-09-19 00:59:16 +00004845
4846 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4847 tzset();
4848 if (localtime(&groundhogday)->tm_hour != 11)
4849 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004850#if HAVE_TZNAME
4851 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4852 exit(1);
4853#endif
4854
4855#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004856 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4857 exit(1);
4858 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4859 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004860#endif
Brett Cannon18367812003-09-19 00:59:16 +00004861
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004862 exit(0);
4863}
Matthias Kloseb159a552010-04-25 21:00:44 +00004864]])],
4865[ac_cv_working_tzset=yes],
4866[ac_cv_working_tzset=no],
4867[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004868AC_MSG_RESULT($ac_cv_working_tzset)
4869if test "$ac_cv_working_tzset" = yes
4870then
4871 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4872 [Define if tzset() actually switches the local timezone in a meaningful way.])
4873fi
4874
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004875# Look for subsecond timestamps in struct stat
4876AC_MSG_CHECKING(for tv_nsec in struct stat)
4877AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004878AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004879struct stat st;
4880st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004881]])],
4882[ac_cv_stat_tv_nsec=yes],
4883[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004884AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4885if test "$ac_cv_stat_tv_nsec" = yes
4886then
4887 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4888 [Define if you have struct stat.st_mtim.tv_nsec])
4889fi
4890
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004891# Look for BSD style subsecond timestamps in struct stat
4892AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4893AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004894AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004895struct stat st;
4896st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004897]])],
4898[ac_cv_stat_tv_nsec2=yes],
4899[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004900AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4901if test "$ac_cv_stat_tv_nsec2" = yes
4902then
4903 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4904 [Define if you have struct stat.st_mtimensec])
4905fi
4906
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004907# first curses header check
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004908ac_save_cppflags="$CPPFLAGS"
Xavier de Gayee13c3202016-12-13 16:04:14 +01004909if test "$cross_compiling" = no; then
4910 CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
4911fi
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004912
4913AC_CHECK_HEADERS(curses.h ncurses.h)
4914
4915# On Solaris, term.h requires curses.h
4916AC_CHECK_HEADERS(term.h,,,[
4917#ifdef HAVE_CURSES_H
4918#include <curses.h>
4919#endif
4920])
4921
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004922# On HP/UX 11.0, mvwdelch is a block with a return statement
4923AC_MSG_CHECKING(whether mvwdelch is an expression)
4924AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004925AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004926 int rtn;
4927 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004928]])],
4929[ac_cv_mvwdelch_is_expression=yes],
4930[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004931AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4932
4933if test "$ac_cv_mvwdelch_is_expression" = yes
4934then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004935 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4936 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004937fi
4938
Masayuki Yamamoto8bc7d632017-11-01 21:05:26 +09004939# Issue #25720: ncurses has introduced the NCURSES_OPAQUE symbol making opaque
4940# structs since version 5.7. If the macro is defined as zero before including
4941# [n]curses.h, ncurses will expose fields of the structs regardless of the
4942# configuration.
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004943AC_MSG_CHECKING(whether WINDOW has _flags)
4944AC_CACHE_VAL(ac_cv_window_has_flags,
Masayuki Yamamoto8bc7d632017-11-01 21:05:26 +09004945AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4946 #define NCURSES_OPAQUE 0
4947 #include <curses.h>
4948]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004949 WINDOW *w;
4950 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004951]])],
4952[ac_cv_window_has_flags=yes],
4953[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004954AC_MSG_RESULT($ac_cv_window_has_flags)
4955
4956
4957if test "$ac_cv_window_has_flags" = yes
4958then
Victor Stinner1b80b242016-04-12 22:34:58 +02004959 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004960 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004961fi
4962
Masayuki Yamamoto8bc7d632017-11-01 21:05:26 +09004963AC_MSG_CHECKING(for is_pad)
4964AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
4965#ifndef is_pad
4966void *x=is_pad
4967#endif
4968]])],
4969 [AC_DEFINE(HAVE_CURSES_IS_PAD, 1, Define if you have the 'is_pad' function or macro.)
4970 AC_MSG_RESULT(yes)],
4971 [AC_MSG_RESULT(no)]
4972)
4973
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004974AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004975AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4976 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4977 AC_MSG_RESULT(yes)],
4978 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004979)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004980
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004981AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004982AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4983 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4984 AC_MSG_RESULT(yes)],
4985 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004986)
4987
4988AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004989AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4990 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4991 AC_MSG_RESULT(yes)],
4992 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004993)
Serhiy Storchakabaac01e2017-10-31 13:56:44 +02004994
4995AC_MSG_CHECKING(for immedok)
4996AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
4997#ifndef immedok
4998void *x=immedok
4999#endif
5000]])],
5001 [AC_DEFINE(HAVE_CURSES_IMMEDOK, 1, Define if you have the 'immedok' function.)
5002 AC_MSG_RESULT(yes)],
5003 [AC_MSG_RESULT(no)]
5004)
5005
5006AC_MSG_CHECKING(for syncok)
5007AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5008#ifndef syncok
5009void *x=syncok
5010#endif
5011]])],
5012 [AC_DEFINE(HAVE_CURSES_SYNCOK, 1, Define if you have the 'syncok' function.)
5013 AC_MSG_RESULT(yes)],
5014 [AC_MSG_RESULT(no)]
5015)
5016
Serhiy Storchaka894ebd02017-11-01 14:34:20 +02005017AC_MSG_CHECKING(for wchgat)
5018AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5019#ifndef wchgat
5020void *x=wchgat
5021#endif
5022]])],
5023 [AC_DEFINE(HAVE_CURSES_WCHGAT, 1, Define if you have the 'wchgat' function.)
5024 AC_MSG_RESULT(yes)],
5025 [AC_MSG_RESULT(no)]
5026)
5027
Serhiy Storchakabaac01e2017-10-31 13:56:44 +02005028AC_MSG_CHECKING(for filter)
5029AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5030#ifndef filter
5031void *x=filter
5032#endif
5033]])],
5034 [AC_DEFINE(HAVE_CURSES_FILTER, 1, Define if you have the 'filter' function.)
5035 AC_MSG_RESULT(yes)],
5036 [AC_MSG_RESULT(no)]
5037)
5038
5039AC_MSG_CHECKING(for has_key)
5040AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5041#ifndef has_key
5042void *x=has_key
5043#endif
5044]])],
5045 [AC_DEFINE(HAVE_CURSES_HAS_KEY, 1, Define if you have the 'has_key' function.)
5046 AC_MSG_RESULT(yes)],
5047 [AC_MSG_RESULT(no)]
5048)
5049
5050AC_MSG_CHECKING(for typeahead)
5051AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5052#ifndef typeahead
5053void *x=typeahead
5054#endif
5055]])],
5056 [AC_DEFINE(HAVE_CURSES_TYPEAHEAD, 1, Define if you have the 'typeahead' function.)
5057 AC_MSG_RESULT(yes)],
5058 [AC_MSG_RESULT(no)]
5059)
5060
5061AC_MSG_CHECKING(for use_env)
5062AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
5063#ifndef use_env
5064void *x=use_env
5065#endif
5066]])],
5067 [AC_DEFINE(HAVE_CURSES_USE_ENV, 1, Define if you have the 'use_env' function.)
5068 AC_MSG_RESULT(yes)],
5069 [AC_MSG_RESULT(no)]
5070)
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02005071# last curses configure check
5072CPPFLAGS=$ac_save_cppflags
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005073
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005074AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00005075
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005076dnl NOTE: Inform user how to proceed with files when cross compiling.
5077if test "x$cross_compiling" = xyes; then
5078 if test "${ac_cv_file__dev_ptmx+set}" != set; then
5079 AC_MSG_CHECKING([for /dev/ptmx])
5080 AC_MSG_RESULT([not set])
5081 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
5082 fi
5083 if test "${ac_cv_file__dev_ptc+set}" != set; then
5084 AC_MSG_CHECKING([for /dev/ptc])
5085 AC_MSG_RESULT([not set])
5086 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
5087 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00005088fi
5089
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005090AC_CHECK_FILE(/dev/ptmx, [], [])
5091if test "x$ac_cv_file__dev_ptmx" = xyes; then
5092 AC_DEFINE(HAVE_DEV_PTMX, 1,
5093 [Define to 1 if you have the /dev/ptmx device file.])
5094fi
5095AC_CHECK_FILE(/dev/ptc, [], [])
5096if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00005097 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02005098 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00005099fi
Neal Norwitz865400f2003-03-21 01:42:58 +00005100
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00005101if test $ac_sys_system = Darwin
5102then
5103 LIBS="$LIBS -framework CoreFoundation"
5104fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00005105
Benjamin Peterson8f326b22009-12-13 02:10:36 +00005106AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00005107AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00005108#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00005109#include <stddef.h>
5110#include <string.h>
5111
Christian Heimes2c181612007-12-17 20:04:13 +00005112#ifdef HAVE_SYS_TYPES_H
5113#include <sys/types.h>
5114#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00005115
5116#ifdef HAVE_SSIZE_T
5117typedef ssize_t Py_ssize_t;
5118#elif SIZEOF_VOID_P == SIZEOF_LONG
5119typedef long Py_ssize_t;
5120#else
5121typedef int Py_ssize_t;
5122#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00005123
Christian Heimes2c181612007-12-17 20:04:13 +00005124int main()
5125{
5126 char buffer[256];
5127
Thomas Wouters477c8d52006-05-27 19:21:47 +00005128 if(sprintf(buffer, "%zd", (size_t)123) < 0)
5129 return 1;
5130
Thomas Wouters89f507f2006-12-13 04:49:30 +00005131 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00005132 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00005133
5134 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
5135 return 1;
5136
5137 if (strcmp(buffer, "-123"))
5138 return 1;
5139
Thomas Wouters477c8d52006-05-27 19:21:47 +00005140 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005141}
Matthias Kloseb159a552010-04-25 21:00:44 +00005142]])],
5143 [ac_cv_have_size_t_format=yes],
5144 [ac_cv_have_size_t_format=no],
5145 [ac_cv_have_size_t_format="cross -- assuming yes"
5146])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00005147if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005148 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
5149 [Define to printf format modifier for Py_ssize_t])
5150fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00005151
Martin v. Löwis01c04012002-11-11 14:58:44 +00005152AC_CHECK_TYPE(socklen_t,,
5153 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00005154 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00005155#ifdef HAVE_SYS_TYPES_H
5156#include <sys/types.h>
5157#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00005158#ifdef HAVE_SYS_SOCKET_H
5159#include <sys/socket.h>
5160#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00005161])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005162
Antoine Pitroufff95302008-09-03 18:58:51 +00005163AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005164AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00005165AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah19c21392012-11-22 23:47:32 +01005166#include <stdio.h>
Antoine Pitroufff95302008-09-03 18:58:51 +00005167#include<stdlib.h>
5168int main() {
5169 size_t len = -1;
5170 const char *str = "text";
5171 len = mbstowcs(NULL, str, 0);
5172 return (len != 4);
5173}
Matthias Kloseb159a552010-04-25 21:00:44 +00005174]])],
5175[ac_cv_broken_mbstowcs=no],
5176[ac_cv_broken_mbstowcs=yes],
5177[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00005178AC_MSG_RESULT($ac_cv_broken_mbstowcs)
5179if test "$ac_cv_broken_mbstowcs" = yes
5180then
5181 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005182 [Define if mbstowcs(NULL, "text", 0) does not return the number of
Antoine Pitroufff95302008-09-03 18:58:51 +00005183 wide chars that would be converted.])
5184fi
5185
Antoine Pitroub52ec782009-01-25 16:34:23 +00005186# Check for --with-computed-gotos
5187AC_MSG_CHECKING(for --with-computed-gotos)
5188AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00005189 AS_HELP_STRING([--with(out)-computed-gotos],
5190 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00005191[
Antoine Pitrou042b1282010-08-13 21:15:58 +00005192if test "$withval" = yes
Victor Stinner1b80b242016-04-12 22:34:58 +02005193then
Antoine Pitroub52ec782009-01-25 16:34:23 +00005194 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005195 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005196 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00005197fi
5198if test "$withval" = no
Victor Stinner1b80b242016-04-12 22:34:58 +02005199then
Antoine Pitrou042b1282010-08-13 21:15:58 +00005200 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
Victor Stinner1b80b242016-04-12 22:34:58 +02005201 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitrou042b1282010-08-13 21:15:58 +00005202 AC_MSG_RESULT(no)
5203fi
5204],
5205[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005206
Matthias Kloseb17289e2012-03-15 19:51:34 +01005207AC_MSG_CHECKING(whether $CC supports computed gotos)
5208AC_CACHE_VAL(ac_cv_computed_gotos,
5209AC_RUN_IFELSE([AC_LANG_SOURCE([[[
5210int main(int argc, char **argv)
5211{
5212 static void *targets[1] = { &&LABEL1 };
5213 goto LABEL2;
5214LABEL1:
5215 return 0;
5216LABEL2:
5217 goto *targets[0];
5218 return 1;
5219}
5220]]])],
5221[ac_cv_computed_gotos=yes],
5222[ac_cv_computed_gotos=no],
5223[if test "${with_computed_gotos+set}" = set; then
5224 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
5225 else
5226 ac_cv_computed_gotos=no
5227 fi]))
5228AC_MSG_RESULT($ac_cv_computed_gotos)
5229case "$ac_cv_computed_gotos" in yes*)
5230 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
5231 [Define if the C compiler supports computed gotos.])
5232esac
5233
R. David Murraye16cda92010-10-15 23:12:57 +00005234case $ac_sys_system in
Victor Stinner1b80b242016-04-12 22:34:58 +02005235AIX*)
R. David Murraye16cda92010-10-15 23:12:57 +00005236 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
5237esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00005238
Jesus Cea6a792292010-05-03 21:18:48 +00005239
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00005240AC_SUBST(THREADHEADERS)
5241
5242for h in `(cd $srcdir;echo Python/thread_*.h)`
5243do
5244 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
5245done
5246
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005247AC_SUBST(SRCDIRS)
Alex Dzyoba8a543c02017-03-24 11:23:43 +03005248SRCDIRS="Parser Objects Python Modules Programs"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00005249AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005250for dir in $SRCDIRS; do
5251 if test ! -d $dir; then
5252 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00005253 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005254done
5255AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00005256
Stefan Krah1919b7e2012-03-21 18:25:23 +01005257# Availability of -O2:
5258AC_MSG_CHECKING(for -O2)
5259saved_cflags="$CFLAGS"
5260CFLAGS="-O2"
5261AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
5262]])],[have_O2=yes],[have_O2=no])
5263AC_MSG_RESULT($have_O2)
5264CFLAGS="$saved_cflags"
5265
5266# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
5267# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
5268AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
5269saved_cflags="$CFLAGS"
5270CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
5271if test "$have_O2" = no; then
5272 CFLAGS=""
5273fi
5274AC_RUN_IFELSE([AC_LANG_SOURCE([[
5275#include <stdio.h>
5276#include <stdlib.h>
5277#include <string.h>
5278void foo(void *p, void *q) { memmove(p, q, 19); }
5279int main() {
5280 char a[32] = "123456789000000000";
5281 foo(&a[9], a);
5282 if (strcmp(a, "123456789123456789000000000") != 0)
5283 return 1;
5284 foo(a, &a[9]);
5285 if (strcmp(a, "123456789000000000") != 0)
5286 return 1;
5287 return 0;
5288}
5289]])],
5290[have_glibc_memmove_bug=no],
5291[have_glibc_memmove_bug=yes],
5292[have_glibc_memmove_bug=undefined])
5293CFLAGS="$saved_cflags"
5294AC_MSG_RESULT($have_glibc_memmove_bug)
5295if test "$have_glibc_memmove_bug" = yes; then
5296 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
5297 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
5298 for memmove and bcopy.])
5299fi
5300
5301if test "$have_gcc_asm_for_x87" = yes; then
5302 # Some versions of gcc miscompile inline asm:
5303 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
5304 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
5305 case $CC in
5306 *gcc*)
5307 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
5308 saved_cflags="$CFLAGS"
5309 CFLAGS="-O2"
5310 AC_RUN_IFELSE([AC_LANG_SOURCE([[
5311 __attribute__((noinline)) int
5312 foo(int *p) {
5313 int r;
5314 asm ( "movl \$6, (%1)\n\t"
5315 "xorl %0, %0\n\t"
5316 : "=r" (r) : "r" (p) : "memory"
5317 );
5318 return r;
5319 }
5320 int main() {
5321 int p = 8;
5322 if ((foo(&p) ? : p) != 6)
5323 return 1;
5324 return 0;
5325 }
5326 ]])],
5327 [have_ipa_pure_const_bug=no],
5328 [have_ipa_pure_const_bug=yes],
5329 [have_ipa_pure_const_bug=undefined])
5330 CFLAGS="$saved_cflags"
5331 AC_MSG_RESULT($have_ipa_pure_const_bug)
5332 if test "$have_ipa_pure_const_bug" = yes; then
5333 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
5334 [Define if gcc has the ipa-pure-const bug.])
5335 fi
5336 ;;
5337 esac
5338fi
5339
Victor Stinner4f5366e2015-01-09 02:13:19 +01005340# Check for stdatomic.h
5341AC_MSG_CHECKING(for stdatomic.h)
5342AC_LINK_IFELSE(
5343[
5344 AC_LANG_SOURCE([[
5345 #include <stdatomic.h>
Victor Stinner923e06f2015-01-14 16:01:46 +01005346 atomic_int value = ATOMIC_VAR_INIT(1);
Victor Stinner4f5366e2015-01-09 02:13:19 +01005347 int main() {
5348 int loaded_value = atomic_load(&value);
5349 return 0;
5350 }
5351 ]])
5352],[have_stdatomic_h=yes],[have_stdatomic_h=no])
5353
5354AC_MSG_RESULT($have_stdatomic_h)
5355
5356if test "$have_stdatomic_h" = yes; then
Victor Stinner923e06f2015-01-14 16:01:46 +01005357 AC_DEFINE(HAVE_STD_ATOMIC, 1,
Benjamin Peterson15c7b2a2018-07-15 17:01:42 -07005358 [Has stdatomic.h with atomic_int])
Victor Stinner4f5366e2015-01-09 02:13:19 +01005359fi
5360
5361# Check for GCC >= 4.7 __atomic builtins
5362AC_MSG_CHECKING(for GCC >= 4.7 __atomic builtins)
5363AC_LINK_IFELSE(
5364[
5365 AC_LANG_SOURCE([[
5366 volatile int val = 1;
5367 int main() {
5368 __atomic_load_n(&val, __ATOMIC_SEQ_CST);
5369 return 0;
5370 }
5371 ]])
5372],[have_builtin_atomic=yes],[have_builtin_atomic=no])
5373
5374AC_MSG_RESULT($have_builtin_atomic)
5375
5376if test "$have_builtin_atomic" = yes; then
5377 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin atomics])
5378fi
5379
Ned Deily322f5ba2013-11-21 23:01:59 -08005380# ensurepip option
5381AC_MSG_CHECKING(for ensurepip)
5382AC_ARG_WITH(ensurepip,
5383 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
5384 ["install" or "upgrade" using bundled pip])],
5385 [],
5386 [with_ensurepip=upgrade])
5387AS_CASE($with_ensurepip,
5388 [yes|upgrade],[ENSUREPIP=upgrade],
5389 [install],[ENSUREPIP=install],
5390 [no],[ENSUREPIP=no],
5391 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
5392AC_MSG_RESULT($ENSUREPIP)
5393AC_SUBST(ENSUREPIP)
5394
Victor Stinner35a97c02015-03-08 02:59:09 +01005395# check if the dirent structure of a d_type field and DT_UNKNOWN is defined
5396AC_MSG_CHECKING(if the dirent structure of a d_type field)
5397AC_LINK_IFELSE(
5398[
5399 AC_LANG_SOURCE([[
5400 #include <dirent.h>
5401
5402 int main() {
5403 struct dirent entry;
5404 return entry.d_type == DT_UNKNOWN;
5405 }
5406 ]])
5407],[have_dirent_d_type=yes],[have_dirent_d_type=no])
5408AC_MSG_RESULT($have_dirent_d_type)
5409
5410if test "$have_dirent_d_type" = yes; then
5411 AC_DEFINE(HAVE_DIRENT_D_TYPE, 1,
5412 [Define to 1 if the dirent structure has a d_type field])
5413fi
5414
Victor Stinner9eb57c52015-03-19 22:21:49 +01005415# check if the Linux getrandom() syscall is available
5416AC_MSG_CHECKING(for the Linux getrandom() syscall)
5417AC_LINK_IFELSE(
5418[
5419 AC_LANG_SOURCE([[
Victor Stinner1b80b242016-04-12 22:34:58 +02005420 #include <unistd.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005421 #include <sys/syscall.h>
Victor Stinnerdddf4842016-06-07 11:21:42 +02005422 #include <linux/random.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005423
5424 int main() {
Victor Stinner9eb57c52015-03-19 22:21:49 +01005425 char buffer[1];
Victor Stinner3abf44e2015-09-18 15:38:37 +02005426 const size_t buflen = sizeof(buffer);
Victor Stinnerdddf4842016-06-07 11:21:42 +02005427 const int flags = GRND_NONBLOCK;
5428 /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */
Victor Stinner3abf44e2015-09-18 15:38:37 +02005429 (void)syscall(SYS_getrandom, buffer, buflen, flags);
Victor Stinner9eb57c52015-03-19 22:21:49 +01005430 return 0;
5431 }
5432 ]])
5433],[have_getrandom_syscall=yes],[have_getrandom_syscall=no])
5434AC_MSG_RESULT($have_getrandom_syscall)
5435
5436if test "$have_getrandom_syscall" = yes; then
5437 AC_DEFINE(HAVE_GETRANDOM_SYSCALL, 1,
5438 [Define to 1 if the Linux getrandom() syscall is available])
5439fi
5440
Victor Stinner3abf44e2015-09-18 15:38:37 +02005441# check if the getrandom() function is available
5442# the test was written for the Solaris function of <sys/random.h>
5443AC_MSG_CHECKING(for the getrandom() function)
5444AC_LINK_IFELSE(
5445[
5446 AC_LANG_SOURCE([[
5447 #include <sys/random.h>
5448
5449 int main() {
5450 char buffer[1];
5451 const size_t buflen = sizeof(buffer);
5452 const int flags = 0;
5453 /* ignore the result, Python checks for ENOSYS at runtime */
5454 (void)getrandom(buffer, buflen, flags);
5455 return 0;
5456 }
5457 ]])
5458],[have_getrandom=yes],[have_getrandom=no])
5459AC_MSG_RESULT($have_getrandom)
5460
5461if test "$have_getrandom" = yes; then
5462 AC_DEFINE(HAVE_GETRANDOM, 1,
5463 [Define to 1 if the getrandom() function is available])
5464fi
5465
Neil Schemenauer5741c452019-02-08 10:48:46 -08005466# checks for POSIX shared memory, used by Modules/_multiprocessing/posixshmem.c
5467# shm_* may only be available if linking against librt
5468save_LIBS="$LIBS"
5469save_includes_default="$ac_includes_default"
5470AC_SEARCH_LIBS(shm_open, rt)
5471if test "$ac_cv_search_shm_open" = "-lrt"; then
5472 AC_DEFINE(SHM_NEEDS_LIBRT, 1,
5473 [Define to 1 if you must link with -lrt for shm_open().])
5474fi
5475AC_CHECK_HEADERS(sys/mman.h)
5476# temporarily override ac_includes_default for AC_CHECK_FUNCS below
5477ac_includes_default="\
5478${ac_includes_default}
5479#ifndef __cplusplus
5480# ifdef HAVE_SYS_MMAN_H
5481# include <sys/mman.h>
5482# endif
5483#endif
5484"
5485AC_CHECK_FUNCS([shm_open shm_unlink])
5486# we don't want to link with librt always, restore LIBS
5487LIBS="$save_LIBS"
5488ac_includes_default="$save_includes_default"
5489
Christian Heimesff5be6e2018-01-20 13:19:21 +01005490# Check for usable OpenSSL
5491AX_CHECK_OPENSSL([have_openssl=yes],[have_openssl=no])
5492
5493if test "$have_openssl" = yes; then
5494 AC_MSG_CHECKING([for X509_VERIFY_PARAM_set1_host in libssl])
5495
5496 save_LIBS="$LIBS"
5497 save_LDFLAGS="$LDFLAGS"
5498 save_CPPFLAGS="$CPPFLAGS"
5499 LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS"
5500 LIBS="$OPENSSL_LIBS $LIBS"
5501 CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS"
5502
5503 AC_LINK_IFELSE([AC_LANG_PROGRAM([
5504 [#include <openssl/x509_vfy.h>]
5505 ], [
5506 [X509_VERIFY_PARAM *p = X509_VERIFY_PARAM_new();]
5507 [X509_VERIFY_PARAM_set1_host(p, "localhost", 0);]
5508 [X509_VERIFY_PARAM_set1_ip_asc(p, "127.0.0.1");]
5509 [X509_VERIFY_PARAM_set_hostflags(p, 0);]
5510 ])
5511 ],
5512 [
5513 ac_cv_has_x509_verify_param_set1_host=yes
5514 ],
5515 [
5516 ac_cv_has_x509_verify_param_set1_host=no
5517 ])
5518 AC_MSG_RESULT($ac_cv_has_x509_verify_param_set1_host)
5519 if test "$ac_cv_has_x509_verify_param_set1_host" = "yes"; then
5520 AC_DEFINE(HAVE_X509_VERIFY_PARAM_SET1_HOST, 1,
5521 [Define if libssl has X509_VERIFY_PARAM_set1_host and related function])
5522 fi
5523
5524 CPPFLAGS="$save_CPPFLAGS"
5525 LDFLAGS="$save_LDFLAGS"
5526 LIBS="$save_LIBS"
5527fi
5528
Christian Heimes892d66e2018-01-29 14:10:18 +01005529# ssl module default cipher suite string
5530AH_TEMPLATE(PY_SSL_DEFAULT_CIPHERS,
5531 [Default cipher suites list for ssl module.
5532 1: Python's preferred selection, 2: leave OpenSSL defaults untouched, 0: custom string])
5533AH_TEMPLATE(PY_SSL_DEFAULT_CIPHER_STRING,
5534 [Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0]
5535)
5536
5537AC_MSG_CHECKING(for --with-ssl-default-suites)
5538AC_ARG_WITH(ssl-default-suites,
5539 AS_HELP_STRING([--with-ssl-default-suites=@<:@python|openssl|STRING@:>@],
5540 [Override default cipher suites string,
5541 python: use Python's preferred selection (default),
5542 openssl: leave OpenSSL's defaults untouched,
5543 STRING: use a custom string,
5544 PROTOCOL_SSLv2 ignores the setting]),
5545[
5546AC_MSG_RESULT($withval)
5547case "$withval" in
5548 python)
5549 AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1)
5550 ;;
5551 openssl)
5552 AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 2)
5553 ;;
5554 *)
5555 AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 0)
5556 AC_DEFINE_UNQUOTED(PY_SSL_DEFAULT_CIPHER_STRING, "$withval")
5557 ;;
5558esac
5559],
5560[
5561AC_MSG_RESULT(python)
5562AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1)
5563])
5564
5565
Guido van Rossum627b2d71993-12-24 10:39:16 +00005566# generate output files
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02005567AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-config.sh)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00005568AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00005569AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00005570
Christian Heimes75ed8902013-11-20 01:11:18 +01005571echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005572if test ! -f Modules/Setup.local
5573then
5574 echo "# Edit this file for local setup changes" >Modules/Setup.local
5575fi
5576
Christian Heimes75ed8902013-11-20 01:11:18 +01005577echo "creating Makefile" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005578$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
Antoine Pitroua6a4dc82017-09-07 18:56:24 +02005579 -s Modules \
Antoine Pitrou961d54c2018-07-16 19:03:03 +02005580 Modules/Setup.local $srcdir/Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00005581mv config.c Modules
Brett Cannon63d98bc2016-09-06 17:12:40 -07005582
5583if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then
5584 echo "" >&AS_MESSAGE_FD
5585 echo "" >&AS_MESSAGE_FD
Brett Cannonb4e5fee2017-06-09 13:56:57 -07005586 echo "If you want a release build with all stable optimizations active (PGO, etc)," >&AS_MESSAGE_FD
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)1016b2f2016-11-20 21:07:42 +00005587 echo "please run ./configure --enable-optimizations" >&AS_MESSAGE_FD
Brett Cannon63d98bc2016-09-06 17:12:40 -07005588 echo "" >&AS_MESSAGE_FD
5589 echo "" >&AS_MESSAGE_FD
5590fi
5591