blob: eb753bb93fa0d9ccf643cb1bc3eabcdf0b81fb78 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Martin v. Löwis88afe662002-10-26 13:47:44 +00004
5# Set VERSION so we only need to edit in one place (i.e., here)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00006m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00008dnl Some m4 magic to ensure that the configure script is generated
9dnl by the correct autoconf version.
10m4_define([version_required],
11[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
12 [],
13 [m4_fatal([Autoconf version $1 is required for Python], 63)])
14])
Matthias Kloseb9621712010-04-24 17:59:49 +000015version_required(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +000016
Guido van Rossum76be6ed1995-01-02 18:33:54 +000017AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000018AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000019AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000020AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000021
Benjamin Petersond23f8222009-04-05 19:13:16 +000022dnl Ensure that if prefix is specified, it does not end in a slash. If
23dnl it does, we get path names containing '//' which is both ugly and
24dnl can cause trouble.
25
26dnl Last slash shouldn't be stripped if prefix=/
27if test "$prefix" != "/"; then
28 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
29fi
30
Martin v. Löwis8316feb2003-06-14 07:48:07 +000031dnl This is for stuff that absolutely must end up in pyconfig.h.
32dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000033AH_TOP([
34#ifndef Py_PYCONFIG_H
35#define Py_PYCONFIG_H
36])
Martin v. Löwis11437992002-04-12 09:54:03 +000037AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000038/* Define the macros needed if on a UnixWare 7.x system. */
39#if defined(__USLC__) && defined(__SCO_VERSION__)
40#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
41#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000042
43#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000044])
45
Martin v. Löwis8316feb2003-06-14 07:48:07 +000046# We don't use PACKAGE_ variables, and they cause conflicts
47# with other autoconf-based packages that include Python.h
48grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
49rm confdefs.h
50mv confdefs.h.new confdefs.h
51
Guido van Rossum642b6781997-07-19 19:35:41 +000052AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000053VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000054
Martin v. Löwis1142de32002-03-29 16:28:31 +000055AC_SUBST(SOVERSION)
56SOVERSION=1.0
57
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058# The later defininition of _XOPEN_SOURCE disables certain features
59# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
60AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
61
Martin v. Löwisbcd93962003-05-03 10:32:18 +000062# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
63# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
64# them.
65AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
66
Andrew MacIntyreabccf412003-07-02 13:53:25 +000067# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
68# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
69# them.
70AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
71
Martin v. Löwisd6320502004-08-12 13:45:08 +000072# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
73# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
74AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
75
Georg Brandlfcaf9102008-07-16 02:17:56 +000076# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
77# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
78# them.
79AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
80
81
Martin v. Löwise981a4e2002-11-11 13:26:51 +000082define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000083
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000084# Arguments passed to configure.
85AC_SUBST(CONFIG_ARGS)
86CONFIG_ARGS="$ac_configure_args"
87
Ronald Oussoren8af24c12010-02-07 12:03:42 +000088AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000089AC_ARG_ENABLE(universalsdk,
Matthias Klose2b8733f2010-04-25 18:34:36 +000090 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
Thomas Wouters477c8d52006-05-27 19:21:47 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000095 if test ! -d "${enableval}"
96 then
97 enableval=/
98 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +000099 ;;
100 esac
101 case $enableval in
102 no)
103 UNIVERSALSDK=
104 enable_universalsdk=
105 ;;
106 *)
107 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000108 if test ! -d "${UNIVERSALSDK}"
109 then
110 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
111 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000112 ;;
113 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000114
Thomas Wouters477c8d52006-05-27 19:21:47 +0000115],[
116 UNIVERSALSDK=
117 enable_universalsdk=
118])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000119if test -n "${UNIVERSALSDK}"
120then
121 AC_MSG_RESULT(${UNIVERSALSDK})
122else
123 AC_MSG_RESULT(no)
124fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000125AC_SUBST(UNIVERSALSDK)
126
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000127AC_SUBST(ARCH_RUN_32BIT)
128
Georg Brandlfcaf9102008-07-16 02:17:56 +0000129UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000130AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000131AC_MSG_CHECKING(for --with-universal-archs)
132AC_ARG_WITH(universal-archs,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000133 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000134[
135 AC_MSG_RESULT($withval)
136 UNIVERSAL_ARCHS="$withval"
137],
138[
139 AC_MSG_RESULT(32-bit)
140])
141
142
143
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000144AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000145 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000146 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000147[
148 PYTHONFRAMEWORK=${withval}
149 PYTHONFRAMEWORKDIR=${withval}.framework
150 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
151 ],[
152 PYTHONFRAMEWORK=Python
153 PYTHONFRAMEWORKDIR=Python.framework
154 PYTHONFRAMEWORKIDENTIFIER=org.python.python
155])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000156dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000157AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000158 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000160 case $enableval in
161 yes)
162 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000163 esac
164 case $enableval in
165 no)
166 PYTHONFRAMEWORK=
167 PYTHONFRAMEWORKDIR=no-framework
168 PYTHONFRAMEWORKPREFIX=
169 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000170 FRAMEWORKINSTALLFIRST=
171 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000172 FRAMEWORKALTINSTALLFIRST=
173 FRAMEWORKALTINSTALLLAST=
174 if test "x${prefix}" = "xNONE"; then
175 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
176 else
177 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
178 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000179 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000180 ;;
181 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000182 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000183 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000184 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000185 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000186 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
187 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000188 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000192
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000193 else
194 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
195 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000196
197 case "${enableval}" in
198 /System*)
199 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
200 if test "${prefix}" = "NONE" ; then
201 # See below
202 FRAMEWORKUNIXTOOLSPREFIX="/usr"
203 fi
204 ;;
205
206 /Library*)
207 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
208 ;;
209
210 */Library/Frameworks)
211 MDIR="`dirname "${enableval}"`"
212 MDIR="`dirname "${MDIR}"`"
213 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
214
215 if test "${prefix}" = "NONE"; then
216 # User hasn't specified the
217 # --prefix option, but wants to install
218 # the framework in a non-default location,
219 # ensure that the compatibility links get
220 # installed relative to that prefix as well
221 # instead of in /usr/local.
222 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
223 fi
224 ;;
225
226 *)
227 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
228 ;;
229 esac
230
Jack Jansen127e56e2001-09-11 14:41:54 +0000231 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000232
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000233 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000234 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000235 AC_CONFIG_FILES(Mac/Makefile)
236 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000237 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
238 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000239 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000240 ],[
241 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000242 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000243 PYTHONFRAMEWORKPREFIX=
244 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000245 FRAMEWORKINSTALLFIRST=
246 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000247 FRAMEWORKALTINSTALLFIRST=
248 FRAMEWORKALTINSTALLLAST=
249 if test "x${prefix}" = "xNONE" ; then
250 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
251 else
252 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
253 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000254 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000255
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000256])
257AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000258AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000259AC_SUBST(PYTHONFRAMEWORKDIR)
260AC_SUBST(PYTHONFRAMEWORKPREFIX)
261AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000262AC_SUBST(FRAMEWORKINSTALLFIRST)
263AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000264AC_SUBST(FRAMEWORKALTINSTALLFIRST)
265AC_SUBST(FRAMEWORKALTINSTALLLAST)
266AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000267AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000268
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000269##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000270## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000271## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000272##
Guido van Rossumb418f891996-07-30 18:06:02 +0000273# Set name for machine-dependent library files
274AC_SUBST(MACHDEP)
275AC_MSG_CHECKING(MACHDEP)
276if test -z "$MACHDEP"
277then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000278 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000279 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000280 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000281 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000282 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000283 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000284 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000285 ac_md_system=`echo $ac_sys_system |
286 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
287 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000288 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000289 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000290
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000291 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000292 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000293 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000294 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000295 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000296 esac
297fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000298
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000299# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
300# disable features if it is defined, without any means to access these
301# features as extensions. For these systems, we skip the definition of
302# _XOPEN_SOURCE. Before adding a system to the list to gain access to
303# some feature, make sure there is no alternative way to access this
304# feature. Also, when using wildcards, make sure you have verified the
305# need for not defining _XOPEN_SOURCE on all systems matching the
306# wildcard, and that the wildcard does not include future systems
307# (which may remove their limitations).
308dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
309case $ac_sys_system/$ac_sys_release in
310 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
311 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000312 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000313 # In addition, Stefan Krah confirms that issue #1244610 exists through
314 # OpenBSD 4.6, but is fixed in 4.7.
315 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000316 define_xopen_source=no
317 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
318 # also defined. This can be overridden by defining _BSD_SOURCE
319 # As this has a different meaning on Linux, only define it on OpenBSD
320 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
321 ;;
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000322 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000323 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
324 # also defined. This can be overridden by defining _BSD_SOURCE
325 # As this has a different meaning on Linux, only define it on OpenBSD
326 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
327 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000328 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
329 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
330 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000331 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000332 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000333 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
334 # request to enable features supported by the standard as a request
335 # to disable features not supported by the standard. The best way
336 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
337 # entirely and define __EXTENSIONS__ instead.
338 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000339 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000340 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
341 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000342 # Reconfirmed for 7.1.4 by Martin v. Loewis.
343 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000344 define_xopen_source=no;;
345 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000346 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000347 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000348 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000349 # On FreeBSD 4, the math functions C89 does not cover are never defined
350 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
351 FreeBSD/4.*)
352 define_xopen_source=no;;
353 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
354 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
355 # identifies itself as Darwin/7.*
356 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
357 # disables platform specific features beyond repair.
358 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
359 # has no effect, don't bother defining them
360 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000361 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000362 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000363 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000364 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
365 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
366 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000367 AIX/4)
368 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000369 AIX/5)
370 if test `uname -r` -eq 1; then
371 define_xopen_source=no
372 fi
373 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000374 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
375 # defining NI_NUMERICHOST.
376 QNX/6.3.2)
377 define_xopen_source=no
378 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000379
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000380esac
381
382if test $define_xopen_source = yes
383then
Martin v. Löwis1a415762010-05-28 15:44:20 +0000384 AC_DEFINE(_XOPEN_SOURCE, 600,
385 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000386
387 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
388 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
389 # several APIs are not declared. Since this is also needed in some
390 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000391 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
392 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000393
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000394 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
395
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000396fi
397
Guido van Rossum91922671997-10-09 20:24:13 +0000398#
399# SGI compilers allow the specification of the both the ABI and the
400# ISA on the command line. Depending on the values of these switches,
401# different and often incompatable code will be generated.
402#
403# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
404# thus supply support for various ABI/ISA combinations. The MACHDEP
405# variable is also adjusted.
406#
407AC_SUBST(SGI_ABI)
408if test ! -z "$SGI_ABI"
409then
410 CC="cc $SGI_ABI"
411 LDFLAGS="$SGI_ABI $LDFLAGS"
412 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
413fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000414AC_MSG_RESULT($MACHDEP)
415
Jack Jansen6b08a402004-06-03 12:41:45 +0000416# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
417# it may influence the way we can build extensions, so distutils
418# needs to check it
419AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000420AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000421CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000422EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000423
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000424AC_MSG_CHECKING(machine type as reported by uname -m)
425ac_sys_machine=`uname -m`
426AC_MSG_RESULT($ac_sys_machine)
427
Guido van Rossum627b2d71993-12-24 10:39:16 +0000428# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000429
430# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
431# for debug/optimization stuff. BASECFLAGS is for flags that are required
432# just to get things to compile and link. Users are free to override OPT
433# when running configure or make. The build should not break if they do.
434# BASECFLAGS should generally not be messed with, however.
435
436# XXX shouldn't some/most/all of this code be merged with the stuff later
437# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000438AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000439AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000440 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000441[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000442 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000443 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000444 without_gcc=yes;;
445 yes) CC=gcc
446 without_gcc=no;;
447 *) CC=$withval
448 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000449 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000450 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000451 AIX*) CC=cc_r
452 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000453 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000454 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000455AC_MSG_RESULT($without_gcc)
456
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000457# If the user switches compilers, we can't believe the cache
458if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
459then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000460 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
461(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000462fi
463
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000464# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
465# when the compiler supports them, but we don't always want -O2, and
466# we set -g later.
467if test -z "$CFLAGS"; then
468 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000469fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000470AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000471
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000472AC_SUBST(CXX)
473AC_SUBST(MAINCC)
474AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
475AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000476 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000477 [compile main() and link python executable with C++ compiler]),
478[
479
480 case $withval in
481 no) with_cxx_main=no
482 MAINCC='$(CC)';;
483 yes) with_cxx_main=yes
484 MAINCC='$(CXX)';;
485 *) with_cxx_main=yes
486 MAINCC=$withval
487 if test -z "$CXX"
488 then
489 CXX=$withval
490 fi;;
491 esac], [
492 with_cxx_main=no
493 MAINCC='$(CC)'
494])
495AC_MSG_RESULT($with_cxx_main)
496
497preset_cxx="$CXX"
498if test -z "$CXX"
499then
500 case "$CC" in
501 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
502 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
503 esac
504 if test "$CXX" = "notfound"
505 then
506 CXX=""
507 fi
508fi
509if test -z "$CXX"
510then
511 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
512 if test "$CXX" = "notfound"
513 then
514 CXX=""
515 fi
516fi
517if test "$preset_cxx" != "$CXX"
518then
519 AC_MSG_WARN([
520
521 By default, distutils will build C++ extension modules with "$CXX".
522 If this is not intended, then set CXX on the configure command line.
523 ])
524fi
525
526
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000527# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000528AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000529
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000530# Check for unsupported systems
531case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000532atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000533 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
534 echo See README for details.
535 exit 1;;
536esac
537
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000538AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000539AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000540AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000541 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000542[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000543 case $withval in
544 no) EXEEXT=;;
545 yes) EXEEXT=.exe;;
546 *) EXEEXT=$withval;;
547 esac])
548AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000549
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000550# Test whether we're running on a non-case-sensitive system, in which
551# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000552AC_SUBST(BUILDEXEEXT)
553AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000554if test ! -d CaseSensitiveTestDir; then
555mkdir CaseSensitiveTestDir
556fi
557
558if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000559then
Jack Jansen1999ef42001-12-06 21:47:20 +0000560 AC_MSG_RESULT(yes)
561 BUILDEXEEXT=.exe
562else
563 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000564 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000565fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000566rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000567
Guido van Rossumdd997f71998-10-07 19:58:26 +0000568case $MACHDEP in
569bsdos*)
570 case $CC in
571 gcc) CC="$CC -D_HAVE_BSDI";;
572 esac;;
573esac
574
Guido van Rossum84561611997-08-21 00:08:11 +0000575case $ac_sys_system in
576hp*|HP*)
577 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000578 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000579 esac;;
580esac
581
Martin v. Löwise8964d42001-03-06 12:09:07 +0000582
Neil Schemenauer61c51152001-01-26 16:18:16 +0000583AC_SUBST(LIBRARY)
584AC_MSG_CHECKING(LIBRARY)
585if test -z "$LIBRARY"
586then
587 LIBRARY='libpython$(VERSION).a'
588fi
589AC_MSG_RESULT($LIBRARY)
590
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000591# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000592# name of the library into which to insert object files). BLDLIBRARY is also
593# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
594# is blank as the main program is not linked directly against LDLIBRARY.
595# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
596# systems without shared libraries, LDLIBRARY is the same as LIBRARY
597# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
598# DLLLIBRARY is the shared (i.e., DLL) library.
599#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000600# RUNSHARED is used to run shared python without installed libraries
601#
602# INSTSONAME is the name of the shared library that will be use to install
603# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000604AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000605AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000606AC_SUBST(BLDLIBRARY)
607AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000608AC_SUBST(INSTSONAME)
609AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000610LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000611BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000612INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000613DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000614LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000615RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000616
Guido van Rossumfb842551997-08-06 23:42:07 +0000617# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000618# If CXX is set, and if it is needed to link a main function that was
619# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
620# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000621# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000622# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000623AC_SUBST(LINKCC)
624AC_MSG_CHECKING(LINKCC)
625if test -z "$LINKCC"
626then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000627 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000628 case $ac_sys_system in
629 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000630 exp_extra="\"\""
631 if test $ac_sys_release -ge 5 -o \
632 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
633 exp_extra="."
634 fi
635 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000636 QNX*)
637 # qcc must be used because the other compilers do not
638 # support -N.
639 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000640 esac
641fi
642AC_MSG_RESULT($LINKCC)
643
Tarek Ziadébe720e02009-05-09 11:55:12 +0000644# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
645# make sure we default having it set to "no": this is used by
646# distutils.unixccompiler to know if it should add --enable-new-dtags
647# to linker command lines, and failing to detect GNU ld simply results
648# in the same bahaviour as before.
649AC_SUBST(GNULD)
650AC_MSG_CHECKING(for GNU ld)
651ac_prog=ld
652if test "$GCC" = yes; then
653 ac_prog=`$CC -print-prog-name=ld`
654fi
655case `"$ac_prog" -V 2>&1 < /dev/null` in
656 *GNU*)
657 GNULD=yes;;
658 *)
659 GNULD=no;;
660esac
661AC_MSG_RESULT($GNULD)
662
Martin v. Löwis1142de32002-03-29 16:28:31 +0000663AC_MSG_CHECKING(for --enable-shared)
664AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000665 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000666
Martin v. Löwis1142de32002-03-29 16:28:31 +0000667if test -z "$enable_shared"
668then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000669 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000670 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000671 enable_shared="yes";;
672 *)
673 enable_shared="no";;
674 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000675fi
676AC_MSG_RESULT($enable_shared)
677
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000678AC_MSG_CHECKING(for --enable-profiling)
679AC_ARG_ENABLE(profiling,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000680 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]),
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000681[ac_save_cc="$CC"
682 CC="$CC -pg"
Matthias Kloseb159a552010-04-25 21:00:44 +0000683 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
684 [ac_enable_profiling="yes"],
685 [ac_enable_profiling="no"],
686 [ac_enable_profiling="no"])
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000687 CC="$ac_save_cc"])
688AC_MSG_RESULT($ac_enable_profiling)
689
690case "$ac_enable_profiling" in
691 "yes")
692 BASECFLAGS="-pg $BASECFLAGS"
693 LDFLAGS="-pg $LDFLAGS"
694 ;;
695esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000696
697AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000698
Guido van Rossumb8552162001-09-05 14:58:11 +0000699# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
700# library that we build, but we do not want to link against it (we
701# will find it with a -framework option). For this reason there is an
702# extra variable BLDLIBRARY against which Python and the extension
703# modules are linked, BLDLIBRARY. This is normally the same as
704# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000705if test "$enable_framework"
706then
707 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000708 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000709 BLDLIBRARY=''
710else
711 BLDLIBRARY='$(LDLIBRARY)'
712fi
713
Martin v. Löwis1142de32002-03-29 16:28:31 +0000714# Other platforms follow
715if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000716 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000717 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718 CYGWIN*)
719 LDLIBRARY='libpython$(VERSION).dll.a'
720 DLLLIBRARY='libpython$(VERSION).dll'
721 ;;
722 SunOS*)
723 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000724 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000725 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000726 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000727 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000728 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000729 LDLIBRARY='libpython$(VERSION).so'
730 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000731 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000732 case $ac_sys_system in
733 FreeBSD*)
734 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
735 ;;
736 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000737 INSTSONAME="$LDLIBRARY".$SOVERSION
738 ;;
739 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000740 case `uname -m` in
741 ia64)
742 LDLIBRARY='libpython$(VERSION).so'
743 ;;
744 *)
745 LDLIBRARY='libpython$(VERSION).sl'
746 ;;
747 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000748 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000749 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000750 ;;
751 OSF*)
752 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000753 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000754 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000755 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000756 Darwin*)
757 LDLIBRARY='libpython$(VERSION).dylib'
758 BLDLIBRARY='-L. -lpython$(VERSION)'
759 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
760 ;;
761
Martin v. Löwis1142de32002-03-29 16:28:31 +0000762 esac
Jason Tishler30765592003-09-04 11:04:06 +0000763else # shared is disabled
764 case $ac_sys_system in
765 CYGWIN*)
766 BLDLIBRARY='$(LIBRARY)'
767 LDLIBRARY='libpython$(VERSION).dll.a'
768 ;;
769 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000770fi
771
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000772AC_MSG_RESULT($LDLIBRARY)
773
Guido van Rossum627b2d71993-12-24 10:39:16 +0000774AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000775AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000776AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000777
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000778# tweak ARFLAGS only if the user didn't set it on the command line
779AC_SUBST(ARFLAGS)
780if test -z "$ARFLAGS"
781then
782 ARFLAGS="rc"
783fi
784
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000785AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000786AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000787if test $SVNVERSION = found
788then
789 SVNVERSION="svnversion \$(srcdir)"
790else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000791 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000792fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000793
Neil Schemenauera42c8272001-03-31 00:01:55 +0000794case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000795bsdos*|hp*|HP*)
796 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000797 if test -z "$INSTALL"
798 then
799 INSTALL="${srcdir}/install-sh -c"
800 fi
801esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000802AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000803
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000804# Not every filesystem supports hard links
805AC_SUBST(LN)
806if test -z "$LN" ; then
807 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000808 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000809 *) LN=ln;;
810 esac
811fi
812
Fred Drake9f715822001-07-11 06:27:00 +0000813# Check for --with-pydebug
814AC_MSG_CHECKING(for --with-pydebug)
815AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000816 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000817[
Fred Drake9f715822001-07-11 06:27:00 +0000818if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000819then
820 AC_DEFINE(Py_DEBUG, 1,
821 [Define if you want to build an interpreter with many run-time checks.])
822 AC_MSG_RESULT(yes);
823 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000824else AC_MSG_RESULT(no); Py_DEBUG='false'
825fi],
826[AC_MSG_RESULT(no)])
827
Skip Montanarodecc6a42003-01-01 20:07:49 +0000828# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
829# merged with this chunk of code?
830
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000831# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000832# ------------------------
833# (The following bit of code is complicated enough - please keep things
834# indented properly. Just pretend you're editing Python code. ;-)
835
836# There are two parallel sets of case statements below, one that checks to
837# see if OPT was set and one that does BASECFLAGS setting based upon
838# compiler and platform. BASECFLAGS tweaks need to be made even if the
839# user set OPT.
840
841# tweak OPT based on compiler and platform, only if the user didn't set
842# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000843AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000844if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000845then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 case $GCC in
847 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000848 if test "$CC" != 'g++' ; then
849 STRICT_PROTO="-Wstrict-prototypes"
850 fi
Christian Heimes38053212007-12-14 01:24:44 +0000851 # For gcc 4.x we need to use -fwrapv so lets check if its supported
852 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
853 WRAP="-fwrapv"
854 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000855 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000856 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000857 if test "$Py_DEBUG" = 'true' ; then
858 # Optimization messes up debuggers, so turn it off for
859 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +0000860 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000861 else
Christian Heimes38053212007-12-14 01:24:44 +0000862 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000863 fi
864 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000865 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000866 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000868 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000869 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870 SCO_SV*) OPT="$OPT -m486 -DSCO5"
871 ;;
872 esac
Fred Drake9f715822001-07-11 06:27:00 +0000873 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000874
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000875 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000876 OPT="-O"
877 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000878 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000879fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000880
Skip Montanarodecc6a42003-01-01 20:07:49 +0000881AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000882
883# The -arch flags for universal builds on OSX
884UNIVERSAL_ARCH_FLAGS=
885AC_SUBST(UNIVERSAL_ARCH_FLAGS)
886
Skip Montanarodecc6a42003-01-01 20:07:49 +0000887# tweak BASECFLAGS based on compiler and platform
888case $GCC in
889yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000890 # Python doesn't violate C99 aliasing rules, but older versions of
891 # GCC produce warnings for legal Python code. Enable
892 # -fno-strict-aliasing on versions of GCC that support but produce
893 # warnings. See Issue3326
894 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000895 ac_save_cc="$CC"
896 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000897 save_CFLAGS="$CFLAGS"
898 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +0000899 AC_COMPILE_IFELSE(
900 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000901 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000902 ],[
903 CC="$ac_save_cc -fstrict-aliasing"
904 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
905 AC_COMPILE_IFELSE(
906 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000907 AC_LANG_PROGRAM([[void f(int **x) {}]],
908 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000909 ],[
910 ac_cv_no_strict_aliasing=no
911 ],[
912 ac_cv_no_strict_aliasing=yes
913 ])
914 ],[
915 ac_cv_no_strict_aliasing=no
916 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000917 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000918 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000919 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
920 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000921 then
922 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
923 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000924
925 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
926 # support. Without this, treatment of subnormals doesn't follow
927 # the standard.
928 case $ac_sys_machine in
929 alpha*)
930 BASECFLAGS="$BASECFLAGS -mieee"
931 ;;
932 esac
933
Skip Montanarodecc6a42003-01-01 20:07:49 +0000934 case $ac_sys_system in
935 SCO_SV*)
936 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
937 ;;
938 # is there any other compiler on Darwin besides gcc?
939 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000940 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
941 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +0000942 if test "${CC}" = gcc
943 then
944 AC_MSG_CHECKING(which compiler should be used)
945 case "${UNIVERSALSDK}" in
946 */MacOSX10.4u.sdk)
947 # Build using 10.4 SDK, force usage of gcc when the
948 # compiler is gcc, otherwise the user will get very
949 # confusing error messages when building on OSX 10.6
950 CC=gcc-4.0
951 CPP=cpp-4.0
952 ;;
953 esac
954 AC_MSG_RESULT($CC)
955 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000956
957
Thomas Wouters477c8d52006-05-27 19:21:47 +0000958 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000959 UNIVERSAL_ARCH_FLAGS=""
960 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
961 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000962 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +0000963 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000964 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
965 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000966 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000967 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000968
969 elif test "$UNIVERSAL_ARCHS" = "all" ; then
970 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000971 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000972 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000973
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000974 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
975 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000976 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000977 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000978
979 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
980 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000981 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000982 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000983
Georg Brandlfcaf9102008-07-16 02:17:56 +0000984 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000985 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000986
987 fi
988
989
Ronald Oussoren666028b2010-04-18 19:07:43 +0000990 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
991 if test "${UNIVERSALSDK}" != "/"
992 then
993 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
994 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +0000995 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000996 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000997 fi
998
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000999 # Calculate the right deployment target for this build.
1000 #
1001 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1002 if test ${cur_target} '>' 10.2; then
1003 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001004 if test ${enable_universalsdk}; then
1005 if test "${UNIVERSAL_ARCHS}" = "all"; then
1006 # Ensure that the default platform for a
1007 # 4-way universal build is OSX 10.5,
1008 # that's the first OS release where
1009 # 4-way builds make sense.
1010 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001011
1012 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1013 cur_target='10.5'
1014
1015 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1016 cur_target='10.5'
1017
1018 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1019 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001020 fi
1021 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001022 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001023 # On Intel macs default to a deployment
1024 # target of 10.4, that's the first OSX
1025 # release with Intel support.
1026 cur_target="10.4"
1027 fi
1028 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001029 fi
1030 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1031
1032 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1033 # environment with a value that is the same as what we'll use
1034 # in the Makefile to ensure that we'll get the same compiler
1035 # environment during configure and build time.
1036 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1037 export MACOSX_DEPLOYMENT_TARGET
1038 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1039
Skip Montanarodecc6a42003-01-01 20:07:49 +00001040 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001041 OSF*)
1042 BASECFLAGS="$BASECFLAGS -mieee"
1043 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001044 esac
1045 ;;
1046
1047*)
1048 case $ac_sys_system in
1049 OpenUNIX*|UnixWare*)
1050 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1051 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001052 OSF*)
1053 BASECFLAGS="$BASECFLAGS -ieee -std"
1054 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001055 SCO_SV*)
1056 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1057 ;;
1058 esac
1059 ;;
1060esac
1061
Fred Drakee1ceaa02001-12-04 20:55:47 +00001062if test "$Py_DEBUG" = 'true'; then
1063 :
1064else
1065 OPT="-DNDEBUG $OPT"
1066fi
1067
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001068if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001069then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001070 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001071fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001072
Neal Norwitz020c46a2006-01-07 21:39:28 +00001073# disable check for icc since it seems to pass, but generates a warning
1074if test "$CC" = icc
1075then
1076 ac_cv_opt_olimit_ok=no
1077fi
1078
Guido van Rossum91922671997-10-09 20:24:13 +00001079AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1080AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1081[ac_save_cc="$CC"
1082CC="$CC -OPT:Olimit=0"
Matthias Kloseb159a552010-04-25 21:00:44 +00001083AC_COMPILE_IFELSE(
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001084 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00001085 [ac_cv_opt_olimit_ok=yes],
1086 [ac_cv_opt_olimit_ok=no]
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001087 )
Guido van Rossum91922671997-10-09 20:24:13 +00001088CC="$ac_save_cc"])
1089AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001090if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001091 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001092 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1093 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1094 # environment?
1095 Darwin*)
1096 ;;
1097 *)
1098 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1099 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001100 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001101else
1102 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1103 AC_CACHE_VAL(ac_cv_olimit_ok,
1104 [ac_save_cc="$CC"
1105 CC="$CC -Olimit 1500"
Matthias Kloseb159a552010-04-25 21:00:44 +00001106 AC_COMPILE_IFELSE(
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001107 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00001108 [ac_cv_olimit_ok=yes],
1109 [ac_cv_olimit_ok=no]
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001110 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001111 CC="$ac_save_cc"])
1112 AC_MSG_RESULT($ac_cv_olimit_ok)
1113 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001114 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001115 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001116fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001117
Thomas Wouters89f507f2006-12-13 04:49:30 +00001118# Check whether GCC supports PyArg_ParseTuple format
1119if test "$GCC" = "yes"
1120then
1121 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1122 save_CFLAGS=$CFLAGS
1123 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001124 AC_COMPILE_IFELSE([
1125 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1126 ],[
1127 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1128 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1129 AC_MSG_RESULT(yes)
1130 ],[
1131 AC_MSG_RESULT(no)
1132 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001133 CFLAGS=$save_CFLAGS
1134fi
1135
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001136# On some compilers, pthreads are available without further options
1137# (e.g. MacOS X). On some of these systems, the compiler will not
1138# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1139# So we have to see first whether pthreads are available without
1140# options before we can check whether -Kpthread improves anything.
1141AC_MSG_CHECKING(whether pthreads are available without options)
1142AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001143[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001144#include <pthread.h>
1145
1146void* routine(void* p){return NULL;}
1147
1148int main(){
1149 pthread_t p;
1150 if(pthread_create(&p,NULL,routine,NULL)!=0)
1151 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001152 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001153 return 0;
1154}
Matthias Kloseb159a552010-04-25 21:00:44 +00001155]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001156 ac_cv_pthread_is_default=yes
1157 ac_cv_kthread=no
1158 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001159],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001160])
1161AC_MSG_RESULT($ac_cv_pthread_is_default)
1162
1163
1164if test $ac_cv_pthread_is_default = yes
1165then
1166 ac_cv_kpthread=no
1167else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001168# -Kpthread, if available, provides the right #defines
1169# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001170# Some compilers won't report that they do not support -Kpthread,
1171# so we need to run a program to see whether it really made the
1172# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001173AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1174AC_CACHE_VAL(ac_cv_kpthread,
1175[ac_save_cc="$CC"
1176CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001177AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001178#include <pthread.h>
1179
1180void* routine(void* p){return NULL;}
1181
1182int main(){
1183 pthread_t p;
1184 if(pthread_create(&p,NULL,routine,NULL)!=0)
1185 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001186 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001187 return 0;
1188}
Matthias Kloseb159a552010-04-25 21:00:44 +00001189]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001190CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001191AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001192fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001193
Skip Montanarod8d39a02003-07-10 20:44:10 +00001194if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001195then
1196# -Kthread, if available, provides the right #defines
1197# and linker options to make pthread_create available
1198# Some compilers won't report that they do not support -Kthread,
1199# so we need to run a program to see whether it really made the
1200# function available.
1201AC_MSG_CHECKING(whether $CC accepts -Kthread)
1202AC_CACHE_VAL(ac_cv_kthread,
1203[ac_save_cc="$CC"
1204CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001205AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001206#include <pthread.h>
1207
1208void* routine(void* p){return NULL;}
1209
1210int main(){
1211 pthread_t p;
1212 if(pthread_create(&p,NULL,routine,NULL)!=0)
1213 return 1;
1214 (void)pthread_detach(p);
1215 return 0;
1216}
Matthias Kloseb159a552010-04-25 21:00:44 +00001217]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001218CC="$ac_save_cc"])
1219AC_MSG_RESULT($ac_cv_kthread)
1220fi
1221
Skip Montanarod8d39a02003-07-10 20:44:10 +00001222if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001223then
1224# -pthread, if available, provides the right #defines
1225# and linker options to make pthread_create available
1226# Some compilers won't report that they do not support -pthread,
1227# so we need to run a program to see whether it really made the
1228# function available.
1229AC_MSG_CHECKING(whether $CC accepts -pthread)
1230AC_CACHE_VAL(ac_cv_thread,
1231[ac_save_cc="$CC"
1232CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001233AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001234#include <pthread.h>
1235
1236void* routine(void* p){return NULL;}
1237
1238int main(){
1239 pthread_t p;
1240 if(pthread_create(&p,NULL,routine,NULL)!=0)
1241 return 1;
1242 (void)pthread_detach(p);
1243 return 0;
1244}
Matthias Kloseb159a552010-04-25 21:00:44 +00001245]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001246CC="$ac_save_cc"])
1247AC_MSG_RESULT($ac_cv_pthread)
1248fi
1249
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001250# If we have set a CC compiler flag for thread support then
1251# check if it works for CXX, too.
1252ac_cv_cxx_thread=no
1253if test ! -z "$CXX"
1254then
1255AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1256ac_save_cxx="$CXX"
1257
1258if test "$ac_cv_kpthread" = "yes"
1259then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001260 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001261 ac_cv_cxx_thread=yes
1262elif test "$ac_cv_kthread" = "yes"
1263then
1264 CXX="$CXX -Kthread"
1265 ac_cv_cxx_thread=yes
1266elif test "$ac_cv_pthread" = "yes"
1267then
1268 CXX="$CXX -pthread"
1269 ac_cv_cxx_thread=yes
1270fi
1271
1272if test $ac_cv_cxx_thread = yes
1273then
1274 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1275 $CXX -c conftest.$ac_ext 2>&5
1276 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1277 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1278 then
1279 ac_cv_cxx_thread=yes
1280 else
1281 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001282 fi
1283 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001284fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001285AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001286fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001287CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001288
Fred Drakece81d592000-07-09 14:39:29 +00001289dnl # check for ANSI or K&R ("traditional") preprocessor
1290dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001291dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001292dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1293dnl int foo;
1294dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001295dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001296dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001297
Guido van Rossum627b2d71993-12-24 10:39:16 +00001298# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001299AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001300AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1301fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001302ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001303shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001304unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001305sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1306sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001307sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001308sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001309sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001310sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001311bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001312AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001313AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001314
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001315# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001316AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001317#ifdef HAVE_CURSES_H
1318#include <curses.h>
1319#endif
1320])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001321
Martin v. Löwis11017b12006-01-14 18:12:57 +00001322# On Linux, netlink.h requires asm/types.h
1323AC_CHECK_HEADERS(linux/netlink.h,,,[
1324#ifdef HAVE_ASM_TYPES_H
1325#include <asm/types.h>
1326#endif
1327#ifdef HAVE_SYS_SOCKET_H
1328#include <sys/socket.h>
1329#endif
1330])
1331
Guido van Rossum627b2d71993-12-24 10:39:16 +00001332# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001333was_it_defined=no
1334AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001335AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1336 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1337])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001338AC_MSG_RESULT($was_it_defined)
1339
Neal Norwitz11690112002-07-30 01:08:28 +00001340# Check whether using makedev requires defining _OSF_SOURCE
1341AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001342AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1343#if defined(MAJOR_IN_MKDEV)
1344#include <sys/mkdev.h>
1345#elif defined(MAJOR_IN_SYSMACROS)
1346#include <sys/sysmacros.h>
1347#else
1348#include <sys/types.h>
1349#endif
1350]], [[
1351 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001352],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001353if test "$ac_cv_has_makedev" = "no"; then
1354 # we didn't link, try if _OSF_SOURCE will allow us to link
Matthias Kloseb159a552010-04-25 21:00:44 +00001355 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001356#define _OSF_SOURCE 1
1357#include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001358 ]],
1359 [[ makedev(0, 0) ]])],
1360 [ac_cv_has_makedev=yes],
1361 [ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001362 if test "$ac_cv_has_makedev" = "yes"; then
1363 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1364 fi
1365fi
1366AC_MSG_RESULT($ac_cv_has_makedev)
1367if test "$ac_cv_has_makedev" = "yes"; then
1368 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1369fi
1370
Martin v. Löwis399a6892002-10-04 10:22:02 +00001371# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1372# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1373# defined, but the compiler does not support pragma redefine_extname,
1374# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1375# structures (such as rlimit64) without declaring them. As a
1376# work-around, disable LFS on such configurations
1377
1378use_lfs=yes
1379AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001380AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001381#define _LARGEFILE_SOURCE 1
1382#define _FILE_OFFSET_BITS 64
1383#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001384]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001385AC_MSG_RESULT($sol_lfs_bug)
1386if test "$sol_lfs_bug" = "yes"; then
1387 use_lfs=no
1388fi
1389
1390if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001391# Two defines needed to enable largefile support on various platforms
1392# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001393AC_DEFINE(_LARGEFILE_SOURCE, 1,
1394[This must be defined on some systems to enable large file support.])
1395AC_DEFINE(_FILE_OFFSET_BITS, 64,
1396[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001397fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001398
Guido van Rossum300fda71996-08-19 21:58:16 +00001399# Add some code to confdefs.h so that the test for off_t works on SCO
1400cat >> confdefs.h <<\EOF
1401#if defined(SCO_DS)
1402#undef _OFF_T
1403#endif
1404EOF
1405
Guido van Rossumef2255b2000-03-10 22:30:29 +00001406# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001407AC_TYPE_MODE_T
1408AC_TYPE_OFF_T
1409AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001410AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001411AC_TYPE_SIZE_T
1412AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001413AC_TYPE_UINT32_T
1414AC_TYPE_UINT64_T
1415AC_TYPE_INT32_T
1416AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001417AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001418 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001419
Guido van Rossumef2255b2000-03-10 22:30:29 +00001420# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001421# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001422AC_CHECK_SIZEOF(int, 4)
1423AC_CHECK_SIZEOF(long, 4)
1424AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001425AC_CHECK_SIZEOF(short, 2)
1426AC_CHECK_SIZEOF(float, 4)
1427AC_CHECK_SIZEOF(double, 8)
1428AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001429AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001430AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001431
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001432AC_MSG_CHECKING(for long long support)
1433have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001434AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001435 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1436 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001437],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001438AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001439if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001440AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001441fi
1442
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001443AC_MSG_CHECKING(for long double support)
1444have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001445AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001446 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1447 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001448],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001449AC_MSG_RESULT($have_long_double)
1450if test "$have_long_double" = yes ; then
1451AC_CHECK_SIZEOF(long double, 16)
1452fi
1453
1454
Thomas Woutersb2137042007-02-01 18:02:27 +00001455AC_MSG_CHECKING(for _Bool support)
1456have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001457AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001458 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1459 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001460],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001461AC_MSG_RESULT($have_c99_bool)
1462if test "$have_c99_bool" = yes ; then
1463AC_CHECK_SIZEOF(_Bool, 1)
1464fi
1465
Thomas Wouters89f507f2006-12-13 04:49:30 +00001466AC_CHECK_TYPES(uintptr_t,
1467 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1468 [], [#ifdef HAVE_STDINT_H
1469 #include <stdint.h>
1470 #endif])
1471
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001472AC_CHECK_SIZEOF(off_t, [], [
1473#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001474#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001475#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001476])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001477
1478AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001479if test "$have_long_long" = yes
1480then
1481if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001482 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001483 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1484 [Defined to enable large file support when an off_t is bigger than a long
1485 and long long is available and at least as big as an off_t. You may need
1486 to add some flags for configuration and compilation to enable this mode.
1487 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001488 AC_MSG_RESULT(yes)
1489else
1490 AC_MSG_RESULT(no)
1491fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001492else
1493 AC_MSG_RESULT(no)
1494fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001495
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001496AC_CHECK_SIZEOF(time_t, [], [
1497#ifdef HAVE_SYS_TYPES_H
1498#include <sys/types.h>
1499#endif
1500#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001501#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001502#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001503])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001504
Trent Mick635f6fb2000-08-23 21:33:05 +00001505# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001506ac_save_cc="$CC"
1507if test "$ac_cv_kpthread" = "yes"
1508then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001509elif test "$ac_cv_kthread" = "yes"
1510then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001511elif test "$ac_cv_pthread" = "yes"
1512then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001513fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001514
Trent Mick635f6fb2000-08-23 21:33:05 +00001515AC_MSG_CHECKING(for pthread_t)
1516have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001517AC_COMPILE_IFELSE([
1518 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1519],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001520AC_MSG_RESULT($have_pthread_t)
1521if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001522 AC_CHECK_SIZEOF(pthread_t, [], [
1523#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001524#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001525#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001526 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001527fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001528CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001529
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001530AC_SUBST(OTHER_LIBTOOL_OPT)
1531case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001532 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001533 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1534 ;;
1535 Darwin/*)
1536 OTHER_LIBTOOL_OPT=""
1537 ;;
1538esac
1539
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001540
1541ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001542AC_SUBST(LIBTOOL_CRUFT)
1543case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001544 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001545 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1546 if test "${enable_universalsdk}"; then
1547 :
1548 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001549 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001550 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001551 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001552 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001553 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001554 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001555 if test ${gcc_version} '<' 4.0
1556 then
1557 LIBTOOL_CRUFT="-lcc_dynamic"
1558 else
1559 LIBTOOL_CRUFT=""
1560 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001561 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001562 #include <unistd.h>
1563 int main(int argc, char*argv[])
1564 {
1565 if (sizeof(long) == 4) {
1566 return 0;
1567 } else {
1568 return 1;
1569 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001570 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001571 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001572
1573 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001574 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001575 i386)
1576 MACOSX_DEFAULT_ARCH="i386"
1577 ;;
1578 ppc)
1579 MACOSX_DEFAULT_ARCH="ppc"
1580 ;;
1581 *)
1582 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1583 ;;
1584 esac
1585 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001586 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001587 i386)
1588 MACOSX_DEFAULT_ARCH="x86_64"
1589 ;;
1590 ppc)
1591 MACOSX_DEFAULT_ARCH="ppc64"
1592 ;;
1593 *)
1594 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1595 ;;
1596 esac
1597
1598 #ARCH_RUN_32BIT="true"
1599 fi
1600
1601 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001602 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001603 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001604esac
1605
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001606AC_MSG_CHECKING(for --enable-framework)
1607if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001608then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001609 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001610 # -F. is needed to allow linking to the framework while
1611 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001612 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1613 [Define if you want to produce an OpenStep/Rhapsody framework
1614 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001615 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001616 if test $enable_shared = "yes"
1617 then
1618 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1619 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001620else
1621 AC_MSG_RESULT(no)
1622fi
1623
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001624AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001625case $ac_sys_system/$ac_sys_release in
1626 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001627 AC_DEFINE(WITH_DYLD, 1,
1628 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1629 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1630 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001631 AC_MSG_RESULT(always on for Darwin)
1632 ;;
1633 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001634 AC_MSG_RESULT(no)
1635 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001636esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001637
Guido van Rossumac405f61994-09-12 10:56:06 +00001638# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001639AC_SUBST(SO)
1640AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001641AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001642AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001643AC_SUBST(CCSHARED)
1644AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001645# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001646# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001647AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001648if test -z "$SO"
1649then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001650 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001651 hp*|HP*)
1652 case `uname -m` in
1653 ia64) SO=.so;;
1654 *) SO=.sl;;
1655 esac
1656 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001657 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001658 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001659 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001660else
1661 # this might also be a termcap variable, see #610332
1662 echo
1663 echo '====================================================================='
1664 echo '+ +'
1665 echo '+ WARNING: You have set SO in your environment. +'
1666 echo '+ Do you really mean to change the extension for shared libraries? +'
1667 echo '+ Continuing in 10 seconds to let you to ponder. +'
1668 echo '+ +'
1669 echo '====================================================================='
1670 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001671fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001672AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001673
Thomas Wouters477c8d52006-05-27 19:21:47 +00001674AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001675# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001676# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001677# (Shared libraries in this instance are shared modules to be loaded into
1678# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001679AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001680if test -z "$LDSHARED"
1681then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001682 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001683 AIX*)
1684 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001685 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001686 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001687 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001688 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001689 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001690 if test "$GCC" = "yes" ; then
1691 LDSHARED='$(CC) -shared'
1692 LDCXXSHARED='$(CXX) -shared'
1693 else
1694 LDSHARED='$(CC) -G'
1695 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00001696 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001697 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001698 if test "$GCC" = "yes" ; then
1699 LDSHARED='$(CC) -shared'
1700 LDCXXSHARED='$(CXX) -shared'
1701 else
1702 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001703 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001704 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001705 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001706 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001707 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001708 if test "$enable_framework" ; then
1709 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001710 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1711 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001712 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001713 else
1714 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001715 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001716 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001717 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001718 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001719 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001720 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001721 if test "$enable_framework" ; then
1722 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001723 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1724 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001725 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001726 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001727 # No framework, use the Python app as bundle-loader
1728 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001729 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001730 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001731 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001732 Darwin/*)
1733 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1734 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001735
Georg Brandlfcaf9102008-07-16 02:17:56 +00001736 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001737 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001738 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001739 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001740 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001741 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001742 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001743 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001744 else
1745 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001746 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001747 if test "$enable_framework" ; then
1748 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001749 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1750 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001751 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001752 else
1753 # No framework, use the Python app as bundle-loader
1754 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1755 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001756 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001757 fi
1758 fi
1759 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001760 Linux*|GNU*|QNX*)
1761 LDSHARED='$(CC) -shared'
1762 LDCXXSHARED='$(CXX) -shared';;
1763 BSD/OS*/4*)
1764 LDSHARED="gcc -shared"
1765 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001766 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001767 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001768 then
Benjamin Petersonab0a7522010-03-14 15:18:25 +00001769 LDSHARED='$(CC) -shared ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001770 LDCXXSHARED='$(CXX) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001771 else
1772 LDSHARED="ld -Bshareable ${LDFLAGS}"
1773 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001774 OpenBSD*)
1775 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1776 then
1777 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001778 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001779 else
1780 case `uname -r` in
1781 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1782 LDSHARED="ld -Bshareable ${LDFLAGS}"
1783 ;;
1784 *)
1785 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001786 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001787 ;;
1788 esac
1789 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001790 NetBSD*|DragonFly*)
1791 LDSHARED="cc -shared ${LDFLAGS}"
1792 LDCXXSHARED="c++ -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001793 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001794 if test "$GCC" = "yes" ; then
1795 LDSHARED='$(CC) -shared'
1796 LDCXXSHARED='$(CXX) -shared'
1797 else
1798 LDSHARED='$(CC) -G'
1799 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001800 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001801 SCO_SV*)
1802 LDSHARED='$(CC) -Wl,-G,-Bexport'
1803 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1804 CYGWIN*)
1805 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1806 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001807 *) LDSHARED="ld";;
1808 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001809fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001810AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001811LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001812BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001813# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001814# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001815AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001816if test -z "$CCSHARED"
1817then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001818 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001819 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001820 then CCSHARED="-fPIC";
1821 elif test `uname -p` = sparc;
1822 then CCSHARED="-xcode=pic32";
1823 else CCSHARED="-Kpic";
1824 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001825 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001826 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001827 else CCSHARED="+z";
1828 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001829 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001830 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001831 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001832 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001833 if test "$GCC" = "yes"
1834 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001836 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001837 SCO_SV*)
1838 if test "$GCC" = "yes"
1839 then CCSHARED="-fPIC"
1840 else CCSHARED="-Kpic -belf"
1841 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001842 IRIX*/6*) case $CC in
1843 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001844 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001845 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001846 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001847fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001848AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001849# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001850# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001851AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001852if test -z "$LINKFORSHARED"
1853then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001854 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001855 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001856 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001857 LINKFORSHARED="-Wl,-E -Wl,+s";;
1858# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001859 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001860 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001861 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001862 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001863 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001864 if test "$enable_framework"
1865 then
Jack Jansenda49e192005-01-07 13:08:22 +00001866 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001867 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001868 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001869 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001870 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001871 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001872 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001873 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1874 then
1875 LINKFORSHARED="-Wl,--export-dynamic"
1876 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001877 SunOS/5*) case $CC in
1878 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001879 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001880 then
1881 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001882 fi;;
1883 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001884 CYGWIN*)
1885 if test $enable_shared = "no"
1886 then
1887 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1888 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001889 QNX*)
1890 # -Wl,-E causes the symbols to be added to the dynamic
1891 # symbol table so that they can be found when a module
1892 # is loaded. -N 2048K causes the stack size to be set
1893 # to 2048 kilobytes so that the stack doesn't overflow
1894 # when running test_compile.py.
1895 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001896 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001897fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001898AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001899
Georg Brandl93de2162008-07-16 02:21:06 +00001900
Neil Schemenauer61c51152001-01-26 16:18:16 +00001901AC_SUBST(CFLAGSFORSHARED)
1902AC_MSG_CHECKING(CFLAGSFORSHARED)
1903if test ! "$LIBRARY" = "$LDLIBRARY"
1904then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001905 case $ac_sys_system in
1906 CYGWIN*)
1907 # Cygwin needs CCSHARED when building extension DLLs
1908 # but not when building the interpreter DLL.
1909 CFLAGSFORSHARED='';;
1910 *)
1911 CFLAGSFORSHARED='$(CCSHARED)'
1912 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001913fi
1914AC_MSG_RESULT($CFLAGSFORSHARED)
1915
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001916# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1917# library (with --enable-shared).
1918# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001919# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1920# if it is not required, since it creates a dependency of the shared library
1921# to LIBS. This, in turn, means that applications linking the shared libpython
1922# don't need to link LIBS explicitly. The default should be only changed
1923# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001924AC_SUBST(SHLIBS)
1925AC_MSG_CHECKING(SHLIBS)
1926case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001927 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001928 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001929esac
1930AC_MSG_RESULT($SHLIBS)
1931
1932
Guido van Rossum627b2d71993-12-24 10:39:16 +00001933# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001934AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1935AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001936
Georg Brandleee31162008-12-07 15:15:22 +00001937# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001938if test "$with_threads" = "yes" -o -z "$with_threads"; then
1939 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1940 # posix4 on Solaris 2.6
1941 # pthread (first!) on Linux
1942fi
1943
Martin v. Löwis19d17342003-06-14 21:03:05 +00001944# check if we need libintl for locale functions
1945AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001946 [AC_DEFINE(WITH_LIBINTL, 1,
1947 [Define to 1 if libintl is needed for locale functions.])
1948 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001949
1950# checks for system dependent C++ extensions support
1951case "$ac_sys_system" in
1952 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00001953 AC_LINK_IFELSE([
1954 AC_LANG_PROGRAM([[#include "/usr/lpp/xlC/include/load.h"]],
1955 [[loadAndInit("", 0, "")]])
1956 ],[
1957 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001958 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1959 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00001960 AC_MSG_RESULT(yes)
1961 ],[
1962 AC_MSG_RESULT(no)
1963 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001964 *) ;;
1965esac
1966
Guido van Rossum70c7f481998-03-26 18:44:10 +00001967# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001968AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001969AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001970
Guido van Rossumc5a39031996-07-31 17:35:03 +00001971AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001972AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001973 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001974[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001975AC_MSG_RESULT($withval)
1976LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001977],
1978[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001979
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001980AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1981
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001982# Check for use of the system expat library
1983AC_MSG_CHECKING(for --with-system-expat)
1984AC_ARG_WITH(system_expat,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001985 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]))
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001986
1987AC_MSG_RESULT($with_system_expat)
1988
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001989# Check for use of the system libffi library
1990AC_MSG_CHECKING(for --with-system-ffi)
1991AC_ARG_WITH(system_ffi,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001992 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]))
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001993
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001994if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001995 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1996else
1997 LIBFFI_INCLUDEDIR=""
1998fi
1999AC_SUBST(LIBFFI_INCLUDEDIR)
2000
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002001AC_MSG_RESULT($with_system_ffi)
2002
Matthias Klose55708cc2009-04-30 08:06:49 +00002003# Check for --with-dbmliborder
2004AC_MSG_CHECKING(for --with-dbmliborder)
2005AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002006 AS_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
Matthias Klose55708cc2009-04-30 08:06:49 +00002007[
2008if test x$with_dbmliborder = xyes
2009then
2010AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2011else
2012 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2013 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2014 then
2015 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2016 fi
2017 done
2018fi])
2019AC_MSG_RESULT($with_dbmliborder)
2020
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002021# Determine if signalmodule should be used.
2022AC_SUBST(USE_SIGNAL_MODULE)
2023AC_SUBST(SIGNAL_OBJS)
2024AC_MSG_CHECKING(for --with-signal-module)
2025AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002026 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002027
2028if test -z "$with_signal_module"
2029then with_signal_module="yes"
2030fi
2031AC_MSG_RESULT($with_signal_module)
2032
2033if test "${with_signal_module}" = "yes"; then
2034 USE_SIGNAL_MODULE=""
2035 SIGNAL_OBJS=""
2036else
2037 USE_SIGNAL_MODULE="#"
2038 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2039fi
2040
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002041# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002042AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002043USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002044
Guido van Rossum54d93d41997-01-22 20:51:58 +00002045AC_MSG_CHECKING(for --with-dec-threads)
2046AC_SUBST(LDLAST)
2047AC_ARG_WITH(dec-threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002048 AS_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002049[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002050AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002051LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002052if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002053 with_thread="$withval";
2054fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002055[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002056
Martin v. Löwis11437992002-04-12 09:54:03 +00002057# Templates for things AC_DEFINEd more than once.
2058# For a single AC_DEFINE, no template is needed.
2059AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2060AH_TEMPLATE(_REENTRANT,
2061 [Define to force use of thread-safe errno, h_errno, and other functions])
2062AH_TEMPLATE(WITH_THREAD,
2063 [Define if you want to compile in rudimentary thread support])
2064
Guido van Rossum54d93d41997-01-22 20:51:58 +00002065AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002066dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002067AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002068 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002069
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002070# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002071dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002072AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002073 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002074 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002075
2076if test -z "$with_threads"
2077then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002078fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002079AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002080
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002081AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002082if test "$with_threads" = "no"
2083then
2084 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002085elif test "$ac_cv_pthread_is_default" = yes
2086then
2087 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002088 # Defining _REENTRANT on system with POSIX threads should not hurt.
2089 AC_DEFINE(_REENTRANT)
2090 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002091 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002092elif test "$ac_cv_kpthread" = "yes"
2093then
2094 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002095 if test "$ac_cv_cxx_thread" = "yes"; then
2096 CXX="$CXX -Kpthread"
2097 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002098 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002099 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002100 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002101elif test "$ac_cv_kthread" = "yes"
2102then
2103 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002104 if test "$ac_cv_cxx_thread" = "yes"; then
2105 CXX="$CXX -Kthread"
2106 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002107 AC_DEFINE(WITH_THREAD)
2108 posix_threads=yes
2109 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002110elif test "$ac_cv_pthread" = "yes"
2111then
2112 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002113 if test "$ac_cv_cxx_thread" = "yes"; then
2114 CXX="$CXX -pthread"
2115 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002116 AC_DEFINE(WITH_THREAD)
2117 posix_threads=yes
2118 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002119else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120 if test ! -z "$with_threads" -a -d "$with_threads"
2121 then LDFLAGS="$LDFLAGS -L$with_threads"
2122 fi
2123 if test ! -z "$withval" -a -d "$withval"
2124 then LDFLAGS="$LDFLAGS -L$withval"
2125 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002126
2127 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002128 # define _POSIX_THREADS in unistd.h. Some apparently don't
2129 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002130 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2131 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002132 [
2133#include <unistd.h>
2134#ifdef _POSIX_THREADS
2135yes
2136#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002137 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2138 AC_MSG_RESULT($unistd_defines_pthreads)
2139
Martin v. Löwis130fb172001-07-19 11:00:41 +00002140 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002141 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2142 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002143 AC_DEFINE(HURD_C_THREADS, 1,
2144 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002145 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002146 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002147 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2148 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002149 AC_DEFINE(MACH_C_THREADS, 1,
2150 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002151 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002152 # Just looking for pthread_create in libpthread is not enough:
2153 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2154 # So we really have to include pthread.h, and then link.
2155 _libs=$LIBS
2156 LIBS="$LIBS -lpthread"
2157 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002158 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002159
Matthias Kloseb159a552010-04-25 21:00:44 +00002160void * start_routine (void *arg) { exit (0); }]], [[
2161pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002162 AC_MSG_RESULT(yes)
2163 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002164 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002165 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002166 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002167 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002168 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002169 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002170 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002171 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002172 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002173 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002174 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002175 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002176 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002177 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002178 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002179 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002180 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002181 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002182 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002183 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002184 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002185 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002186 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002187 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002188
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002189 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2190 LIBS="$LIBS -lmpc"
2191 THREADOBJ="Python/thread.o"
2192 USE_THREAD_MODULE=""])
2193
2194 if test "$posix_threads" != "yes"; then
2195 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2196 LIBS="$LIBS -lthread"
2197 THREADOBJ="Python/thread.o"
2198 USE_THREAD_MODULE=""])
2199 fi
2200
2201 if test "$USE_THREAD_MODULE" != "#"
2202 then
2203 # If the above checks didn't disable threads, (at least) OSF1
2204 # needs this '-threads' argument during linking.
2205 case $ac_sys_system in
2206 OSF1) LDLAST=-threads;;
2207 esac
2208 fi
2209fi
2210
2211if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002212 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002213 AC_DEFINE(_POSIX_THREADS, 1,
2214 [Define if you have POSIX threads,
2215 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002216 fi
2217
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002218 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2219 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002220 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002221 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002222 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002223 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002224 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002225 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002226 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002227 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002228 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002229 esac
2230
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002231 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2232 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002233 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002234 void *foo(void *parm) {
2235 return NULL;
2236 }
2237 main() {
2238 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002239 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002240 if (pthread_attr_init(&attr)) exit(-1);
2241 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002242 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002243 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002244 }]])],
2245 [ac_cv_pthread_system_supported=yes],
2246 [ac_cv_pthread_system_supported=no],
2247 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002248 ])
2249 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2250 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002251 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002252 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002253 AC_CHECK_FUNCS(pthread_sigmask,
2254 [case $ac_sys_system in
2255 CYGWIN*)
2256 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2257 [Define if pthread_sigmask() does not work on your system.])
2258 ;;
2259 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002260fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002261
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002262
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002264AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002265AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002266AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002267[ --enable-ipv6 Enable ipv6 (with ipv4) support
2268 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002269[ case "$enableval" in
2270 no)
2271 AC_MSG_RESULT(no)
2272 ipv6=no
2273 ;;
2274 *) AC_MSG_RESULT(yes)
2275 AC_DEFINE(ENABLE_IPV6)
2276 ipv6=yes
2277 ;;
2278 esac ],
2279
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002280[
2281dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002282 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002283#include <sys/types.h>
2284#include <sys/socket.h>
2285main()
2286{
2287 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2288 exit(1);
2289 else
2290 exit(0);
2291}
Matthias Kloseb159a552010-04-25 21:00:44 +00002292]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002294 ipv6=yes
2295],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002296 AC_MSG_RESULT(no)
2297 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002298],[
2299 AC_MSG_RESULT(no)
2300 ipv6=no
2301])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002302
2303if test "$ipv6" = "yes"; then
2304 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002305 AC_COMPILE_IFELSE([
2306 AC_LANG_PROGRAM([[#include <sys/types.h>
2307#include <netinet/in.h>]],
2308 [[struct sockaddr_in6 x;
2309 x.sin6_scope_id;]])
2310 ],[
2311 AC_MSG_RESULT(yes)
2312 ipv6=yes
2313 ],[
2314 AC_MSG_RESULT(no, IPv6 disabled)
2315 ipv6=no
2316 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002317fi
2318
2319if test "$ipv6" = "yes"; then
2320 AC_DEFINE(ENABLE_IPV6)
2321fi
2322])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323
2324ipv6type=unknown
2325ipv6lib=none
2326ipv6trylibc=no
2327
2328if test "$ipv6" = "yes"; then
2329 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002330 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2331 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002332 case $i in
2333 inria)
2334 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002335 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002336#include <netinet/in.h>
2337#ifdef IPV6_INRIA_VERSION
2338yes
2339#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002340 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002341 ;;
2342 kame)
2343 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002344 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002345#include <netinet/in.h>
2346#ifdef __KAME__
2347yes
2348#endif],
2349 [ipv6type=$i;
2350 ipv6lib=inet6
2351 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002352 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002353 ;;
2354 linux-glibc)
2355 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002356 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002357#include <features.h>
2358#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2359yes
2360#endif],
2361 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002362 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002363 ;;
2364 linux-inet6)
2365 dnl http://www.v6.linux.or.jp/
2366 if test -d /usr/inet6; then
2367 ipv6type=$i
2368 ipv6lib=inet6
2369 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002370 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002371 fi
2372 ;;
2373 solaris)
2374 if test -f /etc/netconfig; then
2375 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2376 ipv6type=$i
2377 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002378 fi
2379 fi
2380 ;;
2381 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002382 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002383#include <sys/param.h>
2384#ifdef _TOSHIBA_INET6
2385yes
2386#endif],
2387 [ipv6type=$i;
2388 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002389 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002390 ;;
2391 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002392 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002393#include </usr/local/v6/include/sys/v6config.h>
2394#ifdef __V6D__
2395yes
2396#endif],
2397 [ipv6type=$i;
2398 ipv6lib=v6;
2399 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002400 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002401 ;;
2402 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002403 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002404#include <sys/param.h>
2405#ifdef _ZETA_MINAMI_INET6
2406yes
2407#endif],
2408 [ipv6type=$i;
2409 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002410 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002411 ;;
2412 esac
2413 if test "$ipv6type" != "unknown"; then
2414 break
2415 fi
2416 done
2417 AC_MSG_RESULT($ipv6type)
2418fi
2419
2420if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2421 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2422 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2423 echo "using lib$ipv6lib"
2424 else
2425 if test $ipv6trylibc = "yes"; then
2426 echo "using libc"
2427 else
2428 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2429 echo "You need to fetch lib$ipv6lib.a from appropriate"
2430 echo 'ipv6 kit and compile beforehand.'
2431 exit 1
2432 fi
2433 fi
2434fi
2435
Georg Brandl93de2162008-07-16 02:21:06 +00002436AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002437AC_COMPILE_IFELSE([
2438 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2439],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002440 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002441 AC_MSG_RESULT(yes)
2442],[
Georg Brandl93de2162008-07-16 02:21:06 +00002443 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002444])
Georg Brandl93de2162008-07-16 02:21:06 +00002445
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002446# Check for --with-doc-strings
2447AC_MSG_CHECKING(for --with-doc-strings)
2448AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002449 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002450
2451if test -z "$with_doc_strings"
2452then with_doc_strings="yes"
2453fi
2454if test "$with_doc_strings" != "no"
2455then
2456 AC_DEFINE(WITH_DOC_STRINGS, 1,
2457 [Define if you want documentation strings in extension modules])
2458fi
2459AC_MSG_RESULT($with_doc_strings)
2460
Georg Brandl9976a512010-08-02 21:02:36 +00002461# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002462AC_MSG_CHECKING(for --with-tsc)
2463AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002464 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002465if test "$withval" != no
2466then
2467 AC_DEFINE(WITH_TSC, 1,
2468 [Define to profile with the Pentium timestamp counter])
2469 AC_MSG_RESULT(yes)
2470else AC_MSG_RESULT(no)
2471fi],
2472[AC_MSG_RESULT(no)])
2473
2474# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002475AC_MSG_CHECKING(for --with-pymalloc)
2476AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002477 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002478
2479if test -z "$with_pymalloc"
2480then with_pymalloc="yes"
2481fi
2482if test "$with_pymalloc" != "no"
2483then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002484 AC_DEFINE(WITH_PYMALLOC, 1,
2485 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002486fi
2487AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002488
Benjamin Peterson05159c42009-12-03 03:01:27 +00002489# Check for Valgrind support
2490AC_MSG_CHECKING([for --with-valgrind])
2491AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002492 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002493 with_valgrind=no)
2494AC_MSG_RESULT([$with_valgrind])
2495if test "$with_valgrind" != no; then
2496 AC_CHECK_HEADER([valgrind/valgrind.h],
2497 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2498 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2499 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002500 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002501fi
2502
Barry Warsawef82cd72000-06-30 16:21:01 +00002503# Check for --with-wctype-functions
2504AC_MSG_CHECKING(for --with-wctype-functions)
2505AC_ARG_WITH(wctype-functions,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002506 AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002507[
Barry Warsawef82cd72000-06-30 16:21:01 +00002508if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002509then
2510 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2511 [Define if you want wctype.h functions to be used instead of the
2512 one supplied by Python itself. (see Include/unicodectype.h).])
2513 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002514else AC_MSG_RESULT(no)
2515fi],
2516[AC_MSG_RESULT(no)])
2517
Guido van Rossum68242b51996-05-28 22:53:03 +00002518# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002519AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002520DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002521
Guido van Rossume97ee181999-12-20 21:27:22 +00002522# the dlopen() function means we might want to use dynload_shlib.o. some
2523# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002524AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002525
2526# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2527# loading of modules.
2528AC_SUBST(DYNLOADFILE)
2529AC_MSG_CHECKING(DYNLOADFILE)
2530if test -z "$DYNLOADFILE"
2531then
2532 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002533 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2534 if test "$ac_cv_func_dlopen" = yes
2535 then DYNLOADFILE="dynload_shlib.o"
2536 else DYNLOADFILE="dynload_aix.o"
2537 fi
2538 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002539 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002540 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2541 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002542 *)
2543 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2544 # out any dynamic loading
2545 if test "$ac_cv_func_dlopen" = yes
2546 then DYNLOADFILE="dynload_shlib.o"
2547 else DYNLOADFILE="dynload_stub.o"
2548 fi
2549 ;;
2550 esac
2551fi
2552AC_MSG_RESULT($DYNLOADFILE)
2553if test "$DYNLOADFILE" != "dynload_stub.o"
2554then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002555 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2556 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002557fi
2558
Jack Jansenc49e5b72001-06-19 15:00:23 +00002559# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2560
2561AC_SUBST(MACHDEP_OBJS)
2562AC_MSG_CHECKING(MACHDEP_OBJS)
2563if test -z "$MACHDEP_OBJS"
2564then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002565 MACHDEP_OBJS=$extra_machdep_objs
2566else
2567 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002568fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002569AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002570
Guido van Rossum627b2d71993-12-24 10:39:16 +00002571# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002572AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2573 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002574 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002575 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002576 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002577 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002578 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002579 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2580 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002581 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
Jean-Paul Calderone6ed7ac42010-06-19 19:58:37 +00002582 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002583 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002584 truncate uname unsetenv utimes waitpid wait3 wait4 \
2585 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002586
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002587# For some functions, having a definition is not sufficient, since
2588# we want to take their address.
2589AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002590AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2591 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2592 AC_MSG_RESULT(yes)],
2593 [AC_MSG_RESULT(no)
2594])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002595AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002596AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2597 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2598 AC_MSG_RESULT(yes)],
2599 [AC_MSG_RESULT(no)
2600])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002601AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002602AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2603 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2604 AC_MSG_RESULT(yes)],
2605 [AC_MSG_RESULT(no)
2606])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002607AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002608AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2609 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2610 AC_MSG_RESULT(yes)],
2611 [AC_MSG_RESULT(no)
2612])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002613AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002614AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2615 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2616 AC_MSG_RESULT(yes)],
2617 [AC_MSG_RESULT(no)
2618])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002619AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002620AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2621 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2622 AC_MSG_RESULT(yes)],
2623 [AC_MSG_RESULT(no)
2624])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002625AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002626AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2627 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2628 AC_MSG_RESULT(yes)],
2629 [AC_MSG_RESULT(no)
2630])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002631AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002632AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002633#include <sys/types.h>
2634#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002635 ]], [[int x=kqueue()]])],
2636 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2637 AC_MSG_RESULT(yes)],
2638 [AC_MSG_RESULT(no)
2639])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002640# On some systems (eg. FreeBSD 5), we would find a definition of the
2641# functions ctermid_r, setgroups in the library, but no prototype
2642# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2643# address to avoid compiler warnings and potential miscompilations
2644# because of the missing prototypes.
2645
2646AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002647AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002648#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002649]], [[void* p = ctermid_r]])],
2650 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2651 AC_MSG_RESULT(yes)],
2652 [AC_MSG_RESULT(no)
2653])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002654
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002655AC_MSG_CHECKING(for flock)
Matthias Kloseb159a552010-04-25 21:00:44 +00002656AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002657#include <sys/file.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002658]], [[void* p = flock]])],
2659 [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2660 AC_MSG_RESULT(yes)],
2661 [AC_MSG_RESULT(no)
2662])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002663
2664AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002665AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002666#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002667]], [[void* p = getpagesize]])],
2668 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2669 AC_MSG_RESULT(yes)],
2670 [AC_MSG_RESULT(no)
2671])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002672
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002673dnl check for true
2674AC_CHECK_PROGS(TRUE, true, /bin/true)
2675
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002676dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2677dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002678AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002679 AC_CHECK_LIB(resolv, inet_aton)
2680)
2681
Christian Heimesd0764e22007-12-04 15:00:33 +00002682# On Tru64, chflags seems to be present, but calling it will
2683# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002684AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002685AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002686#include <sys/stat.h>
2687#include <unistd.h>
2688int main(int argc, char*argv[])
2689{
2690 if(chflags(argv[0], 0) != 0)
2691 return 1;
2692 return 0;
2693}
Matthias Kloseb159a552010-04-25 21:00:44 +00002694]]])],
2695[ac_cv_have_chflags=yes],
2696[ac_cv_have_chflags=no],
2697[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002698])
2699if test "$ac_cv_have_chflags" = cross ; then
2700 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2701fi
2702if test "$ac_cv_have_chflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002703 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002704fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002705
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002706AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002707AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002708#include <sys/stat.h>
2709#include <unistd.h>
2710int main(int argc, char*argv[])
2711{
2712 if(lchflags(argv[0], 0) != 0)
2713 return 1;
2714 return 0;
2715}
Matthias Kloseb159a552010-04-25 21:00:44 +00002716]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002717])
2718if test "$ac_cv_have_lchflags" = cross ; then
2719 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2720fi
2721if test "$ac_cv_have_lchflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002722 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002723fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002724
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002725dnl Check if system zlib has *Copy() functions
2726dnl
2727dnl On MacOSX the linker will search for dylibs on the entire linker path
2728dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2729dnl to revert to a more traditional unix behaviour and make it possible to
2730dnl override the system libz with a local static library of libz. Temporarily
2731dnl add that flag to our CFLAGS as well to ensure that we check the version
2732dnl of libz that will be used by setup.py.
2733dnl The -L/usr/local/lib is needed as wel to get the same compilation
2734dnl environment as setup.py (and leaving it out can cause configure to use the
2735dnl wrong version of the library)
2736case $ac_sys_system/$ac_sys_release in
2737Darwin/*)
2738 _CUR_CFLAGS="${CFLAGS}"
2739 _CUR_LDFLAGS="${LDFLAGS}"
2740 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2741 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2742 ;;
2743esac
2744
Matthias Klosec80c93f2010-04-24 17:04:35 +00002745AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002746
2747case $ac_sys_system/$ac_sys_release in
2748Darwin/*)
2749 CFLAGS="${_CUR_CFLAGS}"
2750 LDFLAGS="${_CUR_LDFLAGS}"
2751 ;;
2752esac
2753
Martin v. Löwise9416172003-05-03 10:12:45 +00002754AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002755AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002756#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002757]], [[void* p = hstrerror; hstrerror(0)]])],
2758 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2759 AC_MSG_RESULT(yes)],
2760 [AC_MSG_RESULT(no)
2761])
Martin v. Löwise9416172003-05-03 10:12:45 +00002762
2763AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002764AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002765#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002766#include <sys/socket.h>
2767#include <netinet/in.h>
2768#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002769]], [[void* p = inet_aton;inet_aton(0,0)]])],
2770 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2771 AC_MSG_RESULT(yes)],
2772 [AC_MSG_RESULT(no)
2773])
Martin v. Löwise9416172003-05-03 10:12:45 +00002774
2775AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002776AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002777#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002778#include <sys/socket.h>
2779#include <netinet/in.h>
2780#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002781]], [[void* p = inet_pton]])],
2782 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2783 AC_MSG_RESULT(yes)],
2784 [AC_MSG_RESULT(no)
2785])
Martin v. Löwise9416172003-05-03 10:12:45 +00002786
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002787# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002788AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002789AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002790#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002791#ifdef HAVE_GRP_H
2792#include <grp.h>
2793#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002794]], [[void* p = setgroups]])],
2795 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2796 AC_MSG_RESULT(yes)],
2797 [AC_MSG_RESULT(no)
2798])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002799
Fred Drake8cef4cf2000-06-28 16:40:38 +00002800# check for openpty and forkpty
2801
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002802AC_CHECK_FUNCS(openpty,,
2803 AC_CHECK_LIB(util,openpty,
2804 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2805 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2806 )
2807)
2808AC_CHECK_FUNCS(forkpty,,
2809 AC_CHECK_LIB(util,forkpty,
2810 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2811 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2812 )
2813)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002814
Christian Heimesb186d002008-03-18 15:15:01 +00002815# Stuff for expat.
2816AC_CHECK_FUNCS(memmove)
2817
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002818# check for long file support functions
2819AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2820
Christian Heimesb186d002008-03-18 15:15:01 +00002821AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002822AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002823 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2824 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2825 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002826)
Jack Jansen150753c2003-03-29 22:07:47 +00002827AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002828 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2829 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2830 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002831)
2832AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002833 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2834 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2835 [],
2836 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2837 [Define if gettimeofday() does not have second (timezone) argument
2838 This is the case on Motorola V4 (R40V4.2)])
2839 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002841
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002842AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002843AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002844#if defined(MAJOR_IN_MKDEV)
2845#include <sys/mkdev.h>
2846#elif defined(MAJOR_IN_SYSMACROS)
2847#include <sys/sysmacros.h>
2848#else
2849#include <sys/types.h>
2850#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002851]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002852 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002853]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002854 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2855 [Define to 1 if you have the device macros.])
2856 AC_MSG_RESULT(yes)
2857],[
2858 AC_MSG_RESULT(no)
2859])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002860
2861# On OSF/1 V5.1, getaddrinfo is available, but a define
2862# for [no]getaddrinfo in netdb.h.
2863AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002864AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002865#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002866#include <sys/socket.h>
2867#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002868#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002869]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2870[have_getaddrinfo=yes],
2871[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002872AC_MSG_RESULT($have_getaddrinfo)
2873if test $have_getaddrinfo = yes
2874then
2875 AC_MSG_CHECKING(getaddrinfo bug)
2876 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002877 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002878#include <sys/types.h>
2879#include <netdb.h>
2880#include <string.h>
2881#include <sys/socket.h>
2882#include <netinet/in.h>
2883
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002884int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002885{
2886 int passive, gaierr, inet4 = 0, inet6 = 0;
2887 struct addrinfo hints, *ai, *aitop;
2888 char straddr[INET6_ADDRSTRLEN], strport[16];
2889
2890 for (passive = 0; passive <= 1; passive++) {
2891 memset(&hints, 0, sizeof(hints));
2892 hints.ai_family = AF_UNSPEC;
2893 hints.ai_flags = passive ? AI_PASSIVE : 0;
2894 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002895 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002896 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2897 (void)gai_strerror(gaierr);
2898 goto bad;
2899 }
2900 for (ai = aitop; ai; ai = ai->ai_next) {
2901 if (ai->ai_addr == NULL ||
2902 ai->ai_addrlen == 0 ||
2903 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2904 straddr, sizeof(straddr), strport, sizeof(strport),
2905 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2906 goto bad;
2907 }
2908 switch (ai->ai_family) {
2909 case AF_INET:
2910 if (strcmp(strport, "54321") != 0) {
2911 goto bad;
2912 }
2913 if (passive) {
2914 if (strcmp(straddr, "0.0.0.0") != 0) {
2915 goto bad;
2916 }
2917 } else {
2918 if (strcmp(straddr, "127.0.0.1") != 0) {
2919 goto bad;
2920 }
2921 }
2922 inet4++;
2923 break;
2924 case AF_INET6:
2925 if (strcmp(strport, "54321") != 0) {
2926 goto bad;
2927 }
2928 if (passive) {
2929 if (strcmp(straddr, "::") != 0) {
2930 goto bad;
2931 }
2932 } else {
2933 if (strcmp(straddr, "::1") != 0) {
2934 goto bad;
2935 }
2936 }
2937 inet6++;
2938 break;
2939 case AF_UNSPEC:
2940 goto bad;
2941 break;
2942 default:
2943 /* another family support? */
2944 break;
2945 }
2946 }
2947 }
2948
2949 if (!(inet4 == 0 || inet4 == 2))
2950 goto bad;
2951 if (!(inet6 == 0 || inet6 == 2))
2952 goto bad;
2953
2954 if (aitop)
2955 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002956 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002957
2958 bad:
2959 if (aitop)
2960 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002961 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002962}
Matthias Kloseb159a552010-04-25 21:00:44 +00002963]]])],
2964[ac_cv_buggy_getaddrinfo=no],
2965[ac_cv_buggy_getaddrinfo=yes],
2966[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002967fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002968
Mark Dickinson2df5d282009-12-31 21:22:50 +00002969if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002970then
2971 if test $ipv6 = yes
2972 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002973 echo 'Fatal: You must get working getaddrinfo() function.'
2974 echo ' or you can specify "--disable-ipv6"'.
2975 exit 1
2976 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002977else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002978 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002979fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002980AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002981
Guido van Rossum627b2d71993-12-24 10:39:16 +00002982# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002983AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002984AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002985AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002986AC_CHECK_MEMBERS([struct stat.st_rdev])
2987AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002988AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002989AC_CHECK_MEMBERS([struct stat.st_gen])
2990AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002991AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002992
2993AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00002994AC_CACHE_VAL(ac_cv_header_time_altzone,[
2995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
2996 [ac_cv_header_time_altzone=yes],
2997 [ac_cv_header_time_altzone=no])
2998 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002999AC_MSG_RESULT($ac_cv_header_time_altzone)
3000if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003001 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002fi
3003
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003004was_it_defined=no
3005AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003006AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003007#include <sys/types.h>
3008#include <sys/select.h>
3009#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003010]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003011 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3012 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3013 (which you can't on SCO ODT 3.0).])
3014 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003015],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003016AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003017
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003018AC_MSG_CHECKING(for addrinfo)
3019AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003020AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3021 [ac_cv_struct_addrinfo=yes],
3022 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003023AC_MSG_RESULT($ac_cv_struct_addrinfo)
3024if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003025 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003026fi
3027
3028AC_MSG_CHECKING(for sockaddr_storage)
3029AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003030AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003031# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003032# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3033 [ac_cv_struct_sockaddr_storage=yes],
3034 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003035AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3036if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003037 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003038fi
3039
Guido van Rossum627b2d71993-12-24 10:39:16 +00003040# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003041
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003042AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003043AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003044
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003045works=no
3046AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003047AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3048 [works=yes],
3049 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003050)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003051AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003052
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003053works=no
3054AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003055AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3056 [works=yes],
3057 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003058)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003059AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003060
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003061have_prototypes=no
3062AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003063AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3064 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3065 [Define if your compiler supports function prototype])
3066 have_prototypes=yes],
3067 []
3068)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003069AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003070
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003071works=no
3072AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003073AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003074#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003075int foo(int x, ...) {
3076 va_list va;
3077 va_start(va, x);
3078 va_arg(va, int);
3079 va_arg(va, char *);
3080 va_arg(va, double);
3081 return 0;
3082}
Matthias Kloseb159a552010-04-25 21:00:44 +00003083]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003084 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3085 [Define if your compiler supports variable length function prototypes
3086 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3087 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003088],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003089AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003090
Dave Cole331708b2004-08-09 04:51:41 +00003091# check for socketpair
3092AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003093AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003094#include <sys/types.h>
3095#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003096]], [[void *x=socketpair]])],
3097 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3098 AC_MSG_RESULT(yes)],
3099 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003100)
3101
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003102# check if sockaddr has sa_len member
3103AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003104AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3105#include <sys/socket.h>]], [[struct sockaddr x;
3106x.sa_len = 0;]])],
3107 [AC_MSG_RESULT(yes)
3108 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3109 [AC_MSG_RESULT(no)]
3110)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003111
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003112va_list_is_array=no
3113AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003114AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003115#ifdef HAVE_STDARG_PROTOTYPES
3116#include <stdarg.h>
3117#else
3118#include <varargs.h>
3119#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003120]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003121 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3122 va_list_is_array=yes
3123])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003124AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003125
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003126# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003127AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3128 [Define this if you have some version of gethostbyname_r()])
3129
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003130AC_CHECK_FUNC(gethostbyname_r, [
3131 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3132 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3133 OLD_CFLAGS=$CFLAGS
3134 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003135 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003136# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003137 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003138 char *name;
3139 struct hostent *he, *res;
3140 char buffer[2048];
3141 int buflen = 2048;
3142 int h_errnop;
3143
3144 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003145 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003146 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003147 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3148 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003149 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003150 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003151 AC_MSG_RESULT(no)
3152 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003153 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003154# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003155 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003156 char *name;
3157 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003158 char buffer[2048];
3159 int buflen = 2048;
3160 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003161
Matthias Kloseb159a552010-04-25 21:00:44 +00003162 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3163 ]])],
3164 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003165 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003166 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3167 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003168 AC_MSG_RESULT(yes)
3169 ], [
3170 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003171 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3172 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3173# include <netdb.h>
3174 ]], [[
3175 char *name;
3176 struct hostent *he;
3177 struct hostent_data data;
3178
3179 (void) gethostbyname_r(name, he, &data);
3180 ]])],
3181 [
3182 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3183 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3184 [Define this if you have the 3-arg version of gethostbyname_r().])
3185 AC_MSG_RESULT(yes)
3186 ], [
3187 AC_MSG_RESULT(no)
3188 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003189 ])
3190 ])
3191 CFLAGS=$OLD_CFLAGS
3192], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003193 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003194])
3195AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3196AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3197AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003198AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003199AC_SUBST(HAVE_GETHOSTBYNAME)
3200
Guido van Rossum627b2d71993-12-24 10:39:16 +00003201# checks for system services
3202# (none yet)
3203
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003204# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003205AC_CHECK_FUNC(__fpu_control,
3206 [],
3207 [AC_CHECK_LIB(ieee, __fpu_control)
3208])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003209
Guido van Rossum93274221997-05-09 02:42:00 +00003210# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003211AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003212AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003213 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003214[
Guido van Rossum93274221997-05-09 02:42:00 +00003215if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003216then
3217 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3218 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3219 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003220else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003221fi],
3222[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003223
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003224# check for --with-libm=...
3225AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003226case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003227Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003228*) LIBM=-lm
3229esac
Guido van Rossum93274221997-05-09 02:42:00 +00003230AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003231AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003232 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003233[
Guido van Rossum93274221997-05-09 02:42:00 +00003234if test "$withval" = no
3235then LIBM=
3236 AC_MSG_RESULT(force LIBM empty)
3237elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003238then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003239 AC_MSG_RESULT(set LIBM="$withval")
3240else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003241fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003242[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003243
3244# check for --with-libc=...
3245AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003246AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003247AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003248 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003249[
Guido van Rossum93274221997-05-09 02:42:00 +00003250if test "$withval" = no
3251then LIBC=
3252 AC_MSG_RESULT(force LIBC empty)
3253elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003254then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003255 AC_MSG_RESULT(set LIBC="$withval")
3256else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003257fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003258[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003259
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003260# **************************************************
3261# * Check for various properties of floating point *
3262# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003263
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003264AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3265AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003266AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003267#include <string.h>
3268int main() {
3269 double x = 9006104071832581.0;
3270 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3271 return 0;
3272 else
3273 return 1;
3274}
Matthias Kloseb159a552010-04-25 21:00:44 +00003275]])],
3276[ac_cv_little_endian_double=yes],
3277[ac_cv_little_endian_double=no],
3278[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003279AC_MSG_RESULT($ac_cv_little_endian_double)
3280if test "$ac_cv_little_endian_double" = yes
3281then
3282 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3283 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3284 with the least significant byte first])
3285fi
3286
3287AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3288AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003289AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003290#include <string.h>
3291int main() {
3292 double x = 9006104071832581.0;
3293 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3294 return 0;
3295 else
3296 return 1;
3297}
Matthias Kloseb159a552010-04-25 21:00:44 +00003298]])],
3299[ac_cv_big_endian_double=yes],
3300[ac_cv_big_endian_double=no],
3301[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003302AC_MSG_RESULT($ac_cv_big_endian_double)
3303if test "$ac_cv_big_endian_double" = yes
3304then
3305 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3306 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3307 with the most significant byte first])
3308fi
3309
3310# Some ARM platforms use a mixed-endian representation for doubles.
3311# While Python doesn't currently have full support for these platforms
3312# (see e.g., issue 1762561), we can at least make sure that float <-> string
3313# conversions work.
3314AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3315AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003316AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003317#include <string.h>
3318int main() {
3319 double x = 9006104071832581.0;
3320 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3321 return 0;
3322 else
3323 return 1;
3324}
Matthias Kloseb159a552010-04-25 21:00:44 +00003325]])],
3326[ac_cv_mixed_endian_double=yes],
3327[ac_cv_mixed_endian_double=no],
3328[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003329AC_MSG_RESULT($ac_cv_mixed_endian_double)
3330if test "$ac_cv_mixed_endian_double" = yes
3331then
3332 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3333 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3334 in ARM mixed-endian order (byte order 45670123)])
3335fi
3336
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003337# The short float repr introduced in Python 3.1 requires the
3338# correctly-rounded string <-> double conversion functions from
3339# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3340# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003341# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003342# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003343
3344# This inline assembler syntax may also work for suncc and icc,
3345# so we try it on all platforms.
3346
3347AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003348AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003349 unsigned short cw;
3350 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3351 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003352]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003353AC_MSG_RESULT($have_gcc_asm_for_x87)
3354if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003355then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003356 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3357 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003358fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003359
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003360# Detect whether system arithmetic is subject to x87-style double
3361# rounding issues. The result of this test has little meaning on non
3362# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3363# mode is round-to-nearest and double rounding issues are present, and
3364# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3365AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003366# $BASECFLAGS may affect the result
3367ac_save_cc="$CC"
3368CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003369AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003370#include <stdlib.h>
3371#include <math.h>
3372int main() {
3373 volatile double x, y, z;
3374 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3375 x = 0.99999999999999989; /* 1-2**-53 */
3376 y = 1./x;
3377 if (y != 1.)
3378 exit(0);
3379 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3380 x = 1e16;
3381 y = 2.99999;
3382 z = x + y;
3383 if (z != 1e16+4.)
3384 exit(0);
3385 /* both tests show evidence of double rounding */
3386 exit(1);
3387}
Matthias Kloseb159a552010-04-25 21:00:44 +00003388]])],
3389[ac_cv_x87_double_rounding=no],
3390[ac_cv_x87_double_rounding=yes],
3391[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003392CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003393AC_MSG_RESULT($ac_cv_x87_double_rounding)
3394if test "$ac_cv_x87_double_rounding" = yes
3395then
3396 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3397 [Define if arithmetic is subject to x87-style double rounding issue])
3398fi
3399
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003400# ************************************
3401# * Check for mathematical functions *
3402# ************************************
3403
3404LIBS_SAVE=$LIBS
3405LIBS="$LIBS $LIBM"
3406
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003407# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3408# -0. on some architectures.
3409AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3410AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003411AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003412#include <math.h>
3413#include <stdlib.h>
3414int main() {
3415 /* return 0 if either negative zeros don't exist
3416 on this platform or if negative zeros exist
3417 and tanh(-0.) == -0. */
3418 if (atan2(0., -1.) == atan2(-0., -1.) ||
3419 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3420 else exit(1);
3421}
Matthias Kloseb159a552010-04-25 21:00:44 +00003422]])],
3423[ac_cv_tanh_preserves_zero_sign=yes],
3424[ac_cv_tanh_preserves_zero_sign=no],
3425[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003426AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3427if test "$ac_cv_tanh_preserves_zero_sign" = yes
3428then
3429 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3430 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3431fi
3432
Mark Dickinson9c113362009-09-05 10:36:23 +00003433AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3434AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003435AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003436
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003437LIBS=$LIBS_SAVE
3438
Mark Dickinsona614f042009-11-28 12:48:43 +00003439# For multiprocessing module, check that sem_open
3440# actually works. For FreeBSD versions <= 7.2,
3441# the kernel module that provides POSIX semaphores
3442# isn't loaded by default, so an attempt to call
3443# sem_open results in a 'Signal 12' error.
3444AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3445AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003446AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003447#include <unistd.h>
3448#include <fcntl.h>
3449#include <stdio.h>
3450#include <semaphore.h>
3451#include <sys/stat.h>
3452
3453int main(void) {
3454 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3455 if (a == SEM_FAILED) {
3456 perror("sem_open");
3457 return 1;
3458 }
3459 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003460 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003461 return 0;
3462}
Matthias Kloseb159a552010-04-25 21:00:44 +00003463]])],
3464[ac_cv_posix_semaphores_enabled=yes],
3465[ac_cv_posix_semaphores_enabled=no],
3466[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003467)
3468AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3469if test $ac_cv_posix_semaphores_enabled = no
3470then
3471 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3472 [Define if POSIX semaphores aren't enabled on your system])
3473fi
3474
Mark Dickinson10683072009-04-18 21:18:19 +00003475# Multiprocessing check for broken sem_getvalue
3476AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003477AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003478AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003479#include <unistd.h>
3480#include <fcntl.h>
3481#include <stdio.h>
3482#include <semaphore.h>
3483#include <sys/stat.h>
3484
3485int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003486 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003487 int count;
3488 int res;
3489 if(a==SEM_FAILED){
3490 perror("sem_open");
3491 return 1;
3492
3493 }
3494 res = sem_getvalue(a, &count);
3495 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003496 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003497 return res==-1 ? 1 : 0;
3498}
Matthias Kloseb159a552010-04-25 21:00:44 +00003499]])],
3500[ac_cv_broken_sem_getvalue=no],
3501[ac_cv_broken_sem_getvalue=yes],
3502[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003503)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003504AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3505if test $ac_cv_broken_sem_getvalue = yes
3506then
3507 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3508 [define to 1 if your sem_getvalue is broken.])
3509fi
Mark Dickinson10683072009-04-18 21:18:19 +00003510
Mark Dickinsonbd792642009-03-18 20:06:12 +00003511# determine what size digit to use for Python's longs
3512AC_MSG_CHECKING([digit size for Python's longs])
3513AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003514AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003515[case $enable_big_digits in
3516yes)
3517 enable_big_digits=30 ;;
3518no)
3519 enable_big_digits=15 ;;
3520[15|30])
3521 ;;
3522*)
3523 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3524esac
3525AC_MSG_RESULT($enable_big_digits)
3526AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3527],
3528[AC_MSG_RESULT(no value specified)])
3529
Guido van Rossumef2255b2000-03-10 22:30:29 +00003530# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003531AC_CHECK_HEADER(wchar.h, [
3532 AC_DEFINE(HAVE_WCHAR_H, 1,
3533 [Define if the compiler provides a wchar.h header file.])
3534 wchar_h="yes"
3535],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003536wchar_h="no"
3537)
3538
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003539# determine wchar_t size
3540if test "$wchar_h" = yes
3541then
Guido van Rossum67b26592001-10-20 14:21:45 +00003542 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003543fi
3544
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003545AC_MSG_CHECKING(for UCS-4 tcl)
3546have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003547AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003548#include <tcl.h>
3549#if TCL_UTF_MAX != 6
3550# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003551#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003552 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3553 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003554],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003555AC_MSG_RESULT($have_ucs4_tcl)
3556
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003557# check whether wchar_t is signed or not
3558if test "$wchar_h" = yes
3559then
3560 # check whether wchar_t is signed or not
3561 AC_MSG_CHECKING(whether wchar_t is signed)
3562 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003563 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003564 #include <wchar.h>
3565 int main()
3566 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003567 /* Success: exit code 0 */
3568 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003569 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003570 ]])],
3571 [ac_cv_wchar_t_signed=yes],
3572 [ac_cv_wchar_t_signed=no],
3573 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003574 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3575fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003576
Georg Brandl52d168a2008-01-07 18:10:24 +00003577AC_MSG_CHECKING(what type to use for str)
3578AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003579 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003580[
3581if test "$withval" != no
3582then unicode_size="4"
3583else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003584fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003585],
3586[
3587case "$have_ucs4_tcl" in
3588 yes) unicode_size="4" ;;
3589 *) unicode_size="2" ;;
3590esac
3591])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003592
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003593AH_TEMPLATE(Py_UNICODE_SIZE,
3594 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003595case "$unicode_size" in
3596 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3597 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003598esac
3599
Martin v. Löwis11437992002-04-12 09:54:03 +00003600AH_TEMPLATE(PY_UNICODE_TYPE,
3601 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003602
Georg Brandl52d168a2008-01-07 18:10:24 +00003603# wchar_t is only usable if it maps to an unsigned type
3604if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003605 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003606then
3607 PY_UNICODE_TYPE="wchar_t"
3608 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3609 [Define if you have a useable wchar_t type defined in wchar.h; useable
3610 means wchar_t must be an unsigned type with at least 16 bits. (see
3611 Include/unicodeobject.h).])
3612 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3613elif test "$ac_cv_sizeof_short" = "$unicode_size"
3614then
3615 PY_UNICODE_TYPE="unsigned short"
3616 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3617elif test "$ac_cv_sizeof_long" = "$unicode_size"
3618then
3619 PY_UNICODE_TYPE="unsigned long"
3620 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3621else
3622 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003623fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003624AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003625
3626# check for endianness
3627AC_C_BIGENDIAN
3628
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003629# Check whether right shifting a negative integer extends the sign bit
3630# or fills with zeros (like the Cray J90, according to Tim Peters).
3631AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003632AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003633AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003634int main()
3635{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003636 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003637}
Matthias Kloseb159a552010-04-25 21:00:44 +00003638]])],
3639[ac_cv_rshift_extends_sign=yes],
3640[ac_cv_rshift_extends_sign=no],
3641[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003642AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3643if test "$ac_cv_rshift_extends_sign" = no
3644then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003645 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3646 [Define if i>>j for signed int i does not extend the sign bit
3647 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003648fi
3649
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003650# check for getc_unlocked and related locking functions
3651AC_MSG_CHECKING(for getc_unlocked() and friends)
3652AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003653AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003654 FILE *f = fopen("/dev/null", "r");
3655 flockfile(f);
3656 getc_unlocked(f);
3657 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003658]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003659AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3660if test "$ac_cv_have_getc_unlocked" = yes
3661then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003662 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3663 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003664fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003665
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003666# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003667# save the value of LIBS so we don't actually link Python with readline
3668LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003669
3670# On some systems we need to link readline to a termcap compatible
3671# library. NOTE: Keep the precedence of listed libraries synchronised
3672# with setup.py.
3673py_cv_lib_readline=no
3674AC_MSG_CHECKING([how to link readline libs])
3675for py_libtermcap in "" ncursesw ncurses curses termcap; do
3676 if test -z "$py_libtermcap"; then
3677 READLINE_LIBS="-lreadline"
3678 else
3679 READLINE_LIBS="-lreadline -l$py_libtermcap"
3680 fi
3681 LIBS="$READLINE_LIBS $LIBS_no_readline"
3682 AC_LINK_IFELSE(
3683 [AC_LANG_CALL([],[readline])],
3684 [py_cv_lib_readline=yes])
3685 if test $py_cv_lib_readline = yes; then
3686 break
3687 fi
3688done
3689# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3690#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003691if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003692 AC_MSG_RESULT([none])
3693else
3694 AC_MSG_RESULT([$READLINE_LIBS])
3695 AC_DEFINE(HAVE_LIBREADLINE, 1,
3696 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003697fi
3698
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003699# check for readline 2.1
3700AC_CHECK_LIB(readline, rl_callback_handler_install,
3701 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003702 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003703
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003704# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003705AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3706 [have_readline=yes],
3707 [have_readline=no]
3708)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003709if test $have_readline = yes
3710then
3711 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3712 [readline/readline.h],
3713 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3714 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003715 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3716 [readline/readline.h],
3717 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3718 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003719fi
3720
Martin v. Löwis0daad592001-09-30 21:09:59 +00003721# check for readline 4.0
3722AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003723 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003724 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003725
Thomas Wouters89d996e2007-09-08 17:39:28 +00003726# also in 4.0
3727AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3728 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003729 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003730
Guido van Rossum353ae582001-07-10 16:45:32 +00003731# check for readline 4.2
3732AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003733 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003734 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003735
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003736# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003737AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3738 [have_readline=yes],
3739 [have_readline=no]
3740)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003741if test $have_readline = yes
3742then
3743 AC_EGREP_HEADER([extern int rl_catch_signals;],
3744 [readline/readline.h],
3745 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3746 [Define if you can turn off readline's signal handling.]), )
3747fi
3748
Martin v. Löwis82bca632006-02-10 20:49:30 +00003749# End of readline checks: restore LIBS
3750LIBS=$LIBS_no_readline
3751
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003752AC_MSG_CHECKING(for broken nice())
3753AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003754AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003755int main()
3756{
3757 int val1 = nice(1);
3758 if (val1 != -1 && val1 == nice(2))
3759 exit(0);
3760 exit(1);
3761}
Matthias Kloseb159a552010-04-25 21:00:44 +00003762]])],
3763[ac_cv_broken_nice=yes],
3764[ac_cv_broken_nice=no],
3765[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003766AC_MSG_RESULT($ac_cv_broken_nice)
3767if test "$ac_cv_broken_nice" = yes
3768then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003769 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3770 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003771fi
3772
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003773AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003774AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003775AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003776#include <poll.h>
3777
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003778int main()
3779{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003780 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003781 int poll_test;
3782
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003783 close (42);
3784
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003785 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003786 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003787 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003788 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003789 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003790 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003791 return 1;
3792}
Matthias Kloseb159a552010-04-25 21:00:44 +00003793]])],
3794[ac_cv_broken_poll=yes],
3795[ac_cv_broken_poll=no],
3796[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003797AC_MSG_RESULT($ac_cv_broken_poll)
3798if test "$ac_cv_broken_poll" = yes
3799then
3800 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3801 [Define if poll() sets errno on invalid file descriptors.])
3802fi
3803
Brett Cannon43802422005-02-10 20:48:03 +00003804# Before we can test tzset, we need to check if struct tm has a tm_zone
3805# (which is not required by ISO C or UNIX spec) and/or if we support
3806# tzname[]
3807AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003808
Brett Cannon43802422005-02-10 20:48:03 +00003809# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003810AC_MSG_CHECKING(for working tzset())
3811AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003812AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003813#include <stdlib.h>
3814#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003815#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003816
3817#if HAVE_TZNAME
3818extern char *tzname[];
3819#endif
3820
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003821int main()
3822{
Brett Cannon18367812003-09-19 00:59:16 +00003823 /* Note that we need to ensure that not only does tzset(3)
3824 do 'something' with localtime, but it works as documented
3825 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003826 This includes making sure that tzname is set properly if
3827 tm->tm_zone does not exist since it is the alternative way
3828 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003829
3830 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003831 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003832 */
3833
Brett Cannon43802422005-02-10 20:48:03 +00003834 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003835 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3836
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003837 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003838 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003839 if (localtime(&groundhogday)->tm_hour != 0)
3840 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003841#if HAVE_TZNAME
3842 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3843 if (strcmp(tzname[0], "UTC") ||
3844 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3845 exit(1);
3846#endif
Brett Cannon18367812003-09-19 00:59:16 +00003847
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003848 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003849 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003850 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003851 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003852#if HAVE_TZNAME
3853 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3854 exit(1);
3855#endif
Brett Cannon18367812003-09-19 00:59:16 +00003856
3857 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3858 tzset();
3859 if (localtime(&groundhogday)->tm_hour != 11)
3860 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003861#if HAVE_TZNAME
3862 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3863 exit(1);
3864#endif
3865
3866#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003867 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3868 exit(1);
3869 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3870 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003871#endif
Brett Cannon18367812003-09-19 00:59:16 +00003872
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003873 exit(0);
3874}
Matthias Kloseb159a552010-04-25 21:00:44 +00003875]])],
3876[ac_cv_working_tzset=yes],
3877[ac_cv_working_tzset=no],
3878[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003879AC_MSG_RESULT($ac_cv_working_tzset)
3880if test "$ac_cv_working_tzset" = yes
3881then
3882 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3883 [Define if tzset() actually switches the local timezone in a meaningful way.])
3884fi
3885
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003886# Look for subsecond timestamps in struct stat
3887AC_MSG_CHECKING(for tv_nsec in struct stat)
3888AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00003889AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003890struct stat st;
3891st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003892]])],
3893[ac_cv_stat_tv_nsec=yes],
3894[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003895AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3896if test "$ac_cv_stat_tv_nsec" = yes
3897then
3898 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3899 [Define if you have struct stat.st_mtim.tv_nsec])
3900fi
3901
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003902# Look for BSD style subsecond timestamps in struct stat
3903AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3904AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00003905AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003906struct stat st;
3907st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003908]])],
3909[ac_cv_stat_tv_nsec2=yes],
3910[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003911AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3912if test "$ac_cv_stat_tv_nsec2" = yes
3913then
3914 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3915 [Define if you have struct stat.st_mtimensec])
3916fi
3917
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003918# On HP/UX 11.0, mvwdelch is a block with a return statement
3919AC_MSG_CHECKING(whether mvwdelch is an expression)
3920AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00003921AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003922 int rtn;
3923 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003924]])],
3925[ac_cv_mvwdelch_is_expression=yes],
3926[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003927AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3928
3929if test "$ac_cv_mvwdelch_is_expression" = yes
3930then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003931 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3932 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003933fi
3934
3935AC_MSG_CHECKING(whether WINDOW has _flags)
3936AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00003937AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003938 WINDOW *w;
3939 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00003940]])],
3941[ac_cv_window_has_flags=yes],
3942[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003943AC_MSG_RESULT($ac_cv_window_has_flags)
3944
3945
3946if test "$ac_cv_window_has_flags" = yes
3947then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003948 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3949 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003950fi
3951
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003952AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00003953AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
3954 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3955 AC_MSG_RESULT(yes)],
3956 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003957)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003958
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003959AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00003960AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
3961 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3962 AC_MSG_RESULT(yes)],
3963 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003964)
3965
3966AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00003967AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
3968 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3969 AC_MSG_RESULT(yes)],
3970 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003971)
3972
Thomas Wouters89f507f2006-12-13 04:49:30 +00003973AC_MSG_CHECKING(for /dev/ptmx)
3974
3975if test -r /dev/ptmx
3976then
3977 AC_MSG_RESULT(yes)
3978 AC_DEFINE(HAVE_DEV_PTMX, 1,
3979 [Define if we have /dev/ptmx.])
3980else
3981 AC_MSG_RESULT(no)
3982fi
3983
3984AC_MSG_CHECKING(for /dev/ptc)
3985
3986if test -r /dev/ptc
3987then
3988 AC_MSG_RESULT(yes)
3989 AC_DEFINE(HAVE_DEV_PTC, 1,
3990 [Define if we have /dev/ptc.])
3991else
3992 AC_MSG_RESULT(no)
3993fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003994
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003995if test "$have_long_long" = yes
3996then
3997 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3998 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00003999 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004000 #include <stdio.h>
4001 #include <stddef.h>
4002 #include <string.h>
4003
4004 #ifdef HAVE_SYS_TYPES_H
4005 #include <sys/types.h>
4006 #endif
4007
4008 int main()
4009 {
4010 char buffer[256];
4011
4012 if (sprintf(buffer, "%lld", (long long)123) < 0)
4013 return 1;
4014 if (strcmp(buffer, "123"))
4015 return 1;
4016
4017 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4018 return 1;
4019 if (strcmp(buffer, "-123"))
4020 return 1;
4021
4022 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4023 return 1;
4024 if (strcmp(buffer, "123"))
4025 return 1;
4026
4027 return 0;
4028 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004029 ]]])],
4030 [ac_cv_have_long_long_format=yes],
4031 [ac_cv_have_long_long_format=no],
4032 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004033 )
4034 AC_MSG_RESULT($ac_cv_have_long_long_format)
4035fi
4036
Mark Dickinson89d7d412009-12-31 20:50:59 +00004037if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004038then
4039 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4040 [Define to printf format modifier for long long type])
4041fi
4042
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004043if test $ac_sys_system = Darwin
4044then
4045 LIBS="$LIBS -framework CoreFoundation"
4046fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004047
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004048AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004049AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004050#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004051#include <stddef.h>
4052#include <string.h>
4053
Christian Heimes2c181612007-12-17 20:04:13 +00004054#ifdef HAVE_SYS_TYPES_H
4055#include <sys/types.h>
4056#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004057
4058#ifdef HAVE_SSIZE_T
4059typedef ssize_t Py_ssize_t;
4060#elif SIZEOF_VOID_P == SIZEOF_LONG
4061typedef long Py_ssize_t;
4062#else
4063typedef int Py_ssize_t;
4064#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004065
Christian Heimes2c181612007-12-17 20:04:13 +00004066int main()
4067{
4068 char buffer[256];
4069
Thomas Wouters477c8d52006-05-27 19:21:47 +00004070 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4071 return 1;
4072
Thomas Wouters89f507f2006-12-13 04:49:30 +00004073 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004074 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004075
4076 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4077 return 1;
4078
4079 if (strcmp(buffer, "-123"))
4080 return 1;
4081
Thomas Wouters477c8d52006-05-27 19:21:47 +00004082 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004083}
Matthias Kloseb159a552010-04-25 21:00:44 +00004084]])],
4085 [ac_cv_have_size_t_format=yes],
4086 [ac_cv_have_size_t_format=no],
4087 [ac_cv_have_size_t_format="cross -- assuming yes"
4088])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004089if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004090 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4091 [Define to printf format modifier for Py_ssize_t])
4092fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004093
Martin v. Löwis01c04012002-11-11 14:58:44 +00004094AC_CHECK_TYPE(socklen_t,,
4095 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004096 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004097#ifdef HAVE_SYS_TYPES_H
4098#include <sys/types.h>
4099#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004100#ifdef HAVE_SYS_SOCKET_H
4101#include <sys/socket.h>
4102#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004103])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004104
Antoine Pitroufff95302008-09-03 18:58:51 +00004105AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004106AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004107AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004108#include<stdlib.h>
4109int main() {
4110 size_t len = -1;
4111 const char *str = "text";
4112 len = mbstowcs(NULL, str, 0);
4113 return (len != 4);
4114}
Matthias Kloseb159a552010-04-25 21:00:44 +00004115]])],
4116[ac_cv_broken_mbstowcs=no],
4117[ac_cv_broken_mbstowcs=yes],
4118[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004119AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4120if test "$ac_cv_broken_mbstowcs" = yes
4121then
4122 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4123 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4124 wide chars that would be converted.])
4125fi
4126
Antoine Pitrou042b1282010-08-13 21:15:58 +00004127AC_MSG_CHECKING(whether $CC supports computed gotos)
4128AC_CACHE_VAL(ac_cv_computed_gotos,
4129AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4130int main(int argc, char **argv)
4131{
4132 static void *targets[1] = { &&LABEL1 };
4133 goto LABEL2;
4134LABEL1:
4135 return 0;
4136LABEL2:
4137 goto *targets[0];
4138 return 1;
4139}
4140]]])],
4141[ac_cv_computed_gotos=yes],
4142[ac_cv_computed_gotos=no],
4143[ac_cv_computed_gotos=no]))
4144AC_MSG_RESULT($ac_cv_computed_gotos)
4145if test "$ac_cv_computed_gotos" = yes
4146then
4147 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4148 [Define if the C compiler supports computed gotos.])
4149fi
4150
Antoine Pitroub52ec782009-01-25 16:34:23 +00004151# Check for --with-computed-gotos
4152AC_MSG_CHECKING(for --with-computed-gotos)
4153AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004154 AS_HELP_STRING([--with(out)-computed-gotos],
4155 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004156[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004157if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004158then
4159 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4160 [Define if you want to use computed gotos in ceval.c.])
4161 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004162fi
4163if test "$withval" = no
4164then
4165 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4166 [Define if you want to use computed gotos in ceval.c.])
4167 AC_MSG_RESULT(no)
4168fi
4169],
4170[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004171
4172
Jesus Cea6a792292010-05-03 21:18:48 +00004173
4174case $ac_sys_system in
4175 OSF*) AC_MSG_ERROR(OSF* systems are deprecated unless somebody volunteers. Check http://bugs.python.org/issue8606) ;;
4176esac
4177
4178
4179
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004180AC_SUBST(THREADHEADERS)
4181
4182for h in `(cd $srcdir;echo Python/thread_*.h)`
4183do
4184 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4185done
4186
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004187AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004188SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004189AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004190for dir in $SRCDIRS; do
4191 if test ! -d $dir; then
4192 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004193 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004194done
4195AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004196
Guido van Rossum627b2d71993-12-24 10:39:16 +00004197# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004198AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004199AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004200
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004201echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004202if test ! -f Modules/Setup
4203then
4204 cp $srcdir/Modules/Setup.dist Modules/Setup
4205fi
4206
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004207echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004208if test ! -f Modules/Setup.local
4209then
4210 echo "# Edit this file for local setup changes" >Modules/Setup.local
4211fi
4212
4213echo "creating Makefile"
4214$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4215 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004216 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004217mv config.c Modules