blob: 5bd9b9d412899d1f21355efd7a249e2fd7acc8eb [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +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)
Martin v. Löwis174440b2008-10-03 08:59:41 +00006m4_define(PYTHON_VERSION, 2.7)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Georg Brandl71f4fbb2011-02-25 11:04:50 +00008AC_PREREQ(2.65)
Alexandre Vassalotti130ae152009-07-18 00:31:06 +00009
Guido van Rossum76be6ed1995-01-02 18:33:54 +000010AC_REVISION($Revision$)
Benjamin Petersoncc8929b2016-08-03 22:01:32 -070011AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
doko@python.orgd65e2ba2013-01-31 23:52:03 +010015AC_CANONICAL_HOST
16AC_SUBST(build)
17AC_SUBST(host)
18
Ned Deily983df862014-08-22 13:30:59 -070019# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
20rm -f pybuilddir.txt
21
doko@python.orgd65e2ba2013-01-31 23:52:03 +010022if test "$cross_compiling" = yes; then
23 AC_MSG_CHECKING([for python interpreter for cross build])
24 if test -z "$PYTHON_FOR_BUILD"; then
25 for interp in python$PACKAGE_VERSION python2 python; do
26 which $interp >/dev/null 2>&1 || continue
27 if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
28 break
29 fi
30 interp=
31 done
32 if test x$interp = x; then
33 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
34 fi
35 AC_MSG_RESULT($interp)
doko@ubuntu.com9e7ece22015-04-13 21:55:08 +020036 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@python.orgd65e2ba2013-01-31 23:52:03 +010037 fi
Martin Panterbc82de02016-07-29 05:52:32 +000038 # Used to comment out stuff for rebuilding generated files
39 GENERATED_COMMENT='#'
doko@python.orgd65e2ba2013-01-31 23:52:03 +010040elif test "$cross_compiling" = maybe; then
41 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
42else
43 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
Martin Panterbc82de02016-07-29 05:52:32 +000044 GENERATED_COMMENT=''
doko@python.orgd65e2ba2013-01-31 23:52:03 +010045fi
46AC_SUBST(PYTHON_FOR_BUILD)
Martin Panterbc82de02016-07-29 05:52:32 +000047AC_SUBST(GENERATED_COMMENT)
doko@python.orgd65e2ba2013-01-31 23:52:03 +010048
Georg Brandlbcd64a32009-03-31 21:45:18 +000049dnl Ensure that if prefix is specified, it does not end in a slash. If
50dnl it does, we get path names containing '//' which is both ugly and
51dnl can cause trouble.
52
53dnl Last slash shouldn't be stripped if prefix=/
54if test "$prefix" != "/"; then
55 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
56fi
57
Martin v. Löwis8316feb2003-06-14 07:48:07 +000058dnl This is for stuff that absolutely must end up in pyconfig.h.
59dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000060AH_TOP([
61#ifndef Py_PYCONFIG_H
62#define Py_PYCONFIG_H
63])
Martin v. Löwis11437992002-04-12 09:54:03 +000064AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000065/* Define the macros needed if on a UnixWare 7.x system. */
66#if defined(__USLC__) && defined(__SCO_VERSION__)
67#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
68#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000069
70#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000071])
72
Martin v. Löwis8316feb2003-06-14 07:48:07 +000073# We don't use PACKAGE_ variables, and they cause conflicts
74# with other autoconf-based packages that include Python.h
75grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
76rm confdefs.h
77mv confdefs.h.new confdefs.h
78
Guido van Rossum642b6781997-07-19 19:35:41 +000079AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000080VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000081
Martin v. Löwis1142de32002-03-29 16:28:31 +000082AC_SUBST(SOVERSION)
83SOVERSION=1.0
84
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000085# The later defininition of _XOPEN_SOURCE disables certain features
86# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
87AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
88
Martin v. Löwisbcd93962003-05-03 10:32:18 +000089# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
90# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
91# them.
92AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
93
Andrew MacIntyreabccf412003-07-02 13:53:25 +000094# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
95# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
96# them.
97AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
98
Martin v. Löwisd6320502004-08-12 13:45:08 +000099# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
100# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
101AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
102
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000103# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
104# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
105# them.
106AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
107
108
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000109define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000110
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000111# Arguments passed to configure.
112AC_SUBST(CONFIG_ARGS)
113CONFIG_ARGS="$ac_configure_args"
114
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000115AC_MSG_CHECKING([for --enable-universalsdk])
Ronald Oussoren988117f2006-04-29 11:31:35 +0000116AC_ARG_ENABLE(universalsdk,
Matthias Klose22520ea2010-05-08 10:14:46 +0000117 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
Ronald Oussoren988117f2006-04-29 11:31:35 +0000118[
119 case $enableval in
120 yes)
121 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000122 if test ! -d "${enableval}"
123 then
124 enableval=/
125 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000126 ;;
127 esac
128 case $enableval in
129 no)
130 UNIVERSALSDK=
131 enable_universalsdk=
132 ;;
133 *)
134 UNIVERSALSDK=$enableval
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000135 if test ! -d "${UNIVERSALSDK}"
136 then
137 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
138 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000139 ;;
140 esac
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000141
Ronald Oussoren988117f2006-04-29 11:31:35 +0000142],[
143 UNIVERSALSDK=
144 enable_universalsdk=
145])
Ronald Oussoren3c0a1262010-01-17 19:27:57 +0000146if test -n "${UNIVERSALSDK}"
147then
148 AC_MSG_RESULT(${UNIVERSALSDK})
149else
150 AC_MSG_RESULT(no)
151fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000152AC_SUBST(UNIVERSALSDK)
153
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000154AC_SUBST(ARCH_RUN_32BIT)
Ned Deily8e60f6e2013-05-30 00:14:29 -0700155ARCH_RUN_32BIT=""
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000156
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000157UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000158AC_SUBST(LIPO_32BIT_FLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000159AC_MSG_CHECKING(for --with-universal-archs)
160AC_ARG_WITH(universal-archs,
Matthias Klose22520ea2010-05-08 10:14:46 +0000161 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000162[
163 AC_MSG_RESULT($withval)
164 UNIVERSAL_ARCHS="$withval"
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000165 if test "${enable_universalsdk}" ; then
166 :
167 else
168 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
169 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000170],
171[
172 AC_MSG_RESULT(32-bit)
173])
174
175
176
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000177AC_ARG_WITH(framework-name,
Matthias Klose22520ea2010-05-08 10:14:46 +0000178 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klose5183ebd2010-04-24 16:38:36 +0000179 [specify an alternate name of the framework built with --enable-framework]),
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000180[
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000181 if test "${enable_framework}"; then
182 :
183 else
184 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
185 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000186 PYTHONFRAMEWORK=${withval}
187 PYTHONFRAMEWORKDIR=${withval}.framework
188 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
189 ],[
190 PYTHONFRAMEWORK=Python
191 PYTHONFRAMEWORKDIR=Python.framework
192 PYTHONFRAMEWORKIDENTIFIER=org.python.python
193])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000194dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000195AC_ARG_ENABLE(framework,
Matthias Klose22520ea2010-05-08 10:14:46 +0000196 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000197[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198 case $enableval in
199 yes)
200 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000201 esac
202 case $enableval in
203 no)
204 PYTHONFRAMEWORK=
205 PYTHONFRAMEWORKDIR=no-framework
206 PYTHONFRAMEWORKPREFIX=
207 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000208 FRAMEWORKINSTALLFIRST=
209 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000210 FRAMEWORKALTINSTALLFIRST=
211 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000212 if test "x${prefix}" = "xNONE"; then
213 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
214 else
215 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
216 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000217 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 ;;
219 *)
Ronald Oussoren01d149f2010-04-30 11:20:14 +0000220 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000221 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000222 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000223 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000224 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
225 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren01d149f2010-04-30 11:20:14 +0000226 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000227
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000228 if test "x${prefix}" = "xNONE" ; then
229 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren01d149f2010-04-30 11:20:14 +0000230
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000231 else
232 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
233 fi
Ronald Oussoren01d149f2010-04-30 11:20:14 +0000234
235 case "${enableval}" in
236 /System*)
237 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
238 if test "${prefix}" = "NONE" ; then
239 # See below
240 FRAMEWORKUNIXTOOLSPREFIX="/usr"
241 fi
242 ;;
243
244 /Library*)
245 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
246 ;;
247
248 */Library/Frameworks)
249 MDIR="`dirname "${enableval}"`"
250 MDIR="`dirname "${MDIR}"`"
251 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
252
253 if test "${prefix}" = "NONE"; then
254 # User hasn't specified the
255 # --prefix option, but wants to install
256 # the framework in a non-default location,
257 # ensure that the compatibility links get
258 # installed relative to that prefix as well
259 # instead of in /usr/local.
260 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
261 fi
262 ;;
263
264 *)
265 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
266 ;;
267 esac
268
Jack Jansen127e56e2001-09-11 14:41:54 +0000269 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000270
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000271 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000272 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000273 AC_CONFIG_FILES(Mac/Makefile)
274 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
275 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000276 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
277 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000278 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000279 ],[
280 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000281 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000282 PYTHONFRAMEWORKPREFIX=
283 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000284 FRAMEWORKINSTALLFIRST=
285 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000286 FRAMEWORKALTINSTALLFIRST=
287 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000288 if test "x${prefix}" = "xNONE" ; then
289 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
290 else
291 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
292 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000293 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000294
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000295])
296AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000297AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000298AC_SUBST(PYTHONFRAMEWORKDIR)
299AC_SUBST(PYTHONFRAMEWORKPREFIX)
300AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000301AC_SUBST(FRAMEWORKINSTALLFIRST)
302AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000303AC_SUBST(FRAMEWORKALTINSTALLFIRST)
304AC_SUBST(FRAMEWORKALTINSTALLLAST)
305AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren01d149f2010-04-30 11:20:14 +0000306AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000307
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000308##AC_ARG_WITH(dyld,
Matthias Klose22520ea2010-05-08 10:14:46 +0000309## AS_HELP_STRING([--with-dyld],
310## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000311##
Guido van Rossumb418f891996-07-30 18:06:02 +0000312# Set name for machine-dependent library files
313AC_SUBST(MACHDEP)
314AC_MSG_CHECKING(MACHDEP)
315if test -z "$MACHDEP"
316then
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100317 # avoid using uname for cross builds
318 if test "$cross_compiling" = yes; then
319 # ac_sys_system and ac_sys_release are only used for setting
320 # `define_xopen_source' in the case statement below. For the
321 # current supported cross builds, this macro is not adjusted.
322 case "$host" in
323 *-*-linux*)
324 ac_sys_system=Linux
325 ;;
326 *-*-cygwin*)
327 ac_sys_system=Cygwin
328 ;;
329 *)
330 # for now, limit cross builds to known configurations
331 MACHDEP="unknown"
332 AC_MSG_ERROR([cross build not supported for $host])
333 esac
334 ac_sys_release=
335 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000336 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000337 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000338 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000339 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000340 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000341 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000342 fi
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100343 fi
344 ac_md_system=`echo $ac_sys_system |
345 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
346 ac_md_release=`echo $ac_sys_release |
347 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
348 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000349
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100350 case $MACHDEP in
Victor Stinneracacbaa2011-08-20 14:02:38 +0200351 linux*) MACHDEP="linux2";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000352 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000353 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000354 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000355 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000356 '') MACHDEP="unknown";;
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100357 esac
358fi
359
360AC_SUBST(_PYTHON_HOST_PLATFORM)
361if test "$cross_compiling" = yes; then
362 case "$host" in
363 *-*-linux*)
364 case "$host_cpu" in
365 arm*)
366 _host_cpu=arm
367 ;;
368 *)
369 _host_cpu=$host_cpu
370 esac
371 ;;
372 *-*-cygwin*)
373 _host_cpu=
374 ;;
375 *)
376 # for now, limit cross builds to known configurations
377 MACHDEP="unknown"
378 AC_MSG_ERROR([cross build not supported for $host])
Guido van Rossumb418f891996-07-30 18:06:02 +0000379 esac
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100380 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
Guido van Rossumb418f891996-07-30 18:06:02 +0000381fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000382
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000383# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
384# disable features if it is defined, without any means to access these
385# features as extensions. For these systems, we skip the definition of
386# _XOPEN_SOURCE. Before adding a system to the list to gain access to
387# some feature, make sure there is no alternative way to access this
388# feature. Also, when using wildcards, make sure you have verified the
389# need for not defining _XOPEN_SOURCE on all systems matching the
390# wildcard, and that the wildcard does not include future systems
391# (which may remove their limitations).
392dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
393case $ac_sys_system/$ac_sys_release in
394 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
395 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000396 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis7875ef62010-02-15 21:41:12 +0000397 # In addition, Stefan Krah confirms that issue #1244610 exists through
398 # OpenBSD 4.6, but is fixed in 4.7.
Charles-François Natali97781b02011-07-22 23:43:42 +0200399 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000400 define_xopen_source=no
401 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
402 # also defined. This can be overridden by defining _BSD_SOURCE
403 # As this has a different meaning on Linux, only define it on OpenBSD
404 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
405 ;;
Charles-François Natali97781b02011-07-22 23:43:42 +0200406 OpenBSD/*)
Martin v. Löwis5e2dd862010-02-15 08:32:00 +0000407 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
408 # also defined. This can be overridden by defining _BSD_SOURCE
409 # As this has a different meaning on Linux, only define it on OpenBSD
410 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
411 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000412 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
413 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
414 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000415 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000416 define_xopen_source=no;;
Martin v. Löwisb41afb52010-05-28 15:28:47 +0000417 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
418 # request to enable features supported by the standard as a request
419 # to disable features not supported by the standard. The best way
420 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
421 # entirely and define __EXTENSIONS__ instead.
422 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000423 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000424 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
425 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000426 # Reconfirmed for 7.1.4 by Martin v. Loewis.
427 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000428 define_xopen_source=no;;
429 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000430 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000431 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000432 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000433 # On FreeBSD 4, the math functions C89 does not cover are never defined
434 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
435 FreeBSD/4.*)
436 define_xopen_source=no;;
437 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
438 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
439 # identifies itself as Darwin/7.*
440 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
441 # disables platform specific features beyond repair.
442 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
443 # has no effect, don't bother defining them
444 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000445 define_xopen_source=no;;
Ronald Oussorena55af9a2010-01-17 16:25:57 +0000446 Darwin/1@<:@0-9@:>@.*)
447 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000448 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
449 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
450 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000451 AIX/4)
452 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000453 AIX/5)
454 if test `uname -r` -eq 1; then
455 define_xopen_source=no
456 fi
457 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000458 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
459 # defining NI_NUMERICHOST.
460 QNX/6.3.2)
461 define_xopen_source=no
462 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000463
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000464esac
465
466if test $define_xopen_source = yes
467then
Martin v. Löwisb41afb52010-05-28 15:28:47 +0000468 AC_DEFINE(_XOPEN_SOURCE, 600,
469 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000470
471 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
472 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
473 # several APIs are not declared. Since this is also needed in some
474 # cases for HP-UX, we define it globally.
Martin v. Löwisb41afb52010-05-28 15:28:47 +0000475 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
476 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000477
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000478 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
479
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000480fi
481
Guido van Rossum91922671997-10-09 20:24:13 +0000482#
483# SGI compilers allow the specification of the both the ABI and the
484# ISA on the command line. Depending on the values of these switches,
Martin Panterb1d867f2016-05-26 05:28:50 +0000485# different and often incompatible code will be generated.
Guido van Rossum91922671997-10-09 20:24:13 +0000486#
487# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
488# thus supply support for various ABI/ISA combinations. The MACHDEP
489# variable is also adjusted.
490#
491AC_SUBST(SGI_ABI)
492if test ! -z "$SGI_ABI"
493then
494 CC="cc $SGI_ABI"
495 LDFLAGS="$SGI_ABI $LDFLAGS"
496 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
497fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000498AC_MSG_RESULT($MACHDEP)
499
doko@ubuntu.com9e7ece22015-04-13 21:55:08 +0200500AC_SUBST(PLATDIR)
501PLATDIR=plat-$MACHDEP
502
Jack Jansen83f898c2002-12-30 22:23:40 +0000503# And add extra plat-mac for darwin
504AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000505AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000506AC_MSG_CHECKING(EXTRAPLATDIR)
507if test -z "$EXTRAPLATDIR"
508then
509 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000510 darwin)
511 EXTRAPLATDIR="\$(PLATMACDIRS)"
512 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
513 ;;
514 *)
515 EXTRAPLATDIR=""
516 EXTRAMACHDEPPATH=""
517 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000518 esac
519fi
520AC_MSG_RESULT($EXTRAPLATDIR)
521
Jack Jansen6b08a402004-06-03 12:41:45 +0000522# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
523# it may influence the way we can build extensions, so distutils
524# needs to check it
525AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000526AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000527CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000528EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000529
Guido van Rossum627b2d71993-12-24 10:39:16 +0000530# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000531
532# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
533# for debug/optimization stuff. BASECFLAGS is for flags that are required
534# just to get things to compile and link. Users are free to override OPT
535# when running configure or make. The build should not break if they do.
536# BASECFLAGS should generally not be messed with, however.
537
538# XXX shouldn't some/most/all of this code be merged with the stuff later
539# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000540AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000541AC_ARG_WITH(gcc,
Matthias Klose22520ea2010-05-08 10:14:46 +0000542 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000543[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000544 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000545 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000546 without_gcc=yes;;
547 yes) CC=gcc
548 without_gcc=no;;
549 *) CC=$withval
550 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000551 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000552 case $ac_sys_system in
Antoine Pitrou285cd162010-09-21 15:23:17 +0000553 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000554 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000555 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000556 case $BE_HOST_CPU in
557 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000558 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000559 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000560 BASECFLAGS="$BASECFLAGS -export pragma"
561 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000562 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000563 ;;
564 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000565 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000566 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000567 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000568 ;;
569 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000570 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000571 ;;
572 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000573 AR="\$(srcdir)/Modules/ar_beos"
574 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000575 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000576 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000577 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000578AC_MSG_RESULT($without_gcc)
579
Zachary Ware6ed42ea2015-12-21 11:43:03 -0600580AC_MSG_CHECKING(for --with-icc)
581AC_ARG_WITH(icc,
582 AS_HELP_STRING([--with-icc], [build with icc]),
583[
584 case $withval in
585 no) CC=${CC:-cc}
586 with_icc=no;;
587 yes) CC=icc
588 CXX=icpc
589 with_icc=yes;;
590 *) CC=$withval
591 with_icc=$withval;;
592 esac], [
593 with_icc=no])
594AC_MSG_RESULT($with_icc)
595
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000596# If the user switches compilers, we can't believe the cache
597if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
598then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000599 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
600(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000601fi
602
Trent Nelson15daa352012-12-13 06:46:39 +0000603if test "$MACHDEP" = "irix6" && test "$CC" != "gcc"; then
604 # Normally, MIPSpro CC treats #error directives as warnings, which means
605 # a successful exit code is returned (0). This is a problem because IRIX
606 # has a bunch of system headers with this guard at the top:
607 #
608 # #ifndef __c99
609 # #error This header file is to be used only for c99 mode compilations
610 # #else
611 #
612 # When autoconf tests for such a header, like stdint.h, this happens:
613 #
614 # configure:4619: cc -c conftest.c >&5
615 # cc-1035 cc: WARNING File = /usr/include/stdint.h, Line = 5
616 # #error directive: This header file is to be used only for c99 mode
617 # compilations
618 #
619 # #error This header file is to be used only for c99 mode compilations
620 # ^
621 #
622 # configure:4619: $? = 0
623 # configure:4619: result: yes
624 #
625 # Therefore, we use `-diag_error 1035` to have the compiler treat the
626 # warning as an error, which causes cc to return a non-zero result,
627 # which autoconf can interpret correctly.
628 CFLAGS="$CFLAGS -diag_error 1035"
629 # Whilst we're here, we might as well make sure CXX defaults to something
630 # sensible if we're not using gcc.
631 if test -z "$CXX"; then
632 CXX="CC"
633 fi
634fi
635
Marc-André Lemburg6d5e5792010-04-30 17:20:14 +0000636# If the user set CFLAGS, use this instead of the automatically
637# determined setting
638preset_cflags="$CFLAGS"
Guido van Rossum627b2d71993-12-24 10:39:16 +0000639AC_PROG_CC
Marc-André Lemburg6d5e5792010-04-30 17:20:14 +0000640if test ! -z "$preset_cflags"
641then
642 CFLAGS=$preset_cflags
643fi
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000644
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000645AC_SUBST(CXX)
646AC_SUBST(MAINCC)
647AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
648AC_ARG_WITH(cxx_main,
Matthias Klose22520ea2010-05-08 10:14:46 +0000649 AS_HELP_STRING([--with-cxx-main=<compiler>],
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000650 [compile main() and link python executable with C++ compiler]),
651[
652
653 case $withval in
654 no) with_cxx_main=no
655 MAINCC='$(CC)';;
656 yes) with_cxx_main=yes
657 MAINCC='$(CXX)';;
658 *) with_cxx_main=yes
659 MAINCC=$withval
660 if test -z "$CXX"
661 then
662 CXX=$withval
663 fi;;
664 esac], [
665 with_cxx_main=no
666 MAINCC='$(CC)'
667])
668AC_MSG_RESULT($with_cxx_main)
669
670preset_cxx="$CXX"
671if test -z "$CXX"
672then
673 case "$CC" in
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100674 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
675 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000676 esac
677 if test "$CXX" = "notfound"
678 then
679 CXX=""
680 fi
681fi
682if test -z "$CXX"
683then
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100684 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000685 if test "$CXX" = "notfound"
686 then
687 CXX=""
688 fi
689fi
690if test "$preset_cxx" != "$CXX"
691then
692 AC_MSG_WARN([
693
694 By default, distutils will build C++ extension modules with "$CXX".
695 If this is not intended, then set CXX on the configure command line.
696 ])
697fi
698
doko@python.org4e63fbe2013-01-25 13:08:27 +0100699MULTIARCH=$($CC --print-multiarch 2>/dev/null)
700AC_SUBST(MULTIARCH)
701
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000702
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000703# checks for UNIX variants that set C preprocessor variables
Matthias Klose9f8e0c12010-05-08 10:17:27 +0000704AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000705
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000706# Check for unsupported systems
707case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000708atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000709 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
710 echo See README for details.
711 exit 1;;
712esac
713
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000714AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000715AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000716AC_ARG_WITH(suffix,
Matthias Klose22520ea2010-05-08 10:14:46 +0000717 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000718[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000719 case $withval in
720 no) EXEEXT=;;
721 yes) EXEEXT=.exe;;
722 *) EXEEXT=$withval;;
723 esac])
724AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000725
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000726# Test whether we're running on a non-case-sensitive system, in which
727# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000728AC_SUBST(BUILDEXEEXT)
729AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000730if test ! -d CaseSensitiveTestDir; then
731mkdir CaseSensitiveTestDir
732fi
733
734if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000735then
Jack Jansen1999ef42001-12-06 21:47:20 +0000736 AC_MSG_RESULT(yes)
737 BUILDEXEEXT=.exe
738else
739 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000740 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000741fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000742rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000743
Guido van Rossumdd997f71998-10-07 19:58:26 +0000744case $MACHDEP in
745bsdos*)
746 case $CC in
747 gcc) CC="$CC -D_HAVE_BSDI";;
748 esac;;
749esac
750
Guido van Rossum84561611997-08-21 00:08:11 +0000751case $ac_sys_system in
752hp*|HP*)
753 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000754 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000755 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000756SunOS*)
757 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000758 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000759 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000760esac
761
Martin v. Löwise8964d42001-03-06 12:09:07 +0000762
Neil Schemenauer61c51152001-01-26 16:18:16 +0000763AC_SUBST(LIBRARY)
764AC_MSG_CHECKING(LIBRARY)
765if test -z "$LIBRARY"
766then
767 LIBRARY='libpython$(VERSION).a'
768fi
769AC_MSG_RESULT($LIBRARY)
770
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000771# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000772# name of the library into which to insert object files). BLDLIBRARY is also
773# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
774# is blank as the main program is not linked directly against LDLIBRARY.
775# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
776# systems without shared libraries, LDLIBRARY is the same as LIBRARY
777# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
778# DLLLIBRARY is the shared (i.e., DLL) library.
779#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000780# RUNSHARED is used to run shared python without installed libraries
781#
782# INSTSONAME is the name of the shared library that will be use to install
783# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000784AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000785AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000786AC_SUBST(BLDLIBRARY)
787AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000788AC_SUBST(INSTSONAME)
789AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000790LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000791BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000792INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000793DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000794LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000795RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000796
Guido van Rossumfb842551997-08-06 23:42:07 +0000797# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000798# If CXX is set, and if it is needed to link a main function that was
799# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
800# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000801# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000802# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000803AC_SUBST(LINKCC)
804AC_MSG_CHECKING(LINKCC)
805if test -z "$LINKCC"
806then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000807 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000808 case $ac_sys_system in
809 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000810 exp_extra="\"\""
811 if test $ac_sys_release -ge 5 -o \
812 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
813 exp_extra="."
814 fi
815 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000816 QNX*)
817 # qcc must be used because the other compilers do not
818 # support -N.
819 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000820 esac
821fi
822AC_MSG_RESULT($LINKCC)
823
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000824# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
825# make sure we default having it set to "no": this is used by
826# distutils.unixccompiler to know if it should add --enable-new-dtags
827# to linker command lines, and failing to detect GNU ld simply results
828# in the same bahaviour as before.
829AC_SUBST(GNULD)
830AC_MSG_CHECKING(for GNU ld)
831ac_prog=ld
832if test "$GCC" = yes; then
833 ac_prog=`$CC -print-prog-name=ld`
834fi
835case `"$ac_prog" -V 2>&1 < /dev/null` in
836 *GNU*)
837 GNULD=yes;;
838 *)
839 GNULD=no;;
840esac
841AC_MSG_RESULT($GNULD)
842
Martin v. Löwis1142de32002-03-29 16:28:31 +0000843AC_MSG_CHECKING(for --enable-shared)
844AC_ARG_ENABLE(shared,
Matthias Klose22520ea2010-05-08 10:14:46 +0000845 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000846
Martin v. Löwis1142de32002-03-29 16:28:31 +0000847if test -z "$enable_shared"
848then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000849 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000850 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000851 enable_shared="yes";;
852 *)
853 enable_shared="no";;
854 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000855fi
856AC_MSG_RESULT($enable_shared)
857
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000858AC_MSG_CHECKING(for --enable-profiling)
859AC_ARG_ENABLE(profiling,
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100860 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
861if test "x$enable_profiling" = xyes; then
862 ac_save_cc="$CC"
Benjamin Petersonb9be7bb2013-03-26 08:55:37 -0400863 CC="$CC -pg"
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100864 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
865 [],
866 [enable_profiling=no])
867 CC="$ac_save_cc"
868else
869 enable_profiling=no
870fi
871AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000872
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100873if test "x$enable_profiling" = xyes; then
874 BASECFLAGS="-pg $BASECFLAGS"
875 LDFLAGS="-pg $LDFLAGS"
876fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000877
878AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000879
Guido van Rossumb8552162001-09-05 14:58:11 +0000880# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
881# library that we build, but we do not want to link against it (we
882# will find it with a -framework option). For this reason there is an
883# extra variable BLDLIBRARY against which Python and the extension
884# modules are linked, BLDLIBRARY. This is normally the same as
885# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000886if test "$enable_framework"
887then
888 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200889 RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000890 BLDLIBRARY=''
891else
892 BLDLIBRARY='$(LDLIBRARY)'
893fi
894
Martin v. Löwis1142de32002-03-29 16:28:31 +0000895# Other platforms follow
896if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000897 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000898 case $ac_sys_system in
899 BeOS*)
900 LDLIBRARY='libpython$(VERSION).so'
901 ;;
902 CYGWIN*)
903 LDLIBRARY='libpython$(VERSION).dll.a'
904 DLLLIBRARY='libpython$(VERSION).dll'
905 ;;
906 SunOS*)
907 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000908 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200909 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000910 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000911 ;;
Charles-François Natali3de8c732011-07-24 22:33:35 +0200912 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000913 LDLIBRARY='libpython$(VERSION).so'
914 BLDLIBRARY='-L. -lpython$(VERSION)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200915 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000916 case $ac_sys_system in
917 FreeBSD*)
918 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
919 ;;
920 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000921 INSTSONAME="$LDLIBRARY".$SOVERSION
922 ;;
923 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000924 case `uname -m` in
925 ia64)
926 LDLIBRARY='libpython$(VERSION).so'
927 ;;
928 *)
929 LDLIBRARY='libpython$(VERSION).sl'
930 ;;
931 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000932 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200933 RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000934 ;;
935 OSF*)
936 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000937 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200938 RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000939 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000940 atheos*)
941 LDLIBRARY='libpython$(VERSION).so'
942 BLDLIBRARY='-L. -lpython$(VERSION)'
943 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
944 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000945 Darwin*)
946 LDLIBRARY='libpython$(VERSION).dylib'
947 BLDLIBRARY='-L. -lpython$(VERSION)'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200948 RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
Ronald Oussoren79f90492009-01-02 10:44:46 +0000949 ;;
Antoine Pitrouaabdceb2010-09-10 20:03:17 +0000950 AIX*)
951 LDLIBRARY='libpython$(VERSION).so'
doko@ubuntu.com9ba90c92014-05-07 04:41:26 +0200952 RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
Antoine Pitrouaabdceb2010-09-10 20:03:17 +0000953 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000954
Martin v. Löwis1142de32002-03-29 16:28:31 +0000955 esac
Jason Tishler30765592003-09-04 11:04:06 +0000956else # shared is disabled
957 case $ac_sys_system in
958 CYGWIN*)
959 BLDLIBRARY='$(LIBRARY)'
960 LDLIBRARY='libpython$(VERSION).dll.a'
961 ;;
962 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000963fi
964
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100965if test "$cross_compiling" = yes; then
966 RUNSHARED=
967fi
968
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000969AC_MSG_RESULT($LDLIBRARY)
970
Guido van Rossum627b2d71993-12-24 10:39:16 +0000971AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000972AC_SUBST(AR)
doko@python.orgd65e2ba2013-01-31 23:52:03 +0100973AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000974
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000975# tweak ARFLAGS only if the user didn't set it on the command line
976AC_SUBST(ARFLAGS)
977if test -z "$ARFLAGS"
978then
979 ARFLAGS="rc"
980fi
981
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000982AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000983AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000984if test $SVNVERSION = found
985then
986 SVNVERSION="svnversion \$(srcdir)"
987else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000988 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000989fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000990
Georg Brandl3a5508e2011-03-06 10:42:21 +0100991AC_SUBST(HGVERSION)
992AC_SUBST(HGTAG)
993AC_SUBST(HGBRANCH)
994AC_CHECK_PROG(HAS_HG, hg, found, not-found)
995if test $HAS_HG = found
996then
997 HGVERSION="hg id -i \$(srcdir)"
998 HGTAG="hg id -t \$(srcdir)"
999 HGBRANCH="hg id -b \$(srcdir)"
1000else
1001 HGVERSION=""
1002 HGTAG=""
1003 HGBRANCH=""
1004fi
1005
Neil Schemenauera42c8272001-03-31 00:01:55 +00001006case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +00001007bsdos*|hp*|HP*)
1008 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +00001009 if test -z "$INSTALL"
1010 then
1011 INSTALL="${srcdir}/install-sh -c"
1012 fi
1013esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001014AC_PROG_INSTALL
Trent Nelsonf6407a12012-08-30 14:56:13 +00001015AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001016
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001017# Not every filesystem supports hard links
1018AC_SUBST(LN)
1019if test -z "$LN" ; then
1020 case $ac_sys_system in
1021 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001022 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001023 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001024 *) LN=ln;;
1025 esac
1026fi
1027
Fred Drake9f715822001-07-11 06:27:00 +00001028# Check for --with-pydebug
1029AC_MSG_CHECKING(for --with-pydebug)
1030AC_ARG_WITH(pydebug,
Matthias Klose22520ea2010-05-08 10:14:46 +00001031 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001032[
Fred Drake9f715822001-07-11 06:27:00 +00001033if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001034then
1035 AC_DEFINE(Py_DEBUG, 1,
1036 [Define if you want to build an interpreter with many run-time checks.])
1037 AC_MSG_RESULT(yes);
1038 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +00001039else AC_MSG_RESULT(no); Py_DEBUG='false'
1040fi],
1041[AC_MSG_RESULT(no)])
1042
Skip Montanarodecc6a42003-01-01 20:07:49 +00001043# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1044# merged with this chunk of code?
1045
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001046# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001047# ------------------------
1048# (The following bit of code is complicated enough - please keep things
1049# indented properly. Just pretend you're editing Python code. ;-)
1050
1051# There are two parallel sets of case statements below, one that checks to
1052# see if OPT was set and one that does BASECFLAGS setting based upon
1053# compiler and platform. BASECFLAGS tweaks need to be made even if the
1054# user set OPT.
1055
1056# tweak OPT based on compiler and platform, only if the user didn't set
1057# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001058AC_SUBST(OPT)
Benjamin Petersond4b721b2010-03-23 20:58:37 +00001059if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001060then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001061 case $GCC in
1062 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +00001063 if test "$CC" != 'g++' ; then
1064 STRICT_PROTO="-Wstrict-prototypes"
1065 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +00001066 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1067 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1068 WRAP="-fwrapv"
1069 fi
Stefan Krah503e5e12011-09-14 15:19:42 +02001070
1071 # Clang also needs -fwrapv
Stefan Krah2bc1e8f2011-12-08 22:26:06 +01001072 case $CC in
1073 *clang*) WRAP="-fwrapv"
1074 ;;
1075 esac
Stefan Krah503e5e12011-09-14 15:19:42 +02001076
Skip Montanarodecc6a42003-01-01 20:07:49 +00001077 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001078 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001079 if test "$Py_DEBUG" = 'true' ; then
1080 # Optimization messes up debuggers, so turn it off for
1081 # debug builds.
Mark Dickinsond2f3e3f2010-05-05 22:23:58 +00001082 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +00001083 else
Guido van Rossum7c862f82007-12-13 20:50:10 +00001084 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001085 fi
1086 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001087 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +00001088 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001089 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001090 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001091 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001092 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1093 ;;
1094 esac
Fred Drake9f715822001-07-11 06:27:00 +00001095 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001096
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001097 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001098 OPT="-O"
1099 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001100 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001101fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001102
Skip Montanarodecc6a42003-01-01 20:07:49 +00001103AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001104
1105# The -arch flags for universal builds on OSX
1106UNIVERSAL_ARCH_FLAGS=
1107AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1108
Skip Montanarodecc6a42003-01-01 20:07:49 +00001109# tweak BASECFLAGS based on compiler and platform
1110case $GCC in
1111yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001112 # Python violates C99 rules, by casting between incompatible
1113 # pointer types. GCC may generate bad code as a result of that,
1114 # so use -fno-strict-aliasing if supported.
1115 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
1116 ac_save_cc="$CC"
1117 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +00001118 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Matthias Klosec511b472010-05-08 11:01:39 +00001119 AC_COMPILE_IFELSE(
Mark Dickinson5e13e292010-05-11 08:55:06 +00001120 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Klosec511b472010-05-08 11:01:39 +00001121 [ac_cv_no_strict_aliasing_ok=yes],
1122 [ac_cv_no_strict_aliasing_ok=no]))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001123 CC="$ac_save_cc"
1124 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
1125 if test $ac_cv_no_strict_aliasing_ok = yes
1126 then
1127 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1128 fi
Mark Dickinson65134662008-04-25 16:11:04 +00001129
1130 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1131 # support. Without this, treatment of subnormals doesn't follow
1132 # the standard.
doko@python.orgd65e2ba2013-01-31 23:52:03 +01001133 case $host in
Mark Dickinson65134662008-04-25 16:11:04 +00001134 alpha*)
1135 BASECFLAGS="$BASECFLAGS -mieee"
1136 ;;
1137 esac
1138
Skip Montanarodecc6a42003-01-01 20:07:49 +00001139 case $ac_sys_system in
1140 SCO_SV*)
1141 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1142 ;;
1143 # is there any other compiler on Darwin besides gcc?
1144 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +00001145 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1146 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001147 if test "${CC}" = gcc
1148 then
1149 AC_MSG_CHECKING(which compiler should be used)
1150 case "${UNIVERSALSDK}" in
1151 */MacOSX10.4u.sdk)
1152 # Build using 10.4 SDK, force usage of gcc when the
1153 # compiler is gcc, otherwise the user will get very
1154 # confusing error messages when building on OSX 10.6
1155 CC=gcc-4.0
1156 CPP=cpp-4.0
1157 ;;
1158 esac
1159 AC_MSG_RESULT($CC)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001160 fi
1161
Benjamin Peterson4347c442008-07-17 15:59:24 +00001162 # Calculate the right deployment target for this build.
1163 #
Ned Deilyc40b9032014-06-25 13:48:46 -07001164 cur_target_major=`sw_vers -productVersion | \
1165 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
1166 cur_target_minor=`sw_vers -productVersion | \
1167 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
1168 cur_target="${cur_target_major}.${cur_target_minor}"
1169 if test ${cur_target_major} -eq 10 && \
1170 test ${cur_target_minor} -ge 3
1171 then
Benjamin Peterson4347c442008-07-17 15:59:24 +00001172 cur_target=10.3
Ronald Oussoren25967582009-09-06 10:00:26 +00001173 if test ${enable_universalsdk}; then
1174 if test "${UNIVERSAL_ARCHS}" = "all"; then
1175 # Ensure that the default platform for a
1176 # 4-way universal build is OSX 10.5,
1177 # that's the first OS release where
1178 # 4-way builds make sense.
1179 cur_target='10.5'
Ronald Oussoren23d92532009-09-07 06:12:00 +00001180
1181 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1182 cur_target='10.5'
1183
1184 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1185 cur_target='10.5'
1186
1187 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1188 cur_target='10.5'
Ronald Oussoren25967582009-09-06 10:00:26 +00001189 fi
1190 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001191 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren25967582009-09-06 10:00:26 +00001192 # On Intel macs default to a deployment
1193 # target of 10.4, that's the first OSX
1194 # release with Intel support.
1195 cur_target="10.4"
1196 fi
1197 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001198 fi
1199 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1200
1201 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1202 # environment with a value that is the same as what we'll use
1203 # in the Makefile to ensure that we'll get the same compiler
1204 # environment during configure and build time.
1205 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1206 export MACOSX_DEPLOYMENT_TARGET
1207 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1208
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001209 if test "${enable_universalsdk}"; then
1210 UNIVERSAL_ARCH_FLAGS=""
1211 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
1212 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
1213 ARCH_RUN_32BIT=""
Ronald Oussoren75912852010-04-08 08:13:31 +00001214 LIPO_32BIT_FLAGS=""
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001215
1216 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1217 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
1218 LIPO_32BIT_FLAGS=""
1219 ARCH_RUN_32BIT="true"
1220
1221 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1222 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
1223 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren92397ce2010-01-17 19:32:00 +00001224 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001225
1226 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1227 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
1228 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren92397ce2010-01-17 19:32:00 +00001229 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001230
1231 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1232 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1233 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren9922f172010-02-11 13:19:34 +00001234 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001235
1236 else
1237 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
1238
1239 fi
1240
1241
Ronald Oussoren974eb5e2010-04-18 17:59:37 +00001242 CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
1243 if test "${UNIVERSALSDK}" != "/"
1244 then
1245 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
1246 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1247 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001248 fi
1249
1250 fi
1251
1252
Skip Montanarodecc6a42003-01-01 20:07:49 +00001253 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001254 OSF*)
1255 BASECFLAGS="$BASECFLAGS -mieee"
1256 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001257 esac
1258 ;;
1259
1260*)
1261 case $ac_sys_system in
1262 OpenUNIX*|UnixWare*)
1263 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1264 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001265 OSF*)
1266 BASECFLAGS="$BASECFLAGS -ieee -std"
1267 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001268 SCO_SV*)
1269 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1270 ;;
1271 esac
1272 ;;
1273esac
1274
Zachary Ware6ed42ea2015-12-21 11:43:03 -06001275# ICC needs -fp-model strict or floats behave badly
1276case "$CC" in
1277*icc*)
1278 BASECFLAGS="$BASECFLAGS -fp-model strict"
1279 ;;
1280esac
1281
Fred Drakee1ceaa02001-12-04 20:55:47 +00001282if test "$Py_DEBUG" = 'true'; then
1283 :
1284else
1285 OPT="-DNDEBUG $OPT"
1286fi
1287
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001288if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001289then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001290 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001291fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001292
Neal Norwitz020c46a2006-01-07 21:39:28 +00001293# disable check for icc since it seems to pass, but generates a warning
1294if test "$CC" = icc
1295then
1296 ac_cv_opt_olimit_ok=no
1297fi
1298
Guido van Rossum91922671997-10-09 20:24:13 +00001299AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1300AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1301[ac_save_cc="$CC"
1302CC="$CC -OPT:Olimit=0"
Matthias Klosec511b472010-05-08 11:01:39 +00001303AC_COMPILE_IFELSE(
Mark Dickinson5e13e292010-05-11 08:55:06 +00001304 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Klosec511b472010-05-08 11:01:39 +00001305 [ac_cv_opt_olimit_ok=yes],
1306 [ac_cv_opt_olimit_ok=no]
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001307 )
Guido van Rossum91922671997-10-09 20:24:13 +00001308CC="$ac_save_cc"])
1309AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001310if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001311 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001312 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1313 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1314 # environment?
1315 Darwin*)
1316 ;;
Trent Nelson34562e12012-10-17 18:01:12 -04001317 # XXX thankfully this useless troublemaker of a flag has been
1318 # eradicated in the 3.x line. For now, make sure it isn't picked
1319 # up by any of our other platforms that use CC.
1320 AIX*|SunOS*|HP-UX*|IRIX*)
1321 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001322 *)
1323 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1324 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001325 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001326else
1327 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1328 AC_CACHE_VAL(ac_cv_olimit_ok,
1329 [ac_save_cc="$CC"
1330 CC="$CC -Olimit 1500"
Matthias Klosec511b472010-05-08 11:01:39 +00001331 AC_COMPILE_IFELSE(
Mark Dickinson5e13e292010-05-11 08:55:06 +00001332 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Klosec511b472010-05-08 11:01:39 +00001333 [ac_cv_olimit_ok=yes],
1334 [ac_cv_olimit_ok=no]
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001335 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001336 CC="$ac_save_cc"])
1337 AC_MSG_RESULT($ac_cv_olimit_ok)
1338 if test $ac_cv_olimit_ok = yes; then
Stefan Krah67473262012-11-29 00:17:05 +01001339 case $ac_sys_system in
1340 # Issue #16534: On HP-UX ac_cv_olimit_ok=yes is a false positive.
1341 HP-UX*)
1342 ;;
1343 *)
1344 BASECFLAGS="$BASECFLAGS -Olimit 1500"
1345 ;;
1346 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001347 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001348fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001349
Martin v. Löwisaac13162006-10-19 10:58:46 +00001350# Check whether GCC supports PyArg_ParseTuple format
1351if test "$GCC" = "yes"
1352then
1353 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1354 save_CFLAGS=$CFLAGS
Benjamin Petersonc8759662013-05-11 13:00:05 -05001355 CFLAGS="$CFLAGS -Werror -Wformat"
Matthias Klosec511b472010-05-08 11:01:39 +00001356 AC_COMPILE_IFELSE([
1357 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1358 ],[
1359 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1360 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1361 AC_MSG_RESULT(yes)
1362 ],[
1363 AC_MSG_RESULT(no)
1364 ])
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001365 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001366fi
1367
Brett Cannon4ff151a2015-09-18 15:09:42 -07001368
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001369# Enable optimization flags
1370AC_SUBST(DEF_MAKE_ALL_RULE)
1371AC_SUBST(DEF_MAKE_RULE)
1372Py_OPT='false'
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)b9999152016-11-20 21:19:36 +00001373AC_MSG_CHECKING(for --enable-optimizations)
1374AC_ARG_ENABLE(optimizations, AS_HELP_STRING([--enable-optimizations], [Enable expensive optimizations (PGO, maybe LTO, etc). Disabled by default.]),
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001375[
INADA Naoki6a04ef72017-03-29 01:50:48 +09001376if test "$enableval" != no
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001377then
1378 Py_OPT='true'
1379 AC_MSG_RESULT(yes);
1380else
1381 Py_OPT='false'
1382 AC_MSG_RESULT(no);
1383fi],
1384[AC_MSG_RESULT(no)])
1385if test "$Py_OPT" = 'true' ; then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)9cbfa792016-09-08 22:44:44 +00001386 # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not
1387 # compile working code using it and both test_distutils and test_gdb are
1388 # broken when you do managed to get a toolchain that works with it. People
1389 # who want LTO need to use --with-lto themselves.
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001390 Py_LTO='true'
1391 DEF_MAKE_ALL_RULE="profile-opt"
Gregory P. Smith794b2912016-09-08 00:07:40 -07001392 REQUIRE_PGO="yes"
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001393 DEF_MAKE_RULE="build_all"
1394else
1395 DEF_MAKE_ALL_RULE="build_all"
Gregory P. Smith794b2912016-09-08 00:07:40 -07001396 REQUIRE_PGO="no"
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07001397 DEF_MAKE_RULE="all"
1398fi
1399
1400
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)c543a0f2016-06-02 23:44:40 +00001401# Enable LTO flags
1402AC_SUBST(LTOFLAGS)
1403AC_MSG_CHECKING(for --with-lto)
1404AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
1405[
1406if test "$withval" != no
1407then
1408 Py_LTO='true'
1409 AC_MSG_RESULT(yes);
1410else
1411 Py_LTO='false'
1412 AC_MSG_RESULT(no);
1413fi],
1414[AC_MSG_RESULT(no)])
1415if test "$Py_LTO" = 'true' ; then
1416 case $CC in
1417 *clang*)
1418 # Any changes made here should be reflected in the GCC+Darwin case below
1419 LTOFLAGS="-flto"
1420 ;;
1421 *gcc*)
1422 case $ac_sys_system in
1423 Darwin*)
1424 LTOFLAGS="-flto"
1425 ;;
1426 *)
1427 LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
1428 ;;
1429 esac
1430 ;;
1431 esac
1432fi
1433
1434
Brett Cannon4ff151a2015-09-18 15:09:42 -07001435# Enable PGO flags.
1436AC_SUBST(PGO_PROF_GEN_FLAG)
1437AC_SUBST(PGO_PROF_USE_FLAG)
1438AC_SUBST(LLVM_PROF_MERGER)
1439AC_SUBST(LLVM_PROF_FILE)
1440AC_SUBST(LLVM_PROF_ERR)
Gregory P. Smith794b2912016-09-08 00:07:40 -07001441# Make this work on systems where llvm tools are not installed with their
1442# normal names in the default $PATH (ie: Ubuntu). They exist under the
1443# non-suffixed name in their versioned llvm directory.
1444llvm_bin_dir=''
1445llvm_path="${PATH}"
1446if test "${CC}" = "clang"
1447then
1448 clang_bin=`which clang`
1449 # Some systems install clang elsewhere as a symlink to the real path
1450 # which is where the related llvm tools are located.
1451 if test -L "${clang_bin}"
1452 then
1453 clang_dir=`dirname "${clang_bin}"`
1454 clang_bin=`readlink "${clang_bin}"`
1455 llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"`
1456 llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}"
1457 fi
1458fi
1459AC_SUBST(LLVM_PROFDATA)
1460AC_PATH_TARGET_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path})
Brett Cannon4ff151a2015-09-18 15:09:42 -07001461AC_SUBST(LLVM_PROF_FOUND)
Gregory P. Smith794b2912016-09-08 00:07:40 -07001462if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}"
1463then
1464 LLVM_PROF_FOUND="found"
1465else
1466 LLVM_PROF_FOUND="not-found"
1467fi
1468if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found"
1469then
1470 found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null`
1471 if test -n "${found_llvm_profdata}"
1472 then
1473 # llvm-profdata isn't directly in $PATH in some cases.
1474 # https://apple.stackexchange.com/questions/197053/
1475 LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata'
1476 LLVM_PROF_FOUND=found
1477 AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}])
1478 fi
1479fi
Brett Cannon4ff151a2015-09-18 15:09:42 -07001480LLVM_PROF_ERR=no
1481case $CC in
1482 *clang*)
1483 # Any changes made here should be reflected in the GCC+Darwin case below
1484 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1485 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith794b2912016-09-08 00:07:40 -07001486 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon4ff151a2015-09-18 15:09:42 -07001487 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
1488 if test $LLVM_PROF_FOUND = not-found
1489 then
1490 LLVM_PROF_ERR=yes
Gregory P. Smith794b2912016-09-08 00:07:40 -07001491 if test "${REQUIRE_PGO}" = "yes"
1492 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)b9999152016-11-20 21:19:36 +00001493 AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
Gregory P. Smith794b2912016-09-08 00:07:40 -07001494 fi
Brett Cannon4ff151a2015-09-18 15:09:42 -07001495 fi
1496 ;;
1497 *gcc*)
1498 case $ac_sys_system in
1499 Darwin*)
1500 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
1501 PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
Gregory P. Smith794b2912016-09-08 00:07:40 -07001502 LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
Brett Cannon4ff151a2015-09-18 15:09:42 -07001503 LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
Gregory P. Smith794b2912016-09-08 00:07:40 -07001504 if test "${LLVM_PROF_FOUND}" = "not-found"
Brett Cannon4ff151a2015-09-18 15:09:42 -07001505 then
1506 LLVM_PROF_ERR=yes
Gregory P. Smith794b2912016-09-08 00:07:40 -07001507 if test "${REQUIRE_PGO}" = "yes"
1508 then
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)b9999152016-11-20 21:19:36 +00001509 AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
Gregory P. Smith794b2912016-09-08 00:07:40 -07001510 fi
Brett Cannon4ff151a2015-09-18 15:09:42 -07001511 fi
1512 ;;
1513 *)
1514 PGO_PROF_GEN_FLAG="-fprofile-generate"
1515 PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
1516 LLVM_PROF_MERGER="true"
1517 LLVM_PROF_FILE=""
1518 ;;
1519 esac
1520 ;;
Zachary Ware6ed42ea2015-12-21 11:43:03 -06001521 *icc*)
1522 PGO_PROF_GEN_FLAG="-prof-gen"
1523 PGO_PROF_USE_FLAG="-prof-use"
1524 LLVM_PROF_MERGER="true"
1525 LLVM_PROF_FILE=""
1526 ;;
Brett Cannon4ff151a2015-09-18 15:09:42 -07001527esac
1528
1529
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001530# On some compilers, pthreads are available without further options
1531# (e.g. MacOS X). On some of these systems, the compiler will not
1532# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1533# So we have to see first whether pthreads are available without
1534# options before we can check whether -Kpthread improves anything.
1535AC_MSG_CHECKING(whether pthreads are available without options)
1536AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Klosec511b472010-05-08 11:01:39 +00001537[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krahae66ca62012-11-22 22:36:57 +01001538#include <stdio.h>
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001539#include <pthread.h>
1540
1541void* routine(void* p){return NULL;}
1542
1543int main(){
1544 pthread_t p;
1545 if(pthread_create(&p,NULL,routine,NULL)!=0)
1546 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001547 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001548 return 0;
1549}
Matthias Klosec511b472010-05-08 11:01:39 +00001550]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001551 ac_cv_pthread_is_default=yes
1552 ac_cv_kthread=no
1553 ac_cv_pthread=no
Matthias Klosec511b472010-05-08 11:01:39 +00001554],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001555])
1556AC_MSG_RESULT($ac_cv_pthread_is_default)
1557
1558
1559if test $ac_cv_pthread_is_default = yes
1560then
1561 ac_cv_kpthread=no
1562else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001563# -Kpthread, if available, provides the right #defines
1564# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001565# Some compilers won't report that they do not support -Kpthread,
1566# so we need to run a program to see whether it really made the
1567# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001568AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1569AC_CACHE_VAL(ac_cv_kpthread,
1570[ac_save_cc="$CC"
1571CC="$CC -Kpthread"
Matthias Klosec511b472010-05-08 11:01:39 +00001572AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krahae66ca62012-11-22 22:36:57 +01001573#include <stdio.h>
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001574#include <pthread.h>
1575
1576void* routine(void* p){return NULL;}
1577
1578int main(){
1579 pthread_t p;
1580 if(pthread_create(&p,NULL,routine,NULL)!=0)
1581 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001582 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001583 return 0;
1584}
Matthias Klosec511b472010-05-08 11:01:39 +00001585]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001586CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001587AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001588fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001589
Skip Montanarod8d39a02003-07-10 20:44:10 +00001590if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001591then
1592# -Kthread, if available, provides the right #defines
1593# and linker options to make pthread_create available
1594# Some compilers won't report that they do not support -Kthread,
1595# so we need to run a program to see whether it really made the
1596# function available.
1597AC_MSG_CHECKING(whether $CC accepts -Kthread)
1598AC_CACHE_VAL(ac_cv_kthread,
1599[ac_save_cc="$CC"
1600CC="$CC -Kthread"
Matthias Klosec511b472010-05-08 11:01:39 +00001601AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krahae66ca62012-11-22 22:36:57 +01001602#include <stdio.h>
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001603#include <pthread.h>
1604
1605void* routine(void* p){return NULL;}
1606
1607int main(){
1608 pthread_t p;
1609 if(pthread_create(&p,NULL,routine,NULL)!=0)
1610 return 1;
1611 (void)pthread_detach(p);
1612 return 0;
1613}
Matthias Klosec511b472010-05-08 11:01:39 +00001614]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001615CC="$ac_save_cc"])
1616AC_MSG_RESULT($ac_cv_kthread)
1617fi
1618
Skip Montanarod8d39a02003-07-10 20:44:10 +00001619if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001620then
1621# -pthread, if available, provides the right #defines
1622# and linker options to make pthread_create available
1623# Some compilers won't report that they do not support -pthread,
1624# so we need to run a program to see whether it really made the
1625# function available.
1626AC_MSG_CHECKING(whether $CC accepts -pthread)
doko@python.orgfa3f9a32013-01-25 15:32:31 +01001627AC_CACHE_VAL(ac_cv_pthread,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001628[ac_save_cc="$CC"
1629CC="$CC -pthread"
Matthias Klosec511b472010-05-08 11:01:39 +00001630AC_RUN_IFELSE([AC_LANG_SOURCE([[
Stefan Krahae66ca62012-11-22 22:36:57 +01001631#include <stdio.h>
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001632#include <pthread.h>
1633
1634void* routine(void* p){return NULL;}
1635
1636int main(){
1637 pthread_t p;
1638 if(pthread_create(&p,NULL,routine,NULL)!=0)
1639 return 1;
1640 (void)pthread_detach(p);
1641 return 0;
1642}
Matthias Klosec511b472010-05-08 11:01:39 +00001643]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001644CC="$ac_save_cc"])
1645AC_MSG_RESULT($ac_cv_pthread)
1646fi
1647
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001648# If we have set a CC compiler flag for thread support then
1649# check if it works for CXX, too.
1650ac_cv_cxx_thread=no
1651if test ! -z "$CXX"
1652then
1653AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1654ac_save_cxx="$CXX"
1655
1656if test "$ac_cv_kpthread" = "yes"
1657then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001658 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001659 ac_cv_cxx_thread=yes
1660elif test "$ac_cv_kthread" = "yes"
1661then
1662 CXX="$CXX -Kthread"
1663 ac_cv_cxx_thread=yes
1664elif test "$ac_cv_pthread" = "yes"
1665then
1666 CXX="$CXX -pthread"
1667 ac_cv_cxx_thread=yes
1668fi
1669
1670if test $ac_cv_cxx_thread = yes
1671then
1672 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1673 $CXX -c conftest.$ac_ext 2>&5
1674 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1675 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1676 then
1677 ac_cv_cxx_thread=yes
1678 else
1679 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001680 fi
1681 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001682fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001683AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001684fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001685CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001686
Fred Drakece81d592000-07-09 14:39:29 +00001687dnl # check for ANSI or K&R ("traditional") preprocessor
1688dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Klosec511b472010-05-08 11:01:39 +00001689dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001690dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1691dnl int foo;
1692dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Klosec511b472010-05-08 11:01:39 +00001693dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001694dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001695
Guido van Rossum627b2d71993-12-24 10:39:16 +00001696# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001697AC_HEADER_STDC
doko@ubuntu.comf27ec3e2014-04-17 20:11:19 +02001698AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001699fcntl.h grp.h \
doko@ubuntu.comf27ec3e2014-04-17 20:11:19 +02001700ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001701shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001702unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001703sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1704sys/lock.h sys/mkdev.h sys/modem.h \
Benjamin Peterson6b1c9092016-12-19 23:54:25 -08001705sys/param.h sys/poll.h sys/random.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001706sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001707sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001708sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes3aa138f2013-06-18 13:25:24 +02001709bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001710AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001711AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001712
Martin v. Löwis11017b12006-01-14 18:12:57 +00001713# On Linux, netlink.h requires asm/types.h
1714AC_CHECK_HEADERS(linux/netlink.h,,,[
1715#ifdef HAVE_ASM_TYPES_H
1716#include <asm/types.h>
1717#endif
1718#ifdef HAVE_SYS_SOCKET_H
1719#include <sys/socket.h>
1720#endif
1721])
1722
Guido van Rossum627b2d71993-12-24 10:39:16 +00001723# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001724was_it_defined=no
1725AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001726AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1727 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1728])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001729AC_MSG_RESULT($was_it_defined)
1730
Neal Norwitz11690112002-07-30 01:08:28 +00001731# Check whether using makedev requires defining _OSF_SOURCE
1732AC_MSG_CHECKING(for makedev)
Matthias Klosec511b472010-05-08 11:01:39 +00001733AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Jesus Cea616de772010-04-28 10:32:30 +00001734#if defined(MAJOR_IN_MKDEV)
1735#include <sys/mkdev.h>
1736#elif defined(MAJOR_IN_SYSMACROS)
1737#include <sys/sysmacros.h>
1738#else
1739#include <sys/types.h>
Matthias Klosec511b472010-05-08 11:01:39 +00001740#endif ]], [[ makedev(0, 0) ]])],
1741[ac_cv_has_makedev=yes],
1742[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001743if test "$ac_cv_has_makedev" = "no"; then
1744 # we didn't link, try if _OSF_SOURCE will allow us to link
Matthias Klosec511b472010-05-08 11:01:39 +00001745 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001746#define _OSF_SOURCE 1
1747#include <sys/types.h>
Matthias Klosec511b472010-05-08 11:01:39 +00001748 ]], [[ makedev(0, 0) ]])],
1749[ac_cv_has_makedev=yes],
1750[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001751 if test "$ac_cv_has_makedev" = "yes"; then
1752 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1753 fi
1754fi
1755AC_MSG_RESULT($ac_cv_has_makedev)
1756if test "$ac_cv_has_makedev" = "yes"; then
1757 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1758fi
1759
Martin v. Löwis399a6892002-10-04 10:22:02 +00001760# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1761# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1762# defined, but the compiler does not support pragma redefine_extname,
1763# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1764# structures (such as rlimit64) without declaring them. As a
1765# work-around, disable LFS on such configurations
1766
1767use_lfs=yes
1768AC_MSG_CHECKING(Solaris LFS bug)
Matthias Klosec511b472010-05-08 11:01:39 +00001769AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001770#define _LARGEFILE_SOURCE 1
1771#define _FILE_OFFSET_BITS 64
1772#include <sys/resource.h>
Matthias Klosec511b472010-05-08 11:01:39 +00001773]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001774AC_MSG_RESULT($sol_lfs_bug)
1775if test "$sol_lfs_bug" = "yes"; then
1776 use_lfs=no
1777fi
1778
1779if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001780# Two defines needed to enable largefile support on various platforms
1781# These may affect some typedefs
Georg Brandl94800df2011-02-25 11:09:02 +00001782case $ac_sys_system/$ac_sys_release in
1783AIX*)
1784 AC_DEFINE(_LARGE_FILES, 1,
1785 [This must be defined on AIX systems to enable large file support.])
1786 ;;
1787esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001788AC_DEFINE(_LARGEFILE_SOURCE, 1,
1789[This must be defined on some systems to enable large file support.])
1790AC_DEFINE(_FILE_OFFSET_BITS, 64,
1791[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001792fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001793
Guido van Rossum300fda71996-08-19 21:58:16 +00001794# Add some code to confdefs.h so that the test for off_t works on SCO
1795cat >> confdefs.h <<\EOF
1796#if defined(SCO_DS)
1797#undef _OFF_T
1798#endif
1799EOF
1800
Guido van Rossumef2255b2000-03-10 22:30:29 +00001801# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001802AC_TYPE_MODE_T
1803AC_TYPE_OFF_T
1804AC_TYPE_PID_T
Matthias Klosecbf54b12010-05-08 11:04:18 +00001805AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001806AC_TYPE_SIZE_T
1807AC_TYPE_UID_T
Mark Dickinson17c50cd2012-12-02 13:13:56 +00001808
1809# There are two separate checks for each of the exact-width integer types we
1810# need. First we check whether the type is available using the usual
1811# AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
1812# and <stdint.h> where available). We then also use the special type checks of
1813# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
1814# directly, #define's uint32_t to be a suitable type.
1815
1816AC_CHECK_TYPE(uint32_t,
1817 AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001818AC_TYPE_UINT32_T
Mark Dickinson17c50cd2012-12-02 13:13:56 +00001819
1820AC_CHECK_TYPE(uint64_t,
1821 AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001822AC_TYPE_UINT64_T
Mark Dickinson17c50cd2012-12-02 13:13:56 +00001823
1824AC_CHECK_TYPE(int32_t,
1825 AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001826AC_TYPE_INT32_T
Mark Dickinson17c50cd2012-12-02 13:13:56 +00001827
1828AC_CHECK_TYPE(int64_t,
1829 AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001830AC_TYPE_INT64_T
Mark Dickinson17c50cd2012-12-02 13:13:56 +00001831
Christian Heimes951cc0f2008-01-31 23:08:23 +00001832AC_CHECK_TYPE(ssize_t,
Matthias Klose5183ebd2010-04-24 16:38:36 +00001833 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001834
Guido van Rossumef2255b2000-03-10 22:30:29 +00001835# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001836# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001837AC_CHECK_SIZEOF(int, 4)
1838AC_CHECK_SIZEOF(long, 4)
1839AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001840AC_CHECK_SIZEOF(short, 2)
1841AC_CHECK_SIZEOF(float, 4)
1842AC_CHECK_SIZEOF(double, 8)
1843AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001844AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001845AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001846
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001847AC_MSG_CHECKING(for long long support)
1848have_long_long=no
Matthias Klosec511b472010-05-08 11:01:39 +00001849AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001850 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1851 have_long_long=yes
Matthias Klosec511b472010-05-08 11:01:39 +00001852],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001853AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001854if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001855AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001856fi
1857
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001858AC_MSG_CHECKING(for long double support)
1859have_long_double=no
Matthias Klosec511b472010-05-08 11:01:39 +00001860AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001861 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1862 have_long_double=yes
Matthias Klosec511b472010-05-08 11:01:39 +00001863],[])
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001864AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001865if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001866AC_CHECK_SIZEOF(long double, 12)
1867fi
1868
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001869AC_MSG_CHECKING(for _Bool support)
1870have_c99_bool=no
Matthias Klosec511b472010-05-08 11:01:39 +00001871AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001872 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1873 have_c99_bool=yes
Matthias Klosec511b472010-05-08 11:01:39 +00001874],[])
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001875AC_MSG_RESULT($have_c99_bool)
1876if test "$have_c99_bool" = yes ; then
1877AC_CHECK_SIZEOF(_Bool, 1)
1878fi
1879
Martin v. Löwisebe26702006-10-02 14:55:51 +00001880AC_CHECK_TYPES(uintptr_t,
1881 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001882 [], [#ifdef HAVE_STDINT_H
1883 #include <stdint.h>
Antoine Pitrou7be5a652010-10-10 08:14:41 +00001884 #endif
1885 #ifdef HAVE_INTTYPES_H
1886 #include <inttypes.h>
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001887 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001888
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001889AC_CHECK_SIZEOF(off_t, [], [
1890#ifdef HAVE_SYS_TYPES_H
1891#include <sys/types.h>
1892#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001893])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001894
1895AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson0ef0b912009-12-31 21:11:48 +00001896if test "$have_long_long" = yes
1897then
1898if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001899 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001900 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1901 [Defined to enable large file support when an off_t is bigger than a long
1902 and long long is available and at least as big as an off_t. You may need
1903 to add some flags for configuration and compilation to enable this mode.
1904 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001905 AC_MSG_RESULT(yes)
1906else
1907 AC_MSG_RESULT(no)
1908fi
Mark Dickinson0ef0b912009-12-31 21:11:48 +00001909else
1910 AC_MSG_RESULT(no)
1911fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001912
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001913AC_CHECK_SIZEOF(time_t, [], [
1914#ifdef HAVE_SYS_TYPES_H
1915#include <sys/types.h>
1916#endif
1917#ifdef HAVE_TIME_H
1918#include <time.h>
1919#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001920])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001921
Trent Mick635f6fb2000-08-23 21:33:05 +00001922# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001923ac_save_cc="$CC"
1924if test "$ac_cv_kpthread" = "yes"
1925then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001926elif test "$ac_cv_kthread" = "yes"
1927then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001928elif test "$ac_cv_pthread" = "yes"
1929then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001930fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001931AC_MSG_CHECKING(for pthread_t)
1932have_pthread_t=no
Matthias Klosec511b472010-05-08 11:01:39 +00001933AC_COMPILE_IFELSE([
1934 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1935],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001936AC_MSG_RESULT($have_pthread_t)
1937if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001938 AC_CHECK_SIZEOF(pthread_t, [], [
1939#ifdef HAVE_PTHREAD_H
1940#include <pthread.h>
1941#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001942 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001943fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001944CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001945
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001946AC_MSG_CHECKING(for --enable-toolbox-glue)
1947AC_ARG_ENABLE(toolbox-glue,
Matthias Klose22520ea2010-05-08 10:14:46 +00001948 AS_HELP_STRING([--enable-toolbox-glue], [disable/enable MacOSX glue code for extensions]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001949
1950if test -z "$enable_toolbox_glue"
1951then
1952 case $ac_sys_system/$ac_sys_release in
1953 Darwin/*)
1954 enable_toolbox_glue="yes";;
1955 *)
1956 enable_toolbox_glue="no";;
1957 esac
1958fi
1959case "$enable_toolbox_glue" in
1960yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001961 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001962 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001963 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1964 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001965 ;;
1966*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001967 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001968 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001969 ;;
1970esac
1971AC_MSG_RESULT($enable_toolbox_glue)
1972
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001973
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001974AC_SUBST(OTHER_LIBTOOL_OPT)
1975case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001976 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001977 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1978 ;;
1979 Darwin/*)
1980 OTHER_LIBTOOL_OPT=""
1981 ;;
1982esac
1983
Ronald Oussoren25967582009-09-06 10:00:26 +00001984
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001985AC_SUBST(LIBTOOL_CRUFT)
1986case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001987 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001988 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1989 if test "${enable_universalsdk}"; then
1990 :
1991 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00001992 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001993 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001994 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001995 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001996 Darwin/*)
Ronald Oussorena55af9a2010-01-17 16:25:57 +00001997 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001998 if test ${gcc_version} '<' 4.0
1999 then
2000 LIBTOOL_CRUFT="-lcc_dynamic"
2001 else
2002 LIBTOOL_CRUFT=""
2003 fi
Matthias Klosec511b472010-05-08 11:01:39 +00002004 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren25967582009-09-06 10:00:26 +00002005 #include <unistd.h>
2006 int main(int argc, char*argv[])
2007 {
2008 if (sizeof(long) == 4) {
2009 return 0;
2010 } else {
2011 return 1;
2012 }
Ronald Oussoren84ddd722009-09-08 07:17:10 +00002013 }
Matthias Klosec511b472010-05-08 11:01:39 +00002014 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren25967582009-09-06 10:00:26 +00002015
2016 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00002017 case `/usr/bin/arch` in
Ronald Oussoren25967582009-09-06 10:00:26 +00002018 i386)
2019 MACOSX_DEFAULT_ARCH="i386"
2020 ;;
2021 ppc)
2022 MACOSX_DEFAULT_ARCH="ppc"
2023 ;;
2024 *)
2025 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2026 ;;
2027 esac
2028 else
Ronald Oussorenbc0e83c2010-02-11 13:26:54 +00002029 case `/usr/bin/arch` in
Ronald Oussoren25967582009-09-06 10:00:26 +00002030 i386)
2031 MACOSX_DEFAULT_ARCH="x86_64"
2032 ;;
2033 ppc)
2034 MACOSX_DEFAULT_ARCH="ppc64"
2035 ;;
2036 *)
2037 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
2038 ;;
2039 esac
2040
2041 #ARCH_RUN_32BIT="true"
2042 fi
2043
2044 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00002045 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002046 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002047esac
2048
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002049AC_MSG_CHECKING(for --enable-framework)
2050if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002051then
Skip Montanarodecc6a42003-01-01 20:07:49 +00002052 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002053 # -F. is needed to allow linking to the framework while
2054 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002055 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
2056 [Define if you want to produce an OpenStep/Rhapsody framework
2057 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002058 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00002059 if test $enable_shared = "yes"
2060 then
Ronald Oussoren9ebd2422009-09-29 13:00:44 +00002061 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussoren450d5612009-06-08 21:12:41 +00002062 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002063else
2064 AC_MSG_RESULT(no)
2065fi
2066
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002067AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002068case $ac_sys_system/$ac_sys_release in
2069 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002070 AC_DEFINE(WITH_DYLD, 1,
2071 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
2072 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
2073 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002074 AC_MSG_RESULT(always on for Darwin)
2075 ;;
2076 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002077 AC_MSG_RESULT(no)
2078 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00002079esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002080
Guido van Rossumac405f61994-09-12 10:56:06 +00002081# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00002082AC_SUBST(SO)
2083AC_SUBST(LDSHARED)
Tarek Ziadé00002952010-04-03 08:37:59 +00002084AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002085AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002086AC_SUBST(CCSHARED)
2087AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002088# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00002089# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002090AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00002091if test -z "$SO"
2092then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002093 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00002094 hp*|HP*)
2095 case `uname -m` in
2096 ia64) SO=.so;;
2097 *) SO=.sl;;
2098 esac
2099 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00002100 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002101 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002102 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00002103else
2104 # this might also be a termcap variable, see #610332
2105 echo
2106 echo '====================================================================='
2107 echo '+ +'
2108 echo '+ WARNING: You have set SO in your environment. +'
2109 echo '+ Do you really mean to change the extension for shared libraries? +'
2110 echo '+ Continuing in 10 seconds to let you to ponder. +'
2111 echo '+ +'
2112 echo '====================================================================='
2113 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00002114fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002115AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00002116
Neal Norwitz58e28882006-05-19 07:00:58 +00002117AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00002118# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00002119# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002120# (Shared libraries in this instance are shared modules to be loaded into
2121# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002122AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002123if test -z "$LDSHARED"
2124then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002125 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002126 AIX*)
Martin Panterf75a2eb2016-11-20 09:31:41 +00002127 BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00002128 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002129 ;;
2130 BeOS*)
2131 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00002132 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002133 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002134 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00002135 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00002136 SunOS/5*)
Tarek Ziadé00002952010-04-03 08:37:59 +00002137 if test "$GCC" = "yes" ; then
2138 LDSHARED='$(CC) -shared'
2139 LDCXXSHARED='$(CXX) -shared'
2140 else
2141 LDSHARED='$(CC) -G'
2142 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a662000-05-26 12:22:54 +00002143 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00002144 hp*|HP*)
Tarek Ziadé00002952010-04-03 08:37:59 +00002145 if test "$GCC" = "yes" ; then
2146 LDSHARED='$(CC) -shared'
2147 LDCXXSHARED='$(CXX) -shared'
2148 else
2149 LDSHARED='ld -b'
Thomas Hellerdc96a772008-04-04 10:07:55 +00002150 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00002151 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00002152 Darwin/1.3*)
Stefan Krah3a3e2032010-11-28 15:30:05 +00002153 LDSHARED='$(CC) -bundle'
2154 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00002155 if test "$enable_framework" ; then
2156 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002157 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2158 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00002159 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00002160 else
2161 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00002162 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé00002952010-04-03 08:37:59 +00002163 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00002164 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002165 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Stefan Krah3a3e2032010-11-28 15:30:05 +00002166 LDSHARED='$(CC) -bundle'
2167 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002168 if test "$enable_framework" ; then
2169 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002170 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2171 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00002172 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002173 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00002174 # No framework, use the Python app as bundle-loader
2175 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00002176 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé00002952010-04-03 08:37:59 +00002177 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002178 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00002179 Darwin/*)
2180 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
2181 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00002182
Ned Deilyc40b9032014-06-25 13:48:46 -07002183 dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2184 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
2185 dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
2186 sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
2187 if test ${dep_target_major} -eq 10 && \
2188 test ${dep_target_minor} -le 2
Jack Jansen6b08a402004-06-03 12:41:45 +00002189 then
Ned Deilyc40b9032014-06-25 13:48:46 -07002190 # building for OS X 10.0 through 10.2
Stefan Krah3a3e2032010-11-28 15:30:05 +00002191 LDSHARED='$(CC) -bundle'
2192 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00002193 if test "$enable_framework" ; then
2194 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00002195 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
2196 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé00002952010-04-03 08:37:59 +00002197 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002198 else
2199 # No framework, use the Python app as bundle-loader
2200 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
2201 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé00002952010-04-03 08:37:59 +00002202 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00002203 fi
Ned Deilyc40b9032014-06-25 13:48:46 -07002204 else
2205 # building for OS X 10.3 and later
2206 if test "${enable_universalsdk}"; then
2207 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
2208 fi
2209 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
2210 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
2211 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00002212 fi
2213 ;;
Tarek Ziadé00002952010-04-03 08:37:59 +00002214 Linux*|GNU*|QNX*)
2215 LDSHARED='$(CC) -shared'
2216 LDCXXSHARED='$(CXX) -shared';;
2217 BSD/OS*/4*)
2218 LDSHARED="gcc -shared"
2219 LDCXXSHARED="g++ -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00002220 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00002221 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00002222 then
Stefan Krah3a3e2032010-11-28 15:30:05 +00002223 LDSHARED='$(CC) -shared'
2224 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00002225 else
Stefan Krah3a3e2032010-11-28 15:30:05 +00002226 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00002227 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00002228 OpenBSD*)
2229 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2230 then
Stefan Krah3a3e2032010-11-28 15:30:05 +00002231 LDSHARED='$(CC) -shared $(CCSHARED)'
2232 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Martin v. Löwis222c5152006-06-03 07:37:13 +00002233 else
2234 case `uname -r` in
2235 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
2236 LDSHARED="ld -Bshareable ${LDFLAGS}"
2237 ;;
2238 *)
Stefan Krah3a3e2032010-11-28 15:30:05 +00002239 LDSHARED='$(CC) -shared $(CCSHARED)'
2240 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Martin v. Löwis222c5152006-06-03 07:37:13 +00002241 ;;
2242 esac
2243 fi;;
Tarek Ziadé00002952010-04-03 08:37:59 +00002244 NetBSD*|DragonFly*)
Antoine Pitroucb402772011-01-02 20:51:34 +00002245 LDSHARED='$(CC) -shared'
2246 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002247 OpenUNIX*|UnixWare*)
Tarek Ziadé00002952010-04-03 08:37:59 +00002248 if test "$GCC" = "yes" ; then
2249 LDSHARED='$(CC) -shared'
2250 LDCXXSHARED='$(CXX) -shared'
2251 else
2252 LDSHARED='$(CC) -G'
2253 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00002254 fi;;
Tarek Ziadé00002952010-04-03 08:37:59 +00002255 SCO_SV*)
2256 LDSHARED='$(CC) -Wl,-G,-Bexport'
2257 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
2258 CYGWIN*)
2259 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
2260 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
2261 atheos*)
2262 LDSHARED="gcc -shared"
2263 LDCXXSHARED="g++ -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002264 *) LDSHARED="ld";;
2265 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002266fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002267AC_MSG_RESULT($LDSHARED)
Tarek Ziadé00002952010-04-03 08:37:59 +00002268LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002269BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00002270# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002271# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002272AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002273if test -z "$CCSHARED"
2274then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002275 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002276 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00002277 then CCSHARED="-fPIC";
2278 elif test `uname -p` = sparc;
2279 then CCSHARED="-xcode=pic32";
2280 else CCSHARED="-Kpic";
2281 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002282 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002283 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002284 else CCSHARED="+z";
2285 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002286 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002287 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002288 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002289 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002290 if test "$GCC" = "yes"
2291 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002292 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002293 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002294 SCO_SV*)
2295 if test "$GCC" = "yes"
2296 then CCSHARED="-fPIC"
2297 else CCSHARED="-Kpic -belf"
2298 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002299 IRIX*/6*) case $CC in
2300 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002301 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002302 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002303 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00002304 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002305fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002306AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002307# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002308# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002309AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002310if test -z "$LINKFORSHARED"
2311then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002312 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002313 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002314 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002315 LINKFORSHARED="-Wl,-E -Wl,+s";;
2316# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002317 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002318 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002319 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002320 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002321 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
2322 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002323 # not used by the core itself but which needs to be in the core so
2324 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00002325 # -prebind is no longer used, because it actually seems to give a
2326 # slowdown in stead of a speedup, maybe due to the large number of
2327 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002328
2329 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002330 if test "$enable_framework"
2331 then
Jack Jansenda49e192005-01-07 13:08:22 +00002332 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002333 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002334 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002335 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002336 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002337 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002338 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002339 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2340 then
2341 LINKFORSHARED="-Wl,--export-dynamic"
2342 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002343 SunOS/5*) case $CC in
2344 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002345 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002346 then
2347 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002348 fi;;
2349 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002350 CYGWIN*)
2351 if test $enable_shared = "no"
2352 then
2353 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2354 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00002355 QNX*)
2356 # -Wl,-E causes the symbols to be added to the dynamic
2357 # symbol table so that they can be found when a module
2358 # is loaded. -N 2048K causes the stack size to be set
2359 # to 2048 kilobytes so that the stack doesn't overflow
2360 # when running test_compile.py.
2361 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002362 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002363fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002364AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002365
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002366
Neil Schemenauer61c51152001-01-26 16:18:16 +00002367AC_SUBST(CFLAGSFORSHARED)
2368AC_MSG_CHECKING(CFLAGSFORSHARED)
2369if test ! "$LIBRARY" = "$LDLIBRARY"
2370then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002371 case $ac_sys_system in
2372 CYGWIN*)
2373 # Cygwin needs CCSHARED when building extension DLLs
2374 # but not when building the interpreter DLL.
2375 CFLAGSFORSHARED='';;
2376 *)
2377 CFLAGSFORSHARED='$(CCSHARED)'
2378 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002379fi
2380AC_MSG_RESULT($CFLAGSFORSHARED)
2381
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002382# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2383# library (with --enable-shared).
2384# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002385# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2386# if it is not required, since it creates a dependency of the shared library
2387# to LIBS. This, in turn, means that applications linking the shared libpython
2388# don't need to link LIBS explicitly. The default should be only changed
2389# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002390AC_SUBST(SHLIBS)
2391AC_MSG_CHECKING(SHLIBS)
2392case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002393 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002394 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002395esac
2396AC_MSG_RESULT($SHLIBS)
2397
2398
Guido van Rossum627b2d71993-12-24 10:39:16 +00002399# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002400AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2401AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002402
Skip Montanaro4d756af2008-12-01 01:55:22 +00002403# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002404if test "$with_threads" = "yes" -o -z "$with_threads"; then
2405 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2406 # posix4 on Solaris 2.6
2407 # pthread (first!) on Linux
2408fi
2409
Martin v. Löwis19d17342003-06-14 21:03:05 +00002410# check if we need libintl for locale functions
2411AC_CHECK_LIB(intl, textdomain,
2412 AC_DEFINE(WITH_LIBINTL, 1,
2413 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002414
2415# checks for system dependent C++ extensions support
2416case "$ac_sys_system" in
2417 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Klosec511b472010-05-08 11:01:39 +00002418 AC_LINK_IFELSE([
Georg Brandl94800df2011-02-25 11:09:02 +00002419 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Klosec511b472010-05-08 11:01:39 +00002420 [[loadAndInit("", 0, "")]])
2421 ],[
2422 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002423 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2424 and you want support for AIX C++ shared extension modules.])
Matthias Klosec511b472010-05-08 11:01:39 +00002425 AC_MSG_RESULT(yes)
2426 ],[
2427 AC_MSG_RESULT(no)
2428 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002429 *) ;;
2430esac
2431
Guido van Rossum70c7f481998-03-26 18:44:10 +00002432# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002433# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002434AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002435AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002436
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002437case "$ac_sys_system" in
2438BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002439AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2440;;
2441esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002442
Guido van Rossumc5a39031996-07-31 17:35:03 +00002443AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002444AC_ARG_WITH(libs,
Matthias Klose22520ea2010-05-08 10:14:46 +00002445 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002446[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002447AC_MSG_RESULT($withval)
2448LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002449],
2450[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002451
Benjamin Peterson64e8f6e2014-12-15 00:00:23 -05002452PKG_PROG_PKG_CONFIG
Benjamin Petersone9e07bf2010-03-09 21:46:54 +00002453
Benjamin Peterson2c196742009-12-31 03:17:18 +00002454# Check for use of the system expat library
2455AC_MSG_CHECKING(for --with-system-expat)
2456AC_ARG_WITH(system_expat,
Benjamin Petersonf2d1b2a2010-10-31 16:53:53 +00002457 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2458 [],
2459 [with_system_expat="no"])
Benjamin Peterson2c196742009-12-31 03:17:18 +00002460
2461AC_MSG_RESULT($with_system_expat)
2462
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002463# Check for use of the system libffi library
2464AC_MSG_CHECKING(for --with-system-ffi)
2465AC_ARG_WITH(system_ffi,
Benjamin Petersonf2d1b2a2010-10-31 16:53:53 +00002466 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2467 [],
2468 [with_system_ffi="no"])
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002469
Benjamin Petersone9e07bf2010-03-09 21:46:54 +00002470if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Peterson1c335e62010-01-01 15:16:29 +00002471 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2472else
2473 LIBFFI_INCLUDEDIR=""
2474fi
2475AC_SUBST(LIBFFI_INCLUDEDIR)
2476
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002477AC_MSG_RESULT($with_system_ffi)
2478
Ned Deilya2a9f572013-10-25 00:30:10 -07002479# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
2480AC_SUBST(TCLTK_INCLUDES)
2481AC_SUBST(TCLTK_LIBS)
2482AC_MSG_CHECKING(for --with-tcltk-includes)
2483AC_ARG_WITH(tcltk-includes,
2484 AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
2485 [],
2486 [with_tcltk_includes="default"])
2487AC_MSG_RESULT($with_tcltk_includes)
2488AC_MSG_CHECKING(for --with-tcltk-libs)
2489AC_ARG_WITH(tcltk-libs,
2490 AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
2491 [],
2492 [with_tcltk_libs="default"])
2493AC_MSG_RESULT($with_tcltk_libs)
2494if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
2495then
2496 if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
2497 then
2498 AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
2499 fi
2500 TCLTK_INCLUDES=""
2501 TCLTK_LIBS=""
2502else
2503 TCLTK_INCLUDES="$with_tcltk_includes"
2504 TCLTK_LIBS="$with_tcltk_libs"
2505fi
2506
Matthias Klose10cbe482009-04-29 17:18:19 +00002507# Check for --with-dbmliborder
2508AC_MSG_CHECKING(for --with-dbmliborder)
2509AC_ARG_WITH(dbmliborder,
Matthias Klose22520ea2010-05-08 10:14:46 +00002510 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 Klose10cbe482009-04-29 17:18:19 +00002511[
2512if test x$with_dbmliborder = xyes
2513then
2514AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2515else
2516 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2517 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2518 then
2519 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2520 fi
2521 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00002522fi])
2523AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00002524
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002525# Determine if signalmodule should be used.
2526AC_SUBST(USE_SIGNAL_MODULE)
2527AC_SUBST(SIGNAL_OBJS)
2528AC_MSG_CHECKING(for --with-signal-module)
2529AC_ARG_WITH(signal-module,
Matthias Klose22520ea2010-05-08 10:14:46 +00002530 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002531
2532if test -z "$with_signal_module"
2533then with_signal_module="yes"
2534fi
2535AC_MSG_RESULT($with_signal_module)
2536
2537if test "${with_signal_module}" = "yes"; then
2538 USE_SIGNAL_MODULE=""
2539 SIGNAL_OBJS=""
2540else
2541 USE_SIGNAL_MODULE="#"
2542 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2543fi
2544
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002545# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002546AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002547USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002548
Guido van Rossum54d93d41997-01-22 20:51:58 +00002549AC_MSG_CHECKING(for --with-dec-threads)
2550AC_SUBST(LDLAST)
2551AC_ARG_WITH(dec-threads,
Matthias Klose22520ea2010-05-08 10:14:46 +00002552 AS_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002553[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002554AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002555LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002556if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002557 with_thread="$withval";
2558fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002559[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002560
Martin v. Löwis11437992002-04-12 09:54:03 +00002561# Templates for things AC_DEFINEd more than once.
2562# For a single AC_DEFINE, no template is needed.
2563AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2564AH_TEMPLATE(_REENTRANT,
2565 [Define to force use of thread-safe errno, h_errno, and other functions])
2566AH_TEMPLATE(WITH_THREAD,
2567 [Define if you want to compile in rudimentary thread support])
2568
Guido van Rossum54d93d41997-01-22 20:51:58 +00002569AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002570dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002571AC_ARG_WITH(threads,
Matthias Klose22520ea2010-05-08 10:14:46 +00002572 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002573
Barry Warsawc0d24d82000-06-29 16:12:00 +00002574# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002575dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002576AC_ARG_WITH(thread,
Matthias Klose22520ea2010-05-08 10:14:46 +00002577 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002578 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002579
2580if test -z "$with_threads"
2581then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002582fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002583AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002584
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002585AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002586if test "$with_threads" = "no"
2587then
2588 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002589elif test "$ac_cv_pthread_is_default" = yes
2590then
2591 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002592 # Defining _REENTRANT on system with POSIX threads should not hurt.
2593 AC_DEFINE(_REENTRANT)
2594 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002595 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002596elif test "$ac_cv_kpthread" = "yes"
2597then
2598 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002599 if test "$ac_cv_cxx_thread" = "yes"; then
2600 CXX="$CXX -Kpthread"
2601 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002602 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002603 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002604 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002605elif test "$ac_cv_kthread" = "yes"
2606then
2607 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002608 if test "$ac_cv_cxx_thread" = "yes"; then
2609 CXX="$CXX -Kthread"
2610 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002611 AC_DEFINE(WITH_THREAD)
2612 posix_threads=yes
2613 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002614elif test "$ac_cv_pthread" = "yes"
2615then
2616 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002617 if test "$ac_cv_cxx_thread" = "yes"; then
2618 CXX="$CXX -pthread"
2619 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002620 AC_DEFINE(WITH_THREAD)
2621 posix_threads=yes
2622 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002623else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002624 if test ! -z "$with_threads" -a -d "$with_threads"
2625 then LDFLAGS="$LDFLAGS -L$with_threads"
2626 fi
2627 if test ! -z "$withval" -a -d "$withval"
2628 then LDFLAGS="$LDFLAGS -L$withval"
2629 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002630
2631 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002632 # define _POSIX_THREADS in unistd.h. Some apparently don't
2633 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002634 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2635 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002636 [
2637#include <unistd.h>
2638#ifdef _POSIX_THREADS
2639yes
2640#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002641 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2642 AC_MSG_RESULT($unistd_defines_pthreads)
2643
Martin v. Löwis130fb172001-07-19 11:00:41 +00002644 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002645 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2646 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002647 AC_DEFINE(HURD_C_THREADS, 1,
2648 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002649 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002650 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002651 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2652 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002653 AC_DEFINE(MACH_C_THREADS, 1,
2654 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002655 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002656 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002657 AC_ARG_WITH([pth],
Matthias Klose22520ea2010-05-08 10:14:46 +00002658 AS_HELP_STRING([--with-pth], [use GNU pth threading libraries]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002659 [AC_MSG_RESULT($withval)
2660 AC_DEFINE([WITH_THREAD])
2661 AC_DEFINE([HAVE_PTH], 1,
2662 [Define if you have GNU PTH threads.])
2663 LIBS="-lpth $LIBS"
2664 THREADOBJ="Python/thread.o"],
2665 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002666
2667 # Just looking for pthread_create in libpthread is not enough:
2668 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2669 # So we really have to include pthread.h, and then link.
2670 _libs=$LIBS
2671 LIBS="$LIBS -lpthread"
2672 AC_MSG_CHECKING([for pthread_create in -lpthread])
Stefan Krahae66ca62012-11-22 22:36:57 +01002673 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2674#include <stdio.h>
2675#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002676
Matthias Klosec511b472010-05-08 11:01:39 +00002677void * start_routine (void *arg) { exit (0); }]], [[
2678pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002679 AC_MSG_RESULT(yes)
2680 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002681 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002682 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002683 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002684 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002685 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002686 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002687 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2688 AC_DEFINE(ATHEOS_THREADS, 1,
2689 [Define this if you have AtheOS threads.])
2690 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002691 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002692 AC_DEFINE(BEOS_THREADS, 1,
2693 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002694 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002695 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002696 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002697 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002698 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002699 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002700 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002701 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002702 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002703 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002704 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002705 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002706 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002707 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002708 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002709 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002710 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002711 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002712 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002713
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002714 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2715 LIBS="$LIBS -lmpc"
2716 THREADOBJ="Python/thread.o"
2717 USE_THREAD_MODULE=""])
2718
2719 if test "$posix_threads" != "yes"; then
2720 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2721 LIBS="$LIBS -lthread"
2722 THREADOBJ="Python/thread.o"
2723 USE_THREAD_MODULE=""])
2724 fi
2725
2726 if test "$USE_THREAD_MODULE" != "#"
2727 then
2728 # If the above checks didn't disable threads, (at least) OSF1
2729 # needs this '-threads' argument during linking.
2730 case $ac_sys_system in
2731 OSF1) LDLAST=-threads;;
2732 esac
2733 fi
2734fi
2735
2736if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002737 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002738 AC_DEFINE(_POSIX_THREADS, 1,
2739 [Define if you have POSIX threads,
2740 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002741 fi
2742
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002743 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2744 case $ac_sys_system/$ac_sys_release in
Charles-François Natali4929eb92011-07-21 19:41:04 +02002745 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klose5183ebd2010-04-24 16:38:36 +00002746 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002747 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002748 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klose5183ebd2010-04-24 16:38:36 +00002749 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002750 ;;
Charles-François Natali4929eb92011-07-21 19:41:04 +02002751 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klose5183ebd2010-04-24 16:38:36 +00002752 [Define if the Posix semaphores do not work on your system])
Christian Heimescba36bb2008-01-30 22:54:18 +00002753 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002754 esac
2755
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002756 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2757 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Stefan Krahae66ca62012-11-22 22:36:57 +01002758 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
2759 #include <stdio.h>
2760 #include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002761 void *foo(void *parm) {
2762 return NULL;
2763 }
2764 main() {
2765 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002766 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002767 if (pthread_attr_init(&attr)) exit(-1);
2768 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002769 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002770 exit(0);
Matthias Klosec511b472010-05-08 11:01:39 +00002771 }]])],
2772 [ac_cv_pthread_system_supported=yes],
2773 [ac_cv_pthread_system_supported=no],
2774 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002775 ])
2776 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2777 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002778 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002779 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002780 AC_CHECK_FUNCS(pthread_sigmask,
2781 [case $ac_sys_system in
2782 CYGWIN*)
2783 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2784 [Define if pthread_sigmask() does not work on your system.])
2785 ;;
2786 esac])
Christian Heimes0d604cf2013-08-21 13:26:05 +02002787 AC_CHECK_FUNCS(pthread_atfork)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002788fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002789
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002790
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002791# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002792AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002793AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002794AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002795[ --enable-ipv6 Enable ipv6 (with ipv4) support
2796 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002797[ case "$enableval" in
2798 no)
2799 AC_MSG_RESULT(no)
2800 ipv6=no
2801 ;;
2802 *) AC_MSG_RESULT(yes)
2803 AC_DEFINE(ENABLE_IPV6)
2804 ipv6=yes
2805 ;;
2806 esac ],
2807
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002808[
2809dnl the check does not work on cross compilation case...
Charles-François Natalibe2b9072013-01-08 19:47:00 +01002810 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002811#include <sys/types.h>
Charles-François Natalibe2b9072013-01-08 19:47:00 +01002812#include <sys/socket.h>]],
2813[[int domain = AF_INET6;]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002814 AC_MSG_RESULT(yes)
Matthias Klosec511b472010-05-08 11:01:39 +00002815 ipv6=yes
2816],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002817 AC_MSG_RESULT(no)
2818 ipv6=no
Matthias Klosec511b472010-05-08 11:01:39 +00002819])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002820
2821if test "$ipv6" = "yes"; then
2822 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Klosec511b472010-05-08 11:01:39 +00002823 AC_COMPILE_IFELSE([
2824 AC_LANG_PROGRAM([[#include <sys/types.h>
2825#include <netinet/in.h>]],
2826 [[struct sockaddr_in6 x;
2827 x.sin6_scope_id;]])
2828 ],[
2829 AC_MSG_RESULT(yes)
2830 ipv6=yes
2831 ],[
2832 AC_MSG_RESULT(no, IPv6 disabled)
2833 ipv6=no
2834 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002835fi
2836
2837if test "$ipv6" = "yes"; then
2838 AC_DEFINE(ENABLE_IPV6)
2839fi
2840])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002841
2842ipv6type=unknown
2843ipv6lib=none
2844ipv6trylibc=no
2845
2846if test "$ipv6" = "yes"; then
2847 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002848 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2849 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002850 case $i in
2851 inria)
2852 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002853 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002854#include <netinet/in.h>
2855#ifdef IPV6_INRIA_VERSION
2856yes
2857#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002858 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002859 ;;
2860 kame)
2861 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002862 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002863#include <netinet/in.h>
2864#ifdef __KAME__
2865yes
2866#endif],
2867 [ipv6type=$i;
2868 ipv6lib=inet6
2869 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002870 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002871 ;;
2872 linux-glibc)
2873 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002874 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002875#include <features.h>
2876#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2877yes
2878#endif],
2879 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002880 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002881 ;;
2882 linux-inet6)
2883 dnl http://www.v6.linux.or.jp/
2884 if test -d /usr/inet6; then
2885 ipv6type=$i
2886 ipv6lib=inet6
2887 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002888 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002889 fi
2890 ;;
2891 solaris)
2892 if test -f /etc/netconfig; then
Antoine Pitrou31e85952011-01-03 18:57:14 +00002893 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002894 ipv6type=$i
2895 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002896 fi
2897 fi
2898 ;;
2899 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002900 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002901#include <sys/param.h>
2902#ifdef _TOSHIBA_INET6
2903yes
2904#endif],
2905 [ipv6type=$i;
2906 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002907 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002908 ;;
2909 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002910 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002911#include </usr/local/v6/include/sys/v6config.h>
2912#ifdef __V6D__
2913yes
2914#endif],
2915 [ipv6type=$i;
2916 ipv6lib=v6;
2917 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002918 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002919 ;;
2920 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002921 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002922#include <sys/param.h>
2923#ifdef _ZETA_MINAMI_INET6
2924yes
2925#endif],
2926 [ipv6type=$i;
2927 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002928 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002929 ;;
2930 esac
2931 if test "$ipv6type" != "unknown"; then
2932 break
2933 fi
2934 done
2935 AC_MSG_RESULT($ipv6type)
2936fi
2937
2938if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2939 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2940 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2941 echo "using lib$ipv6lib"
2942 else
2943 if test $ipv6trylibc = "yes"; then
2944 echo "using libc"
2945 else
2946 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2947 echo "You need to fetch lib$ipv6lib.a from appropriate"
2948 echo 'ipv6 kit and compile beforehand.'
2949 exit 1
2950 fi
2951 fi
2952fi
2953
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002954AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Klosec511b472010-05-08 11:01:39 +00002955AC_COMPILE_IFELSE([
Mark Dickinson0712b562010-05-08 19:13:21 +00002956 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
Matthias Klosec511b472010-05-08 11:01:39 +00002957],[
Matthias Klose5183ebd2010-04-24 16:38:36 +00002958 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Klosec511b472010-05-08 11:01:39 +00002959 AC_MSG_RESULT(yes)
2960],[
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002961 AC_MSG_RESULT(no)
Matthias Klosec511b472010-05-08 11:01:39 +00002962])
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002963
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002964# Check for --with-doc-strings
2965AC_MSG_CHECKING(for --with-doc-strings)
2966AC_ARG_WITH(doc-strings,
Matthias Klose22520ea2010-05-08 10:14:46 +00002967 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002968
2969if test -z "$with_doc_strings"
2970then with_doc_strings="yes"
2971fi
2972if test "$with_doc_strings" != "no"
2973then
2974 AC_DEFINE(WITH_DOC_STRINGS, 1,
2975 [Define if you want documentation strings in extension modules])
2976fi
2977AC_MSG_RESULT($with_doc_strings)
2978
Neil Schemenauera35c6882001-02-27 04:45:05 +00002979# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002980AC_MSG_CHECKING(for --with-tsc)
2981AC_ARG_WITH(tsc,
Matthias Klose22520ea2010-05-08 10:14:46 +00002982 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002983if test "$withval" != no
2984then
2985 AC_DEFINE(WITH_TSC, 1,
2986 [Define to profile with the Pentium timestamp counter])
2987 AC_MSG_RESULT(yes)
2988else AC_MSG_RESULT(no)
2989fi],
2990[AC_MSG_RESULT(no)])
2991
2992# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002993AC_MSG_CHECKING(for --with-pymalloc)
2994AC_ARG_WITH(pymalloc,
Matthias Klose22520ea2010-05-08 10:14:46 +00002995 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002996
2997if test -z "$with_pymalloc"
2998then with_pymalloc="yes"
2999fi
3000if test "$with_pymalloc" != "no"
3001then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003002 AC_DEFINE(WITH_PYMALLOC, 1,
3003 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00003004fi
3005AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00003006
Benjamin Peterson91c12eb2009-12-03 02:52:39 +00003007# Check for Valgrind support
3008AC_MSG_CHECKING([for --with-valgrind])
3009AC_ARG_WITH([valgrind],
Matthias Klose22520ea2010-05-08 10:14:46 +00003010 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson91c12eb2009-12-03 02:52:39 +00003011 with_valgrind=no)
3012AC_MSG_RESULT([$with_valgrind])
3013if test "$with_valgrind" != no; then
3014 AC_CHECK_HEADER([valgrind/valgrind.h],
3015 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
3016 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
3017 )
3018fi
3019
Barry Warsawef82cd72000-06-30 16:21:01 +00003020# Check for --with-wctype-functions
3021AC_MSG_CHECKING(for --with-wctype-functions)
3022AC_ARG_WITH(wctype-functions,
Matthias Klose22520ea2010-05-08 10:14:46 +00003023 AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003024[
Barry Warsawef82cd72000-06-30 16:21:01 +00003025if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003026then
3027 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
3028 [Define if you want wctype.h functions to be used instead of the
3029 one supplied by Python itself. (see Include/unicodectype.h).])
3030 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00003031else AC_MSG_RESULT(no)
3032fi],
3033[AC_MSG_RESULT(no)])
3034
Guido van Rossum68242b51996-05-28 22:53:03 +00003035# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003036AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00003037DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003038
Guido van Rossume97ee181999-12-20 21:27:22 +00003039# the dlopen() function means we might want to use dynload_shlib.o. some
3040# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00003041AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00003042
3043# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
3044# loading of modules.
3045AC_SUBST(DYNLOADFILE)
3046AC_MSG_CHECKING(DYNLOADFILE)
3047if test -z "$DYNLOADFILE"
3048then
3049 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00003050 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
3051 if test "$ac_cv_func_dlopen" = yes
3052 then DYNLOADFILE="dynload_shlib.o"
3053 else DYNLOADFILE="dynload_aix.o"
3054 fi
3055 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00003056 BeOS*) DYNLOADFILE="dynload_beos.o";;
3057 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00003058 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
3059 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00003060 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00003061 *)
3062 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
3063 # out any dynamic loading
3064 if test "$ac_cv_func_dlopen" = yes
3065 then DYNLOADFILE="dynload_shlib.o"
3066 else DYNLOADFILE="dynload_stub.o"
3067 fi
3068 ;;
3069 esac
3070fi
3071AC_MSG_RESULT($DYNLOADFILE)
3072if test "$DYNLOADFILE" != "dynload_stub.o"
3073then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003074 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
3075 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00003076fi
3077
Jack Jansenc49e5b72001-06-19 15:00:23 +00003078# MACHDEP_OBJS can be set to platform-specific object files needed by Python
3079
3080AC_SUBST(MACHDEP_OBJS)
3081AC_MSG_CHECKING(MACHDEP_OBJS)
3082if test -z "$MACHDEP_OBJS"
3083then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00003084 MACHDEP_OBJS=$extra_machdep_objs
3085else
3086 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00003087fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00003088AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00003089
Guido van Rossum627b2d71993-12-24 10:39:16 +00003090# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00003091AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
3092 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00003093 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Benjamin Peterson27c269a2014-12-26 11:09:00 -06003094 getentropy \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00003095 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Benjamin Petersond16e01c2014-02-04 10:20:26 -05003096 initgroups kill killpg lchmod lchown lstat mkfifo mknod mktime mmap \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00003097 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00003098 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00003099 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
3100 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00003101 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00003102 setlocale setregid setreuid setresuid setresgid \
3103 setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00003104 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00003105 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00003106 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003107
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003108# For some functions, having a definition is not sufficient, since
3109# we want to take their address.
3110AC_MSG_CHECKING(for chroot)
Matthias Klosec511b472010-05-08 11:01:39 +00003111AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
3112 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
3113 AC_MSG_RESULT(yes)],
3114 [AC_MSG_RESULT(no)
3115])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003116AC_MSG_CHECKING(for link)
Matthias Klosec511b472010-05-08 11:01:39 +00003117AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
3118 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
3119 AC_MSG_RESULT(yes)],
3120 [AC_MSG_RESULT(no)
3121])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00003122AC_MSG_CHECKING(for symlink)
Matthias Klosec511b472010-05-08 11:01:39 +00003123AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
3124 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
3125 AC_MSG_RESULT(yes)],
3126 [AC_MSG_RESULT(no)
3127])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003128AC_MSG_CHECKING(for fchdir)
Matthias Klosec511b472010-05-08 11:01:39 +00003129AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
3130 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
3131 AC_MSG_RESULT(yes)],
3132 [AC_MSG_RESULT(no)
3133])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003134AC_MSG_CHECKING(for fsync)
Matthias Klosec511b472010-05-08 11:01:39 +00003135AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
3136 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
3137 AC_MSG_RESULT(yes)],
3138 [AC_MSG_RESULT(no)
3139])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00003140AC_MSG_CHECKING(for fdatasync)
Matthias Klosec511b472010-05-08 11:01:39 +00003141AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
3142 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
3143 AC_MSG_RESULT(yes)],
3144 [AC_MSG_RESULT(no)
3145])
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00003146AC_MSG_CHECKING(for epoll)
Matthias Klosec511b472010-05-08 11:01:39 +00003147AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
3148 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
3149 AC_MSG_RESULT(yes)],
3150 [AC_MSG_RESULT(no)
3151])
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00003152AC_MSG_CHECKING(for kqueue)
Matthias Klosec511b472010-05-08 11:01:39 +00003153AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00003154#include <sys/types.h>
3155#include <sys/event.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003156 ]], [[int x=kqueue()]])],
3157 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
3158 AC_MSG_RESULT(yes)],
3159 [AC_MSG_RESULT(no)
3160])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003161# On some systems (eg. FreeBSD 5), we would find a definition of the
3162# functions ctermid_r, setgroups in the library, but no prototype
3163# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
3164# address to avoid compiler warnings and potential miscompilations
3165# because of the missing prototypes.
3166
3167AC_MSG_CHECKING(for ctermid_r)
Matthias Klosec511b472010-05-08 11:01:39 +00003168AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00003169#include <stdio.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003170]], [[void* p = ctermid_r]])],
3171 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
3172 AC_MSG_RESULT(yes)],
3173 [AC_MSG_RESULT(no)
3174])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003175
Antoine Pitroub170f172010-09-10 18:47:36 +00003176AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
3177 [AC_COMPILE_IFELSE(
3178 [AC_LANG_PROGRAM(
3179 [#include <sys/file.h>],
3180 [void* p = flock]
3181 )],
3182 [ac_cv_flock_decl=yes],
3183 [ac_cv_flock_decl=no]
3184 )
Matthias Klosec511b472010-05-08 11:01:39 +00003185])
Antoine Pitroub170f172010-09-10 18:47:36 +00003186if test "x${ac_cv_flock_decl}" = xyes; then
3187 AC_CHECK_FUNCS(flock,,
3188 AC_CHECK_LIB(bsd,flock,
3189 [AC_DEFINE(HAVE_FLOCK)
3190 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
3191 ])
3192 )
Antoine Pitrou85729812010-09-07 14:55:24 +00003193fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003194
3195AC_MSG_CHECKING(for getpagesize)
Matthias Klosec511b472010-05-08 11:01:39 +00003196AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003197#include <unistd.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003198]], [[void* p = getpagesize]])],
3199 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
3200 AC_MSG_RESULT(yes)],
3201 [AC_MSG_RESULT(no)
3202])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00003203
Charles-François Natali93a11752011-11-27 13:01:35 +01003204AC_MSG_CHECKING(for broken unsetenv)
3205AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3206#include <stdlib.h>
3207]], [[int res = unsetenv("DUMMY")]])],
3208 [AC_MSG_RESULT(no)],
3209 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
3210 AC_MSG_RESULT(yes)
3211])
3212
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003213dnl check for true
3214AC_CHECK_PROGS(TRUE, true, /bin/true)
3215
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003216dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
3217dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00003218AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00003219 AC_CHECK_LIB(resolv, inet_aton)
3220)
3221
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00003222# On Tru64, chflags seems to be present, but calling it will
3223# exit Python
Gregory P. Smithbb213892009-11-02 01:37:37 +00003224AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily43e10542011-06-27 23:41:53 -07003225AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00003226#include <sys/stat.h>
3227#include <unistd.h>
3228int main(int argc, char*argv[])
3229{
3230 if(chflags(argv[0], 0) != 0)
3231 return 1;
3232 return 0;
3233}
Ned Deily43e10542011-06-27 23:41:53 -07003234]])],
Matthias Klosec511b472010-05-08 11:01:39 +00003235[ac_cv_have_chflags=yes],
3236[ac_cv_have_chflags=no],
3237[ac_cv_have_chflags=cross])
Gregory P. Smithbb213892009-11-02 01:37:37 +00003238])
3239if test "$ac_cv_have_chflags" = cross ; then
3240 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
3241fi
3242if test "$ac_cv_have_chflags" = yes ; then
Ned Deily43e10542011-06-27 23:41:53 -07003243 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003244fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00003245
Gregory P. Smithbb213892009-11-02 01:37:37 +00003246AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily43e10542011-06-27 23:41:53 -07003247AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00003248#include <sys/stat.h>
3249#include <unistd.h>
3250int main(int argc, char*argv[])
3251{
3252 if(lchflags(argv[0], 0) != 0)
3253 return 1;
3254 return 0;
3255}
Ned Deily43e10542011-06-27 23:41:53 -07003256]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Gregory P. Smithbb213892009-11-02 01:37:37 +00003257])
3258if test "$ac_cv_have_lchflags" = cross ; then
3259 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
3260fi
3261if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily43e10542011-06-27 23:41:53 -07003262 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003263fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00003264
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00003265dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00003266dnl
3267dnl On MacOSX the linker will search for dylibs on the entire linker path
3268dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
3269dnl to revert to a more traditional unix behaviour and make it possible to
3270dnl override the system libz with a local static library of libz. Temporarily
3271dnl add that flag to our CFLAGS as well to ensure that we check the version
3272dnl of libz that will be used by setup.py.
3273dnl The -L/usr/local/lib is needed as wel to get the same compilation
3274dnl environment as setup.py (and leaving it out can cause configure to use the
3275dnl wrong version of the library)
3276case $ac_sys_system/$ac_sys_release in
3277Darwin/*)
3278 _CUR_CFLAGS="${CFLAGS}"
3279 _CUR_LDFLAGS="${LDFLAGS}"
3280 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
3281 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
3282 ;;
3283esac
3284
Matthias Klose5183ebd2010-04-24 16:38:36 +00003285AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00003286
Ronald Oussorenf8752642006-07-06 10:13:35 +00003287case $ac_sys_system/$ac_sys_release in
3288Darwin/*)
3289 CFLAGS="${_CUR_CFLAGS}"
3290 LDFLAGS="${_CUR_LDFLAGS}"
3291 ;;
3292esac
3293
Martin v. Löwise9416172003-05-03 10:12:45 +00003294AC_MSG_CHECKING(for hstrerror)
Matthias Klosec511b472010-05-08 11:01:39 +00003295AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00003296#include <netdb.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003297]], [[void* p = hstrerror; hstrerror(0)]])],
3298 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
3299 AC_MSG_RESULT(yes)],
3300 [AC_MSG_RESULT(no)
3301])
Martin v. Löwise9416172003-05-03 10:12:45 +00003302
3303AC_MSG_CHECKING(for inet_aton)
Matthias Klosec511b472010-05-08 11:01:39 +00003304AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00003305#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003306#include <sys/socket.h>
3307#include <netinet/in.h>
3308#include <arpa/inet.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003309]], [[void* p = inet_aton;inet_aton(0,0)]])],
3310 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
3311 AC_MSG_RESULT(yes)],
3312 [AC_MSG_RESULT(no)
3313])
Martin v. Löwise9416172003-05-03 10:12:45 +00003314
3315AC_MSG_CHECKING(for inet_pton)
Matthias Klosec511b472010-05-08 11:01:39 +00003316AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003317#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00003318#include <sys/socket.h>
3319#include <netinet/in.h>
3320#include <arpa/inet.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003321]], [[void* p = inet_pton]])],
3322 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
3323 AC_MSG_RESULT(yes)],
3324 [AC_MSG_RESULT(no)
3325])
Martin v. Löwise9416172003-05-03 10:12:45 +00003326
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003327# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00003328AC_MSG_CHECKING(for setgroups)
Matthias Klosec511b472010-05-08 11:01:39 +00003329AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00003330#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00003331#ifdef HAVE_GRP_H
3332#include <grp.h>
3333#endif
Matthias Klosec511b472010-05-08 11:01:39 +00003334]], [[void* p = setgroups]])],
3335 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
3336 AC_MSG_RESULT(yes)],
3337 [AC_MSG_RESULT(no)
3338])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003339
Fred Drake8cef4cf2000-06-28 16:40:38 +00003340# check for openpty and forkpty
3341
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003342AC_CHECK_FUNCS(openpty,,
3343 AC_CHECK_LIB(util,openpty,
3344 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3345 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3346 )
3347)
3348AC_CHECK_FUNCS(forkpty,,
3349 AC_CHECK_LIB(util,forkpty,
3350 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3351 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3352 )
3353)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003354
Brett Cannonaa5778d2008-03-18 04:09:00 +00003355# Stuff for expat.
3356AC_CHECK_FUNCS(memmove)
3357
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003358# check for long file support functions
3359AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3360
Brett Cannonaa5778d2008-03-18 04:09:00 +00003361AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003362AC_CHECK_FUNCS(getpgrp,
Matthias Klosec511b472010-05-08 11:01:39 +00003363 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3364 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3365 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003366)
Jack Jansen150753c2003-03-29 22:07:47 +00003367AC_CHECK_FUNCS(setpgrp,
Matthias Klosec511b472010-05-08 11:01:39 +00003368 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3369 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3370 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003371)
3372AC_CHECK_FUNCS(gettimeofday,
Matthias Klosec511b472010-05-08 11:01:39 +00003373 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3374 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3375 [],
3376 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3377 [Define if gettimeofday() does not have second (timezone) argument
3378 This is the case on Motorola V4 (R40V4.2)])
3379 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003380)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003381
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003382AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Klosec511b472010-05-08 11:01:39 +00003383AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003384#if defined(MAJOR_IN_MKDEV)
3385#include <sys/mkdev.h>
3386#elif defined(MAJOR_IN_SYSMACROS)
3387#include <sys/sysmacros.h>
3388#else
3389#include <sys/types.h>
3390#endif
Matthias Klosec511b472010-05-08 11:01:39 +00003391]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003392 makedev(major(0),minor(0));
Matthias Klosec511b472010-05-08 11:01:39 +00003393]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003394 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3395 [Define to 1 if you have the device macros.])
3396 AC_MSG_RESULT(yes)
3397],[
3398 AC_MSG_RESULT(no)
3399])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003400
3401# On OSF/1 V5.1, getaddrinfo is available, but a define
3402# for [no]getaddrinfo in netdb.h.
3403AC_MSG_CHECKING(for getaddrinfo)
Matthias Klosec511b472010-05-08 11:01:39 +00003404AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003405#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003406#include <sys/socket.h>
3407#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003408#include <stdio.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003409]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3410[have_getaddrinfo=yes],
3411[have_getaddrinfo=no])
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003412AC_MSG_RESULT($have_getaddrinfo)
3413if test $have_getaddrinfo = yes
3414then
3415 AC_MSG_CHECKING(getaddrinfo bug)
3416 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Klosec511b472010-05-08 11:01:39 +00003417 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Stefan Krah0afe4e42012-11-22 23:56:51 +01003418#include <stdio.h>
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003419#include <sys/types.h>
3420#include <netdb.h>
3421#include <string.h>
3422#include <sys/socket.h>
3423#include <netinet/in.h>
3424
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003425int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003426{
3427 int passive, gaierr, inet4 = 0, inet6 = 0;
3428 struct addrinfo hints, *ai, *aitop;
3429 char straddr[INET6_ADDRSTRLEN], strport[16];
3430
3431 for (passive = 0; passive <= 1; passive++) {
3432 memset(&hints, 0, sizeof(hints));
3433 hints.ai_family = AF_UNSPEC;
3434 hints.ai_flags = passive ? AI_PASSIVE : 0;
3435 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003436 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003437 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3438 (void)gai_strerror(gaierr);
3439 goto bad;
3440 }
3441 for (ai = aitop; ai; ai = ai->ai_next) {
3442 if (ai->ai_addr == NULL ||
3443 ai->ai_addrlen == 0 ||
3444 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3445 straddr, sizeof(straddr), strport, sizeof(strport),
3446 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3447 goto bad;
3448 }
3449 switch (ai->ai_family) {
3450 case AF_INET:
3451 if (strcmp(strport, "54321") != 0) {
3452 goto bad;
3453 }
3454 if (passive) {
3455 if (strcmp(straddr, "0.0.0.0") != 0) {
3456 goto bad;
3457 }
3458 } else {
3459 if (strcmp(straddr, "127.0.0.1") != 0) {
3460 goto bad;
3461 }
3462 }
3463 inet4++;
3464 break;
3465 case AF_INET6:
3466 if (strcmp(strport, "54321") != 0) {
3467 goto bad;
3468 }
3469 if (passive) {
3470 if (strcmp(straddr, "::") != 0) {
3471 goto bad;
3472 }
3473 } else {
3474 if (strcmp(straddr, "::1") != 0) {
3475 goto bad;
3476 }
3477 }
3478 inet6++;
3479 break;
3480 case AF_UNSPEC:
3481 goto bad;
3482 break;
3483 default:
3484 /* another family support? */
3485 break;
3486 }
3487 }
Benjamin Petersond34677c2016-09-06 15:54:24 -07003488 freeaddrinfo(aitop);
3489 aitop = NULL;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003490 }
3491
3492 if (!(inet4 == 0 || inet4 == 2))
3493 goto bad;
3494 if (!(inet6 == 0 || inet6 == 2))
3495 goto bad;
3496
3497 if (aitop)
3498 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003499 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003500
3501 bad:
3502 if (aitop)
3503 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003504 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003505}
Matthias Klosec511b472010-05-08 11:01:39 +00003506]]])],
3507[ac_cv_buggy_getaddrinfo=no],
3508[ac_cv_buggy_getaddrinfo=yes],
doko@python.orgd65e2ba2013-01-31 23:52:03 +01003509[
3510if test "${enable_ipv6+set}" = set; then
3511 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3512else
3513 ac_cv_buggy_getaddrinfo=yes
3514fi]))
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003515fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003516
Benjamin Peterson75fed812010-11-01 01:47:19 +00003517AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3518
Mark Dickinson0ef0b912009-12-31 21:11:48 +00003519if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003520then
3521 if test $ipv6 = yes
3522 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003523 echo 'Fatal: You must get working getaddrinfo() function.'
3524 echo ' or you can specify "--disable-ipv6"'.
3525 exit 1
3526 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003527else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003528 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003529fi
Benjamin Peterson75fed812010-11-01 01:47:19 +00003530
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003531AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003532
Guido van Rossum627b2d71993-12-24 10:39:16 +00003533# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003534AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003535AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003536AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003537AC_CHECK_MEMBERS([struct stat.st_rdev])
3538AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003539AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003540AC_CHECK_MEMBERS([struct stat.st_gen])
3541AC_CHECK_MEMBERS([struct stat.st_birthtime])
Martin Pantera45120d2016-03-18 02:36:41 +00003542AC_CHECK_MEMBERS([struct stat.st_blocks])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003543
3544AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Klosec511b472010-05-08 11:01:39 +00003545AC_CACHE_VAL(ac_cv_header_time_altzone,[
3546 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3547 [ac_cv_header_time_altzone=yes],
3548 [ac_cv_header_time_altzone=no])
3549 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003550AC_MSG_RESULT($ac_cv_header_time_altzone)
3551if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003552 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003553fi
3554
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003555was_it_defined=no
3556AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Klosec511b472010-05-08 11:01:39 +00003557AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003558#include <sys/types.h>
3559#include <sys/select.h>
3560#include <sys/time.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003561]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003562 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3563 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3564 (which you can't on SCO ODT 3.0).])
3565 was_it_defined=yes
Matthias Klosec511b472010-05-08 11:01:39 +00003566],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003567AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003568
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003569AC_MSG_CHECKING(for addrinfo)
3570AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Klosec511b472010-05-08 11:01:39 +00003571AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3572 [ac_cv_struct_addrinfo=yes],
3573 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003574AC_MSG_RESULT($ac_cv_struct_addrinfo)
3575if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003576 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003577fi
3578
3579AC_MSG_CHECKING(for sockaddr_storage)
3580AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Klosec511b472010-05-08 11:01:39 +00003581AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003582# include <sys/types.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003583# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3584 [ac_cv_struct_sockaddr_storage=yes],
3585 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003586AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3587if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003588 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003589fi
3590
Guido van Rossum627b2d71993-12-24 10:39:16 +00003591# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003592
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003593AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003594AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003595
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003596works=no
3597AC_MSG_CHECKING(for working volatile)
Matthias Klosec511b472010-05-08 11:01:39 +00003598AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3599 [works=yes],
3600 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003601)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003602AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003603
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003604works=no
3605AC_MSG_CHECKING(for working signed char)
Matthias Klosec511b472010-05-08 11:01:39 +00003606AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3607 [works=yes],
3608 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003609)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003610AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003611
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003612have_prototypes=no
3613AC_MSG_CHECKING(for prototypes)
Matthias Klosec511b472010-05-08 11:01:39 +00003614AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3615 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3616 [Define if your compiler supports function prototype])
3617 have_prototypes=yes],
3618 []
3619)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003620AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003621
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003622works=no
3623AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Klosec511b472010-05-08 11:01:39 +00003624AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003625#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003626int foo(int x, ...) {
3627 va_list va;
3628 va_start(va, x);
3629 va_arg(va, int);
3630 va_arg(va, char *);
3631 va_arg(va, double);
3632 return 0;
3633}
Matthias Klosec511b472010-05-08 11:01:39 +00003634]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003635 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3636 [Define if your compiler supports variable length function prototypes
3637 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3638 works=yes
Matthias Klosec511b472010-05-08 11:01:39 +00003639],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003640AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003641
Dave Cole331708b2004-08-09 04:51:41 +00003642# check for socketpair
3643AC_MSG_CHECKING(for socketpair)
Matthias Klosec511b472010-05-08 11:01:39 +00003644AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003645#include <sys/types.h>
3646#include <sys/socket.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003647]], [[void *x=socketpair]])],
3648 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3649 AC_MSG_RESULT(yes)],
3650 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003651)
3652
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003653# check if sockaddr has sa_len member
3654AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Klosec511b472010-05-08 11:01:39 +00003655AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3656#include <sys/socket.h>]], [[struct sockaddr x;
3657x.sa_len = 0;]])],
3658 [AC_MSG_RESULT(yes)
3659 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3660 [AC_MSG_RESULT(no)]
3661)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003662
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003663va_list_is_array=no
3664AC_MSG_CHECKING(whether va_list is an array)
Matthias Klosec511b472010-05-08 11:01:39 +00003665AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003666#ifdef HAVE_STDARG_PROTOTYPES
3667#include <stdarg.h>
3668#else
3669#include <varargs.h>
3670#endif
Matthias Klosec511b472010-05-08 11:01:39 +00003671]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003672 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3673 va_list_is_array=yes
3674])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003675AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003676
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003677# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003678AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3679 [Define this if you have some version of gethostbyname_r()])
3680
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003681AC_CHECK_FUNC(gethostbyname_r, [
3682 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3683 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3684 OLD_CFLAGS=$CFLAGS
3685 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Klosec511b472010-05-08 11:01:39 +00003686 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003687# include <netdb.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003688 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003689 char *name;
3690 struct hostent *he, *res;
3691 char buffer[2048];
3692 int buflen = 2048;
3693 int h_errnop;
3694
3695 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Klosec511b472010-05-08 11:01:39 +00003696 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003697 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003698 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3699 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003700 AC_MSG_RESULT(yes)
Matthias Klosec511b472010-05-08 11:01:39 +00003701 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003702 AC_MSG_RESULT(no)
3703 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Klosec511b472010-05-08 11:01:39 +00003704 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003705# include <netdb.h>
Matthias Klosec511b472010-05-08 11:01:39 +00003706 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003707 char *name;
3708 struct hostent *he;
Matthias Klosec511b472010-05-08 11:01:39 +00003709 char buffer[2048];
3710 int buflen = 2048;
3711 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003712
Matthias Klosec511b472010-05-08 11:01:39 +00003713 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3714 ]])],
3715 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003716 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Klosec511b472010-05-08 11:01:39 +00003717 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3718 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003719 AC_MSG_RESULT(yes)
3720 ], [
3721 AC_MSG_RESULT(no)
Matthias Klosec511b472010-05-08 11:01:39 +00003722 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3723 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3724# include <netdb.h>
3725 ]], [[
3726 char *name;
3727 struct hostent *he;
3728 struct hostent_data data;
3729
3730 (void) gethostbyname_r(name, he, &data);
3731 ]])],
3732 [
3733 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3734 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3735 [Define this if you have the 3-arg version of gethostbyname_r().])
3736 AC_MSG_RESULT(yes)
3737 ], [
3738 AC_MSG_RESULT(no)
3739 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003740 ])
3741 ])
3742 CFLAGS=$OLD_CFLAGS
3743], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003744 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003745])
3746AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3747AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3748AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003749AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003750AC_SUBST(HAVE_GETHOSTBYNAME)
3751
Guido van Rossum627b2d71993-12-24 10:39:16 +00003752# checks for system services
3753# (none yet)
3754
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003755# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003756AC_CHECK_FUNC(__fpu_control,
3757 [],
3758 [AC_CHECK_LIB(ieee, __fpu_control)
3759])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003760
Guido van Rossum93274221997-05-09 02:42:00 +00003761# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003762AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003763AC_ARG_WITH(fpectl,
Matthias Klose22520ea2010-05-08 10:14:46 +00003764 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003765[
Guido van Rossum93274221997-05-09 02:42:00 +00003766if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003767then
3768 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3769 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3770 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003771else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003772fi],
3773[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003774
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003775# check for --with-libm=...
3776AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003777case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003778Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003779BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003780*) LIBM=-lm
3781esac
Guido van Rossum93274221997-05-09 02:42:00 +00003782AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003783AC_ARG_WITH(libm,
Matthias Klose22520ea2010-05-08 10:14:46 +00003784 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003785[
Guido van Rossum93274221997-05-09 02:42:00 +00003786if test "$withval" = no
3787then LIBM=
3788 AC_MSG_RESULT(force LIBM empty)
3789elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003790then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003791 AC_MSG_RESULT(set LIBM="$withval")
3792else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003793fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003794[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003795
3796# check for --with-libc=...
3797AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003798AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003799AC_ARG_WITH(libc,
Matthias Klose22520ea2010-05-08 10:14:46 +00003800 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003801[
Guido van Rossum93274221997-05-09 02:42:00 +00003802if test "$withval" = no
3803then LIBC=
3804 AC_MSG_RESULT(force LIBC empty)
3805elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003806then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003807 AC_MSG_RESULT(set LIBC="$withval")
3808else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003809fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003810[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003811
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003812# **************************************************
3813# * Check for various properties of floating point *
3814# **************************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003815
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003816AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3817AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Klosec511b472010-05-08 11:01:39 +00003818AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003819#include <string.h>
3820int main() {
3821 double x = 9006104071832581.0;
3822 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3823 return 0;
3824 else
3825 return 1;
3826}
Matthias Klosec511b472010-05-08 11:01:39 +00003827]])],
3828[ac_cv_little_endian_double=yes],
3829[ac_cv_little_endian_double=no],
3830[ac_cv_little_endian_double=no])])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003831AC_MSG_RESULT($ac_cv_little_endian_double)
3832if test "$ac_cv_little_endian_double" = yes
3833then
3834 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3835 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3836 with the least significant byte first])
3837fi
3838
3839AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3840AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Klosec511b472010-05-08 11:01:39 +00003841AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003842#include <string.h>
3843int main() {
3844 double x = 9006104071832581.0;
3845 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3846 return 0;
3847 else
3848 return 1;
3849}
Matthias Klosec511b472010-05-08 11:01:39 +00003850]])],
3851[ac_cv_big_endian_double=yes],
3852[ac_cv_big_endian_double=no],
3853[ac_cv_big_endian_double=no])])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003854AC_MSG_RESULT($ac_cv_big_endian_double)
3855if test "$ac_cv_big_endian_double" = yes
3856then
3857 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3858 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3859 with the most significant byte first])
3860fi
3861
3862# Some ARM platforms use a mixed-endian representation for doubles.
3863# While Python doesn't currently have full support for these platforms
3864# (see e.g., issue 1762561), we can at least make sure that float <-> string
3865# conversions work.
3866AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3867AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Klosec511b472010-05-08 11:01:39 +00003868AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003869#include <string.h>
3870int main() {
3871 double x = 9006104071832581.0;
3872 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3873 return 0;
3874 else
3875 return 1;
3876}
Matthias Klosec511b472010-05-08 11:01:39 +00003877]])],
3878[ac_cv_mixed_endian_double=yes],
3879[ac_cv_mixed_endian_double=no],
3880[ac_cv_mixed_endian_double=no])])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003881AC_MSG_RESULT($ac_cv_mixed_endian_double)
3882if test "$ac_cv_mixed_endian_double" = yes
3883then
3884 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3885 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3886 in ARM mixed-endian order (byte order 45670123)])
3887fi
3888
3889# The short float repr introduced in Python 3.1 requires the
3890# correctly-rounded string <-> double conversion functions from
3891# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3892# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsona548dee2009-11-15 13:12:43 +00003893# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003894# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsona548dee2009-11-15 13:12:43 +00003895
3896# This inline assembler syntax may also work for suncc and icc,
3897# so we try it on all platforms.
3898
3899AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Stefan Krah99e36b92015-07-03 15:30:54 +02003900AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsona548dee2009-11-15 13:12:43 +00003901 unsigned short cw;
3902 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3903 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Klosec511b472010-05-08 11:01:39 +00003904]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsona548dee2009-11-15 13:12:43 +00003905AC_MSG_RESULT($have_gcc_asm_for_x87)
3906if test "$have_gcc_asm_for_x87" = yes
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003907then
Mark Dickinsona548dee2009-11-15 13:12:43 +00003908 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3909 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003910fi
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003911
Mark Dickinson04b27232009-01-04 12:29:36 +00003912# Detect whether system arithmetic is subject to x87-style double
3913# rounding issues. The result of this test has little meaning on non
3914# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3915# mode is round-to-nearest and double rounding issues are present, and
3916# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3917AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinson99abd142009-10-24 13:44:16 +00003918# $BASECFLAGS may affect the result
3919ac_save_cc="$CC"
3920CC="$CC $BASECFLAGS"
Matthias Klosec511b472010-05-08 11:01:39 +00003921AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson04b27232009-01-04 12:29:36 +00003922#include <stdlib.h>
3923#include <math.h>
3924int main() {
3925 volatile double x, y, z;
3926 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3927 x = 0.99999999999999989; /* 1-2**-53 */
3928 y = 1./x;
3929 if (y != 1.)
3930 exit(0);
3931 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3932 x = 1e16;
3933 y = 2.99999;
3934 z = x + y;
3935 if (z != 1e16+4.)
3936 exit(0);
3937 /* both tests show evidence of double rounding */
3938 exit(1);
3939}
Matthias Klosec511b472010-05-08 11:01:39 +00003940]])],
3941[ac_cv_x87_double_rounding=no],
3942[ac_cv_x87_double_rounding=yes],
3943[ac_cv_x87_double_rounding=no])
Mark Dickinson99abd142009-10-24 13:44:16 +00003944CC="$ac_save_cc"
Mark Dickinson04b27232009-01-04 12:29:36 +00003945AC_MSG_RESULT($ac_cv_x87_double_rounding)
3946if test "$ac_cv_x87_double_rounding" = yes
3947then
3948 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3949 [Define if arithmetic is subject to x87-style double rounding issue])
3950fi
3951
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003952# ************************************
3953# * Check for mathematical functions *
3954# ************************************
3955
3956LIBS_SAVE=$LIBS
3957LIBS="$LIBS $LIBM"
3958
Mark Dickinsonc63392c2009-11-28 13:13:13 +00003959# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3960# -0. on some architectures.
3961AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3962AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Klosec511b472010-05-08 11:01:39 +00003963AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonc63392c2009-11-28 13:13:13 +00003964#include <math.h>
3965#include <stdlib.h>
3966int main() {
3967 /* return 0 if either negative zeros don't exist
3968 on this platform or if negative zeros exist
3969 and tanh(-0.) == -0. */
3970 if (atan2(0., -1.) == atan2(-0., -1.) ||
3971 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3972 else exit(1);
3973}
Matthias Klosec511b472010-05-08 11:01:39 +00003974]])],
3975[ac_cv_tanh_preserves_zero_sign=yes],
3976[ac_cv_tanh_preserves_zero_sign=no],
3977[ac_cv_tanh_preserves_zero_sign=no])])
Mark Dickinsonc63392c2009-11-28 13:13:13 +00003978AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3979if test "$ac_cv_tanh_preserves_zero_sign" = yes
3980then
3981 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3982 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3983fi
3984
3985AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3986AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
3987AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3988
3989LIBS=$LIBS_SAVE
3990
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003991# For multiprocessing module, check that sem_open
3992# actually works. For FreeBSD versions <= 7.2,
3993# the kernel module that provides POSIX semaphores
3994# isn't loaded by default, so an attempt to call
3995# sem_open results in a 'Signal 12' error.
3996AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3997AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Klosec511b472010-05-08 11:01:39 +00003998AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003999#include <unistd.h>
4000#include <fcntl.h>
4001#include <stdio.h>
4002#include <semaphore.h>
4003#include <sys/stat.h>
4004
4005int main(void) {
4006 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
4007 if (a == SEM_FAILED) {
4008 perror("sem_open");
4009 return 1;
4010 }
4011 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00004012 sem_unlink("/autoconf");
Mark Dickinsonc4920e82009-11-20 19:30:22 +00004013 return 0;
4014}
Matthias Klosec511b472010-05-08 11:01:39 +00004015]])],
4016[ac_cv_posix_semaphores_enabled=yes],
4017[ac_cv_posix_semaphores_enabled=no],
4018[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsonc4920e82009-11-20 19:30:22 +00004019)
4020AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
4021if test $ac_cv_posix_semaphores_enabled = no
4022then
Mark Dickinson5afa6d42009-11-28 10:44:20 +00004023 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
4024 [Define if POSIX semaphores aren't enabled on your system])
Mark Dickinsonc4920e82009-11-20 19:30:22 +00004025fi
4026
Jesse Noller355b1262009-04-02 00:03:28 +00004027# Multiprocessing check for broken sem_getvalue
4028AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004029AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Klosec511b472010-05-08 11:01:39 +00004030AC_RUN_IFELSE([AC_LANG_SOURCE([[
Jesse Noller355b1262009-04-02 00:03:28 +00004031#include <unistd.h>
4032#include <fcntl.h>
4033#include <stdio.h>
4034#include <semaphore.h>
4035#include <sys/stat.h>
4036
4037int main(void){
Mark Dickinson59dc89e2009-12-13 21:06:06 +00004038 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Jesse Noller355b1262009-04-02 00:03:28 +00004039 int count;
4040 int res;
4041 if(a==SEM_FAILED){
4042 perror("sem_open");
4043 return 1;
4044
4045 }
4046 res = sem_getvalue(a, &count);
4047 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00004048 sem_unlink("/autocftw");
Jesse Noller355b1262009-04-02 00:03:28 +00004049 return res==-1 ? 1 : 0;
4050}
Matthias Klosec511b472010-05-08 11:01:39 +00004051]])],
4052[ac_cv_broken_sem_getvalue=no],
4053[ac_cv_broken_sem_getvalue=yes],
4054[ac_cv_broken_sem_getvalue=yes])
Jesse Noller355b1262009-04-02 00:03:28 +00004055)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004056AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
4057if test $ac_cv_broken_sem_getvalue = yes
4058then
4059 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
4060 [define to 1 if your sem_getvalue is broken.])
4061fi
Mark Dickinson04b27232009-01-04 12:29:36 +00004062
Mark Dickinsonefc82f72009-03-20 15:51:55 +00004063# determine what size digit to use for Python's longs
4064AC_MSG_CHECKING([digit size for Python's longs])
4065AC_ARG_ENABLE(big-digits,
Matthias Klose22520ea2010-05-08 10:14:46 +00004066AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonefc82f72009-03-20 15:51:55 +00004067[case $enable_big_digits in
4068yes)
4069 enable_big_digits=30 ;;
4070no)
4071 enable_big_digits=15 ;;
4072[15|30])
4073 ;;
4074*)
4075 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
4076esac
4077AC_MSG_RESULT($enable_big_digits)
4078AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
4079],
4080[AC_MSG_RESULT(no value specified)])
4081
Guido van Rossumef2255b2000-03-10 22:30:29 +00004082# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004083AC_CHECK_HEADER(wchar.h, [
4084 AC_DEFINE(HAVE_WCHAR_H, 1,
4085 [Define if the compiler provides a wchar.h header file.])
4086 wchar_h="yes"
4087],
Guido van Rossumef2255b2000-03-10 22:30:29 +00004088wchar_h="no"
4089)
4090
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004091# determine wchar_t size
4092if test "$wchar_h" = yes
4093then
Guido van Rossum67b26592001-10-20 14:21:45 +00004094 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004095fi
4096
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004097AC_MSG_CHECKING(for UCS-4 tcl)
4098have_ucs4_tcl=no
Matthias Klosec511b472010-05-08 11:01:39 +00004099AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004100#include <tcl.h>
4101#if TCL_UTF_MAX != 6
4102# error "NOT UCS4_TCL"
Matthias Klosec511b472010-05-08 11:01:39 +00004103#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004104 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
4105 have_ucs4_tcl=yes
Matthias Klosec511b472010-05-08 11:01:39 +00004106],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004107AC_MSG_RESULT($have_ucs4_tcl)
4108
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004109# check whether wchar_t is signed or not
4110if test "$wchar_h" = yes
4111then
4112 # check whether wchar_t is signed or not
4113 AC_MSG_CHECKING(whether wchar_t is signed)
4114 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Klosec511b472010-05-08 11:01:39 +00004115 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004116 #include <wchar.h>
4117 int main()
4118 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00004119 /* Success: exit code 0 */
4120 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004121 }
Matthias Klosec511b472010-05-08 11:01:39 +00004122 ]])],
4123 [ac_cv_wchar_t_signed=yes],
4124 [ac_cv_wchar_t_signed=no],
4125 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004126 AC_MSG_RESULT($ac_cv_wchar_t_signed)
4127fi
4128
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004129AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004130dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004131AC_ARG_ENABLE(unicode,
Benjamin Peterson66556b02010-05-25 02:23:32 +00004132 AS_HELP_STRING([--enable-unicode@<:@=ucs@<:@24@:>@@:>@], [Enable Unicode strings (default is ucs2)]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00004133 [],
4134 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004135
4136if test $enable_unicode = yes
4137then
Martin v. Löwisfd917792001-06-27 20:22:04 +00004138 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00004139 case "$have_ucs4_tcl" in
4140 yes) enable_unicode="ucs4"
4141 ;;
4142 *) enable_unicode="ucs2"
4143 ;;
4144 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004145fi
4146
Martin v. Löwis0036cba2002-04-12 09:58:45 +00004147AH_TEMPLATE(Py_UNICODE_SIZE,
4148 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004149case "$enable_unicode" in
4150ucs2) unicode_size="2"
4151 AC_DEFINE(Py_UNICODE_SIZE,2)
4152 ;;
4153ucs4) unicode_size="4"
4154 AC_DEFINE(Py_UNICODE_SIZE,4)
4155 ;;
Martin v. Löwised11a5d2012-05-20 10:42:17 +02004156no) ;; # To allow --disable-unicode
Ezio Melotti5820efb2010-02-27 00:05:42 +00004157*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004158esac
4159
Martin v. Löwis11437992002-04-12 09:54:03 +00004160AH_TEMPLATE(PY_UNICODE_TYPE,
4161 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00004162
Martin v. Löwis339d0f72001-08-17 18:39:25 +00004163AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004164if test "$enable_unicode" = "no"
4165then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00004166 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004167 AC_MSG_RESULT(not used)
4168else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00004169 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004170 AC_DEFINE(Py_USING_UNICODE, 1,
4171 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004172
4173 # wchar_t is only usable if it maps to an unsigned type
4174 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00004175 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004176 then
4177 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004178 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
4179 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00004180 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004181 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00004182 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
4183 elif test "$ac_cv_sizeof_short" = "$unicode_size"
4184 then
4185 PY_UNICODE_TYPE="unsigned short"
4186 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
4187 elif test "$ac_cv_sizeof_long" = "$unicode_size"
4188 then
4189 PY_UNICODE_TYPE="unsigned long"
4190 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
4191 else
4192 PY_UNICODE_TYPE="no type found"
4193 fi
4194 AC_MSG_RESULT($PY_UNICODE_TYPE)
4195fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00004196
4197# check for endianness
4198AC_C_BIGENDIAN
4199
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004200# Check whether right shifting a negative integer extends the sign bit
4201# or fills with zeros (like the Cray J90, according to Tim Peters).
4202AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00004203AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Klosec511b472010-05-08 11:01:39 +00004204AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004205int main()
4206{
Vladimir Marangozova6180282000-07-12 05:05:06 +00004207 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004208}
Matthias Klosec511b472010-05-08 11:01:39 +00004209]])],
4210[ac_cv_rshift_extends_sign=yes],
4211[ac_cv_rshift_extends_sign=no],
4212[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004213AC_MSG_RESULT($ac_cv_rshift_extends_sign)
4214if test "$ac_cv_rshift_extends_sign" = no
4215then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004216 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
4217 [Define if i>>j for signed int i does not extend the sign bit
4218 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00004219fi
4220
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004221# check for getc_unlocked and related locking functions
4222AC_MSG_CHECKING(for getc_unlocked() and friends)
4223AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Klosec511b472010-05-08 11:01:39 +00004224AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004225 FILE *f = fopen("/dev/null", "r");
4226 flockfile(f);
4227 getc_unlocked(f);
4228 funlockfile(f);
Matthias Klosec511b472010-05-08 11:01:39 +00004229]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004230AC_MSG_RESULT($ac_cv_have_getc_unlocked)
4231if test "$ac_cv_have_getc_unlocked" = yes
4232then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004233 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
4234 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00004235fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00004236
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004237# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00004238# save the value of LIBS so we don't actually link Python with readline
4239LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00004240
4241# On some systems we need to link readline to a termcap compatible
4242# library. NOTE: Keep the precedence of listed libraries synchronised
4243# with setup.py.
4244py_cv_lib_readline=no
4245AC_MSG_CHECKING([how to link readline libs])
4246for py_libtermcap in "" ncursesw ncurses curses termcap; do
4247 if test -z "$py_libtermcap"; then
4248 READLINE_LIBS="-lreadline"
4249 else
4250 READLINE_LIBS="-lreadline -l$py_libtermcap"
4251 fi
4252 LIBS="$READLINE_LIBS $LIBS_no_readline"
4253 AC_LINK_IFELSE(
4254 [AC_LANG_CALL([],[readline])],
4255 [py_cv_lib_readline=yes])
4256 if test $py_cv_lib_readline = yes; then
4257 break
4258 fi
4259done
4260# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
4261#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00004262if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00004263 AC_MSG_RESULT([none])
4264else
4265 AC_MSG_RESULT([$READLINE_LIBS])
4266 AC_DEFINE(HAVE_LIBREADLINE, 1,
4267 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00004268fi
4269
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004270# check for readline 2.1
4271AC_CHECK_LIB(readline, rl_callback_handler_install,
4272 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00004273 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004274
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004275# check for readline 2.2
Matthias Klosec511b472010-05-08 11:01:39 +00004276AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4277 [have_readline=yes],
4278 [have_readline=no]
4279)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004280if test $have_readline = yes
4281then
4282 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4283 [readline/readline.h],
4284 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4285 [Define if you have readline 2.2]), )
Antoine Pitroud9ff74e2009-10-26 19:16:46 +00004286 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4287 [readline/readline.h],
4288 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4289 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004290fi
4291
Martin v. Löwis0daad592001-09-30 21:09:59 +00004292# check for readline 4.0
4293AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004294 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00004295 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004296
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00004297# also in 4.0
4298AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4299 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00004300 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00004301
Martin Pantera70c3232016-04-03 02:54:58 +00004302# also in 4.0, but not in editline
4303AC_CHECK_LIB(readline, rl_resize_terminal,
4304 AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1,
4305 [Define if you have readline 4.0]), ,$READLINE_LIBS)
4306
Guido van Rossum353ae582001-07-10 16:45:32 +00004307# check for readline 4.2
4308AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004309 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00004310 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004311
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004312# also in readline 4.2
Matthias Klosec511b472010-05-08 11:01:39 +00004313AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4314 [have_readline=yes],
4315 [have_readline=no]
4316)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004317if test $have_readline = yes
4318then
4319 AC_EGREP_HEADER([extern int rl_catch_signals;],
4320 [readline/readline.h],
4321 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4322 [Define if you can turn off readline's signal handling.]), )
4323fi
4324
Martin v. Löwis82bca632006-02-10 20:49:30 +00004325# End of readline checks: restore LIBS
4326LIBS=$LIBS_no_readline
4327
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004328AC_MSG_CHECKING(for broken nice())
4329AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Klosec511b472010-05-08 11:01:39 +00004330AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004331int main()
4332{
4333 int val1 = nice(1);
4334 if (val1 != -1 && val1 == nice(2))
4335 exit(0);
4336 exit(1);
4337}
Matthias Klosec511b472010-05-08 11:01:39 +00004338]])],
4339[ac_cv_broken_nice=yes],
4340[ac_cv_broken_nice=no],
4341[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004342AC_MSG_RESULT($ac_cv_broken_nice)
4343if test "$ac_cv_broken_nice" = yes
4344then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004345 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4346 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004347fi
4348
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004349AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004350AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Klosec511b472010-05-08 11:01:39 +00004351AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004352#include <poll.h>
4353
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004354int main()
4355{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004356 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004357 int poll_test;
4358
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004359 close (42);
4360
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004361 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004362 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004363 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004364 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004365 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004366 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00004367 return 1;
4368}
Matthias Klosec511b472010-05-08 11:01:39 +00004369]])],
4370[ac_cv_broken_poll=yes],
4371[ac_cv_broken_poll=no],
4372[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004373AC_MSG_RESULT($ac_cv_broken_poll)
4374if test "$ac_cv_broken_poll" = yes
4375then
4376 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4377 [Define if poll() sets errno on invalid file descriptors.])
4378fi
4379
Brett Cannon43802422005-02-10 20:48:03 +00004380# Before we can test tzset, we need to check if struct tm has a tm_zone
4381# (which is not required by ISO C or UNIX spec) and/or if we support
4382# tzname[]
4383AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004384
Brett Cannon43802422005-02-10 20:48:03 +00004385# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004386AC_MSG_CHECKING(for working tzset())
4387AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Klosec511b472010-05-08 11:01:39 +00004388AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004389#include <stdlib.h>
4390#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004391#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004392
4393#if HAVE_TZNAME
4394extern char *tzname[];
4395#endif
4396
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004397int main()
4398{
Brett Cannon18367812003-09-19 00:59:16 +00004399 /* Note that we need to ensure that not only does tzset(3)
4400 do 'something' with localtime, but it works as documented
4401 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004402 This includes making sure that tzname is set properly if
4403 tm->tm_zone does not exist since it is the alternative way
4404 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004405
4406 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004407 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004408 */
4409
Brett Cannon43802422005-02-10 20:48:03 +00004410 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004411 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4412
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004413 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004414 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004415 if (localtime(&groundhogday)->tm_hour != 0)
4416 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004417#if HAVE_TZNAME
4418 /* For UTC, tzname[1] is sometimes "", sometimes " " */
4419 if (strcmp(tzname[0], "UTC") ||
4420 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4421 exit(1);
4422#endif
Brett Cannon18367812003-09-19 00:59:16 +00004423
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004424 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004425 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004426 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004427 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004428#if HAVE_TZNAME
4429 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4430 exit(1);
4431#endif
Brett Cannon18367812003-09-19 00:59:16 +00004432
4433 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4434 tzset();
4435 if (localtime(&groundhogday)->tm_hour != 11)
4436 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004437#if HAVE_TZNAME
4438 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4439 exit(1);
4440#endif
4441
4442#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004443 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4444 exit(1);
4445 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4446 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004447#endif
Brett Cannon18367812003-09-19 00:59:16 +00004448
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004449 exit(0);
4450}
Matthias Klosec511b472010-05-08 11:01:39 +00004451]])],
4452[ac_cv_working_tzset=yes],
4453[ac_cv_working_tzset=no],
4454[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004455AC_MSG_RESULT($ac_cv_working_tzset)
4456if test "$ac_cv_working_tzset" = yes
4457then
4458 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4459 [Define if tzset() actually switches the local timezone in a meaningful way.])
4460fi
4461
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004462# Look for subsecond timestamps in struct stat
4463AC_MSG_CHECKING(for tv_nsec in struct stat)
4464AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Klosec511b472010-05-08 11:01:39 +00004465AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004466struct stat st;
4467st.st_mtim.tv_nsec = 1;
Matthias Klosec511b472010-05-08 11:01:39 +00004468]])],
4469[ac_cv_stat_tv_nsec=yes],
4470[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004471AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4472if test "$ac_cv_stat_tv_nsec" = yes
4473then
4474 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4475 [Define if you have struct stat.st_mtim.tv_nsec])
4476fi
4477
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004478# Look for BSD style subsecond timestamps in struct stat
4479AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4480AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Klosec511b472010-05-08 11:01:39 +00004481AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004482struct stat st;
4483st.st_mtimespec.tv_nsec = 1;
Matthias Klosec511b472010-05-08 11:01:39 +00004484]])],
4485[ac_cv_stat_tv_nsec2=yes],
4486[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004487AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4488if test "$ac_cv_stat_tv_nsec2" = yes
4489then
4490 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4491 [Define if you have struct stat.st_mtimensec])
4492fi
4493
doko@ubuntu.comf27ec3e2014-04-17 20:11:19 +02004494# first curses configure check
4495ac_save_cppflags="$CPPFLAGS"
4496CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
4497
4498AC_CHECK_HEADERS(curses.h ncurses.h)
4499
4500# On Solaris, term.h requires curses.h
4501AC_CHECK_HEADERS(term.h,,,[
4502#ifdef HAVE_CURSES_H
4503#include <curses.h>
4504#endif
4505])
4506
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004507# On HP/UX 11.0, mvwdelch is a block with a return statement
4508AC_MSG_CHECKING(whether mvwdelch is an expression)
4509AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Klosec511b472010-05-08 11:01:39 +00004510AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004511 int rtn;
4512 rtn = mvwdelch(0,0,0);
Matthias Klosec511b472010-05-08 11:01:39 +00004513]])],
4514[ac_cv_mvwdelch_is_expression=yes],
4515[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004516AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4517
4518if test "$ac_cv_mvwdelch_is_expression" = yes
4519then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004520 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4521 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004522fi
4523
4524AC_MSG_CHECKING(whether WINDOW has _flags)
4525AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Klosec511b472010-05-08 11:01:39 +00004526AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004527 WINDOW *w;
4528 w->_flags = 0;
Matthias Klosec511b472010-05-08 11:01:39 +00004529]])],
4530[ac_cv_window_has_flags=yes],
4531[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004532AC_MSG_RESULT($ac_cv_window_has_flags)
4533
4534
4535if test "$ac_cv_window_has_flags" = yes
4536then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004537 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4538 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004539fi
4540
Walter Dörwald4994d952006-06-19 08:07:50 +00004541AC_MSG_CHECKING(for is_term_resized)
Matthias Klosec511b472010-05-08 11:01:39 +00004542AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4543 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4544 AC_MSG_RESULT(yes)],
4545 [AC_MSG_RESULT(no)]
Walter Dörwald4994d952006-06-19 08:07:50 +00004546)
4547
Walter Dörwald05fdbf12006-06-19 08:14:09 +00004548AC_MSG_CHECKING(for resize_term)
Matthias Klosec511b472010-05-08 11:01:39 +00004549AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4550 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4551 AC_MSG_RESULT(yes)],
4552 [AC_MSG_RESULT(no)]
Walter Dörwald4994d952006-06-19 08:07:50 +00004553)
4554
Walter Dörwald05fdbf12006-06-19 08:14:09 +00004555AC_MSG_CHECKING(for resizeterm)
Matthias Klosec511b472010-05-08 11:01:39 +00004556AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4557 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4558 AC_MSG_RESULT(yes)],
4559 [AC_MSG_RESULT(no)]
Walter Dörwald4994d952006-06-19 08:07:50 +00004560)
doko@ubuntu.comf27ec3e2014-04-17 20:11:19 +02004561# last curses configure check
4562CPPFLAGS=$ac_save_cppflags
Walter Dörwald4994d952006-06-19 08:07:50 +00004563
doko@python.orgd65e2ba2013-01-31 23:52:03 +01004564AC_MSG_NOTICE([checking for device files])
Martin v. Löwisfefbc202006-10-17 18:59:23 +00004565
doko@python.orgd65e2ba2013-01-31 23:52:03 +01004566dnl NOTE: Inform user how to proceed with files when cross compiling.
4567if test "x$cross_compiling" = xyes; then
4568 if test "${ac_cv_file__dev_ptmx+set}" != set; then
4569 AC_MSG_CHECKING([for /dev/ptmx])
4570 AC_MSG_RESULT([not set])
4571 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
4572 fi
4573 if test "${ac_cv_file__dev_ptc+set}" != set; then
4574 AC_MSG_CHECKING([for /dev/ptc])
4575 AC_MSG_RESULT([not set])
4576 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
4577 fi
Martin v. Löwisfefbc202006-10-17 18:59:23 +00004578fi
4579
doko@python.orgd65e2ba2013-01-31 23:52:03 +01004580AC_CHECK_FILE(/dev/ptmx, [], [])
4581if test "x$ac_cv_file__dev_ptmx" = xyes; then
4582 AC_DEFINE(HAVE_DEV_PTMX, 1,
4583 [Define to 1 if you have the /dev/ptmx device file.])
4584fi
4585AC_CHECK_FILE(/dev/ptc, [], [])
4586if test "x$ac_cv_file__dev_ptc" = xyes; then
Martin v. Löwisfefbc202006-10-17 18:59:23 +00004587 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@python.orgd65e2ba2013-01-31 23:52:03 +01004588 [Define to 1 if you have the /dev/ptc device file.])
Martin v. Löwisfefbc202006-10-17 18:59:23 +00004589fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004590
Mark Dickinson82864d12009-11-15 16:18:58 +00004591if test "$have_long_long" = yes
4592then
4593 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4594 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Klosec511b472010-05-08 11:01:39 +00004595 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson82864d12009-11-15 16:18:58 +00004596 #include <stdio.h>
4597 #include <stddef.h>
4598 #include <string.h>
4599
4600 #ifdef HAVE_SYS_TYPES_H
4601 #include <sys/types.h>
4602 #endif
4603
4604 int main()
4605 {
4606 char buffer[256];
4607
4608 if (sprintf(buffer, "%lld", (long long)123) < 0)
4609 return 1;
4610 if (strcmp(buffer, "123"))
4611 return 1;
4612
4613 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4614 return 1;
4615 if (strcmp(buffer, "-123"))
4616 return 1;
4617
4618 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4619 return 1;
4620 if (strcmp(buffer, "123"))
4621 return 1;
4622
4623 return 0;
4624 }
Matthias Klosec511b472010-05-08 11:01:39 +00004625 ]]])],
4626 [ac_cv_have_long_long_format=yes],
4627 [ac_cv_have_long_long_format=no],
doko@python.orgd65e2ba2013-01-31 23:52:03 +01004628 [ac_cv_have_long_long_format="cross -- assuming no"
4629 if test x$GCC = xyes; then
4630 save_CFLAGS=$CFLAGS
4631 CFLAGS="$CFLAGS -Werror -Wformat"
4632 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4633 #include <stdio.h>
4634 #include <stddef.h>
4635 ]], [[
4636 char *buffer;
4637 sprintf(buffer, "%lld", (long long)123);
4638 sprintf(buffer, "%lld", (long long)-123);
4639 sprintf(buffer, "%llu", (unsigned long long)123);
4640 ]])],
4641 ac_cv_have_long_long_format=yes
4642 )
4643 CFLAGS=$save_CFLAGS
4644 fi])
Mark Dickinson82864d12009-11-15 16:18:58 +00004645 )
4646 AC_MSG_RESULT($ac_cv_have_long_long_format)
4647fi
4648
Mark Dickinson5ce84742009-12-31 20:48:04 +00004649if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson82864d12009-11-15 16:18:58 +00004650then
4651 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4652 [Define to printf format modifier for long long type])
4653fi
4654
Ronald Oussoren315cd0c2009-11-19 16:25:21 +00004655if test $ac_sys_system = Darwin
4656then
4657 LIBS="$LIBS -framework CoreFoundation"
4658fi
4659
Mark Dickinson82864d12009-11-15 16:18:58 +00004660
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004661AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Klosec511b472010-05-08 11:01:39 +00004662AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00004663#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00004664#include <stddef.h>
4665#include <string.h>
4666
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004667#ifdef HAVE_SYS_TYPES_H
4668#include <sys/types.h>
4669#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004670
4671#ifdef HAVE_SSIZE_T
4672typedef ssize_t Py_ssize_t;
4673#elif SIZEOF_VOID_P == SIZEOF_LONG
4674typedef long Py_ssize_t;
4675#else
4676typedef int Py_ssize_t;
4677#endif
Brett Cannon09d12362006-05-11 05:11:33 +00004678
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004679int main()
4680{
4681 char buffer[256];
4682
Brett Cannon09d12362006-05-11 05:11:33 +00004683 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4684 return 1;
4685
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004686 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00004687 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004688
4689 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4690 return 1;
4691
4692 if (strcmp(buffer, "-123"))
4693 return 1;
4694
Brett Cannon09d12362006-05-11 05:11:33 +00004695 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004696}
Matthias Klosec511b472010-05-08 11:01:39 +00004697]])],
4698[ac_cv_have_size_t_format=yes],
4699[ac_cv_have_size_t_format=no],
4700[ac_cv_have_size_t_format="cross -- assuming yes"
4701])])
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004702if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004703 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4704 [Define to printf format modifier for Py_ssize_t])
4705fi
Brett Cannon09d12362006-05-11 05:11:33 +00004706
Martin v. Löwis01c04012002-11-11 14:58:44 +00004707AC_CHECK_TYPE(socklen_t,,
4708 AC_DEFINE(socklen_t,int,
Matthias Klose5183ebd2010-04-24 16:38:36 +00004709 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004710#ifdef HAVE_SYS_TYPES_H
4711#include <sys/types.h>
4712#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004713#ifdef HAVE_SYS_SOCKET_H
4714#include <sys/socket.h>
4715#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004716])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004717
R. David Murray1d9d16e2010-10-16 00:43:13 +00004718case $ac_sys_system in
4719AIX*)
4720 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4721esac
4722
4723
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004724AC_SUBST(THREADHEADERS)
4725
4726for h in `(cd $srcdir;echo Python/thread_*.h)`
4727do
4728 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4729done
4730
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004731AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004732SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004733AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004734for dir in $SRCDIRS; do
4735 if test ! -d $dir; then
4736 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004737 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004738done
Benjamin Peterson2c992a02015-05-28 12:45:31 -05004739
4740# BEGIN_COMPUTED_GOTO
4741# Check for --with-computed-gotos
4742AC_MSG_CHECKING(for --with-computed-gotos)
4743AC_ARG_WITH(computed-gotos,
4744 AS_HELP_STRING([--with(out)-computed-gotos],
4745 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
4746[
4747if test "$withval" = yes
4748then
4749 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4750 [Define if you want to use computed gotos in ceval.c.])
4751 AC_MSG_RESULT(yes)
4752fi
4753if test "$withval" = no
4754then
4755 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4756 [Define if you want to use computed gotos in ceval.c.])
4757 AC_MSG_RESULT(no)
4758fi
4759],
4760[AC_MSG_RESULT(no value specified)])
4761
4762AC_MSG_CHECKING(whether $CC supports computed gotos)
4763AC_CACHE_VAL(ac_cv_computed_gotos,
4764AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4765int main(int argc, char **argv)
4766{
4767 static void *targets[1] = { &&LABEL1 };
4768 goto LABEL2;
4769LABEL1:
4770 return 0;
4771LABEL2:
4772 goto *targets[0];
4773 return 1;
4774}
4775]]])],
4776[ac_cv_computed_gotos=yes],
4777[ac_cv_computed_gotos=no],
4778[if test "${with_computed_gotos+set}" = set; then
4779 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
4780 else
4781 ac_cv_computed_gotos=no
4782 fi]))
4783AC_MSG_RESULT($ac_cv_computed_gotos)
4784case "$ac_cv_computed_gotos" in yes*)
4785 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4786 [Define if the C compiler supports computed gotos.])
4787esac
4788# END_COMPUTED_GOTO
4789
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004790AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004791
Ned Deily3f1d0b32014-11-20 02:11:03 -08004792# ensurepip option
4793AC_MSG_CHECKING(for ensurepip)
4794AC_ARG_WITH(ensurepip,
4795 [AS_HELP_STRING([--with(out)-ensurepip=@<:@=OPTION@:>@],
4796 ["install" or "upgrade" using bundled pip, default is "no"])],
4797 [],
4798 [with_ensurepip=no])
4799AS_CASE($with_ensurepip,
4800 [yes|upgrade],[ENSUREPIP=upgrade],
4801 [install],[ENSUREPIP=install],
4802 [no],[ENSUREPIP=no],
4803 [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
4804AC_MSG_RESULT($ENSUREPIP)
4805AC_SUBST(ENSUREPIP)
4806
Guido van Rossum627b2d71993-12-24 10:39:16 +00004807# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00004808AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrouaabdceb2010-09-10 20:03:17 +00004809AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004810AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004811
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004812echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004813if test ! -f Modules/Setup
4814then
4815 cp $srcdir/Modules/Setup.dist Modules/Setup
4816fi
4817
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004818echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004819if test ! -f Modules/Setup.local
4820then
4821 echo "# Edit this file for local setup changes" >Modules/Setup.local
4822fi
4823
4824echo "creating Makefile"
4825$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4826 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004827 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00004828
4829case $ac_sys_system in
4830BeOS)
4831 AC_MSG_WARN([
4832
4833 Support for BeOS is deprecated as of Python 2.6.
4834 See PEP 11 for the gory details.
4835 ])
4836 ;;
4837*) ;;
4838esac
4839
Neil Schemenauer66252162001-02-19 04:47:42 +00004840mv config.c Modules
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07004841
4842if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then
4843 echo "" >&AS_MESSAGE_FD
4844 echo "" >&AS_MESSAGE_FD
4845 echo "If you want a release build with all optimizations active (LTO, PGO, etc),"
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)b9999152016-11-20 21:19:36 +00004846 echo "please run ./configure --enable-optimizations" >&AS_MESSAGE_FD
Gregory P. Smith6d8fdfc2016-09-07 23:28:23 -07004847 echo "" >&AS_MESSAGE_FD
4848 echo "" >&AS_MESSAGE_FD
4849fi