blob: a83fe51e9e079de168d522f1e39699fa1859ce45 [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)
Benjamin Petersona8c22a02015-05-27 23:29:00 -05006m4_define(PYTHON_VERSION, 3.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00008AC_PREREQ(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009
Benjamin Petersonc2fcbf42016-08-03 22:01:32 -070010AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
Trent Nelson4d4ec652012-10-16 08:51:24 -040012AC_SUBST(BASECPPFLAGS)
Trent Nelson5595ab52012-10-17 04:47:31 -040013if test "$abs_srcdir" != "$abs_builddir"; then
Trent Nelson4d4ec652012-10-16 08:51:24 -040014 # If we're building out-of-tree, we need to make sure the following
15 # resources get picked up before their $srcdir counterparts.
16 # Objects/ -> typeslots.inc
17 # Include/ -> Python-ast.h, graminit.h
18 # Python/ -> importlib.h
19 # (A side effect of this is that these resources will automatically be
20 # regenerated when building out-of-tree, regardless of whether or not
21 # the $srcdir counterpart is up-to-date. This is an acceptable trade
22 # off.)
23 BASECPPFLAGS="-IObjects -IInclude -IPython"
24else
25 BASECPPFLAGS=""
26fi
27
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050028AC_SUBST(HGVERSION)
29AC_SUBST(HGTAG)
30AC_SUBST(HGBRANCH)
31
Antoine Pitroud3b2aef2011-07-27 01:22:41 +020032if test -e $srcdir/.hg/dirstate
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050033then
34AC_CHECK_PROG(HAS_HG, hg, found, not-found)
35else
36HAS_HG=no-repository
37fi
38if test $HAS_HG = found
39then
40 HGVERSION="hg id -i \$(srcdir)"
41 HGTAG="hg id -t \$(srcdir)"
42 HGBRANCH="hg id -b \$(srcdir)"
43else
44 HGVERSION=""
45 HGTAG=""
46 HGBRANCH=""
47fi
48
Martin v. Löwis88afe662002-10-26 13:47:44 +000049AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000050AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000051
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010052AC_CANONICAL_HOST
doko@python.orga10e4a92013-01-25 18:45:12 +010053AC_SUBST(build)
54AC_SUBST(host)
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010055
Ned Deilyfcbc2462014-08-22 13:32:49 -070056# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
57rm -f pybuilddir.txt
58
Xavier de Gayefd0d5932016-07-26 12:48:08 +020059AC_CHECK_PROGS(PYTHON_FOR_GEN, python$PACKAGE_VERSION python3 python, not-found)
60if test "$PYTHON_FOR_GEN" = not-found; then
61 PYTHON_FOR_GEN='@echo "Cannot generate $@, python not found !" && \
62 echo "To skip re-generation of $@ run <make touch> or <make -t $@>." && \
63 echo "Otherwise, set python in PATH and run configure or run <make PYTHON_FOR_GEN=python>." && false &&'
64fi
65AC_SUBST(PYTHON_FOR_GEN)
66
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020067if test "$cross_compiling" = yes; then
68 AC_MSG_CHECKING([for python interpreter for cross build])
69 if test -z "$PYTHON_FOR_BUILD"; then
70 for interp in python$PACKAGE_VERSION python3 python; do
71 which $interp >/dev/null 2>&1 || continue
Xavier de Gaye4afd1432016-07-07 18:00:22 +020072 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 +020073 break
74 fi
75 interp=
76 done
77 if test x$interp = x; then
78 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
79 fi
80 AC_MSG_RESULT($interp)
doko@python.org244b6872013-01-26 12:08:25 +010081 PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020082 fi
Martin Panter43a94a72016-07-29 05:52:32 +000083 # Used to comment out stuff for rebuilding generated files
84 GENERATED_COMMENT='#'
Christian Heimes954ac032012-12-12 13:10:21 +010085elif test "$cross_compiling" = maybe; then
86 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020087else
88 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
Martin Panter43a94a72016-07-29 05:52:32 +000089 GENERATED_COMMENT=''
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020090fi
91AC_SUBST(PYTHON_FOR_BUILD)
Martin Panter43a94a72016-07-29 05:52:32 +000092AC_SUBST(GENERATED_COMMENT)
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020093
Benjamin Petersond23f8222009-04-05 19:13:16 +000094dnl Ensure that if prefix is specified, it does not end in a slash. If
95dnl it does, we get path names containing '//' which is both ugly and
96dnl can cause trouble.
97
98dnl Last slash shouldn't be stripped if prefix=/
99if test "$prefix" != "/"; then
100 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
Victor Stinner1b80b242016-04-12 22:34:58 +0200101fi
Benjamin Petersond23f8222009-04-05 19:13:16 +0000102
Martin v. Löwis8316feb2003-06-14 07:48:07 +0000103dnl This is for stuff that absolutely must end up in pyconfig.h.
104dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +0000105AH_TOP([
106#ifndef Py_PYCONFIG_H
107#define Py_PYCONFIG_H
108])
Martin v. Löwis11437992002-04-12 09:54:03 +0000109AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +0000110/* Define the macros needed if on a UnixWare 7.x system. */
111#if defined(__USLC__) && defined(__SCO_VERSION__)
112#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
113#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +0000114
115#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +0000116])
117
Martin v. Löwis8316feb2003-06-14 07:48:07 +0000118# We don't use PACKAGE_ variables, and they cause conflicts
119# with other autoconf-based packages that include Python.h
120grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
121rm confdefs.h
122mv confdefs.h.new confdefs.h
123
Guido van Rossum642b6781997-07-19 19:35:41 +0000124AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +0000125VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +0000126
Georg Brandlde7d8342010-09-03 22:19:07 +0000127# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +0000128AC_SUBST(SOVERSION)
129SOVERSION=1.0
130
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000131# The later defininition of _XOPEN_SOURCE disables certain features
132# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
133AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
134
Martin v. Löwisbcd93962003-05-03 10:32:18 +0000135# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
136# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
137# them.
138AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
139
Andrew MacIntyreabccf412003-07-02 13:53:25 +0000140# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
141# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
142# them.
143AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
144
Martin v. Löwisd6320502004-08-12 13:45:08 +0000145# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
146# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
147AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
148
Georg Brandlfcaf9102008-07-16 02:17:56 +0000149# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
150# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
151# them.
152AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
153
154
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000155define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000156
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000157# Arguments passed to configure.
158AC_SUBST(CONFIG_ARGS)
159CONFIG_ARGS="$ac_configure_args"
160
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000161AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000162AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700163 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000164[
165 case $enableval in
166 yes)
Ned Deilycbfb9a52012-06-23 16:02:19 -0700167 # Locate the best usable SDK, see Mac/README.txt for more
168 # information
169 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
Ned Deily87adb6e2013-10-18 21:09:56 -0700170 if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000171 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700172 enableval=/Developer/SDKs/MacOSX10.4u.sdk
173 if test ! -d "${enableval}"
174 then
175 enableval=/
176 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000177 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000178 ;;
179 esac
180 case $enableval in
181 no)
182 UNIVERSALSDK=
183 enable_universalsdk=
184 ;;
185 *)
186 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000187 if test ! -d "${UNIVERSALSDK}"
188 then
189 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
190 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000191 ;;
192 esac
Victor Stinner1b80b242016-04-12 22:34:58 +0200193
Thomas Wouters477c8d52006-05-27 19:21:47 +0000194],[
195 UNIVERSALSDK=
196 enable_universalsdk=
197])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000198if test -n "${UNIVERSALSDK}"
199then
200 AC_MSG_RESULT(${UNIVERSALSDK})
201else
202 AC_MSG_RESULT(no)
203fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000204AC_SUBST(UNIVERSALSDK)
205
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000206AC_SUBST(ARCH_RUN_32BIT)
Ned Deily87adb6e2013-10-18 21:09:56 -0700207ARCH_RUN_32BIT=""
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000208
Ned Deilycbfb9a52012-06-23 16:02:19 -0700209# For backward compatibility reasons we prefer to select '32-bit' if available,
210# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000211UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700212if test "`uname -s`" = "Darwin"
213then
214 if test -n "${UNIVERSALSDK}"
215 then
Ned Deily87adb6e2013-10-18 21:09:56 -0700216 if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700217 then
218 UNIVERSAL_ARCHS="intel"
219 fi
220 fi
221fi
222
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000223AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000224AC_MSG_CHECKING(for --with-universal-archs)
225AC_ARG_WITH(universal-archs,
Ned Deily87adb6e2013-10-18 21:09:56 -0700226 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel", "intel-32", or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000227[
Georg Brandlfcaf9102008-07-16 02:17:56 +0000228 UNIVERSAL_ARCHS="$withval"
229],
Ned Deily87adb6e2013-10-18 21:09:56 -0700230[])
231if test -n "${UNIVERSALSDK}"
232then
233 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
234else
235 AC_MSG_RESULT(no)
236fi
Georg Brandlfcaf9102008-07-16 02:17:56 +0000237
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000238AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000239 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000240 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000241[
242 PYTHONFRAMEWORK=${withval}
243 PYTHONFRAMEWORKDIR=${withval}.framework
244 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
245 ],[
246 PYTHONFRAMEWORK=Python
247 PYTHONFRAMEWORKDIR=Python.framework
248 PYTHONFRAMEWORKIDENTIFIER=org.python.python
249])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000250dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000251AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000252 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000253[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000254 case $enableval in
Victor Stinner1b80b242016-04-12 22:34:58 +0200255 yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000256 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000257 esac
258 case $enableval in
259 no)
260 PYTHONFRAMEWORK=
261 PYTHONFRAMEWORKDIR=no-framework
262 PYTHONFRAMEWORKPREFIX=
263 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000264 FRAMEWORKINSTALLFIRST=
265 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000266 FRAMEWORKALTINSTALLFIRST=
267 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800268 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000269 if test "x${prefix}" = "xNONE"; then
270 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
271 else
272 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
273 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000274 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000275 ;;
276 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000277 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000278 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000279 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000280 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000281 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
282 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ned Deilyb8f944f2013-11-21 22:42:25 -0800283 FRAMEWORKPYTHONW="frameworkpythonw"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000284 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000285
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000286 if test "x${prefix}" = "xNONE" ; then
287 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000288
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000289 else
290 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
291 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000292
293 case "${enableval}" in
294 /System*)
295 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
296 if test "${prefix}" = "NONE" ; then
297 # See below
298 FRAMEWORKUNIXTOOLSPREFIX="/usr"
299 fi
300 ;;
301
302 /Library*)
303 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
304 ;;
305
306 */Library/Frameworks)
307 MDIR="`dirname "${enableval}"`"
308 MDIR="`dirname "${MDIR}"`"
309 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
310
311 if test "${prefix}" = "NONE"; then
Victor Stinner1b80b242016-04-12 22:34:58 +0200312 # User hasn't specified the
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000313 # --prefix option, but wants to install
314 # the framework in a non-default location,
315 # ensure that the compatibility links get
316 # installed relative to that prefix as well
317 # instead of in /usr/local.
318 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
319 fi
320 ;;
321
322 *)
323 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
324 ;;
325 esac
326
Jack Jansen127e56e2001-09-11 14:41:54 +0000327 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000328
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000329 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000330 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000331 AC_CONFIG_FILES(Mac/Makefile)
332 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000333 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
334 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000335 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000336 ],[
337 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000338 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000339 PYTHONFRAMEWORKPREFIX=
340 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000341 FRAMEWORKINSTALLFIRST=
342 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000343 FRAMEWORKALTINSTALLFIRST=
344 FRAMEWORKALTINSTALLLAST=
Ned Deilyb8f944f2013-11-21 22:42:25 -0800345 FRAMEWORKPYTHONW=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000346 if test "x${prefix}" = "xNONE" ; then
347 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
348 else
349 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
350 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000351 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000352
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000353])
354AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000355AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000356AC_SUBST(PYTHONFRAMEWORKDIR)
357AC_SUBST(PYTHONFRAMEWORKPREFIX)
358AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000359AC_SUBST(FRAMEWORKINSTALLFIRST)
360AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000361AC_SUBST(FRAMEWORKALTINSTALLFIRST)
362AC_SUBST(FRAMEWORKALTINSTALLLAST)
Ned Deilyb8f944f2013-11-21 22:42:25 -0800363AC_SUBST(FRAMEWORKPYTHONW)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000364AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000365AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000366
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000367##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000368## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000369## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000370##
Guido van Rossumb418f891996-07-30 18:06:02 +0000371# Set name for machine-dependent library files
doko@python.orgeab42bf2013-01-26 18:57:19 +0100372AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
Guido van Rossumb418f891996-07-30 18:06:02 +0000373AC_MSG_CHECKING(MACHDEP)
374if test -z "$MACHDEP"
375then
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100376 # avoid using uname for cross builds
377 if test "$cross_compiling" = yes; then
doko@python.org44bbbda2013-01-25 14:44:00 +0100378 # ac_sys_system and ac_sys_release are used for setting
379 # a lot of different things including 'define_xopen_source'
380 # in the case statement below.
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100381 case "$host" in
382 *-*-linux*)
383 ac_sys_system=Linux
384 ;;
385 *-*-cygwin*)
386 ac_sys_system=Cygwin
387 ;;
388 *)
389 # for now, limit cross builds to known configurations
390 MACHDEP="unknown"
391 AC_MSG_ERROR([cross build not supported for $host])
392 esac
393 ac_sys_release=
394 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000395 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000396 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000397 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000398 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000399 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000400 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000401 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100402 fi
403 ac_md_system=`echo $ac_sys_system |
404 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
405 ac_md_release=`echo $ac_sys_release |
406 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
407 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000408
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100409 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200410 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000411 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000412 darwin*) MACHDEP="darwin";;
doko@ubuntu.comba015832012-06-30 16:52:05 +0200413 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000414 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100415 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000416fi
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200417
418AC_SUBST(_PYTHON_HOST_PLATFORM)
419if test "$cross_compiling" = yes; then
420 case "$host" in
421 *-*-linux*)
422 case "$host_cpu" in
423 arm*)
424 _host_cpu=arm
425 ;;
426 *)
427 _host_cpu=$host_cpu
428 esac
429 ;;
430 *-*-cygwin*)
431 _host_cpu=
432 ;;
433 *)
434 # for now, limit cross builds to known configurations
435 MACHDEP="unknown"
436 AC_MSG_ERROR([cross build not supported for $host])
437 esac
438 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
439fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200440
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000441# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
442# disable features if it is defined, without any means to access these
443# features as extensions. For these systems, we skip the definition of
444# _XOPEN_SOURCE. Before adding a system to the list to gain access to
445# some feature, make sure there is no alternative way to access this
446# feature. Also, when using wildcards, make sure you have verified the
447# need for not defining _XOPEN_SOURCE on all systems matching the
448# wildcard, and that the wildcard does not include future systems
449# (which may remove their limitations).
450dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
451case $ac_sys_system/$ac_sys_release in
452 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
453 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000454 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000455 # In addition, Stefan Krah confirms that issue #1244610 exists through
456 # OpenBSD 4.6, but is fixed in 4.7.
Victor Stinner1b80b242016-04-12 22:34:58 +0200457 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000458 define_xopen_source=no
459 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
460 # also defined. This can be overridden by defining _BSD_SOURCE
461 # As this has a different meaning on Linux, only define it on OpenBSD
462 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
463 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200464 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000465 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
466 # also defined. This can be overridden by defining _BSD_SOURCE
467 # As this has a different meaning on Linux, only define it on OpenBSD
468 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
469 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000470 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
471 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
472 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000473 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 +0000474 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000475 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
476 # request to enable features supported by the standard as a request
477 # to disable features not supported by the standard. The best way
478 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
479 # entirely and define __EXTENSIONS__ instead.
480 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000481 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000482 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
483 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000484 # Reconfirmed for 7.1.4 by Martin v. Loewis.
485 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000486 define_xopen_source=no;;
487 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000488 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000489 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000490 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000491 # On FreeBSD 4, the math functions C89 does not cover are never defined
492 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
493 FreeBSD/4.*)
494 define_xopen_source=no;;
Victor Stinner1b80b242016-04-12 22:34:58 +0200495 # 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 +0000496 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
497 # identifies itself as Darwin/7.*
498 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
499 # disables platform specific features beyond repair.
Victor Stinner1b80b242016-04-12 22:34:58 +0200500 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000501 # has no effect, don't bother defining them
502 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000503 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000504 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000505 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000506 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
507 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
508 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000509 AIX/4)
510 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000511 AIX/5)
512 if test `uname -r` -eq 1; then
513 define_xopen_source=no
514 fi
515 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000516 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
517 # defining NI_NUMERICHOST.
518 QNX/6.3.2)
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
Guido van Rossum91922671997-10-09 20:24:13 +0000553#
554# SGI compilers allow the specification of the both the ABI and the
555# ISA on the command line. Depending on the values of these switches,
Martin Panter46f50722016-05-26 05:35:26 +0000556# different and often incompatible code will be generated.
Guido van Rossum91922671997-10-09 20:24:13 +0000557#
558# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
559# thus supply support for various ABI/ISA combinations. The MACHDEP
560# variable is also adjusted.
561#
562AC_SUBST(SGI_ABI)
563if test ! -z "$SGI_ABI"
564then
565 CC="cc $SGI_ABI"
566 LDFLAGS="$SGI_ABI $LDFLAGS"
567 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
568fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000569AC_MSG_RESULT($MACHDEP)
570
Jack Jansen6b08a402004-06-03 12:41:45 +0000571# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
572# it may influence the way we can build extensions, so distutils
573# needs to check it
574AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000575AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000576CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000577EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000578
Guido van Rossum627b2d71993-12-24 10:39:16 +0000579# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000580
581# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
582# for debug/optimization stuff. BASECFLAGS is for flags that are required
583# just to get things to compile and link. Users are free to override OPT
584# when running configure or make. The build should not break if they do.
585# BASECFLAGS should generally not be messed with, however.
586
587# XXX shouldn't some/most/all of this code be merged with the stuff later
588# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000589AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000590AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000591 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000592[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000593 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000594 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000595 without_gcc=yes;;
596 yes) CC=gcc
597 without_gcc=no;;
598 *) CC=$withval
599 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000600 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000601 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000602 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000603 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000604 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000605 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000606AC_MSG_RESULT($without_gcc)
607
Zachary Ware5af85642015-12-21 12:09:17 -0600608AC_MSG_CHECKING(for --with-icc)
609AC_ARG_WITH(icc,
610 AS_HELP_STRING([--with-icc], [build with icc]),
611[
612 case $withval in
613 no) CC=${CC:-cc}
614 with_icc=no;;
615 yes) CC=icc
616 CXX=icpc
617 with_icc=yes;;
618 *) CC=$withval
619 with_icc=$withval;;
620 esac], [
621 with_icc=no])
622AC_MSG_RESULT($with_icc)
623
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000624# If the user switches compilers, we can't believe the cache
625if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
626then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000627 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
628(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000629fi
630
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000631# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
632# when the compiler supports them, but we don't always want -O2, and
633# we set -g later.
634if test -z "$CFLAGS"; then
635 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000636fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700637
638if test "$ac_sys_system" = "Darwin"
639then
640 # Compiler selection on MacOSX is more complicated than
641 # AC_PROG_CC can handle, see Mac/README.txt for more
642 # information
643 if test -z "${CC}"
644 then
645 found_gcc=
646 found_clang=
647 as_save_IFS=$IFS; IFS=:
648 for as_dir in $PATH
649 do
650 IFS=$as_save_IFS
651 if test -x $as_dir/gcc; then
652 if test -z "${found_gcc}"; then
653 found_gcc=$as_dir/gcc
654 fi
655 fi
656 if test -x $as_dir/clang; then
657 if test -z "${found_clang}"; then
658 found_clang=$as_dir/clang
659 fi
660 fi
661 done
662 IFS=$as_save_IFS
663
664 if test -n "$found_gcc" -a -n "$found_clang"
665 then
666 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
667 then
668 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
669 CC="$found_clang"
670 CXX="$found_clang++"
671 fi
672
673
674 elif test -z "$found_gcc" -a -n "$found_clang"
675 then
676 AC_MSG_NOTICE([No GCC found, use CLANG])
677 CC="$found_clang"
678 CXX="$found_clang++"
679
680 elif test -z "$found_gcc" -a -z "$found_clang"
681 then
682 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
683 if test -n "${found_clang}"
684 then
685 AC_MSG_NOTICE([Using clang from Xcode.app])
686 CC="${found_clang}"
687 CXX="`/usr/bin/xcrun -find clang++`"
688
689 # else: use default behaviour
690 fi
691 fi
692 fi
693fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000694AC_PROG_CC
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200695AC_PROG_CPP
696AC_PROG_GREP
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000697
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000698AC_SUBST(CXX)
699AC_SUBST(MAINCC)
700AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
701AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000702 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000703 [compile main() and link python executable with C++ compiler]),
704[
Victor Stinner1b80b242016-04-12 22:34:58 +0200705
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000706 case $withval in
707 no) with_cxx_main=no
708 MAINCC='$(CC)';;
709 yes) with_cxx_main=yes
710 MAINCC='$(CXX)';;
711 *) with_cxx_main=yes
712 MAINCC=$withval
713 if test -z "$CXX"
714 then
715 CXX=$withval
716 fi;;
717 esac], [
718 with_cxx_main=no
719 MAINCC='$(CC)'
720])
721AC_MSG_RESULT($with_cxx_main)
722
723preset_cxx="$CXX"
724if test -z "$CXX"
725then
726 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200727 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
728 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
729 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Zachary Ware5af85642015-12-21 12:09:17 -0600730 icc|*/icc) AC_PATH_TOOL(CXX, [icpc], [icpc], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000731 esac
732 if test "$CXX" = "notfound"
733 then
734 CXX=""
735 fi
736fi
737if test -z "$CXX"
738then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200739 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000740 if test "$CXX" = "notfound"
741 then
742 CXX=""
743 fi
744fi
745if test "$preset_cxx" != "$CXX"
746then
Christian Heimesfe32aec2013-11-20 01:18:26 +0100747 AC_MSG_NOTICE([
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000748
749 By default, distutils will build C++ extension modules with "$CXX".
750 If this is not intended, then set CXX on the configure command line.
751 ])
752fi
753
754
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200755MULTIARCH=$($CC --print-multiarch 2>/dev/null)
756AC_SUBST(MULTIARCH)
757
758AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
759cat >> conftest.c <<EOF
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200760#undef bfin
761#undef cris
762#undef fr30
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200763#undef linux
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200764#undef hppa
765#undef hpux
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200766#undef i386
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200767#undef mips
doko@ubuntu.com9abe0492015-04-15 23:31:02 +0200768#undef powerpc
doko@ubuntu.com5cc9c4f2015-04-19 14:44:05 +0200769#undef sparc
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200770#undef unix
771#if defined(__linux__)
772# if defined(__x86_64__) && defined(__LP64__)
773 x86_64-linux-gnu
774# elif defined(__x86_64__) && defined(__ILP32__)
775 x86_64-linux-gnux32
776# elif defined(__i386__)
777 i386-linux-gnu
778# elif defined(__aarch64__) && defined(__AARCH64EL__)
779# if defined(__ILP32__)
780 aarch64_ilp32-linux-gnu
781# else
782 aarch64-linux-gnu
783# endif
784# elif defined(__aarch64__) && defined(__AARCH64EB__)
785# if defined(__ILP32__)
786 aarch64_be_ilp32-linux-gnu
787# else
788 aarch64_be-linux-gnu
789# endif
790# elif defined(__alpha__)
791 alpha-linux-gnu
792# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
793# if defined(__ARMEL__)
794 arm-linux-gnueabihf
795# else
796 armeb-linux-gnueabihf
797# endif
798# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
799# if defined(__ARMEL__)
800 arm-linux-gnueabi
801# else
802 armeb-linux-gnueabi
803# endif
804# elif defined(__hppa__)
805 hppa-linux-gnu
806# elif defined(__ia64__)
807 ia64-linux-gnu
808# elif defined(__m68k__) && !defined(__mcoldfire__)
809 m68k-linux-gnu
810# elif defined(__mips_hard_float) && defined(_MIPSEL)
811# if _MIPS_SIM == _ABIO32
812 mipsel-linux-gnu
813# elif _MIPS_SIM == _ABIN32
814 mips64el-linux-gnuabin32
815# elif _MIPS_SIM == _ABI64
816 mips64el-linux-gnuabi64
817# else
818# error unknown platform triplet
819# endif
820# elif defined(__mips_hard_float)
821# if _MIPS_SIM == _ABIO32
822 mips-linux-gnu
823# elif _MIPS_SIM == _ABIN32
824 mips64-linux-gnuabin32
825# elif _MIPS_SIM == _ABI64
826 mips64-linux-gnuabi64
827# else
828# error unknown platform triplet
829# endif
830# elif defined(__or1k__)
831 or1k-linux-gnu
832# elif defined(__powerpc__) && defined(__SPE__)
833 powerpc-linux-gnuspe
834# elif defined(__powerpc64__)
835# if defined(__LITTLE_ENDIAN__)
836 powerpc64le-linux-gnu
837# else
838 powerpc64-linux-gnu
839# endif
840# elif defined(__powerpc__)
841 powerpc-linux-gnu
842# elif defined(__s390x__)
843 s390x-linux-gnu
844# elif defined(__s390__)
845 s390-linux-gnu
846# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
847 sh4-linux-gnu
848# elif defined(__sparc__) && defined(__arch64__)
849 sparc64-linux-gnu
850# elif defined(__sparc__)
851 sparc-linux-gnu
852# else
853# error unknown platform triplet
854# endif
855#elif defined(__FreeBSD_kernel__)
856# if defined(__LP64__)
857 x86_64-kfreebsd-gnu
858# elif defined(__i386__)
859 i386-kfreebsd-gnu
860# else
861# error unknown platform triplet
862# endif
863#elif defined(__gnu_hurd__)
864 i386-gnu
Ned Deily3b812482015-04-15 17:11:47 -0700865#elif defined(__APPLE__)
866 darwin
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200867#else
868# error unknown platform triplet
869#endif
870
871EOF
872
Xavier de Gaye3a32bdf2016-07-30 11:28:35 +0200873if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200874 PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '`
875 AC_MSG_RESULT([$PLATFORM_TRIPLET])
876else
877 AC_MSG_RESULT([none])
878fi
879rm -f conftest.c conftest.out
880
881if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
882 if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
883 AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report])
884 fi
Victor Stinner1b80b242016-04-12 22:34:58 +0200885fi
doko@ubuntu.com55532312016-06-14 08:55:19 +0200886if test x$PLATFORM_TRIPLET = x; then
887 PLATDIR=plat-$MACHDEP
888else
889 PLATDIR=plat-$PLATFORM_TRIPLET
890fi
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200891AC_SUBST(PLATDIR)
892AC_SUBST(PLATFORM_TRIPLET)
doko@ubuntu.com55532312016-06-14 08:55:19 +0200893if test x$MULTIARCH != x; then
894 MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
895fi
896AC_SUBST(MULTIARCH_CPPFLAGS)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +0200897
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200898AC_MSG_CHECKING([for -Wl,--no-as-needed])
899save_LDFLAGS="$LDFLAGS"
900LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
901AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
902 [NO_AS_NEEDED="-Wl,--no-as-needed"
903 AC_MSG_RESULT([yes])],
904 [NO_AS_NEEDED=""
905 AC_MSG_RESULT([no])])
906LDFLAGS="$save_LDFLAGS"
907AC_SUBST(NO_AS_NEEDED)
908
909
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000910# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000911AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000912
Xavier de Gaye95750b12016-07-09 11:05:42 +0200913AC_MSG_CHECKING([for the Android API level])
914cat >> conftest.c <<EOF
915#ifdef __ANDROID__
916#include <android/api-level.h>
917__ANDROID_API__
918#else
919#error not Android
920#endif
921EOF
922
923if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
924 ANDROID_API_LEVEL=`grep -v '^#' conftest.out | grep -v '^ *$'`
925 AC_MSG_RESULT([$ANDROID_API_LEVEL])
926 AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.])
927else
928 AC_MSG_RESULT([not Android])
929fi
930rm -f conftest.c conftest.out
931
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000932# Check for unsupported systems
933case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000934atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000935 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
936 echo See README for details.
937 exit 1;;
938esac
939
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000940AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000941AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000942AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000943 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000944[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000945 case $withval in
946 no) EXEEXT=;;
947 yes) EXEEXT=.exe;;
948 *) EXEEXT=$withval;;
949 esac])
950AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000951
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000952# Test whether we're running on a non-case-sensitive system, in which
953# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000954AC_SUBST(BUILDEXEEXT)
955AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000956if test ! -d CaseSensitiveTestDir; then
957mkdir CaseSensitiveTestDir
958fi
959
960if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000961then
Jack Jansen1999ef42001-12-06 21:47:20 +0000962 AC_MSG_RESULT(yes)
963 BUILDEXEEXT=.exe
964else
965 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000966 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000967fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000968rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000969
Guido van Rossumdd997f71998-10-07 19:58:26 +0000970case $MACHDEP in
971bsdos*)
972 case $CC in
973 gcc) CC="$CC -D_HAVE_BSDI";;
974 esac;;
975esac
976
Guido van Rossum84561611997-08-21 00:08:11 +0000977case $ac_sys_system in
978hp*|HP*)
979 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000980 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000981 esac;;
982esac
983
Neil Schemenauer61c51152001-01-26 16:18:16 +0000984AC_SUBST(LIBRARY)
985AC_MSG_CHECKING(LIBRARY)
986if test -z "$LIBRARY"
987then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000988 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000989fi
990AC_MSG_RESULT($LIBRARY)
991
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000992# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000993# name of the library into which to insert object files). BLDLIBRARY is also
994# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
995# is blank as the main program is not linked directly against LDLIBRARY.
996# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
997# systems without shared libraries, LDLIBRARY is the same as LIBRARY
998# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
999# DLLLIBRARY is the shared (i.e., DLL) library.
Victor Stinner1b80b242016-04-12 22:34:58 +02001000#
Martin v. Löwis1142de32002-03-29 16:28:31 +00001001# RUNSHARED is used to run shared python without installed libraries
1002#
1003# INSTSONAME is the name of the shared library that will be use to install
1004# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001005#
1006# LDVERSION is the shared library version number, normally the Python version
1007# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001008AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +00001009AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001010AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001011AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001012AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001013AC_SUBST(INSTSONAME)
1014AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001015AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +00001016LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001017BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +00001018INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +00001019DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001020LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +00001021RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +00001022LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001023
Guido van Rossumfb842551997-08-06 23:42:07 +00001024# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +00001025# If CXX is set, and if it is needed to link a main function that was
1026# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
1027# python might then depend on the C++ runtime
Victor Stinner1b80b242016-04-12 22:34:58 +02001028# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001029# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +00001030AC_SUBST(LINKCC)
1031AC_MSG_CHECKING(LINKCC)
1032if test -z "$LINKCC"
1033then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001034 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +00001035 case $ac_sys_system in
1036 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +00001037 exp_extra="\"\""
1038 if test $ac_sys_release -ge 5 -o \
1039 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
1040 exp_extra="."
1041 fi
1042 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001043 QNX*)
1044 # qcc must be used because the other compilers do not
1045 # support -N.
1046 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +00001047 esac
1048fi
1049AC_MSG_RESULT($LINKCC)
1050
Tarek Ziadébe720e02009-05-09 11:55:12 +00001051# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
1052# make sure we default having it set to "no": this is used by
1053# distutils.unixccompiler to know if it should add --enable-new-dtags
1054# to linker command lines, and failing to detect GNU ld simply results
1055# in the same bahaviour as before.
1056AC_SUBST(GNULD)
1057AC_MSG_CHECKING(for GNU ld)
1058ac_prog=ld
1059if test "$GCC" = yes; then
1060 ac_prog=`$CC -print-prog-name=ld`
1061fi
1062case `"$ac_prog" -V 2>&1 < /dev/null` in
1063 *GNU*)
1064 GNULD=yes;;
1065 *)
1066 GNULD=no;;
1067esac
1068AC_MSG_RESULT($GNULD)
1069
Daniel Stutzbacha606faa2010-08-31 19:51:07 +00001070AC_C_INLINE
1071if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +00001072 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +00001073 AC_SUBST(USE_INLINE)
1074fi
1075
1076
Martin v. Löwis1142de32002-03-29 16:28:31 +00001077AC_MSG_CHECKING(for --enable-shared)
1078AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001079 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001080
Martin v. Löwis1142de32002-03-29 16:28:31 +00001081if test -z "$enable_shared"
Victor Stinner1b80b242016-04-12 22:34:58 +02001082then
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001083 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +00001084 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +00001085 enable_shared="yes";;
1086 *)
1087 enable_shared="no";;
1088 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001089fi
1090AC_MSG_RESULT($enable_shared)
1091
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001092AC_MSG_CHECKING(for --enable-profiling)
1093AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +02001094 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
1095if test "x$enable_profiling" = xyes; then
1096 ac_save_cc="$CC"
Benjamin Peterson615ea1a2013-03-26 08:55:37 -04001097 CC="$CC -pg"
doko@ubuntu.comba015832012-06-30 16:52:05 +02001098 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
1099 [],
1100 [enable_profiling=no])
1101 CC="$ac_save_cc"
1102else
1103 enable_profiling=no
1104fi
1105AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +00001106
doko@ubuntu.comba015832012-06-30 16:52:05 +02001107if test "x$enable_profiling" = xyes; then
1108 BASECFLAGS="-pg $BASECFLAGS"
1109 LDFLAGS="-pg $LDFLAGS"
1110fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001111
1112AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001113
Guido van Rossumb8552162001-09-05 14:58:11 +00001114# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
1115# library that we build, but we do not want to link against it (we
1116# will find it with a -framework option). For this reason there is an
1117# extra variable BLDLIBRARY against which Python and the extension
1118# modules are linked, BLDLIBRARY. This is normally the same as
1119# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001120if test "$enable_framework"
1121then
1122 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001123 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001124 BLDLIBRARY=''
1125else
1126 BLDLIBRARY='$(LDLIBRARY)'
Victor Stinner1b80b242016-04-12 22:34:58 +02001127fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001128
Martin v. Löwis1142de32002-03-29 16:28:31 +00001129# Other platforms follow
1130if test $enable_shared = "yes"; then
doko@python.org87421192013-01-26 11:39:31 +01001131 PY_ENABLE_SHARED=1
Mark Hammond8235ea12002-07-19 06:55:41 +00001132 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +00001133 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +00001134 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001135 LDLIBRARY='libpython$(LDVERSION).dll.a'
1136 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +00001137 ;;
1138 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001139 LDLIBRARY='libpython$(LDVERSION).so'
1140 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001141 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +00001142 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001143 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001144 then
1145 PY3LIBRARY=libpython3.so
1146 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001147 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +02001148 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001149 LDLIBRARY='libpython$(LDVERSION).so'
1150 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001151 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001152 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +00001153 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +00001154 then
1155 PY3LIBRARY=libpython3.so
1156 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +00001157 ;;
1158 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001159 case `uname -m` in
1160 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001161 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001162 ;;
1163 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001164 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +00001165 ;;
1166 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001167 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001168 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +00001169 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001170 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001171 LDLIBRARY='libpython$(LDVERSION).dylib'
1172 BLDLIBRARY='-L. -lpython$(LDVERSION)'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001173 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Georg Brandlb1441c72009-01-03 22:33:39 +00001174 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001175 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001176 LDLIBRARY='libpython$(LDVERSION).so'
doko@ubuntu.come5de66e2014-05-07 12:57:44 +02001177 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00001178 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +00001179
Martin v. Löwis1142de32002-03-29 16:28:31 +00001180 esac
Jason Tishler30765592003-09-04 11:04:06 +00001181else # shared is disabled
doko@python.org87421192013-01-26 11:39:31 +01001182 PY_ENABLE_SHARED=0
Jason Tishler30765592003-09-04 11:04:06 +00001183 case $ac_sys_system in
1184 CYGWIN*)
1185 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001186 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +00001187 ;;
1188 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +00001189fi
1190
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +02001191if test "$cross_compiling" = yes; then
1192 RUNSHARED=
1193fi
1194
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001195AC_MSG_RESULT($LDLIBRARY)
1196
Guido van Rossum627b2d71993-12-24 10:39:16 +00001197AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001198AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +02001199AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +00001200
Tarek Ziadé5662d3e2009-05-07 21:24:43 +00001201# tweak ARFLAGS only if the user didn't set it on the command line
1202AC_SUBST(ARFLAGS)
1203if test -z "$ARFLAGS"
1204then
1205 ARFLAGS="rc"
1206fi
1207
doko@ubuntu.com58844492012-06-30 18:25:32 +02001208AC_CHECK_TOOLS([READELF], [readelf], [:])
1209if test "$cross_compiling" = yes; then
1210 case "$READELF" in
1211 readelf|:)
1212 AC_MSG_ERROR([readelf for the host is required for cross builds])
1213 ;;
1214 esac
1215fi
1216AC_SUBST(READELF)
1217
Ralf Schmitt023f3a72011-05-31 17:10:03 -05001218
Neil Schemenauera42c8272001-03-31 00:01:55 +00001219case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +00001220bsdos*|hp*|HP*)
1221 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001222 if test -z "$INSTALL"
1223 then
1224 INSTALL="${srcdir}/install-sh -c"
1225 fi
1226esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001227AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001228AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001229
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001230# Not every filesystem supports hard links
1231AC_SUBST(LN)
1232if test -z "$LN" ; then
1233 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001234 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001235 *) LN=ln;;
1236 esac
1237fi
1238
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001239# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001240AC_SUBST(ABIFLAGS)
1241ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001242
Fred Drake9f715822001-07-11 06:27:00 +00001243# Check for --with-pydebug
1244AC_MSG_CHECKING(for --with-pydebug)
Victor Stinner1b80b242016-04-12 22:34:58 +02001245AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001246 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001247[
Fred Drake9f715822001-07-11 06:27:00 +00001248if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02001249then
1250 AC_DEFINE(Py_DEBUG, 1,
1251 [Define if you want to build an interpreter with many run-time checks.])
1252 AC_MSG_RESULT(yes);
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001253 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001254 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001255else AC_MSG_RESULT(no); Py_DEBUG='false'
1256fi],
1257[AC_MSG_RESULT(no)])
1258
Gregory P. Smithd82da9f2016-04-15 16:57:04 -07001259# Enable LTO flags
1260AC_SUBST(LTOFLAGS)
1261AC_MSG_CHECKING(for --with-lto)
1262AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
1263[
1264if test "$withval" != no
1265then
1266 Py_LTO='true'
1267 AC_MSG_RESULT(yes);
1268else
1269 Py_LTO='false'
1270 AC_MSG_RESULT(no);
1271fi],
1272[AC_MSG_RESULT(no)])
1273if test "$Py_LTO" = 'true' ; then
1274 case $CC in
1275 *clang*)
1276 # Any changes made here should be reflected in the GCC+Darwin case below
1277 LTOFLAGS="-flto"
1278 ;;
1279 *gcc*)
1280 case $ac_sys_system in
1281 Darwin*)
1282 LTOFLAGS="-flto"
1283 ;;
1284 *)
1285 LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
1286 ;;
1287 esac
1288 ;;
1289 esac
1290fi
1291
Brett Cannon7188a3e2015-09-18 15:13:44 -07001292# Enable PGO flags.
1293AC_SUBST(PGO_PROF_GEN_FLAG)
1294AC_SUBST(PGO_PROF_USE_FLAG)
1295AC_SUBST(LLVM_PROF_MERGER)
1296AC_SUBST(LLVM_PROF_FILE)
1297AC_SUBST(LLVM_PROF_ERR)
1298AC_SUBST(LLVM_PROF_FOUND)
1299AC_CHECK_PROG(LLVM_PROF_FOUND, llvm-profdata, found, not-found)
1300LLVM_PROF_ERR=no
1301case $CC in
1302 *clang*)
1303 # Any changes made here should be reflected in the GCC+Darwin case below
1304 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1305 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
1306 LLVM_PROF_MERGER="llvm-profdata merge -output=code.profclangd *.profclangr"
1307 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
1308 if test $LLVM_PROF_FOUND = not-found
1309 then
1310 LLVM_PROF_ERR=yes
1311 fi
1312 ;;
1313 *gcc*)
1314 case $ac_sys_system in
1315 Darwin*)
1316 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1317 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
1318 LLVM_PROF_MERGER="llvm-profdata merge -output=code.profclangd *.profclangr"
1319 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
1320 if test $LLVM_PROF_FOUND = not-found
1321 then
1322 LLVM_PROF_ERR=yes
1323 fi
1324 ;;
1325 *)
1326 PGO_PROF_GEN_FLAG="-fprofile-generate"
1327 PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
1328 LLVM_PROF_MERGER="true"
1329 LLVM_PROF_FILE=""
1330 ;;
1331 esac
1332 ;;
Zachary Ware5af85642015-12-21 12:09:17 -06001333 *icc*)
1334 PGO_PROF_GEN_FLAG="-prof-gen"
1335 PGO_PROF_USE_FLAG="-prof-use"
1336 LLVM_PROF_MERGER="true"
1337 LLVM_PROF_FILE=""
1338 ;;
Brett Cannon7188a3e2015-09-18 15:13:44 -07001339esac
1340
Skip Montanarodecc6a42003-01-01 20:07:49 +00001341# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1342# merged with this chunk of code?
1343
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001344# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001345# ------------------------
1346# (The following bit of code is complicated enough - please keep things
1347# indented properly. Just pretend you're editing Python code. ;-)
1348
1349# There are two parallel sets of case statements below, one that checks to
1350# see if OPT was set and one that does BASECFLAGS setting based upon
1351# compiler and platform. BASECFLAGS tweaks need to be made even if the
1352# user set OPT.
1353
1354# tweak OPT based on compiler and platform, only if the user didn't set
1355# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001356AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001357if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001358then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001359 case $GCC in
1360 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001361 if test "$CC" != 'g++' ; then
1362 STRICT_PROTO="-Wstrict-prototypes"
1363 fi
Christian Heimes38053212007-12-14 01:24:44 +00001364 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1365 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1366 WRAP="-fwrapv"
1367 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001368
1369 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +01001370 case $CC in
1371 *clang*) WRAP="-fwrapv"
1372 ;;
1373 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001374
Skip Montanarodecc6a42003-01-01 20:07:49 +00001375 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001376 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001377 if test "$Py_DEBUG" = 'true' ; then
1378 # Optimization messes up debuggers, so turn it off for
1379 # debug builds.
Antoine Pitrou3d6c7842015-02-11 19:39:16 +01001380 if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
1381 OPT="-g -Og -Wall $STRICT_PROTO"
1382 else
1383 OPT="-g -O0 -Wall $STRICT_PROTO"
1384 fi
Fred Drake9f715822001-07-11 06:27:00 +00001385 else
Christian Heimes38053212007-12-14 01:24:44 +00001386 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001387 fi
1388 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001389 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001390 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001391 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001392 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001393 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001394 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1395 ;;
1396 esac
Fred Drake9f715822001-07-11 06:27:00 +00001397 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001398
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001399 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001400 OPT="-O"
1401 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001402 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001403fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001404
Skip Montanarodecc6a42003-01-01 20:07:49 +00001405AC_SUBST(BASECFLAGS)
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001406AC_SUBST(CFLAGS_NODIST)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001407
1408# The -arch flags for universal builds on OSX
1409UNIVERSAL_ARCH_FLAGS=
1410AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1411
Skip Montanarodecc6a42003-01-01 20:07:49 +00001412# tweak BASECFLAGS based on compiler and platform
1413case $GCC in
1414yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001415 # Python doesn't violate C99 aliasing rules, but older versions of
1416 # GCC produce warnings for legal Python code. Enable
1417 # -fno-strict-aliasing on versions of GCC that support but produce
1418 # warnings. See Issue3326
1419 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001420 ac_save_cc="$CC"
1421 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001422 save_CFLAGS="$CFLAGS"
1423 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001424 AC_COMPILE_IFELSE(
1425 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001426 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001427 ],[
1428 CC="$ac_save_cc -fstrict-aliasing"
1429 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1430 AC_COMPILE_IFELSE(
1431 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001432 AC_LANG_PROGRAM([[void f(int **x) {}]],
1433 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001434 ],[
1435 ac_cv_no_strict_aliasing=no
1436 ],[
1437 ac_cv_no_strict_aliasing=yes
1438 ])
1439 ],[
1440 ac_cv_no_strict_aliasing=no
1441 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001442 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001443 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001444 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1445 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001446 then
1447 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1448 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001449
Zachary Ware5af85642015-12-21 12:09:17 -06001450 # ICC doesn't recognize the option, but only emits a warning
1451 ## XXX does it emit an unused result warning and can it be disabled?
1452 case "$CC" in
1453 *icc*)
1454 ac_cv_disable_unused_result_warning=no
1455 ;;
1456 *)
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001457 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1458 ac_save_cc="$CC"
1459 CC="$CC -Wunused-result -Werror"
1460 save_CFLAGS="$CFLAGS"
1461 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1462 AC_COMPILE_IFELSE(
1463 [
1464 AC_LANG_PROGRAM([[]], [[]])
1465 ],[
1466 ac_cv_disable_unused_result_warning=yes
1467 ],[
1468 ac_cv_disable_unused_result_warning=no
1469 ]))
1470 CFLAGS="$save_CFLAGS"
1471 CC="$ac_save_cc"
1472 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
Zachary Ware5af85642015-12-21 12:09:17 -06001473 ;;
1474 esac
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001475
1476 if test $ac_cv_disable_unused_result_warning = yes
1477 then
1478 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
1479 fi
1480
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001481 AC_MSG_CHECKING(for -Werror=declaration-after-statement)
1482 ac_save_cc="$CC"
1483 CC="$CC -Werror=declaration-after-statement"
1484 save_CFLAGS="$CFLAGS"
1485 AC_CACHE_VAL(ac_cv_declaration_after_statement_warning,
1486 AC_COMPILE_IFELSE(
1487 [
1488 AC_LANG_PROGRAM([[]], [[]])
1489 ],[
1490 ac_cv_declaration_after_statement_warning=yes
1491 ],[
1492 ac_cv_declaration_after_statement_warning=no
1493 ]))
1494 CFLAGS="$save_CFLAGS"
1495 CC="$ac_save_cc"
1496 AC_MSG_RESULT($ac_cv_declaration_after_statement_warning)
1497
1498 if test $ac_cv_declaration_after_statement_warning = yes
1499 then
Benjamin Petersonacb8c522014-08-09 20:01:49 -07001500 CFLAGS_NODIST="$CFLAGS_NODIST -Werror=declaration-after-statement"
Benjamin Petersoncc00e012013-05-20 08:22:04 -07001501 fi
1502
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001503 AC_MSG_CHECKING(if we can turn on $CC mixed sign comparison warning)
1504 ac_save_cc="$CC"
1505 CC="$CC -Wsign-compare"
1506 save_CFLAGS="$CFLAGS"
1507 AC_CACHE_VAL(ac_cv_enable_sign_compare_warning,
1508 AC_COMPILE_IFELSE(
1509 [
1510 AC_LANG_PROGRAM([[]], [[]])
1511 ],[
1512 ac_cv_enable_sign_compare_warning=yes
1513 ],[
1514 ac_cv_enable_sign_compare_warning=no
1515 ]))
1516 CFLAGS="$save_CFLAGS"
1517 CC="$ac_save_cc"
1518 AC_MSG_RESULT($ac_cv_enable_sign_compare_warning)
1519
1520 if test $ac_cv_enable_sign_compare_warning = yes
1521 then
1522 BASECFLAGS="$BASECFLAGS -Wsign-compare"
1523 fi
1524
1525 AC_MSG_CHECKING(if we can turn on $CC unreachable code warning)
1526 ac_save_cc="$CC"
1527 CC="$CC -Wunreachable-code"
1528 save_CFLAGS="$CFLAGS"
1529 AC_CACHE_VAL(ac_cv_enable_unreachable_code_warning,
1530 AC_COMPILE_IFELSE(
1531 [
1532 AC_LANG_PROGRAM([[]], [[]])
1533 ],[
1534 ac_cv_enable_unreachable_code_warning=yes
1535 ],[
1536 ac_cv_enable_unreachable_code_warning=no
1537 ]))
1538 CFLAGS="$save_CFLAGS"
1539 CC="$ac_save_cc"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001540
1541 # Don't enable unreachable code warning in debug mode, since it usually
1542 # results in non-standard code paths.
Ned Deilybec699e2016-03-08 00:28:37 -05001543 # Issue #24324: Unfortunately, the unreachable code warning does not work
1544 # correctly on gcc and has been silently removed from the compiler.
1545 # It is supported on clang but on OS X systems gcc may be an alias
1546 # for clang. Try to determine if the compiler is not really gcc and,
1547 # if so, only then enable the warning.
1548 if test $ac_cv_enable_unreachable_code_warning = yes && \
1549 test "$Py_DEBUG" != "true" && \
1550 test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`"
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001551 then
1552 BASECFLAGS="$BASECFLAGS -Wunreachable-code"
Ned Deilybec699e2016-03-08 00:28:37 -05001553 else
1554 ac_cv_enable_unreachable_code_warning=no
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001555 fi
Ned Deilybec699e2016-03-08 00:28:37 -05001556 AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning)
Charles-François Natali7f9cc932014-08-01 21:57:49 +01001557
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001558 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1559 # support. Without this, treatment of subnormals doesn't follow
1560 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001561 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001562 alpha*)
1563 BASECFLAGS="$BASECFLAGS -mieee"
1564 ;;
1565 esac
1566
Skip Montanarodecc6a42003-01-01 20:07:49 +00001567 case $ac_sys_system in
1568 SCO_SV*)
1569 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1570 ;;
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001571
Ned Deily87adb6e2013-10-18 21:09:56 -07001572 # is there any other compiler on Darwin besides gcc?
1573 Darwin*)
1574 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1575 # used to be here, but non-Apple gcc doesn't accept them.
1576 if test "${CC}" = gcc
1577 then
1578 AC_MSG_CHECKING(which compiler should be used)
1579 case "${UNIVERSALSDK}" in
1580 */MacOSX10.4u.sdk)
1581 # Build using 10.4 SDK, force usage of gcc when the
1582 # compiler is gcc, otherwise the user will get very
1583 # confusing error messages when building on OSX 10.6
1584 CC=gcc-4.0
1585 CPP=cpp-4.0
1586 ;;
1587 esac
1588 AC_MSG_RESULT($CC)
1589 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001590
Ned Deily87adb6e2013-10-18 21:09:56 -07001591 if test "${enable_universalsdk}"
1592 then
1593 case "$UNIVERSAL_ARCHS" in
1594 32-bit)
1595 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1596 LIPO_32BIT_FLAGS=""
1597 ARCH_RUN_32BIT=""
1598 ;;
1599 64-bit)
1600 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1601 LIPO_32BIT_FLAGS=""
1602 ARCH_RUN_32BIT="true"
1603 ;;
1604 all)
1605 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1606 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1607 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1608 ;;
1609 intel)
1610 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1611 LIPO_32BIT_FLAGS="-extract i386"
1612 ARCH_RUN_32BIT="/usr/bin/arch -i386"
1613 ;;
1614 intel-32)
1615 UNIVERSAL_ARCH_FLAGS="-arch i386"
1616 LIPO_32BIT_FLAGS=""
1617 ARCH_RUN_32BIT=""
1618 ;;
1619 3-way)
1620 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1621 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
1622 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
1623 ;;
1624 *)
1625 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1626 ;;
1627 esac
Georg Brandlfcaf9102008-07-16 02:17:56 +00001628
Ned Deily87adb6e2013-10-18 21:09:56 -07001629 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1630 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1631 if test "${UNIVERSALSDK}" != "/"
1632 then
1633 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1634 fi
1635 fi
Georg Brandlfcaf9102008-07-16 02:17:56 +00001636
Ned Deily87adb6e2013-10-18 21:09:56 -07001637 # Calculate an appropriate deployment target for this build:
1638 # The deployment target value is used explicitly to enable certain
1639 # features are enabled (such as builtin libedit support for readline)
1640 # through the use of Apple's Availabiliy Macros and is used as a
1641 # component of the string returned by distutils.get_platform().
1642 #
1643 # Use the value from:
1644 # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
1645 # 2. the operating system version of the build machine if >= 10.6
1646 # 3. If running on OS X 10.3 through 10.5, use the legacy tests
1647 # below to pick either 10.3, 10.4, or 10.5 as the target.
1648 # 4. If we are running on OS X 10.2 or earlier, good luck!
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001649
Ned Deily87adb6e2013-10-18 21:09:56 -07001650 AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
Ned Deily36820b62014-06-25 13:44:22 -07001651 cur_target_major=`sw_vers -productVersion | \
1652 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1653 cur_target_minor=`sw_vers -productVersion | \
1654 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1655 cur_target="${cur_target_major}.${cur_target_minor}"
1656 if test ${cur_target_major} -eq 10 && \
1657 test ${cur_target_minor} -ge 3 && \
1658 test ${cur_target_minor} -le 5
Ned Deily87adb6e2013-10-18 21:09:56 -07001659 then
Ned Deily36820b62014-06-25 13:44:22 -07001660 # OS X 10.3 through 10.5
Ned Deily87adb6e2013-10-18 21:09:56 -07001661 cur_target=10.3
1662 if test ${enable_universalsdk}
1663 then
1664 case "$UNIVERSAL_ARCHS" in
1665 all|3-way|intel|64-bit)
1666 # These configurations were first supported in 10.5
1667 cur_target='10.5'
1668 ;;
1669 esac
1670 else
1671 if test `/usr/bin/arch` = "i386"
1672 then
1673 # 10.4 was the first release to support Intel archs
1674 cur_target="10.4"
1675 fi
1676 fi
1677 fi
1678 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001679
Ned Deily87adb6e2013-10-18 21:09:56 -07001680 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1681 # environment with a value that is the same as what we'll use
1682 # in the Makefile to ensure that we'll get the same compiler
1683 # environment during configure and build time.
1684 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1685 export MACOSX_DEPLOYMENT_TARGET
1686 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1687 AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001688
Ned Deily87adb6e2013-10-18 21:09:56 -07001689 # end of Darwin* tests
1690 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001691 esac
1692 ;;
1693
1694*)
1695 case $ac_sys_system in
1696 OpenUNIX*|UnixWare*)
1697 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1698 ;;
1699 SCO_SV*)
1700 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1701 ;;
1702 esac
1703 ;;
1704esac
1705
Zachary Ware5af85642015-12-21 12:09:17 -06001706# ICC needs -fp-model strict or floats behave badly
1707case "$CC" in
1708*icc*)
1709 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
1710 ;;
1711esac
1712
Fred Drakee1ceaa02001-12-04 20:55:47 +00001713if test "$Py_DEBUG" = 'true'; then
1714 :
1715else
1716 OPT="-DNDEBUG $OPT"
1717fi
1718
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001719if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001720then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001721 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001722fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001723
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001724# On some compilers, pthreads are available without further options
1725# (e.g. MacOS X). On some of these systems, the compiler will not
1726# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1727# So we have to see first whether pthreads are available without
1728# options before we can check whether -Kpthread improves anything.
1729AC_MSG_CHECKING(whether pthreads are available without options)
1730AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001731[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001732#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001733#include <pthread.h>
1734
1735void* routine(void* p){return NULL;}
1736
1737int main(){
1738 pthread_t p;
1739 if(pthread_create(&p,NULL,routine,NULL)!=0)
1740 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001741 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001742 return 0;
1743}
Matthias Kloseb159a552010-04-25 21:00:44 +00001744]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001745 ac_cv_pthread_is_default=yes
1746 ac_cv_kthread=no
1747 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001748],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001749])
1750AC_MSG_RESULT($ac_cv_pthread_is_default)
1751
1752
Victor Stinner1b80b242016-04-12 22:34:58 +02001753if test $ac_cv_pthread_is_default = yes
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001754then
1755 ac_cv_kpthread=no
1756else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001757# -Kpthread, if available, provides the right #defines
1758# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001759# Some compilers won't report that they do not support -Kpthread,
1760# so we need to run a program to see whether it really made the
1761# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001762AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1763AC_CACHE_VAL(ac_cv_kpthread,
1764[ac_save_cc="$CC"
1765CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001766AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001767#include <stdio.h>
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001768#include <pthread.h>
1769
1770void* routine(void* p){return NULL;}
1771
1772int main(){
1773 pthread_t p;
1774 if(pthread_create(&p,NULL,routine,NULL)!=0)
1775 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001776 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001777 return 0;
1778}
Matthias Kloseb159a552010-04-25 21:00:44 +00001779]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001780CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001781AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001782fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001783
Skip Montanarod8d39a02003-07-10 20:44:10 +00001784if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001785then
1786# -Kthread, if available, provides the right #defines
1787# and linker options to make pthread_create available
1788# Some compilers won't report that they do not support -Kthread,
1789# so we need to run a program to see whether it really made the
1790# function available.
1791AC_MSG_CHECKING(whether $CC accepts -Kthread)
1792AC_CACHE_VAL(ac_cv_kthread,
1793[ac_save_cc="$CC"
1794CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001795AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001796#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001797#include <pthread.h>
1798
1799void* routine(void* p){return NULL;}
1800
1801int main(){
1802 pthread_t p;
1803 if(pthread_create(&p,NULL,routine,NULL)!=0)
1804 return 1;
1805 (void)pthread_detach(p);
1806 return 0;
1807}
Matthias Kloseb159a552010-04-25 21:00:44 +00001808]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001809CC="$ac_save_cc"])
1810AC_MSG_RESULT($ac_cv_kthread)
1811fi
1812
Skip Montanarod8d39a02003-07-10 20:44:10 +00001813if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001814then
1815# -pthread, if available, provides the right #defines
1816# and linker options to make pthread_create available
1817# Some compilers won't report that they do not support -pthread,
1818# so we need to run a program to see whether it really made the
1819# function available.
1820AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.org7981f202013-01-25 15:33:25 +01001821AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001822[ac_save_cc="$CC"
1823CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001824AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah7dba5942012-11-22 22:49:11 +01001825#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001826#include <pthread.h>
1827
1828void* routine(void* p){return NULL;}
1829
1830int main(){
1831 pthread_t p;
1832 if(pthread_create(&p,NULL,routine,NULL)!=0)
1833 return 1;
1834 (void)pthread_detach(p);
1835 return 0;
1836}
Matthias Kloseb159a552010-04-25 21:00:44 +00001837]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001838CC="$ac_save_cc"])
1839AC_MSG_RESULT($ac_cv_pthread)
1840fi
1841
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001842# If we have set a CC compiler flag for thread support then
1843# check if it works for CXX, too.
1844ac_cv_cxx_thread=no
1845if test ! -z "$CXX"
1846then
1847AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1848ac_save_cxx="$CXX"
1849
1850if test "$ac_cv_kpthread" = "yes"
1851then
Victor Stinner1b80b242016-04-12 22:34:58 +02001852 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001853 ac_cv_cxx_thread=yes
1854elif test "$ac_cv_kthread" = "yes"
1855then
1856 CXX="$CXX -Kthread"
1857 ac_cv_cxx_thread=yes
1858elif test "$ac_cv_pthread" = "yes"
Victor Stinner1b80b242016-04-12 22:34:58 +02001859then
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001860 CXX="$CXX -pthread"
1861 ac_cv_cxx_thread=yes
1862fi
1863
1864if test $ac_cv_cxx_thread = yes
1865then
1866 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1867 $CXX -c conftest.$ac_ext 2>&5
1868 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1869 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1870 then
1871 ac_cv_cxx_thread=yes
1872 else
1873 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001874 fi
1875 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001876fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001877AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001878fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001879CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001880
Fred Drakece81d592000-07-09 14:39:29 +00001881dnl # check for ANSI or K&R ("traditional") preprocessor
1882dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001883dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001884dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1885dnl int foo;
1886dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001887dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001888dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001889
Guido van Rossum627b2d71993-12-24 10:39:16 +00001890# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001891AC_HEADER_STDC
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001892AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001893fcntl.h grp.h \
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02001894ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
Benjamin Peterson94b580d2011-08-02 17:30:04 -05001895sched.h shadow.h signal.h stdint.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001896unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001897poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001898sys/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 +01001899sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001900sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001901sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001902sys/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 -07001903libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Victor Stinnerdddf4842016-06-07 11:21:42 +02001904bluetooth/bluetooth.h linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \
Christian Heimes985ecdc2013-11-20 11:46:18 +01001905sys/endian.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001906AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001907AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001908
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001909# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
1910AC_CHECK_HEADERS([net/if.h], [], [],
1911[#include <stdio.h>
1912#ifdef STDC_HEADERS
1913# include <stdlib.h>
1914# include <stddef.h>
1915#else
1916# ifdef HAVE_STDLIB_H
1917# include <stdlib.h>
1918# endif
1919#endif
1920#ifdef HAVE_SYS_SOCKET_H
1921# include <sys/socket.h>
1922#endif
1923])
1924
Martin v. Löwis11017b12006-01-14 18:12:57 +00001925# On Linux, netlink.h requires asm/types.h
1926AC_CHECK_HEADERS(linux/netlink.h,,,[
1927#ifdef HAVE_ASM_TYPES_H
1928#include <asm/types.h>
1929#endif
1930#ifdef HAVE_SYS_SOCKET_H
1931#include <sys/socket.h>
1932#endif
1933])
1934
Charles-François Natali47413c12011-10-06 19:47:44 +02001935# On Linux, can.h and can/raw.h require sys/socket.h
Charles-François Natali773e42d2013-02-05 19:42:01 +01001936AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
Charles-François Natali47413c12011-10-06 19:47:44 +02001937#ifdef HAVE_SYS_SOCKET_H
1938#include <sys/socket.h>
1939#endif
1940])
1941
Guido van Rossum627b2d71993-12-24 10:39:16 +00001942# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001943was_it_defined=no
1944AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001945AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1946 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1947])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001948AC_MSG_RESULT($was_it_defined)
1949
Neal Norwitz11690112002-07-30 01:08:28 +00001950AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001951AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1952#if defined(MAJOR_IN_MKDEV)
1953#include <sys/mkdev.h>
1954#elif defined(MAJOR_IN_SYSMACROS)
1955#include <sys/sysmacros.h>
1956#else
1957#include <sys/types.h>
1958#endif
1959]], [[
1960 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001961],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001962AC_MSG_RESULT($ac_cv_has_makedev)
1963if test "$ac_cv_has_makedev" = "yes"; then
1964 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1965fi
1966
Christian Heimes985ecdc2013-11-20 11:46:18 +01001967# byte swapping
1968AC_MSG_CHECKING(for le64toh)
1969AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1970#ifdef HAVE_ENDIAN_H
1971#include <endian.h>
1972#elif defined(HAVE_SYS_ENDIAN_H)
1973#include <sys/endian.h>
1974#endif
1975]], [[
1976 le64toh(1) ]])
1977],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
1978AC_MSG_RESULT($ac_cv_has_le64toh)
1979if test "$ac_cv_has_le64toh" = "yes"; then
1980 AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
1981fi
1982
Martin v. Löwis399a6892002-10-04 10:22:02 +00001983# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1984# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1985# defined, but the compiler does not support pragma redefine_extname,
1986# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1987# structures (such as rlimit64) without declaring them. As a
1988# work-around, disable LFS on such configurations
1989
1990use_lfs=yes
1991AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001992AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001993#define _LARGEFILE_SOURCE 1
1994#define _FILE_OFFSET_BITS 64
1995#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001996]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001997AC_MSG_RESULT($sol_lfs_bug)
1998if test "$sol_lfs_bug" = "yes"; then
1999 use_lfs=no
2000fi
2001
doko@ubuntu.com006a56c2016-06-14 10:15:25 +02002002# Don't use largefile support for GNU/Hurd
2003case $ac_sys_system in GNU*)
2004 use_lfs=no
2005esac
2006
Martin v. Löwis399a6892002-10-04 10:22:02 +00002007if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00002008# Two defines needed to enable largefile support on various platforms
2009# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00002010case $ac_sys_system/$ac_sys_release in
2011AIX*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002012 AC_DEFINE(_LARGE_FILES, 1,
Georg Brandl216e4042011-02-19 08:58:23 +00002013 [This must be defined on AIX systems to enable large file support.])
2014 ;;
2015esac
Victor Stinner1b80b242016-04-12 22:34:58 +02002016AC_DEFINE(_LARGEFILE_SOURCE, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002017[This must be defined on some systems to enable large file support.])
2018AC_DEFINE(_FILE_OFFSET_BITS, 64,
2019[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00002020fi
Guido van Rossum810cc512001-09-09 23:51:39 +00002021
Guido van Rossum300fda71996-08-19 21:58:16 +00002022# Add some code to confdefs.h so that the test for off_t works on SCO
2023cat >> confdefs.h <<\EOF
2024#if defined(SCO_DS)
2025#undef _OFF_T
2026#endif
2027EOF
2028
Guido van Rossumef2255b2000-03-10 22:30:29 +00002029# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002030AC_TYPE_MODE_T
2031AC_TYPE_OFF_T
2032AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00002033AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002034AC_TYPE_SIZE_T
2035AC_TYPE_UID_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002036
2037# There are two separate checks for each of the exact-width integer types we
2038# need. First we check whether the type is available using the usual
2039# AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
2040# and <stdint.h> where available). We then also use the special type checks of
2041# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
2042# directly, #define's uint32_t to be a suitable type.
2043
2044AC_CHECK_TYPE(uint32_t,
2045 AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00002046AC_TYPE_UINT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002047
2048AC_CHECK_TYPE(uint64_t,
2049 AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00002050AC_TYPE_UINT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002051
2052AC_CHECK_TYPE(int32_t,
2053 AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00002054AC_TYPE_INT32_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002055
2056AC_CHECK_TYPE(int64_t,
2057 AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
Mark Dickinsonbd792642009-03-18 20:06:12 +00002058AC_TYPE_INT64_T
Mark Dickinson983bc162012-12-02 12:11:38 +00002059
Christian Heimes400adb02008-02-01 08:12:03 +00002060AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002061 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01002062AC_CHECK_TYPE(__uint128_t,
2063 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002064
Guido van Rossumef2255b2000-03-10 22:30:29 +00002065# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00002066# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00002067AC_CHECK_SIZEOF(int, 4)
2068AC_CHECK_SIZEOF(long, 4)
2069AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00002070AC_CHECK_SIZEOF(short, 2)
2071AC_CHECK_SIZEOF(float, 4)
2072AC_CHECK_SIZEOF(double, 8)
2073AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00002074AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00002075AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00002076
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002077AC_MSG_CHECKING(for long long support)
2078have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002079AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Victor Stinner1b80b242016-04-12 22:34:58 +02002080 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002081 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002082],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002083AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00002084if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00002085AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002086fi
2087
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002088AC_MSG_CHECKING(for long double support)
2089have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002090AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Victor Stinner1b80b242016-04-12 22:34:58 +02002091 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002092 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002093],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00002094AC_MSG_RESULT($have_long_double)
2095if test "$have_long_double" = yes ; then
2096AC_CHECK_SIZEOF(long double, 16)
2097fi
2098
2099
Thomas Woutersb2137042007-02-01 18:02:27 +00002100AC_MSG_CHECKING(for _Bool support)
2101have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002102AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Victor Stinner1b80b242016-04-12 22:34:58 +02002103 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
Thomas Woutersb2137042007-02-01 18:02:27 +00002104 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00002105],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00002106AC_MSG_RESULT($have_c99_bool)
2107if test "$have_c99_bool" = yes ; then
2108AC_CHECK_SIZEOF(_Bool, 1)
2109fi
2110
Victor Stinner1b80b242016-04-12 22:34:58 +02002111AC_CHECK_TYPES(uintptr_t,
2112 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Thomas Wouters89f507f2006-12-13 04:49:30 +00002113 [], [#ifdef HAVE_STDINT_H
2114 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00002115 #endif
2116 #ifdef HAVE_INTTYPES_H
2117 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00002118 #endif])
2119
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002120AC_CHECK_SIZEOF(off_t, [], [
2121#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002122#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002123#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002124])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002125
2126AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00002127if test "$have_long_long" = yes
2128then
2129if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00002130 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Victor Stinner1b80b242016-04-12 22:34:58 +02002131 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002132 [Defined to enable large file support when an off_t is bigger than a long
2133 and long long is available and at least as big as an off_t. You may need
2134 to add some flags for configuration and compilation to enable this mode.
2135 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002136 AC_MSG_RESULT(yes)
2137else
2138 AC_MSG_RESULT(no)
2139fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00002140else
2141 AC_MSG_RESULT(no)
2142fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002143
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002144AC_CHECK_SIZEOF(time_t, [], [
2145#ifdef HAVE_SYS_TYPES_H
2146#include <sys/types.h>
2147#endif
2148#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00002149#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002150#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00002151])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002152
Trent Mick635f6fb2000-08-23 21:33:05 +00002153# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002154ac_save_cc="$CC"
2155if test "$ac_cv_kpthread" = "yes"
2156then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002157elif test "$ac_cv_kthread" = "yes"
2158then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002159elif test "$ac_cv_pthread" = "yes"
2160then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002161fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002162
Trent Mick635f6fb2000-08-23 21:33:05 +00002163AC_MSG_CHECKING(for pthread_t)
2164have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002165AC_COMPILE_IFELSE([
2166 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
2167],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00002168AC_MSG_RESULT($have_pthread_t)
2169if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002170 AC_CHECK_SIZEOF(pthread_t, [], [
2171#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002172#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00002173#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00002174 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00002175fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00002176CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00002177
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002178AC_SUBST(OTHER_LIBTOOL_OPT)
2179case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002180 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002181 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
2182 ;;
2183 Darwin/*)
2184 OTHER_LIBTOOL_OPT=""
2185 ;;
2186esac
2187
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002188
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002189AC_SUBST(LIBTOOL_CRUFT)
2190case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02002191 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00002192 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
2193 if test "${enable_universalsdk}"; then
2194 :
2195 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002196 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00002197 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00002198 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002199 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00002200 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00002201 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002202 if test ${gcc_version} '<' 4.0
2203 then
2204 LIBTOOL_CRUFT="-lcc_dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002205 else
Bob Ippolito7026a0a2005-03-28 23:23:47 +00002206 LIBTOOL_CRUFT=""
2207 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00002208 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002209 #include <unistd.h>
2210 int main(int argc, char*argv[])
2211 {
2212 if (sizeof(long) == 4) {
2213 return 0;
2214 } else {
2215 return 1;
2216 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00002217 }
Matthias Kloseb159a552010-04-25 21:00:44 +00002218 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Victor Stinner1b80b242016-04-12 22:34:58 +02002219
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002220 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002221 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002222 i386)
2223 MACOSX_DEFAULT_ARCH="i386"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002224 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002225 ppc)
2226 MACOSX_DEFAULT_ARCH="ppc"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002227 ;;
2228 *)
2229 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2230 ;;
2231 esac
2232 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00002233 case `/usr/bin/arch` in
Victor Stinner1b80b242016-04-12 22:34:58 +02002234 i386)
2235 MACOSX_DEFAULT_ARCH="x86_64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002236 ;;
Victor Stinner1b80b242016-04-12 22:34:58 +02002237 ppc)
2238 MACOSX_DEFAULT_ARCH="ppc64"
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002239 ;;
2240 *)
2241 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2242 ;;
2243 esac
2244
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00002245 fi
2246
2247 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00002248 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002249 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002250esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002251AC_MSG_CHECKING(for --enable-framework)
2252if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002253then
Skip Montanarodecc6a42003-01-01 20:07:49 +00002254 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Victor Stinner1b80b242016-04-12 22:34:58 +02002255 # -F. is needed to allow linking to the framework while
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002256 # in the build location.
Victor Stinner1b80b242016-04-12 22:34:58 +02002257 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002258 [Define if you want to produce an OpenStep/Rhapsody framework
2259 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002260 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00002261 if test $enable_shared = "yes"
2262 then
2263 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
2264 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002265else
2266 AC_MSG_RESULT(no)
2267fi
2268
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002269AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002270case $ac_sys_system/$ac_sys_release in
2271 Darwin/*)
Victor Stinner1b80b242016-04-12 22:34:58 +02002272 AC_DEFINE(WITH_DYLD, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002273 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
2274 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
2275 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002276 AC_MSG_RESULT(always on for Darwin)
2277 ;;
2278 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002279 AC_MSG_RESULT(no)
2280 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002281esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002282
Guido van Rossumac405f61994-09-12 10:56:06 +00002283# Set info about shared libraries.
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002284AC_SUBST(SHLIB_SUFFIX)
Guido van Rossumac405f61994-09-12 10:56:06 +00002285AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002286AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002287AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002288AC_SUBST(CCSHARED)
2289AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00002290
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07002291# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
2292# -- usually .so, .sl on HP-UX, .dll on Cygwin
2293AC_MSG_CHECKING(the extension of shared libraries)
2294if test -z "$SHLIB_SUFFIX"; then
2295 case $ac_sys_system in
2296 hp*|HP*)
2297 case `uname -m` in
2298 ia64) SHLIB_SUFFIX=.so;;
2299 *) SHLIB_SUFFIX=.sl;;
2300 esac
2301 ;;
2302 CYGWIN*) SHLIB_SUFFIX=.dll;;
2303 *) SHLIB_SUFFIX=.so;;
2304 esac
2305fi
2306AC_MSG_RESULT($SHLIB_SUFFIX)
2307
Guido van Rossumac405f61994-09-12 10:56:06 +00002308# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00002309# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002310# (Shared libraries in this instance are shared modules to be loaded into
2311# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002312AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002313if test -z "$LDSHARED"
2314then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002315 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002316 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00002317 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00002318 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002319 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002320 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00002321 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Victor Stinner1b80b242016-04-12 22:34:58 +02002322 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002323 if test "$GCC" = "yes" ; then
2324 LDSHARED='$(CC) -shared'
2325 LDCXXSHARED='$(CXX) -shared'
2326 else
2327 LDSHARED='$(CC) -G'
2328 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00002329 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002330 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002331 if test "$GCC" = "yes" ; then
2332 LDSHARED='$(CC) -shared'
2333 LDCXXSHARED='$(CXX) -shared'
2334 else
2335 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00002336 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00002337 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002338 LDSHARED='$(CC) -bundle'
2339 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002340 if test "$enable_framework" ; then
2341 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002342 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2343 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002344 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002345 else
2346 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002347 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002348 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002349 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002350 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002351 LDSHARED='$(CC) -bundle'
2352 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002353 if test "$enable_framework" ; then
2354 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002355 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2356 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002357 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002358 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002359 # No framework, use the Python app as bundle-loader
2360 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002361 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002362 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002363 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002364 Darwin/*)
2365 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2366 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00002367
Ned Deily36820b62014-06-25 13:44:22 -07002368 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2369 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2370 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2371 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2372 if test ${dep_target_major} -eq 10 && \
2373 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002374 then
Ned Deily36820b62014-06-25 13:44:22 -07002375 # building for OS X 10.0 through 10.2
Antoine Pitroud4958c22010-10-13 17:01:10 +00002376 LDSHARED='$(CC) -bundle'
2377 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002378 if test "$enable_framework" ; then
2379 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002380 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2381 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002382 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002383 else
2384 # No framework, use the Python app as bundle-loader
2385 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2386 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002387 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002388 fi
Ned Deily36820b62014-06-25 13:44:22 -07002389 else
2390 # building for OS X 10.3 and later
2391 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2392 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2393 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002394 fi
2395 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002396 Linux*|GNU*|QNX*)
2397 LDSHARED='$(CC) -shared'
2398 LDCXXSHARED='$(CXX) -shared';;
2399 BSD/OS*/4*)
2400 LDSHARED="gcc -shared"
2401 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002402 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002403 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002404 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002405 LDSHARED='$(CC) -shared'
2406 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002407 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00002408 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002409 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002410 OpenBSD*)
2411 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2412 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00002413 LDSHARED='$(CC) -shared $(CCSHARED)'
2414 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002415 else
2416 case `uname -r` in
2417 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2418 LDSHARED="ld -Bshareable ${LDFLAGS}"
2419 ;;
2420 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00002421 LDSHARED='$(CC) -shared $(CCSHARED)'
2422 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00002423 ;;
2424 esac
2425 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002426 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00002427 LDSHARED='$(CC) -shared'
2428 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002429 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002430 if test "$GCC" = "yes" ; then
2431 LDSHARED='$(CC) -shared'
2432 LDCXXSHARED='$(CXX) -shared'
2433 else
2434 LDSHARED='$(CC) -G'
2435 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002436 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002437 SCO_SV*)
2438 LDSHARED='$(CC) -Wl,-G,-Bexport'
2439 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2440 CYGWIN*)
2441 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2442 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002443 *) LDSHARED="ld";;
2444 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002445fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002446AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00002447LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002448BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002449# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002450# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002451AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002452if test -z "$CCSHARED"
2453then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002454 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002455 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002456 then CCSHARED="-fPIC";
2457 elif test `uname -p` = sparc;
2458 then CCSHARED="-xcode=pic32";
2459 else CCSHARED="-Kpic";
2460 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002461 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002462 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002463 else CCSHARED="+z";
2464 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002465 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002466 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002467 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002468 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002469 if test "$GCC" = "yes"
2470 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002471 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002472 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002473 SCO_SV*)
2474 if test "$GCC" = "yes"
2475 then CCSHARED="-fPIC"
2476 else CCSHARED="-Kpic -belf"
2477 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002478 IRIX*/6*) case $CC in
2479 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002480 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002481 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002482 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002483fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002484AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002485# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002486# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002487AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002488if test -z "$LINKFORSHARED"
2489then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002490 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002491 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002492 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002493 LINKFORSHARED="-Wl,-E -Wl,+s";;
2494# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002495 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002496 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002497 # -u libsys_s pulls in all symbols in libsys
Victor Stinner1b80b242016-04-12 22:34:58 +02002498 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002499 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Łukasz Langa335ab5b2013-05-30 20:58:53 +02002500
2501 # Issue #18075: the default maximum stack size (8MBytes) is too
2502 # small for the default recursion limit. Increase the stack size
2503 # to ensure that tests don't crash
2504 LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
2505
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002506 if test "$enable_framework"
2507 then
Jack Jansenda49e192005-01-07 13:08:22 +00002508 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002509 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002510 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002511 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002512 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002513 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Victor Stinner1b80b242016-04-12 22:34:58 +02002514 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002515 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2516 then
2517 LINKFORSHARED="-Wl,--export-dynamic"
2518 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002519 SunOS/5*) case $CC in
2520 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002521 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002522 then
2523 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002524 fi;;
2525 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002526 CYGWIN*)
2527 if test $enable_shared = "no"
2528 then
2529 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2530 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002531 QNX*)
2532 # -Wl,-E causes the symbols to be added to the dynamic
2533 # symbol table so that they can be found when a module
2534 # is loaded. -N 2048K causes the stack size to be set
2535 # to 2048 kilobytes so that the stack doesn't overflow
2536 # when running test_compile.py.
2537 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002538 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002539fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002540AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002541
Georg Brandl93de2162008-07-16 02:21:06 +00002542
Neil Schemenauer61c51152001-01-26 16:18:16 +00002543AC_SUBST(CFLAGSFORSHARED)
2544AC_MSG_CHECKING(CFLAGSFORSHARED)
2545if test ! "$LIBRARY" = "$LDLIBRARY"
2546then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002547 case $ac_sys_system in
2548 CYGWIN*)
2549 # Cygwin needs CCSHARED when building extension DLLs
2550 # but not when building the interpreter DLL.
2551 CFLAGSFORSHARED='';;
2552 *)
2553 CFLAGSFORSHARED='$(CCSHARED)'
2554 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002555fi
2556AC_MSG_RESULT($CFLAGSFORSHARED)
2557
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002558# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2559# library (with --enable-shared).
2560# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002561# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2562# if it is not required, since it creates a dependency of the shared library
2563# to LIBS. This, in turn, means that applications linking the shared libpython
2564# don't need to link LIBS explicitly. The default should be only changed
2565# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002566AC_SUBST(SHLIBS)
2567AC_MSG_CHECKING(SHLIBS)
2568case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002569 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002570 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002571esac
2572AC_MSG_RESULT($SHLIBS)
2573
2574
Guido van Rossum627b2d71993-12-24 10:39:16 +00002575# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002576AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002577AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2578AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002579
Georg Brandleee31162008-12-07 15:15:22 +00002580# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002581if test "$with_threads" = "yes" -o -z "$with_threads"; then
2582 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2583 # posix4 on Solaris 2.6
2584 # pthread (first!) on Linux
2585fi
2586
Martin v. Löwis19d17342003-06-14 21:03:05 +00002587# check if we need libintl for locale functions
2588AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002589 [AC_DEFINE(WITH_LIBINTL, 1,
2590 [Define to 1 if libintl is needed for locale functions.])
2591 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002592
2593# checks for system dependent C++ extensions support
2594case "$ac_sys_system" in
2595 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002596 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002597 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002598 [[loadAndInit("", 0, "")]])
2599 ],[
2600 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002601 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2602 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002603 AC_MSG_RESULT(yes)
2604 ],[
2605 AC_MSG_RESULT(no)
2606 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002607 *) ;;
2608esac
2609
Christian Heimes985ecdc2013-11-20 11:46:18 +01002610# check for systems that require aligned memory access
2611AC_MSG_CHECKING(aligned memory access is required)
2612AC_TRY_RUN([
2613int main()
2614{
2615 char s[16];
2616 int i, *p1, *p2;
2617 for (i=0; i < 16; i++)
2618 s[i] = i;
2619 p1 = (int*)(s+1);
2620 p2 = (int*)(s+2);
2621 if (*p1 == *p2)
2622 return 1;
2623 return 0;
2624}
2625 ],
2626 [aligned_required=no],
2627 [aligned_required=yes],
2628 [aligned_required=yes])
2629
2630if test "$aligned_required" = yes ; then
2631 AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
2632 [Define if aligned memory access is required])
2633fi
2634AC_MSG_RESULT($aligned_required)
2635
2636
2637# str, bytes and memoryview hash algorithm
2638AH_TEMPLATE(Py_HASH_ALGORITHM,
2639 [Define hash algorithm for str, bytes and memoryview.
2640 SipHash24: 1, FNV: 2, externally defined: 0])
2641
2642AC_MSG_CHECKING(for --with-hash-algorithm)
2643dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
2644AC_ARG_WITH(hash_algorithm,
2645 AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
2646 [select hash algorithm]),
2647[
2648AC_MSG_RESULT($withval)
2649case "$withval" in
2650 siphash24)
2651 AC_DEFINE(Py_HASH_ALGORITHM, 1)
2652 ;;
2653 fnv)
2654 AC_DEFINE(Py_HASH_ALGORITHM, 2)
2655 ;;
2656 *)
2657 AC_MSG_ERROR([unknown hash algorithm '$withval'])
2658 ;;
2659esac
2660],
2661[AC_MSG_RESULT(default)])
2662
Charles-François Natalid30b0222014-05-08 23:08:51 +01002663AC_MSG_CHECKING(for --with-address-sanitizer)
2664AC_ARG_WITH(address_sanitizer,
2665 AS_HELP_STRING([--with-address-sanitizer],
2666 [enable AddressSanitizer]),
2667[
2668AC_MSG_RESULT($withval)
2669BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
2670LDFLAGS="-fsanitize=address $LDFLAGS"
2671],
2672[AC_MSG_RESULT(no)])
2673
Guido van Rossum70c7f481998-03-26 18:44:10 +00002674# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002675AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002676AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002677
Guido van Rossumc5a39031996-07-31 17:35:03 +00002678AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002679AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002680 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002681[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002682AC_MSG_RESULT($withval)
2683LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002684],
2685[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002686
Benjamin Peterson0f3cde12014-12-15 00:00:23 -05002687PKG_PROG_PKG_CONFIG
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002688
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002689# Check for use of the system expat library
2690AC_MSG_CHECKING(for --with-system-expat)
2691AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002692 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2693 [],
2694 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002695
2696AC_MSG_RESULT($with_system_expat)
2697
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002698# Check for use of the system libffi library
2699AC_MSG_CHECKING(for --with-system-ffi)
2700AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002701 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2702 [],
2703 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002704
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002705if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002706 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2707else
2708 LIBFFI_INCLUDEDIR=""
2709fi
2710AC_SUBST(LIBFFI_INCLUDEDIR)
2711
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002712AC_MSG_RESULT($with_system_ffi)
2713
Stefan Krah60187b52012-03-23 19:06:27 +01002714# Check for use of the system libmpdec library
2715AC_MSG_CHECKING(for --with-system-libmpdec)
2716AC_ARG_WITH(system_libmpdec,
2717 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2718 [],
2719 [with_system_libmpdec="no"])
2720
2721AC_MSG_RESULT($with_system_libmpdec)
2722
Benjamin Peterson076ed002010-10-31 17:11:02 +00002723# Check for support for loadable sqlite extensions
2724AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2725AC_ARG_ENABLE(loadable-sqlite-extensions,
2726 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2727 [],
2728 [enable_loadable_sqlite_extensions="no"])
2729
2730AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2731
Ned Deilyd819b932013-09-06 01:07:05 -07002732# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2733AC_SUBST(TCLTK_INCLUDES)
2734AC_SUBST(TCLTK_LIBS)
2735AC_MSG_CHECKING(for --with-tcltk-includes)
2736AC_ARG_WITH(tcltk-includes,
2737 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2738 [],
2739 [with_tcltk_includes="default"])
2740AC_MSG_RESULT($with_tcltk_includes)
2741AC_MSG_CHECKING(for --with-tcltk-libs)
2742AC_ARG_WITH(tcltk-libs,
2743 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2744 [],
2745 [with_tcltk_libs="default"])
2746AC_MSG_RESULT($with_tcltk_libs)
2747if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
2748then
2749 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
2750 then
2751 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
2752 fi
2753 TCLTK_INCLUDES=""
2754 TCLTK_LIBS=""
2755else
2756 TCLTK_INCLUDES="$with_tcltk_includes"
2757 TCLTK_LIBS="$with_tcltk_libs"
2758fi
2759
Matthias Klose55708cc2009-04-30 08:06:49 +00002760# Check for --with-dbmliborder
2761AC_MSG_CHECKING(for --with-dbmliborder)
2762AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002763 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 +00002764[
2765if test x$with_dbmliborder = xyes
2766then
2767AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2768else
2769 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2770 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2771 then
2772 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2773 fi
2774 done
2775fi])
2776AC_MSG_RESULT($with_dbmliborder)
2777
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002778# Determine if signalmodule should be used.
2779AC_SUBST(USE_SIGNAL_MODULE)
2780AC_SUBST(SIGNAL_OBJS)
2781AC_MSG_CHECKING(for --with-signal-module)
2782AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002783 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002784
2785if test -z "$with_signal_module"
2786then with_signal_module="yes"
2787fi
2788AC_MSG_RESULT($with_signal_module)
2789
2790if test "${with_signal_module}" = "yes"; then
2791 USE_SIGNAL_MODULE=""
2792 SIGNAL_OBJS=""
2793else
2794 USE_SIGNAL_MODULE="#"
2795 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2796fi
2797
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002798# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002799AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002800USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002801
Guido van Rossum54d93d41997-01-22 20:51:58 +00002802AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002803
Martin v. Löwis11437992002-04-12 09:54:03 +00002804# Templates for things AC_DEFINEd more than once.
2805# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002806AH_TEMPLATE(_REENTRANT,
2807 [Define to force use of thread-safe errno, h_errno, and other functions])
2808AH_TEMPLATE(WITH_THREAD,
2809 [Define if you want to compile in rudimentary thread support])
2810
Guido van Rossum54d93d41997-01-22 20:51:58 +00002811AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002812dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002813AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002814 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002815
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002816# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002817dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002818AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002819 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002820 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002821
2822if test -z "$with_threads"
2823then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002824fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002825AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002826
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002827AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002828if test "$with_threads" = "no"
2829then
2830 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002831elif test "$ac_cv_pthread_is_default" = yes
2832then
2833 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002834 # Defining _REENTRANT on system with POSIX threads should not hurt.
2835 AC_DEFINE(_REENTRANT)
2836 posix_threads=yes
Victor Stinner1b80b242016-04-12 22:34:58 +02002837 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002838elif test "$ac_cv_kpthread" = "yes"
2839then
2840 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002841 if test "$ac_cv_cxx_thread" = "yes"; then
2842 CXX="$CXX -Kpthread"
2843 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002844 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002845 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002846 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002847elif test "$ac_cv_kthread" = "yes"
2848then
2849 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002850 if test "$ac_cv_cxx_thread" = "yes"; then
2851 CXX="$CXX -Kthread"
2852 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002853 AC_DEFINE(WITH_THREAD)
2854 posix_threads=yes
2855 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002856elif test "$ac_cv_pthread" = "yes"
2857then
2858 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002859 if test "$ac_cv_cxx_thread" = "yes"; then
2860 CXX="$CXX -pthread"
2861 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002862 AC_DEFINE(WITH_THREAD)
2863 posix_threads=yes
2864 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002865else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002866 if test ! -z "$with_threads" -a -d "$with_threads"
2867 then LDFLAGS="$LDFLAGS -L$with_threads"
2868 fi
2869 if test ! -z "$withval" -a -d "$withval"
2870 then LDFLAGS="$LDFLAGS -L$withval"
2871 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002872
2873 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002874 # define _POSIX_THREADS in unistd.h. Some apparently don't
2875 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002876 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2877 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002878 [
2879#include <unistd.h>
2880#ifdef _POSIX_THREADS
2881yes
2882#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002883 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2884 AC_MSG_RESULT($unistd_defines_pthreads)
2885
Martin v. Löwis130fb172001-07-19 11:00:41 +00002886 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002887 # Just looking for pthread_create in libpthread is not enough:
2888 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2889 # So we really have to include pthread.h, and then link.
2890 _libs=$LIBS
2891 LIBS="$LIBS -lpthread"
2892 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krah7dba5942012-11-22 22:49:11 +01002893 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2894#include <stdio.h>
2895#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002896
Matthias Kloseb159a552010-04-25 21:00:44 +00002897void * start_routine (void *arg) { exit (0); }]], [[
2898pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002899 AC_MSG_RESULT(yes)
2900 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002901 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002902 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002903 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002904 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002905 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002906 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002907 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002908 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002909 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002910 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002911 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002912 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002913 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002914 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002915 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002916 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002917 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002918 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002919 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002920 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002921 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002922 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002923 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02002924 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002925
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002926 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2927 LIBS="$LIBS -lmpc"
2928 THREADOBJ="Python/thread.o"
2929 USE_THREAD_MODULE=""])
2930
Victor Stinner1b80b242016-04-12 22:34:58 +02002931 if test "$posix_threads" != "yes"; then
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002932 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2933 LIBS="$LIBS -lthread"
2934 THREADOBJ="Python/thread.o"
2935 USE_THREAD_MODULE=""])
2936 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002937fi
2938
2939if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002940 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002941 AC_DEFINE(_POSIX_THREADS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02002942 [Define if you have POSIX threads,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002943 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002944 fi
2945
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002946 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2947 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002948 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002949 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002950 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002951 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002952 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002953 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002954 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002955 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002956 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002957 esac
2958
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002959 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2960 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krah7dba5942012-11-22 22:49:11 +01002961 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
2962 #include <stdio.h>
2963 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002964 void *foo(void *parm) {
2965 return NULL;
2966 }
2967 main() {
2968 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002969 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002970 if (pthread_attr_init(&attr)) exit(-1);
2971 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002972 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002973 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002974 }]])],
2975 [ac_cv_pthread_system_supported=yes],
2976 [ac_cv_pthread_system_supported=no],
2977 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002978 ])
2979 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2980 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002981 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002982 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002983 AC_CHECK_FUNCS(pthread_sigmask,
2984 [case $ac_sys_system in
2985 CYGWIN*)
2986 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2987 [Define if pthread_sigmask() does not work on your system.])
2988 ;;
2989 esac])
Christian Heimesf77b4b22013-08-21 13:26:05 +02002990 AC_CHECK_FUNCS(pthread_atfork)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002991fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002992
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002993
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002994# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002995AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002996AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002997AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002998[ --enable-ipv6 Enable ipv6 (with ipv4) support
2999 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003000[ case "$enableval" in
3001 no)
3002 AC_MSG_RESULT(no)
3003 ipv6=no
3004 ;;
3005 *) AC_MSG_RESULT(yes)
3006 AC_DEFINE(ENABLE_IPV6)
3007 ipv6=yes
3008 ;;
3009 esac ],
3010
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003011[
3012dnl the check does not work on cross compilation case...
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003013 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003014#include <sys/types.h>
Charles-François Natalif6fd7942013-01-08 19:49:42 +01003015#include <sys/socket.h>]],
3016[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003017 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003018 ipv6=yes
3019],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003020 AC_MSG_RESULT(no)
3021 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003022])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003023
3024if test "$ipv6" = "yes"; then
3025 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00003026 AC_COMPILE_IFELSE([
3027 AC_LANG_PROGRAM([[#include <sys/types.h>
3028#include <netinet/in.h>]],
3029 [[struct sockaddr_in6 x;
3030 x.sin6_scope_id;]])
3031 ],[
3032 AC_MSG_RESULT(yes)
3033 ipv6=yes
3034 ],[
3035 AC_MSG_RESULT(no, IPv6 disabled)
3036 ipv6=no
3037 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00003038fi
3039
3040if test "$ipv6" = "yes"; then
3041 AC_DEFINE(ENABLE_IPV6)
3042fi
3043])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003044
3045ipv6type=unknown
3046ipv6lib=none
3047ipv6trylibc=no
3048
3049if test "$ipv6" = "yes"; then
3050 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00003051 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
3052 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003053 case $i in
3054 inria)
3055 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003056 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003057#include <netinet/in.h>
3058#ifdef IPV6_INRIA_VERSION
3059yes
3060#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003061 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003062 ;;
3063 kame)
3064 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003065 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003066#include <netinet/in.h>
3067#ifdef __KAME__
3068yes
3069#endif],
3070 [ipv6type=$i;
3071 ipv6lib=inet6
3072 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003073 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003074 ;;
3075 linux-glibc)
3076 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003077 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003078#include <features.h>
3079#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
3080yes
3081#endif],
3082 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003083 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003084 ;;
3085 linux-inet6)
3086 dnl http://www.v6.linux.or.jp/
3087 if test -d /usr/inet6; then
3088 ipv6type=$i
3089 ipv6lib=inet6
3090 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00003091 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003092 fi
3093 ;;
3094 solaris)
3095 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00003096 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003097 ipv6type=$i
3098 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003099 fi
3100 fi
3101 ;;
3102 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003103 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003104#include <sys/param.h>
3105#ifdef _TOSHIBA_INET6
3106yes
3107#endif],
3108 [ipv6type=$i;
3109 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003110 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003111 ;;
3112 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003113 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003114#include </usr/local/v6/include/sys/v6config.h>
3115#ifdef __V6D__
3116yes
3117#endif],
3118 [ipv6type=$i;
3119 ipv6lib=v6;
3120 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00003121 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003122 ;;
3123 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00003124 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003125#include <sys/param.h>
3126#ifdef _ZETA_MINAMI_INET6
3127yes
3128#endif],
3129 [ipv6type=$i;
3130 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00003131 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00003132 ;;
3133 esac
3134 if test "$ipv6type" != "unknown"; then
3135 break
3136 fi
3137 done
3138 AC_MSG_RESULT($ipv6type)
3139fi
3140
3141if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
3142 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
3143 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
3144 echo "using lib$ipv6lib"
3145 else
3146 if test $ipv6trylibc = "yes"; then
3147 echo "using libc"
3148 else
3149 echo 'Fatal: no $ipv6lib library found. cannot continue.'
3150 echo "You need to fetch lib$ipv6lib.a from appropriate"
3151 echo 'ipv6 kit and compile beforehand.'
3152 exit 1
3153 fi
3154 fi
3155fi
3156
Larry Hastingsa6cc5512015-04-13 17:48:40 -04003157AC_MSG_CHECKING(for CAN_RAW_FD_FRAMES)
3158AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */
3159#include <linux/can/raw.h>]],
3160[[int can_raw_fd_frames = CAN_RAW_FD_FRAMES;]])],[
3161 AC_DEFINE(HAVE_LINUX_CAN_RAW_FD_FRAMES, 1, [Define if compiling using Linux 3.6 or later.])
3162 AC_MSG_RESULT(yes)
3163],[
3164 AC_MSG_RESULT(no)
3165])
3166
Georg Brandl93de2162008-07-16 02:21:06 +00003167AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00003168AC_COMPILE_IFELSE([
3169 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
3170],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00003171 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00003172 AC_MSG_RESULT(yes)
3173],[
Georg Brandl93de2162008-07-16 02:21:06 +00003174 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003175])
Georg Brandl93de2162008-07-16 02:21:06 +00003176
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003177# Check for --with-doc-strings
3178AC_MSG_CHECKING(for --with-doc-strings)
3179AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003180 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00003181
3182if test -z "$with_doc_strings"
3183then with_doc_strings="yes"
3184fi
3185if test "$with_doc_strings" != "no"
3186then
3187 AC_DEFINE(WITH_DOC_STRINGS, 1,
3188 [Define if you want documentation strings in extension modules])
3189fi
3190AC_MSG_RESULT($with_doc_strings)
3191
Georg Brandl9976a512010-08-02 21:02:36 +00003192# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00003193AC_MSG_CHECKING(for --with-tsc)
3194AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003195 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00003196if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02003197then
3198 AC_DEFINE(WITH_TSC, 1,
3199 [Define to profile with the Pentium timestamp counter])
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00003200 AC_MSG_RESULT(yes)
3201else AC_MSG_RESULT(no)
3202fi],
3203[AC_MSG_RESULT(no)])
3204
3205# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00003206AC_MSG_CHECKING(for --with-pymalloc)
3207AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003208 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00003209
3210if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003211then
3212 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003213fi
3214if test "$with_pymalloc" != "no"
3215then
Victor Stinner1b80b242016-04-12 22:34:58 +02003216 AC_DEFINE(WITH_PYMALLOC, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003217 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003218 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00003219fi
3220AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00003221
Benjamin Peterson05159c42009-12-03 03:01:27 +00003222# Check for Valgrind support
3223AC_MSG_CHECKING([for --with-valgrind])
3224AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00003225 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00003226 with_valgrind=no)
3227AC_MSG_RESULT([$with_valgrind])
3228if test "$with_valgrind" != no; then
3229 AC_CHECK_HEADER([valgrind/valgrind.h],
3230 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
3231 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
3232 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00003233 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00003234fi
3235
Guido van Rossum68242b51996-05-28 22:53:03 +00003236# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003237AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00003238DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003239
Guido van Rossume97ee181999-12-20 21:27:22 +00003240# the dlopen() function means we might want to use dynload_shlib.o. some
3241# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00003242AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00003243
3244# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
3245# loading of modules.
3246AC_SUBST(DYNLOADFILE)
3247AC_MSG_CHECKING(DYNLOADFILE)
3248if test -z "$DYNLOADFILE"
3249then
3250 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00003251 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
3252 if test "$ac_cv_func_dlopen" = yes
3253 then DYNLOADFILE="dynload_shlib.o"
3254 else DYNLOADFILE="dynload_aix.o"
3255 fi
3256 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00003257 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003258 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
3259 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00003260 *)
3261 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
3262 # out any dynamic loading
3263 if test "$ac_cv_func_dlopen" = yes
3264 then DYNLOADFILE="dynload_shlib.o"
3265 else DYNLOADFILE="dynload_stub.o"
3266 fi
3267 ;;
3268 esac
3269fi
3270AC_MSG_RESULT($DYNLOADFILE)
3271if test "$DYNLOADFILE" != "dynload_stub.o"
3272then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003273 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
3274 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00003275fi
3276
Jack Jansenc49e5b72001-06-19 15:00:23 +00003277# MACHDEP_OBJS can be set to platform-specific object files needed by Python
3278
3279AC_SUBST(MACHDEP_OBJS)
3280AC_MSG_CHECKING(MACHDEP_OBJS)
3281if test -z "$MACHDEP_OBJS"
3282then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00003283 MACHDEP_OBJS=$extra_machdep_objs
3284else
3285 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00003286fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003287if test -z "$MACHDEP_OBJS"; then
3288 AC_MSG_RESULT([none])
3289else
3290 AC_MSG_RESULT([$MACHDEP_OBJS])
3291fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00003292
Guido van Rossum627b2d71993-12-24 10:39:16 +00003293# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00003294AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Victor Stinnerdaf45552013-08-28 00:53:59 +02003295 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003296 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Victor Stinner4d6a3d62014-12-21 01:16:38 +01003297 futimens futimes gai_strerror getentropy \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02003298 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00003299 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07003300 if_nameindex \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01003301 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
3302 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02003303 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003304 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02003305 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00003306 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00003307 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00003308 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02003309 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
3310 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02003311 sigaction sigaltstack siginterrupt sigpending sigrelse \
3312 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00003313 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02003314 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
Victor Stinnercd777ea2013-04-08 22:43:44 +02003315 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003316
Gregory P. Smithdf300d52012-01-21 18:20:15 -08003317AC_CHECK_DECL(dirfd,
3318 AC_DEFINE(HAVE_DIRFD, 1,
3319 Define if you have the 'dirfd' function or macro.), ,
3320 [#include <sys/types.h>
3321 #include <dirent.h>])
3322
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003323# For some functions, having a definition is not sufficient, since
3324# we want to take their address.
3325AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00003326AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
3327 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
3328 AC_MSG_RESULT(yes)],
3329 [AC_MSG_RESULT(no)
3330])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003331AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00003332AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
3333 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
3334 AC_MSG_RESULT(yes)],
3335 [AC_MSG_RESULT(no)
3336])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003337AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00003338AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
3339 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
3340 AC_MSG_RESULT(yes)],
3341 [AC_MSG_RESULT(no)
3342])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003343AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00003344AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
3345 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
3346 AC_MSG_RESULT(yes)],
3347 [AC_MSG_RESULT(no)
3348])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003349AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003350AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3351 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3352 AC_MSG_RESULT(yes)],
3353 [AC_MSG_RESULT(no)
3354])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003355AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00003356AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3357 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3358 AC_MSG_RESULT(yes)],
3359 [AC_MSG_RESULT(no)
3360])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003361AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00003362AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3363 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3364 AC_MSG_RESULT(yes)],
3365 [AC_MSG_RESULT(no)
3366])
Benjamin Peterson95c16622011-12-27 15:36:32 -06003367AC_MSG_CHECKING(for epoll_create1)
3368AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
3369 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
3370 AC_MSG_RESULT(yes)],
3371 [AC_MSG_RESULT(no)
3372])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003373AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00003374AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00003375#include <sys/types.h>
3376#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003377 ]], [[int x=kqueue()]])],
3378 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3379 AC_MSG_RESULT(yes)],
3380 [AC_MSG_RESULT(no)
3381])
Christian Heimesb7bd5df2013-10-22 11:21:54 +02003382AC_MSG_CHECKING(for prlimit)
3383AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3384#include <sys/time.h>
3385#include <sys/resource.h>
3386 ]], [[void *x=prlimit]])],
3387 [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
3388 AC_MSG_RESULT(yes)],
3389 [AC_MSG_RESULT(no)
3390])
3391
Martin v. Löwisd5843682002-11-21 20:41:28 +00003392# On some systems (eg. FreeBSD 5), we would find a definition of the
3393# functions ctermid_r, setgroups in the library, but no prototype
3394# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3395# address to avoid compiler warnings and potential miscompilations
3396# because of the missing prototypes.
3397
3398AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00003399AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003400#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003401]], [[void* p = ctermid_r]])],
3402 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3403 AC_MSG_RESULT(yes)],
3404 [AC_MSG_RESULT(no)
3405])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003406
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003407AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3408 [AC_COMPILE_IFELSE(
3409 [AC_LANG_PROGRAM(
3410 [#include <sys/file.h>],
3411 [void* p = flock]
3412 )],
3413 [ac_cv_flock_decl=yes],
3414 [ac_cv_flock_decl=no]
3415 )
Matthias Kloseb159a552010-04-25 21:00:44 +00003416])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00003417if test "x${ac_cv_flock_decl}" = xyes; then
3418 AC_CHECK_FUNCS(flock,,
3419 AC_CHECK_LIB(bsd,flock,
3420 [AC_DEFINE(HAVE_FLOCK)
3421 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3422 ])
3423 )
Antoine Pitroua3000072010-09-07 14:52:42 +00003424fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003425
3426AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00003427AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003428#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003429]], [[void* p = getpagesize]])],
3430 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3431 AC_MSG_RESULT(yes)],
3432 [AC_MSG_RESULT(no)
3433])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003434
Victor Stinner984890f2011-11-24 13:53:38 +01003435AC_MSG_CHECKING(for broken unsetenv)
3436AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3437#include <stdlib.h>
3438]], [[int res = unsetenv("DUMMY")]])],
3439 [AC_MSG_RESULT(no)],
3440 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3441 AC_MSG_RESULT(yes)
3442])
3443
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003444dnl check for true
3445AC_CHECK_PROGS(TRUE, true, /bin/true)
3446
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003447dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3448dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003449AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003450 AC_CHECK_LIB(resolv, inet_aton)
3451)
3452
Christian Heimesd0764e22007-12-04 15:00:33 +00003453# On Tru64, chflags seems to be present, but calling it will
3454# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003455AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003456AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003457#include <sys/stat.h>
3458#include <unistd.h>
3459int main(int argc, char*argv[])
3460{
3461 if(chflags(argv[0], 0) != 0)
3462 return 1;
3463 return 0;
3464}
Ned Deily3eb67d52011-06-28 00:00:28 -07003465]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00003466[ac_cv_have_chflags=yes],
3467[ac_cv_have_chflags=no],
3468[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003469])
3470if test "$ac_cv_have_chflags" = cross ; then
3471 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3472fi
3473if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003474 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003475fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003476
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003477AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07003478AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00003479#include <sys/stat.h>
3480#include <unistd.h>
3481int main(int argc, char*argv[])
3482{
3483 if(lchflags(argv[0], 0) != 0)
3484 return 1;
3485 return 0;
3486}
Ned Deily3eb67d52011-06-28 00:00:28 -07003487]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00003488])
3489if test "$ac_cv_have_lchflags" = cross ; then
3490 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3491fi
3492if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07003493 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003494fi
Christian Heimesd0764e22007-12-04 15:00:33 +00003495
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003496dnl Check if system zlib has *Copy() functions
3497dnl
3498dnl On MacOSX the linker will search for dylibs on the entire linker path
3499dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3500dnl to revert to a more traditional unix behaviour and make it possible to
3501dnl override the system libz with a local static library of libz. Temporarily
3502dnl add that flag to our CFLAGS as well to ensure that we check the version
Victor Stinner1b80b242016-04-12 22:34:58 +02003503dnl of libz that will be used by setup.py.
3504dnl The -L/usr/local/lib is needed as wel to get the same compilation
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003505dnl environment as setup.py (and leaving it out can cause configure to use the
3506dnl wrong version of the library)
3507case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003508Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003509 _CUR_CFLAGS="${CFLAGS}"
3510 _CUR_LDFLAGS="${LDFLAGS}"
3511 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3512 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3513 ;;
3514esac
3515
Matthias Klosec80c93f2010-04-24 17:04:35 +00003516AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003517
3518case $ac_sys_system/$ac_sys_release in
Victor Stinner1b80b242016-04-12 22:34:58 +02003519Darwin/*)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003520 CFLAGS="${_CUR_CFLAGS}"
3521 LDFLAGS="${_CUR_LDFLAGS}"
3522 ;;
3523esac
3524
Martin v. Löwise9416172003-05-03 10:12:45 +00003525AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00003526AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003527#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003528]], [[void* p = hstrerror; hstrerror(0)]])],
3529 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3530 AC_MSG_RESULT(yes)],
3531 [AC_MSG_RESULT(no)
3532])
Martin v. Löwise9416172003-05-03 10:12:45 +00003533
3534AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003535AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003536#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003537#include <sys/socket.h>
3538#include <netinet/in.h>
3539#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003540]], [[void* p = inet_aton;inet_aton(0,0)]])],
3541 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3542 AC_MSG_RESULT(yes)],
3543 [AC_MSG_RESULT(no)
3544])
Martin v. Löwise9416172003-05-03 10:12:45 +00003545
3546AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00003547AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003548#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003549#include <sys/socket.h>
3550#include <netinet/in.h>
3551#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003552]], [[void* p = inet_pton]])],
3553 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3554 AC_MSG_RESULT(yes)],
3555 [AC_MSG_RESULT(no)
3556])
Martin v. Löwise9416172003-05-03 10:12:45 +00003557
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003558# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003559AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00003560AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003561#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003562#ifdef HAVE_GRP_H
3563#include <grp.h>
3564#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003565]], [[void* p = setgroups]])],
3566 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3567 AC_MSG_RESULT(yes)],
3568 [AC_MSG_RESULT(no)
3569])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003570
Fred Drake8cef4cf2000-06-28 16:40:38 +00003571# check for openpty and forkpty
3572
Victor Stinner1b80b242016-04-12 22:34:58 +02003573AC_CHECK_FUNCS(openpty,,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003574 AC_CHECK_LIB(util,openpty,
3575 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3576 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3577 )
3578)
Victor Stinner1b80b242016-04-12 22:34:58 +02003579AC_CHECK_FUNCS(forkpty,,
3580 AC_CHECK_LIB(util,forkpty,
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003581 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3582 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3583 )
3584)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003585
Christian Heimesb186d002008-03-18 15:15:01 +00003586# Stuff for expat.
3587AC_CHECK_FUNCS(memmove)
3588
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003589# check for long file support functions
3590AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3591
Benjamin Peterson3a7dffa2013-08-23 21:01:48 -05003592AC_REPLACE_FUNCS(dup2 strdup)
Victor Stinner1b80b242016-04-12 22:34:58 +02003593AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003594 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3595 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3596 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003597)
Jack Jansen150753c2003-03-29 22:07:47 +00003598AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003599 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3600 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3601 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003602)
Victor Stinner1b80b242016-04-12 22:34:58 +02003603AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003604 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3605 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3606 [],
3607 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3608 [Define if gettimeofday() does not have second (timezone) argument
3609 This is the case on Motorola V4 (R40V4.2)])
3610 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003611)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003612
Victor Stinnere0be4232011-10-25 13:06:09 +02003613AC_CHECK_FUNCS(clock_gettime, [], [
3614 AC_CHECK_LIB(rt, clock_gettime, [
Victor Stinner7efb8332014-08-29 15:41:08 +02003615 LIBS="$LIBS -lrt"
Victor Stinnere0be4232011-10-25 13:06:09 +02003616 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3617 AC_DEFINE(TIMEMODULE_LIB, [rt],
3618 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3619 ])
3620])
3621
3622AC_CHECK_FUNCS(clock_getres, [], [
3623 AC_CHECK_LIB(rt, clock_getres, [
3624 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3625 ])
3626])
3627
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003628AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003629AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003630#if defined(MAJOR_IN_MKDEV)
3631#include <sys/mkdev.h>
3632#elif defined(MAJOR_IN_SYSMACROS)
3633#include <sys/sysmacros.h>
3634#else
3635#include <sys/types.h>
3636#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003637]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003638 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003639]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003640 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3641 [Define to 1 if you have the device macros.])
3642 AC_MSG_RESULT(yes)
3643],[
3644 AC_MSG_RESULT(no)
3645])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003646
3647# On OSF/1 V5.1, getaddrinfo is available, but a define
Victor Stinner1b80b242016-04-12 22:34:58 +02003648# for [no]getaddrinfo in netdb.h.
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003649AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003650AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003651#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003652#include <sys/socket.h>
3653#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003654#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003655]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3656[have_getaddrinfo=yes],
3657[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003658AC_MSG_RESULT($have_getaddrinfo)
3659if test $have_getaddrinfo = yes
3660then
3661 AC_MSG_CHECKING(getaddrinfo bug)
3662 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003663 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah19c21392012-11-22 23:47:32 +01003664#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003665#include <sys/types.h>
3666#include <netdb.h>
3667#include <string.h>
3668#include <sys/socket.h>
3669#include <netinet/in.h>
3670
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003671int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003672{
3673 int passive, gaierr, inet4 = 0, inet6 = 0;
3674 struct addrinfo hints, *ai, *aitop;
3675 char straddr[INET6_ADDRSTRLEN], strport[16];
3676
3677 for (passive = 0; passive <= 1; passive++) {
3678 memset(&hints, 0, sizeof(hints));
3679 hints.ai_family = AF_UNSPEC;
3680 hints.ai_flags = passive ? AI_PASSIVE : 0;
3681 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003682 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003683 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3684 (void)gai_strerror(gaierr);
3685 goto bad;
3686 }
3687 for (ai = aitop; ai; ai = ai->ai_next) {
3688 if (ai->ai_addr == NULL ||
3689 ai->ai_addrlen == 0 ||
3690 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3691 straddr, sizeof(straddr), strport, sizeof(strport),
3692 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3693 goto bad;
3694 }
3695 switch (ai->ai_family) {
3696 case AF_INET:
3697 if (strcmp(strport, "54321") != 0) {
3698 goto bad;
3699 }
3700 if (passive) {
3701 if (strcmp(straddr, "0.0.0.0") != 0) {
3702 goto bad;
3703 }
3704 } else {
3705 if (strcmp(straddr, "127.0.0.1") != 0) {
3706 goto bad;
3707 }
3708 }
3709 inet4++;
3710 break;
3711 case AF_INET6:
3712 if (strcmp(strport, "54321") != 0) {
3713 goto bad;
3714 }
3715 if (passive) {
3716 if (strcmp(straddr, "::") != 0) {
3717 goto bad;
3718 }
3719 } else {
3720 if (strcmp(straddr, "::1") != 0) {
3721 goto bad;
3722 }
3723 }
3724 inet6++;
3725 break;
3726 case AF_UNSPEC:
3727 goto bad;
3728 break;
3729 default:
3730 /* another family support? */
3731 break;
3732 }
3733 }
3734 }
3735
3736 if (!(inet4 == 0 || inet4 == 2))
3737 goto bad;
3738 if (!(inet6 == 0 || inet6 == 2))
3739 goto bad;
3740
3741 if (aitop)
3742 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003743 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003744
3745 bad:
3746 if (aitop)
3747 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003748 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003749}
Matthias Kloseb159a552010-04-25 21:00:44 +00003750]]])],
3751[ac_cv_buggy_getaddrinfo=no],
3752[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003753[
3754if test "${enable_ipv6+set}" = set; then
3755 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3756else
3757 ac_cv_buggy_getaddrinfo=yes
3758fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003759fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003760
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003761AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3762
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003763if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003764then
3765 if test $ipv6 = yes
3766 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003767 echo 'Fatal: You must get working getaddrinfo() function.'
3768 echo ' or you can specify "--disable-ipv6"'.
3769 exit 1
3770 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003771else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003772 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003773fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003774
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003775AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003776
Guido van Rossum627b2d71993-12-24 10:39:16 +00003777# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003778AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003779AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003780AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003781AC_CHECK_MEMBERS([struct stat.st_rdev])
3782AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003783AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003784AC_CHECK_MEMBERS([struct stat.st_gen])
3785AC_CHECK_MEMBERS([struct stat.st_birthtime])
Martin Panterd887d1f2016-03-18 02:36:41 +00003786AC_CHECK_MEMBERS([struct stat.st_blocks])
Stefan Krah267b6392016-04-26 01:09:18 +02003787AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[
3788 #include <sys/types.h>
3789 #include <pwd.h>
3790]])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003791
3792AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003793AC_CACHE_VAL(ac_cv_header_time_altzone,[
3794 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3795 [ac_cv_header_time_altzone=yes],
3796 [ac_cv_header_time_altzone=no])
3797 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003798AC_MSG_RESULT($ac_cv_header_time_altzone)
3799if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003800 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003801fi
3802
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003803was_it_defined=no
3804AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003805AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003806#include <sys/types.h>
3807#include <sys/select.h>
3808#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003809]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003810 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3811 [Define if you can safely include both <sys/select.h> and <sys/time.h>
Victor Stinner1b80b242016-04-12 22:34:58 +02003812 (which you can't on SCO ODT 3.0).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003813 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003814],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003815AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003816
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003817AC_MSG_CHECKING(for addrinfo)
3818AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003819AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3820 [ac_cv_struct_addrinfo=yes],
3821 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003822AC_MSG_RESULT($ac_cv_struct_addrinfo)
3823if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003824 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003825fi
3826
3827AC_MSG_CHECKING(for sockaddr_storage)
3828AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003829AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003830# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003831# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3832 [ac_cv_struct_sockaddr_storage=yes],
3833 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003834AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3835if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003836 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003837fi
3838
Guido van Rossum627b2d71993-12-24 10:39:16 +00003839# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003840
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003841AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003842AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003843
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003844works=no
3845AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003846AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3847 [works=yes],
3848 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003849)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003850AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003851
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003852works=no
3853AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003854AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3855 [works=yes],
3856 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003857)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003858AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003859
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003860have_prototypes=no
3861AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003862AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
Victor Stinner1b80b242016-04-12 22:34:58 +02003863 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3864 [Define if your compiler supports function prototype])
Matthias Kloseb159a552010-04-25 21:00:44 +00003865 have_prototypes=yes],
3866 []
3867)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003868AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003869
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003870works=no
3871AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003872AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003873#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003874int foo(int x, ...) {
3875 va_list va;
3876 va_start(va, x);
3877 va_arg(va, int);
3878 va_arg(va, char *);
3879 va_arg(va, double);
3880 return 0;
3881}
Matthias Kloseb159a552010-04-25 21:00:44 +00003882]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003883 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3884 [Define if your compiler supports variable length function prototypes
Victor Stinner1b80b242016-04-12 22:34:58 +02003885 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003886 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003887],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003888AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003889
Dave Cole331708b2004-08-09 04:51:41 +00003890# check for socketpair
3891AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003892AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003893#include <sys/types.h>
3894#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003895]], [[void *x=socketpair]])],
3896 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3897 AC_MSG_RESULT(yes)],
3898 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003899)
3900
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003901# check if sockaddr has sa_len member
3902AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003903AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3904#include <sys/socket.h>]], [[struct sockaddr x;
3905x.sa_len = 0;]])],
3906 [AC_MSG_RESULT(yes)
3907 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3908 [AC_MSG_RESULT(no)]
3909)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003910
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003911va_list_is_array=no
3912AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003913AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003914#ifdef HAVE_STDARG_PROTOTYPES
3915#include <stdarg.h>
3916#else
3917#include <varargs.h>
3918#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003919]], [[va_list list1, list2; list1 = list2;]])],[],[
Victor Stinner1b80b242016-04-12 22:34:58 +02003920 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003921 va_list_is_array=yes
3922])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003923AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003924
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003925# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003926AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3927 [Define this if you have some version of gethostbyname_r()])
3928
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003929AC_CHECK_FUNC(gethostbyname_r, [
3930 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3931 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3932 OLD_CFLAGS=$CFLAGS
3933 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003934 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003935# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003936 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003937 char *name;
3938 struct hostent *he, *res;
3939 char buffer[2048];
3940 int buflen = 2048;
3941 int h_errnop;
3942
3943 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003944 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003945 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003946 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3947 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003948 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003949 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003950 AC_MSG_RESULT(no)
3951 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003952 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003953# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003954 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003955 char *name;
3956 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003957 char buffer[2048];
3958 int buflen = 2048;
3959 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003960
Matthias Kloseb159a552010-04-25 21:00:44 +00003961 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3962 ]])],
3963 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003964 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003965 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3966 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003967 AC_MSG_RESULT(yes)
3968 ], [
3969 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003970 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3971 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3972# include <netdb.h>
3973 ]], [[
3974 char *name;
3975 struct hostent *he;
3976 struct hostent_data data;
3977
3978 (void) gethostbyname_r(name, he, &data);
3979 ]])],
3980 [
3981 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3982 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3983 [Define this if you have the 3-arg version of gethostbyname_r().])
3984 AC_MSG_RESULT(yes)
3985 ], [
3986 AC_MSG_RESULT(no)
3987 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003988 ])
3989 ])
3990 CFLAGS=$OLD_CFLAGS
3991], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003992 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003993])
3994AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3995AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3996AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003997AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003998AC_SUBST(HAVE_GETHOSTBYNAME)
3999
Guido van Rossum627b2d71993-12-24 10:39:16 +00004000# checks for system services
4001# (none yet)
4002
Guido van Rossum76be6ed1995-01-02 18:33:54 +00004003# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00004004AC_CHECK_FUNC(__fpu_control,
4005 [],
4006 [AC_CHECK_LIB(ieee, __fpu_control)
4007])
Guido van Rossum627b2d71993-12-24 10:39:16 +00004008
Guido van Rossum93274221997-05-09 02:42:00 +00004009# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00004010AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00004011AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004012 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004013[
Guido van Rossum93274221997-05-09 02:42:00 +00004014if test "$withval" != no
Victor Stinner1b80b242016-04-12 22:34:58 +02004015then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004016 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02004017 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004018 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00004019else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004020fi],
4021[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00004022
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004023# check for --with-libm=...
4024AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004025case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00004026Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00004027*) LIBM=-lm
4028esac
Guido van Rossum93274221997-05-09 02:42:00 +00004029AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004030AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004031 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004032[
Guido van Rossum93274221997-05-09 02:42:00 +00004033if test "$withval" = no
4034then LIBM=
4035 AC_MSG_RESULT(force LIBM empty)
4036elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004037then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004038 AC_MSG_RESULT(set LIBM="$withval")
4039else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004040fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004041[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004042
4043# check for --with-libc=...
4044AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00004045AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004046AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004047 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004048[
Guido van Rossum93274221997-05-09 02:42:00 +00004049if test "$withval" = no
4050then LIBC=
4051 AC_MSG_RESULT(force LIBC empty)
4052elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004053then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004054 AC_MSG_RESULT(set LIBC="$withval")
4055else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00004056fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004057[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00004058
Stefan Krah1919b7e2012-03-21 18:25:23 +01004059# **************************************
4060# * Check for gcc x64 inline assembler *
4061# **************************************
4062
4063AC_MSG_CHECKING(for x64 gcc inline assembler)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004064AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Stefan Krah1919b7e2012-03-21 18:25:23 +01004065 __asm__ __volatile__ ("movq %rcx, %rax");
4066]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
4067AC_MSG_RESULT($have_gcc_asm_for_x64)
4068if test "$have_gcc_asm_for_x64" = yes
4069then
4070 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
4071 [Define if we can use x64 gcc inline assembler])
4072fi
4073
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004074# **************************************************
4075# * Check for various properties of floating point *
4076# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004077
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004078AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
4079AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004080AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004081#include <string.h>
4082int main() {
4083 double x = 9006104071832581.0;
4084 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
4085 return 0;
4086 else
4087 return 1;
4088}
Matthias Kloseb159a552010-04-25 21:00:44 +00004089]])],
4090[ac_cv_little_endian_double=yes],
4091[ac_cv_little_endian_double=no],
4092[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004093AC_MSG_RESULT($ac_cv_little_endian_double)
4094if test "$ac_cv_little_endian_double" = yes
4095then
4096 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
4097 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4098 with the least significant byte first])
4099fi
4100
4101AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
4102AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004103AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004104#include <string.h>
4105int main() {
4106 double x = 9006104071832581.0;
4107 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
4108 return 0;
4109 else
4110 return 1;
4111}
Matthias Kloseb159a552010-04-25 21:00:44 +00004112]])],
4113[ac_cv_big_endian_double=yes],
4114[ac_cv_big_endian_double=no],
4115[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004116AC_MSG_RESULT($ac_cv_big_endian_double)
4117if test "$ac_cv_big_endian_double" = yes
4118then
4119 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
4120 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4121 with the most significant byte first])
4122fi
4123
4124# Some ARM platforms use a mixed-endian representation for doubles.
4125# While Python doesn't currently have full support for these platforms
4126# (see e.g., issue 1762561), we can at least make sure that float <-> string
4127# conversions work.
4128AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
4129AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004130AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004131#include <string.h>
4132int main() {
4133 double x = 9006104071832581.0;
4134 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
4135 return 0;
4136 else
4137 return 1;
4138}
Matthias Kloseb159a552010-04-25 21:00:44 +00004139]])],
4140[ac_cv_mixed_endian_double=yes],
4141[ac_cv_mixed_endian_double=no],
4142[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004143AC_MSG_RESULT($ac_cv_mixed_endian_double)
4144if test "$ac_cv_mixed_endian_double" = yes
4145then
4146 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
4147 [Define if C doubles are 64-bit IEEE 754 binary format, stored
4148 in ARM mixed-endian order (byte order 45670123)])
4149fi
4150
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004151# The short float repr introduced in Python 3.1 requires the
4152# correctly-rounded string <-> double conversion functions from
4153# Python/dtoa.c, which in turn require that the FPU uses 53-bit
4154# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004155# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00004156# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004157
4158# This inline assembler syntax may also work for suncc and icc,
4159# so we try it on all platforms.
4160
4161AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004162AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004163 unsigned short cw;
4164 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
4165 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00004166]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004167AC_MSG_RESULT($have_gcc_asm_for_x87)
4168if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004169then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00004170 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
4171 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004172fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004173
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004174AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set mc68881 fpcr)
Stefan Krahe31db2a2015-07-02 20:27:56 +02004175AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
Benjamin Peterson8bdeb162014-04-17 00:00:31 -04004176 unsigned int fpcr;
4177 __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr));
4178 __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr));
4179]])],[have_gcc_asm_for_mc68881=yes],[have_gcc_asm_for_mc68881=no])
4180AC_MSG_RESULT($have_gcc_asm_for_mc68881)
4181if test "$have_gcc_asm_for_mc68881" = yes
4182then
4183 AC_DEFINE(HAVE_GCC_ASM_FOR_MC68881, 1,
4184 [Define if we can use gcc inline assembler to get and set mc68881 fpcr])
4185fi
4186
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004187# Detect whether system arithmetic is subject to x87-style double
4188# rounding issues. The result of this test has little meaning on non
4189# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
4190# mode is round-to-nearest and double rounding issues are present, and
4191# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
4192AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004193# $BASECFLAGS may affect the result
4194ac_save_cc="$CC"
4195CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00004196AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004197#include <stdlib.h>
4198#include <math.h>
4199int main() {
4200 volatile double x, y, z;
4201 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
4202 x = 0.99999999999999989; /* 1-2**-53 */
4203 y = 1./x;
4204 if (y != 1.)
4205 exit(0);
4206 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
4207 x = 1e16;
4208 y = 2.99999;
4209 z = x + y;
4210 if (z != 1e16+4.)
4211 exit(0);
4212 /* both tests show evidence of double rounding */
4213 exit(1);
4214}
Matthias Kloseb159a552010-04-25 21:00:44 +00004215]])],
4216[ac_cv_x87_double_rounding=no],
4217[ac_cv_x87_double_rounding=yes],
4218[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004219CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00004220AC_MSG_RESULT($ac_cv_x87_double_rounding)
4221if test "$ac_cv_x87_double_rounding" = yes
4222then
4223 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
4224 [Define if arithmetic is subject to x87-style double rounding issue])
4225fi
4226
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00004227# ************************************
4228# * Check for mathematical functions *
4229# ************************************
4230
4231LIBS_SAVE=$LIBS
4232LIBS="$LIBS $LIBM"
4233
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004234AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02004235AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004236AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
4237
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004238# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
4239# -0. on some architectures.
4240AC_MSG_CHECKING(whether tanh preserves the sign of zero)
4241AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004242AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004243#include <math.h>
4244#include <stdlib.h>
4245int main() {
4246 /* return 0 if either negative zeros don't exist
4247 on this platform or if negative zeros exist
4248 and tanh(-0.) == -0. */
4249 if (atan2(0., -1.) == atan2(-0., -1.) ||
4250 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
4251 else exit(1);
4252}
Matthias Kloseb159a552010-04-25 21:00:44 +00004253]])],
4254[ac_cv_tanh_preserves_zero_sign=yes],
4255[ac_cv_tanh_preserves_zero_sign=no],
4256[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00004257AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
4258if test "$ac_cv_tanh_preserves_zero_sign" = yes
4259then
4260 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
4261 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
4262fi
4263
Mark Dickinson7edecdd2010-11-20 10:09:56 +00004264if test "$ac_cv_func_log1p" = yes
4265then
4266 # On some versions of AIX, log1p(-0.) returns 0. instead of
4267 # -0. See issue #9920.
4268 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
4269 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
4270 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4271 #include <math.h>
4272 #include <stdlib.h>
4273 int main() {
4274 /* Fail if the signs of log1p(-0.) and -0. can be
4275 distinguished. */
4276 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
4277 return 0;
4278 else
4279 return 1;
4280 }
4281 ]])],
4282 [ac_cv_log1p_drops_zero_sign=no],
4283 [ac_cv_log1p_drops_zero_sign=yes],
4284 [ac_cv_log1p_drops_zero_sign=no])])
4285 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
4286fi
4287if test "$ac_cv_log1p_drops_zero_sign" = yes
4288then
4289 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
4290 [Define if log1p(-0.) is 0. rather than -0.])
4291fi
Christian Heimes99170a52007-12-19 02:07:34 +00004292
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00004293LIBS=$LIBS_SAVE
4294
Mark Dickinsona614f042009-11-28 12:48:43 +00004295# For multiprocessing module, check that sem_open
4296# actually works. For FreeBSD versions <= 7.2,
4297# the kernel module that provides POSIX semaphores
4298# isn't loaded by default, so an attempt to call
4299# sem_open results in a 'Signal 12' error.
4300AC_MSG_CHECKING(whether POSIX semaphores are enabled)
4301AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00004302AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00004303#include <unistd.h>
4304#include <fcntl.h>
4305#include <stdio.h>
4306#include <semaphore.h>
4307#include <sys/stat.h>
4308
4309int main(void) {
4310 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
4311 if (a == SEM_FAILED) {
4312 perror("sem_open");
4313 return 1;
4314 }
4315 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004316 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00004317 return 0;
4318}
Matthias Kloseb159a552010-04-25 21:00:44 +00004319]])],
4320[ac_cv_posix_semaphores_enabled=yes],
4321[ac_cv_posix_semaphores_enabled=no],
4322[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00004323)
4324AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
4325if test $ac_cv_posix_semaphores_enabled = no
4326then
4327 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
4328 [Define if POSIX semaphores aren't enabled on your system])
4329fi
4330
Mark Dickinson10683072009-04-18 21:18:19 +00004331# Multiprocessing check for broken sem_getvalue
4332AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004333AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00004334AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00004335#include <unistd.h>
4336#include <fcntl.h>
4337#include <stdio.h>
4338#include <semaphore.h>
4339#include <sys/stat.h>
4340
4341int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00004342 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00004343 int count;
4344 int res;
4345 if(a==SEM_FAILED){
4346 perror("sem_open");
4347 return 1;
4348
4349 }
4350 res = sem_getvalue(a, &count);
4351 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00004352 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00004353 return res==-1 ? 1 : 0;
4354}
Matthias Kloseb159a552010-04-25 21:00:44 +00004355]])],
4356[ac_cv_broken_sem_getvalue=no],
4357[ac_cv_broken_sem_getvalue=yes],
4358[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00004359)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004360AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
4361if test $ac_cv_broken_sem_getvalue = yes
4362then
4363 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
4364 [define to 1 if your sem_getvalue is broken.])
4365fi
Mark Dickinson10683072009-04-18 21:18:19 +00004366
Serhiy Storchakac2f7d872016-05-04 09:44:44 +03004367AC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND], [], [], [[#include <dlfcn.h>]])
4368
Mark Dickinsonbd792642009-03-18 20:06:12 +00004369# determine what size digit to use for Python's longs
4370AC_MSG_CHECKING([digit size for Python's longs])
4371AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004372AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00004373[case $enable_big_digits in
4374yes)
4375 enable_big_digits=30 ;;
4376no)
4377 enable_big_digits=15 ;;
4378[15|30])
4379 ;;
4380*)
4381 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4382esac
4383AC_MSG_RESULT($enable_big_digits)
4384AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4385],
4386[AC_MSG_RESULT(no value specified)])
4387
Guido van Rossumef2255b2000-03-10 22:30:29 +00004388# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004389AC_CHECK_HEADER(wchar.h, [
Victor Stinner1b80b242016-04-12 22:34:58 +02004390 AC_DEFINE(HAVE_WCHAR_H, 1,
4391 [Define if the compiler provides a wchar.h header file.])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004392 wchar_h="yes"
4393],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004394wchar_h="no"
4395)
4396
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004397# determine wchar_t size
4398if test "$wchar_h" = yes
4399then
Guido van Rossum67b26592001-10-20 14:21:45 +00004400 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004401fi
4402
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004403AC_MSG_CHECKING(for UCS-4 tcl)
4404have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00004405AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004406#include <tcl.h>
4407#if TCL_UTF_MAX != 6
4408# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00004409#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004410 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4411 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00004412],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004413AC_MSG_RESULT($have_ucs4_tcl)
4414
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004415# check whether wchar_t is signed or not
4416if test "$wchar_h" = yes
4417then
4418 # check whether wchar_t is signed or not
4419 AC_MSG_CHECKING(whether wchar_t is signed)
4420 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004421 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004422 #include <wchar.h>
4423 int main()
4424 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004425 /* Success: exit code 0 */
4426 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004427 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004428 ]])],
4429 [ac_cv_wchar_t_signed=yes],
4430 [ac_cv_wchar_t_signed=no],
4431 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004432 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4433fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004434
Georg Brandl52d168a2008-01-07 18:10:24 +00004435# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004436if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004437 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00004438then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004439 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00004440 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4441 [Define if you have a useable wchar_t type defined in wchar.h; useable
4442 means wchar_t must be an unsigned type with at least 16 bits. (see
4443 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00004444else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004445 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004446fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02004447AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00004448
4449# check for endianness
4450AC_C_BIGENDIAN
4451
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004452# ABI version string for Python extension modules. This appears between the
4453# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
4454# from the following attributes which affect the ABI of this Python build (in
4455# this order):
4456#
4457# * The Python implementation (always 'cpython-' for us)
4458# * The major and minor version numbers
4459# * --with-pydebug (adds a 'd')
4460# * --with-pymalloc (adds a 'm')
4461# * --with-wide-unicode (adds a 'u')
4462#
4463# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00004464# would get a shared library ABI version tag of 'cpython-32dmu' and shared
4465# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004466AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004467AC_MSG_CHECKING(ABIFLAGS)
4468AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004469AC_MSG_CHECKING(SOABI)
doko@ubuntu.comd3899c12015-04-15 20:23:14 +02004470SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00004471AC_MSG_RESULT($SOABI)
4472
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004473AC_SUBST(EXT_SUFFIX)
4474case $ac_sys_system in
Ned Deily3b812482015-04-15 17:11:47 -07004475 Linux*|GNU*|Darwin)
doko@ubuntu.comd5537d02013-03-21 13:21:49 -07004476 EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
4477 *)
4478 EXT_SUFFIX=${SHLIB_SUFFIX};;
4479esac
4480
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00004481AC_MSG_CHECKING(LDVERSION)
4482LDVERSION='$(VERSION)$(ABIFLAGS)'
4483AC_MSG_RESULT($LDVERSION)
4484
doko@python.org87421192013-01-26 11:39:31 +01004485dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
4486AC_SUBST(PY_ENABLE_SHARED)
doko@ubuntu.com55532312016-06-14 08:55:19 +02004487if test x$PLATFORM_TRIPLET = x; then
4488 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
4489else
4490 LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
4491fi
doko@python.org87421192013-01-26 11:39:31 +01004492AC_SUBST(LIBPL)
4493
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004494# Check whether right shifting a negative integer extends the sign bit
4495# or fills with zeros (like the Cray J90, according to Tim Peters).
4496AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004497AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004498AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004499int main()
4500{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004501 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004502}
Matthias Kloseb159a552010-04-25 21:00:44 +00004503]])],
4504[ac_cv_rshift_extends_sign=yes],
4505[ac_cv_rshift_extends_sign=no],
4506[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004507AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4508if test "$ac_cv_rshift_extends_sign" = no
4509then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004510 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4511 [Define if i>>j for signed int i does not extend the sign bit
4512 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004513fi
4514
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004515# check for getc_unlocked and related locking functions
4516AC_MSG_CHECKING(for getc_unlocked() and friends)
4517AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004518AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004519 FILE *f = fopen("/dev/null", "r");
4520 flockfile(f);
4521 getc_unlocked(f);
4522 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00004523]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004524AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4525if test "$ac_cv_have_getc_unlocked" = yes
4526then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004527 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4528 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004529fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004530
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004531# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004532# save the value of LIBS so we don't actually link Python with readline
4533LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00004534
4535# On some systems we need to link readline to a termcap compatible
4536# library. NOTE: Keep the precedence of listed libraries synchronised
4537# with setup.py.
4538py_cv_lib_readline=no
4539AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02004540for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00004541 if test -z "$py_libtermcap"; then
4542 READLINE_LIBS="-lreadline"
4543 else
4544 READLINE_LIBS="-lreadline -l$py_libtermcap"
4545 fi
4546 LIBS="$READLINE_LIBS $LIBS_no_readline"
4547 AC_LINK_IFELSE(
4548 [AC_LANG_CALL([],[readline])],
4549 [py_cv_lib_readline=yes])
4550 if test $py_cv_lib_readline = yes; then
4551 break
4552 fi
4553done
4554# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4555#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00004556if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00004557 AC_MSG_RESULT([none])
4558else
4559 AC_MSG_RESULT([$READLINE_LIBS])
4560 AC_DEFINE(HAVE_LIBREADLINE, 1,
4561 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004562fi
4563
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004564# check for readline 2.1
4565AC_CHECK_LIB(readline, rl_callback_handler_install,
4566 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004567 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004568
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004569# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004570AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4571 [have_readline=yes],
4572 [have_readline=no]
4573)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004574if test $have_readline = yes
4575then
4576 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4577 [readline/readline.h],
4578 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4579 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004580 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4581 [readline/readline.h],
4582 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4583 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004584fi
4585
Martin v. Löwis0daad592001-09-30 21:09:59 +00004586# check for readline 4.0
4587AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004588 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004589 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004590
Thomas Wouters89d996e2007-09-08 17:39:28 +00004591# also in 4.0
4592AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4593 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004594 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004595
Martin Panter5dbbf1a2016-04-03 02:54:58 +00004596# also in 4.0, but not in editline
4597AC_CHECK_LIB(readline, rl_resize_terminal,
4598 AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1,
4599 [Define if you have readline 4.0]), ,$READLINE_LIBS)
4600
Guido van Rossum353ae582001-07-10 16:45:32 +00004601# check for readline 4.2
4602AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004603 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004604 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004605
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004606# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004607AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4608 [have_readline=yes],
4609 [have_readline=no]
4610)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004611if test $have_readline = yes
4612then
4613 AC_EGREP_HEADER([extern int rl_catch_signals;],
4614 [readline/readline.h],
4615 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4616 [Define if you can turn off readline's signal handling.]), )
4617fi
4618
Benjamin Petersond1e22ba2014-11-26 14:35:12 -06004619AC_CHECK_LIB(readline, append_history,
4620 AC_DEFINE(HAVE_RL_APPEND_HISTORY, 1,
4621 [Define if readline supports append_history]), ,$READLINE_LIBS)
4622
Martin v. Löwis82bca632006-02-10 20:49:30 +00004623# End of readline checks: restore LIBS
4624LIBS=$LIBS_no_readline
4625
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004626AC_MSG_CHECKING(for broken nice())
4627AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004628AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004629int main()
4630{
4631 int val1 = nice(1);
4632 if (val1 != -1 && val1 == nice(2))
4633 exit(0);
4634 exit(1);
4635}
Matthias Kloseb159a552010-04-25 21:00:44 +00004636]])],
4637[ac_cv_broken_nice=yes],
4638[ac_cv_broken_nice=no],
4639[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004640AC_MSG_RESULT($ac_cv_broken_nice)
4641if test "$ac_cv_broken_nice" = yes
4642then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004643 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4644 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004645fi
4646
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004647AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004648AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004649AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004650#include <poll.h>
4651
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004652int main()
4653{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004654 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004655 int poll_test;
4656
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004657 close (42);
4658
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004659 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004660 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004661 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004662 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004663 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004664 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004665 return 1;
4666}
Matthias Kloseb159a552010-04-25 21:00:44 +00004667]])],
4668[ac_cv_broken_poll=yes],
4669[ac_cv_broken_poll=no],
4670[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004671AC_MSG_RESULT($ac_cv_broken_poll)
4672if test "$ac_cv_broken_poll" = yes
4673then
4674 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4675 [Define if poll() sets errno on invalid file descriptors.])
4676fi
4677
Victor Stinner1b80b242016-04-12 22:34:58 +02004678# Before we can test tzset, we need to check if struct tm has a tm_zone
Brett Cannon43802422005-02-10 20:48:03 +00004679# (which is not required by ISO C or UNIX spec) and/or if we support
4680# tzname[]
4681AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004682
Brett Cannon43802422005-02-10 20:48:03 +00004683# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004684AC_MSG_CHECKING(for working tzset())
4685AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004686AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004687#include <stdlib.h>
4688#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004689#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004690
4691#if HAVE_TZNAME
4692extern char *tzname[];
4693#endif
4694
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004695int main()
4696{
Brett Cannon18367812003-09-19 00:59:16 +00004697 /* Note that we need to ensure that not only does tzset(3)
4698 do 'something' with localtime, but it works as documented
4699 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004700 This includes making sure that tzname is set properly if
4701 tm->tm_zone does not exist since it is the alternative way
4702 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004703
Victor Stinner1b80b242016-04-12 22:34:58 +02004704 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004705 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004706 */
4707
Brett Cannon43802422005-02-10 20:48:03 +00004708 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004709 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4710
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004711 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004712 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004713 if (localtime(&groundhogday)->tm_hour != 0)
4714 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004715#if HAVE_TZNAME
4716 /* For UTC, tzname[1] is sometimes "", sometimes " " */
Victor Stinner1b80b242016-04-12 22:34:58 +02004717 if (strcmp(tzname[0], "UTC") ||
Brett Cannon43802422005-02-10 20:48:03 +00004718 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4719 exit(1);
4720#endif
Brett Cannon18367812003-09-19 00:59:16 +00004721
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004722 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004723 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004724 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004725 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004726#if HAVE_TZNAME
4727 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4728 exit(1);
4729#endif
Brett Cannon18367812003-09-19 00:59:16 +00004730
4731 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4732 tzset();
4733 if (localtime(&groundhogday)->tm_hour != 11)
4734 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004735#if HAVE_TZNAME
4736 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4737 exit(1);
4738#endif
4739
4740#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004741 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4742 exit(1);
4743 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4744 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004745#endif
Brett Cannon18367812003-09-19 00:59:16 +00004746
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004747 exit(0);
4748}
Matthias Kloseb159a552010-04-25 21:00:44 +00004749]])],
4750[ac_cv_working_tzset=yes],
4751[ac_cv_working_tzset=no],
4752[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004753AC_MSG_RESULT($ac_cv_working_tzset)
4754if test "$ac_cv_working_tzset" = yes
4755then
4756 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4757 [Define if tzset() actually switches the local timezone in a meaningful way.])
4758fi
4759
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004760# Look for subsecond timestamps in struct stat
4761AC_MSG_CHECKING(for tv_nsec in struct stat)
4762AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004763AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004764struct stat st;
4765st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004766]])],
4767[ac_cv_stat_tv_nsec=yes],
4768[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004769AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4770if test "$ac_cv_stat_tv_nsec" = yes
4771then
4772 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4773 [Define if you have struct stat.st_mtim.tv_nsec])
4774fi
4775
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004776# Look for BSD style subsecond timestamps in struct stat
4777AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4778AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004779AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004780struct stat st;
4781st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004782]])],
4783[ac_cv_stat_tv_nsec2=yes],
4784[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004785AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4786if test "$ac_cv_stat_tv_nsec2" = yes
4787then
4788 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4789 [Define if you have struct stat.st_mtimensec])
4790fi
4791
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004792# first curses header check
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004793ac_save_cppflags="$CPPFLAGS"
4794CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
doko@ubuntu.com1a4f5612014-04-17 20:13:44 +02004795
4796AC_CHECK_HEADERS(curses.h ncurses.h)
4797
4798# On Solaris, term.h requires curses.h
4799AC_CHECK_HEADERS(term.h,,,[
4800#ifdef HAVE_CURSES_H
4801#include <curses.h>
4802#endif
4803])
4804
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004805# On HP/UX 11.0, mvwdelch is a block with a return statement
4806AC_MSG_CHECKING(whether mvwdelch is an expression)
4807AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004808AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004809 int rtn;
4810 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004811]])],
4812[ac_cv_mvwdelch_is_expression=yes],
4813[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004814AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4815
4816if test "$ac_cv_mvwdelch_is_expression" = yes
4817then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004818 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4819 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004820fi
4821
4822AC_MSG_CHECKING(whether WINDOW has _flags)
4823AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004824AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004825 WINDOW *w;
4826 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004827]])],
4828[ac_cv_window_has_flags=yes],
4829[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004830AC_MSG_RESULT($ac_cv_window_has_flags)
4831
4832
4833if test "$ac_cv_window_has_flags" = yes
4834then
Victor Stinner1b80b242016-04-12 22:34:58 +02004835 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004836 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004837fi
4838
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004839AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004840AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4841 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4842 AC_MSG_RESULT(yes)],
4843 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004844)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004845
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004846AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004847AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4848 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4849 AC_MSG_RESULT(yes)],
4850 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004851)
4852
4853AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004854AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4855 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4856 AC_MSG_RESULT(yes)],
4857 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004858)
doko@ubuntu.com9dc823d2012-07-07 03:06:42 +02004859# last curses configure check
4860CPPFLAGS=$ac_save_cppflags
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004861
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004862AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004863
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004864dnl NOTE: Inform user how to proceed with files when cross compiling.
4865if test "x$cross_compiling" = xyes; then
4866 if test "${ac_cv_file__dev_ptmx+set}" != set; then
4867 AC_MSG_CHECKING([for /dev/ptmx])
4868 AC_MSG_RESULT([not set])
4869 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
4870 fi
4871 if test "${ac_cv_file__dev_ptc+set}" != set; then
4872 AC_MSG_CHECKING([for /dev/ptc])
4873 AC_MSG_RESULT([not set])
4874 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
4875 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00004876fi
4877
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004878AC_CHECK_FILE(/dev/ptmx, [], [])
4879if test "x$ac_cv_file__dev_ptmx" = xyes; then
4880 AC_DEFINE(HAVE_DEV_PTMX, 1,
4881 [Define to 1 if you have the /dev/ptmx device file.])
4882fi
4883AC_CHECK_FILE(/dev/ptc, [], [])
4884if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00004885 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004886 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004887fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004888
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004889if test "$have_long_long" = yes
4890then
4891 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4892 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004893 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004894 #include <stdio.h>
4895 #include <stddef.h>
4896 #include <string.h>
4897
4898 #ifdef HAVE_SYS_TYPES_H
4899 #include <sys/types.h>
4900 #endif
4901
4902 int main()
4903 {
4904 char buffer[256];
4905
4906 if (sprintf(buffer, "%lld", (long long)123) < 0)
4907 return 1;
4908 if (strcmp(buffer, "123"))
4909 return 1;
4910
4911 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4912 return 1;
4913 if (strcmp(buffer, "-123"))
4914 return 1;
4915
4916 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4917 return 1;
4918 if (strcmp(buffer, "123"))
4919 return 1;
4920
4921 return 0;
4922 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004923 ]]])],
4924 [ac_cv_have_long_long_format=yes],
4925 [ac_cv_have_long_long_format=no],
Matthias Klose3b739b12012-03-15 19:31:06 +01004926 [ac_cv_have_long_long_format="cross -- assuming no"
4927 if test x$GCC = xyes; then
4928 save_CFLAGS=$CFLAGS
4929 CFLAGS="$CFLAGS -Werror -Wformat"
4930 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4931 #include <stdio.h>
4932 #include <stddef.h>
4933 ]], [[
4934 char *buffer;
4935 sprintf(buffer, "%lld", (long long)123);
4936 sprintf(buffer, "%lld", (long long)-123);
4937 sprintf(buffer, "%llu", (unsigned long long)123);
4938 ]])],
4939 ac_cv_have_long_long_format=yes
4940 )
4941 CFLAGS=$save_CFLAGS
4942 fi])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004943 )
4944 AC_MSG_RESULT($ac_cv_have_long_long_format)
4945fi
4946
Mark Dickinson89d7d412009-12-31 20:50:59 +00004947if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004948then
4949 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4950 [Define to printf format modifier for long long type])
4951fi
4952
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004953if test $ac_sys_system = Darwin
4954then
4955 LIBS="$LIBS -framework CoreFoundation"
4956fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004957
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004958AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004959AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004960#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004961#include <stddef.h>
4962#include <string.h>
4963
Christian Heimes2c181612007-12-17 20:04:13 +00004964#ifdef HAVE_SYS_TYPES_H
4965#include <sys/types.h>
4966#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004967
4968#ifdef HAVE_SSIZE_T
4969typedef ssize_t Py_ssize_t;
4970#elif SIZEOF_VOID_P == SIZEOF_LONG
4971typedef long Py_ssize_t;
4972#else
4973typedef int Py_ssize_t;
4974#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004975
Christian Heimes2c181612007-12-17 20:04:13 +00004976int main()
4977{
4978 char buffer[256];
4979
Thomas Wouters477c8d52006-05-27 19:21:47 +00004980 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4981 return 1;
4982
Thomas Wouters89f507f2006-12-13 04:49:30 +00004983 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004984 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004985
4986 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4987 return 1;
4988
4989 if (strcmp(buffer, "-123"))
4990 return 1;
4991
Thomas Wouters477c8d52006-05-27 19:21:47 +00004992 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004993}
Matthias Kloseb159a552010-04-25 21:00:44 +00004994]])],
4995 [ac_cv_have_size_t_format=yes],
4996 [ac_cv_have_size_t_format=no],
4997 [ac_cv_have_size_t_format="cross -- assuming yes"
4998])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004999if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005000 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
5001 [Define to printf format modifier for Py_ssize_t])
5002fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00005003
Martin v. Löwis01c04012002-11-11 14:58:44 +00005004AC_CHECK_TYPE(socklen_t,,
5005 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00005006 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00005007#ifdef HAVE_SYS_TYPES_H
5008#include <sys/types.h>
5009#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00005010#ifdef HAVE_SYS_SOCKET_H
5011#include <sys/socket.h>
5012#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00005013])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005014
Antoine Pitroufff95302008-09-03 18:58:51 +00005015AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00005016AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00005017AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krah19c21392012-11-22 23:47:32 +01005018#include <stdio.h>
Antoine Pitroufff95302008-09-03 18:58:51 +00005019#include<stdlib.h>
5020int main() {
5021 size_t len = -1;
5022 const char *str = "text";
5023 len = mbstowcs(NULL, str, 0);
5024 return (len != 4);
5025}
Matthias Kloseb159a552010-04-25 21:00:44 +00005026]])],
5027[ac_cv_broken_mbstowcs=no],
5028[ac_cv_broken_mbstowcs=yes],
5029[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00005030AC_MSG_RESULT($ac_cv_broken_mbstowcs)
5031if test "$ac_cv_broken_mbstowcs" = yes
5032then
5033 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005034 [Define if mbstowcs(NULL, "text", 0) does not return the number of
Antoine Pitroufff95302008-09-03 18:58:51 +00005035 wide chars that would be converted.])
5036fi
5037
Antoine Pitroub52ec782009-01-25 16:34:23 +00005038# Check for --with-computed-gotos
5039AC_MSG_CHECKING(for --with-computed-gotos)
5040AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00005041 AS_HELP_STRING([--with(out)-computed-gotos],
5042 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00005043[
Antoine Pitrou042b1282010-08-13 21:15:58 +00005044if test "$withval" = yes
Victor Stinner1b80b242016-04-12 22:34:58 +02005045then
Antoine Pitroub52ec782009-01-25 16:34:23 +00005046 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
Victor Stinner1b80b242016-04-12 22:34:58 +02005047 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005048 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00005049fi
5050if test "$withval" = no
Victor Stinner1b80b242016-04-12 22:34:58 +02005051then
Antoine Pitrou042b1282010-08-13 21:15:58 +00005052 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
Victor Stinner1b80b242016-04-12 22:34:58 +02005053 [Define if you want to use computed gotos in ceval.c.])
Antoine Pitrou042b1282010-08-13 21:15:58 +00005054 AC_MSG_RESULT(no)
5055fi
5056],
5057[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00005058
Matthias Kloseb17289e2012-03-15 19:51:34 +01005059AC_MSG_CHECKING(whether $CC supports computed gotos)
5060AC_CACHE_VAL(ac_cv_computed_gotos,
5061AC_RUN_IFELSE([AC_LANG_SOURCE([[[
5062int main(int argc, char **argv)
5063{
5064 static void *targets[1] = { &&LABEL1 };
5065 goto LABEL2;
5066LABEL1:
5067 return 0;
5068LABEL2:
5069 goto *targets[0];
5070 return 1;
5071}
5072]]])],
5073[ac_cv_computed_gotos=yes],
5074[ac_cv_computed_gotos=no],
5075[if test "${with_computed_gotos+set}" = set; then
5076 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
5077 else
5078 ac_cv_computed_gotos=no
5079 fi]))
5080AC_MSG_RESULT($ac_cv_computed_gotos)
5081case "$ac_cv_computed_gotos" in yes*)
5082 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
5083 [Define if the C compiler supports computed gotos.])
5084esac
5085
R. David Murraye16cda92010-10-15 23:12:57 +00005086case $ac_sys_system in
Victor Stinner1b80b242016-04-12 22:34:58 +02005087AIX*)
R. David Murraye16cda92010-10-15 23:12:57 +00005088 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
5089esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00005090
Jesus Cea6a792292010-05-03 21:18:48 +00005091
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00005092AC_SUBST(THREADHEADERS)
5093
5094for h in `(cd $srcdir;echo Python/thread_*.h)`
5095do
5096 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
5097done
5098
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005099AC_SUBST(SRCDIRS)
Ned Deily0db50cf2014-07-25 12:41:31 -07005100SRCDIRS="Parser Grammar Objects Python Modules Mac Programs"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00005101AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005102for dir in $SRCDIRS; do
5103 if test ! -d $dir; then
5104 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00005105 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00005106done
5107AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00005108
Stefan Krah1919b7e2012-03-21 18:25:23 +01005109# Availability of -O2:
5110AC_MSG_CHECKING(for -O2)
5111saved_cflags="$CFLAGS"
5112CFLAGS="-O2"
5113AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
5114]])],[have_O2=yes],[have_O2=no])
5115AC_MSG_RESULT($have_O2)
5116CFLAGS="$saved_cflags"
5117
5118# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
5119# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
5120AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
5121saved_cflags="$CFLAGS"
5122CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
5123if test "$have_O2" = no; then
5124 CFLAGS=""
5125fi
5126AC_RUN_IFELSE([AC_LANG_SOURCE([[
5127#include <stdio.h>
5128#include <stdlib.h>
5129#include <string.h>
5130void foo(void *p, void *q) { memmove(p, q, 19); }
5131int main() {
5132 char a[32] = "123456789000000000";
5133 foo(&a[9], a);
5134 if (strcmp(a, "123456789123456789000000000") != 0)
5135 return 1;
5136 foo(a, &a[9]);
5137 if (strcmp(a, "123456789000000000") != 0)
5138 return 1;
5139 return 0;
5140}
5141]])],
5142[have_glibc_memmove_bug=no],
5143[have_glibc_memmove_bug=yes],
5144[have_glibc_memmove_bug=undefined])
5145CFLAGS="$saved_cflags"
5146AC_MSG_RESULT($have_glibc_memmove_bug)
5147if test "$have_glibc_memmove_bug" = yes; then
5148 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
5149 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
5150 for memmove and bcopy.])
5151fi
5152
5153if test "$have_gcc_asm_for_x87" = yes; then
5154 # Some versions of gcc miscompile inline asm:
5155 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
5156 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
5157 case $CC in
5158 *gcc*)
5159 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
5160 saved_cflags="$CFLAGS"
5161 CFLAGS="-O2"
5162 AC_RUN_IFELSE([AC_LANG_SOURCE([[
5163 __attribute__((noinline)) int
5164 foo(int *p) {
5165 int r;
5166 asm ( "movl \$6, (%1)\n\t"
5167 "xorl %0, %0\n\t"
5168 : "=r" (r) : "r" (p) : "memory"
5169 );
5170 return r;
5171 }
5172 int main() {
5173 int p = 8;
5174 if ((foo(&p) ? : p) != 6)
5175 return 1;
5176 return 0;
5177 }
5178 ]])],
5179 [have_ipa_pure_const_bug=no],
5180 [have_ipa_pure_const_bug=yes],
5181 [have_ipa_pure_const_bug=undefined])
5182 CFLAGS="$saved_cflags"
5183 AC_MSG_RESULT($have_ipa_pure_const_bug)
5184 if test "$have_ipa_pure_const_bug" = yes; then
5185 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
5186 [Define if gcc has the ipa-pure-const bug.])
5187 fi
5188 ;;
5189 esac
5190fi
5191
Victor Stinner4f5366e2015-01-09 02:13:19 +01005192# Check for stdatomic.h
5193AC_MSG_CHECKING(for stdatomic.h)
5194AC_LINK_IFELSE(
5195[
5196 AC_LANG_SOURCE([[
5197 #include <stdatomic.h>
Victor Stinner923e06f2015-01-14 16:01:46 +01005198 atomic_int value = ATOMIC_VAR_INIT(1);
5199 _Atomic void *py_atomic_address = (void*) &value;
Victor Stinner4f5366e2015-01-09 02:13:19 +01005200 int main() {
5201 int loaded_value = atomic_load(&value);
5202 return 0;
5203 }
5204 ]])
5205],[have_stdatomic_h=yes],[have_stdatomic_h=no])
5206
5207AC_MSG_RESULT($have_stdatomic_h)
5208
5209if test "$have_stdatomic_h" = yes; then
Victor Stinner923e06f2015-01-14 16:01:46 +01005210 AC_DEFINE(HAVE_STD_ATOMIC, 1,
5211 [Has stdatomic.h, atomic_int and _Atomic void* types work])
Victor Stinner4f5366e2015-01-09 02:13:19 +01005212fi
5213
5214# Check for GCC >= 4.7 __atomic builtins
5215AC_MSG_CHECKING(for GCC >= 4.7 __atomic builtins)
5216AC_LINK_IFELSE(
5217[
5218 AC_LANG_SOURCE([[
5219 volatile int val = 1;
5220 int main() {
5221 __atomic_load_n(&val, __ATOMIC_SEQ_CST);
5222 return 0;
5223 }
5224 ]])
5225],[have_builtin_atomic=yes],[have_builtin_atomic=no])
5226
5227AC_MSG_RESULT($have_builtin_atomic)
5228
5229if test "$have_builtin_atomic" = yes; then
5230 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin atomics])
5231fi
5232
Ned Deily322f5ba2013-11-21 23:01:59 -08005233# ensurepip option
5234AC_MSG_CHECKING(for ensurepip)
5235AC_ARG_WITH(ensurepip,
5236 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
5237 ["install" or "upgrade" using bundled pip])],
5238 [],
5239 [with_ensurepip=upgrade])
5240AS_CASE($with_ensurepip,
5241 [yes|upgrade],[ENSUREPIP=upgrade],
5242 [install],[ENSUREPIP=install],
5243 [no],[ENSUREPIP=no],
5244 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
5245AC_MSG_RESULT($ENSUREPIP)
5246AC_SUBST(ENSUREPIP)
5247
Victor Stinner35a97c02015-03-08 02:59:09 +01005248# check if the dirent structure of a d_type field and DT_UNKNOWN is defined
5249AC_MSG_CHECKING(if the dirent structure of a d_type field)
5250AC_LINK_IFELSE(
5251[
5252 AC_LANG_SOURCE([[
5253 #include <dirent.h>
5254
5255 int main() {
5256 struct dirent entry;
5257 return entry.d_type == DT_UNKNOWN;
5258 }
5259 ]])
5260],[have_dirent_d_type=yes],[have_dirent_d_type=no])
5261AC_MSG_RESULT($have_dirent_d_type)
5262
5263if test "$have_dirent_d_type" = yes; then
5264 AC_DEFINE(HAVE_DIRENT_D_TYPE, 1,
5265 [Define to 1 if the dirent structure has a d_type field])
5266fi
5267
Victor Stinner9eb57c52015-03-19 22:21:49 +01005268# check if the Linux getrandom() syscall is available
5269AC_MSG_CHECKING(for the Linux getrandom() syscall)
5270AC_LINK_IFELSE(
5271[
5272 AC_LANG_SOURCE([[
Victor Stinner1b80b242016-04-12 22:34:58 +02005273 #include <unistd.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005274 #include <sys/syscall.h>
Victor Stinnerdddf4842016-06-07 11:21:42 +02005275 #include <linux/random.h>
Victor Stinner9eb57c52015-03-19 22:21:49 +01005276
5277 int main() {
Victor Stinner9eb57c52015-03-19 22:21:49 +01005278 char buffer[1];
Victor Stinner3abf44e2015-09-18 15:38:37 +02005279 const size_t buflen = sizeof(buffer);
Victor Stinnerdddf4842016-06-07 11:21:42 +02005280 const int flags = GRND_NONBLOCK;
5281 /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */
Victor Stinner3abf44e2015-09-18 15:38:37 +02005282 (void)syscall(SYS_getrandom, buffer, buflen, flags);
Victor Stinner9eb57c52015-03-19 22:21:49 +01005283 return 0;
5284 }
5285 ]])
5286],[have_getrandom_syscall=yes],[have_getrandom_syscall=no])
5287AC_MSG_RESULT($have_getrandom_syscall)
5288
5289if test "$have_getrandom_syscall" = yes; then
5290 AC_DEFINE(HAVE_GETRANDOM_SYSCALL, 1,
5291 [Define to 1 if the Linux getrandom() syscall is available])
5292fi
5293
Victor Stinner3abf44e2015-09-18 15:38:37 +02005294# check if the getrandom() function is available
5295# the test was written for the Solaris function of <sys/random.h>
5296AC_MSG_CHECKING(for the getrandom() function)
5297AC_LINK_IFELSE(
5298[
5299 AC_LANG_SOURCE([[
5300 #include <sys/random.h>
5301
5302 int main() {
5303 char buffer[1];
5304 const size_t buflen = sizeof(buffer);
5305 const int flags = 0;
5306 /* ignore the result, Python checks for ENOSYS at runtime */
5307 (void)getrandom(buffer, buflen, flags);
5308 return 0;
5309 }
5310 ]])
5311],[have_getrandom=yes],[have_getrandom=no])
5312AC_MSG_RESULT($have_getrandom)
5313
5314if test "$have_getrandom" = yes; then
5315 AC_DEFINE(HAVE_GETRANDOM, 1,
5316 [Define to 1 if the getrandom() function is available])
5317fi
5318
Guido van Rossum627b2d71993-12-24 10:39:16 +00005319# generate output files
doko@python.org87421192013-01-26 11:39:31 +01005320AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00005321AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00005322AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00005323
Christian Heimes75ed8902013-11-20 01:11:18 +01005324echo "creating Modules/Setup" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005325if test ! -f Modules/Setup
5326then
5327 cp $srcdir/Modules/Setup.dist Modules/Setup
5328fi
5329
Christian Heimes75ed8902013-11-20 01:11:18 +01005330echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005331if test ! -f Modules/Setup.local
5332then
5333 echo "# Edit this file for local setup changes" >Modules/Setup.local
5334fi
5335
Christian Heimes75ed8902013-11-20 01:11:18 +01005336echo "creating Makefile" >&AS_MESSAGE_FD
Neil Schemenauer61c51152001-01-26 16:18:16 +00005337$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
5338 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00005339 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00005340mv config.c Modules