blob: f36b28c453e8ebd68d2c95e37b5119b0fe3b2b38 [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 ;;
Antoine Pitrou33a29942010-08-30 14:52:00 +00002229 AIX/6) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2230 Define if the Posix semaphores do not work on your system)
2231 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002232 esac
2233
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002234 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2235 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002236 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002237 void *foo(void *parm) {
2238 return NULL;
2239 }
2240 main() {
2241 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002242 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002243 if (pthread_attr_init(&attr)) exit(-1);
2244 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002245 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002246 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002247 }]])],
2248 [ac_cv_pthread_system_supported=yes],
2249 [ac_cv_pthread_system_supported=no],
2250 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002251 ])
2252 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2253 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002254 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002255 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002256 AC_CHECK_FUNCS(pthread_sigmask,
2257 [case $ac_sys_system in
2258 CYGWIN*)
2259 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2260 [Define if pthread_sigmask() does not work on your system.])
2261 ;;
2262 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002263fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002264
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002265
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002266# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002267AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002268AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002269AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002270[ --enable-ipv6 Enable ipv6 (with ipv4) support
2271 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002272[ case "$enableval" in
2273 no)
2274 AC_MSG_RESULT(no)
2275 ipv6=no
2276 ;;
2277 *) AC_MSG_RESULT(yes)
2278 AC_DEFINE(ENABLE_IPV6)
2279 ipv6=yes
2280 ;;
2281 esac ],
2282
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002283[
2284dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002285 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002286#include <sys/types.h>
2287#include <sys/socket.h>
2288main()
2289{
2290 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2291 exit(1);
2292 else
2293 exit(0);
2294}
Matthias Kloseb159a552010-04-25 21:00:44 +00002295]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002296 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002297 ipv6=yes
2298],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002299 AC_MSG_RESULT(no)
2300 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002301],[
2302 AC_MSG_RESULT(no)
2303 ipv6=no
2304])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002305
2306if test "$ipv6" = "yes"; then
2307 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002308 AC_COMPILE_IFELSE([
2309 AC_LANG_PROGRAM([[#include <sys/types.h>
2310#include <netinet/in.h>]],
2311 [[struct sockaddr_in6 x;
2312 x.sin6_scope_id;]])
2313 ],[
2314 AC_MSG_RESULT(yes)
2315 ipv6=yes
2316 ],[
2317 AC_MSG_RESULT(no, IPv6 disabled)
2318 ipv6=no
2319 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002320fi
2321
2322if test "$ipv6" = "yes"; then
2323 AC_DEFINE(ENABLE_IPV6)
2324fi
2325])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326
2327ipv6type=unknown
2328ipv6lib=none
2329ipv6trylibc=no
2330
2331if test "$ipv6" = "yes"; then
2332 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002333 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2334 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002335 case $i in
2336 inria)
2337 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002338 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002339#include <netinet/in.h>
2340#ifdef IPV6_INRIA_VERSION
2341yes
2342#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002343 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344 ;;
2345 kame)
2346 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002347 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002348#include <netinet/in.h>
2349#ifdef __KAME__
2350yes
2351#endif],
2352 [ipv6type=$i;
2353 ipv6lib=inet6
2354 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002355 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002356 ;;
2357 linux-glibc)
2358 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002359 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002360#include <features.h>
2361#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2362yes
2363#endif],
2364 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002365 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002366 ;;
2367 linux-inet6)
2368 dnl http://www.v6.linux.or.jp/
2369 if test -d /usr/inet6; then
2370 ipv6type=$i
2371 ipv6lib=inet6
2372 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002373 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002374 fi
2375 ;;
2376 solaris)
2377 if test -f /etc/netconfig; then
2378 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2379 ipv6type=$i
2380 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002381 fi
2382 fi
2383 ;;
2384 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002385 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002386#include <sys/param.h>
2387#ifdef _TOSHIBA_INET6
2388yes
2389#endif],
2390 [ipv6type=$i;
2391 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002392 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002393 ;;
2394 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002395 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002396#include </usr/local/v6/include/sys/v6config.h>
2397#ifdef __V6D__
2398yes
2399#endif],
2400 [ipv6type=$i;
2401 ipv6lib=v6;
2402 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002403 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002404 ;;
2405 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002406 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002407#include <sys/param.h>
2408#ifdef _ZETA_MINAMI_INET6
2409yes
2410#endif],
2411 [ipv6type=$i;
2412 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002413 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002414 ;;
2415 esac
2416 if test "$ipv6type" != "unknown"; then
2417 break
2418 fi
2419 done
2420 AC_MSG_RESULT($ipv6type)
2421fi
2422
2423if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2424 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2425 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2426 echo "using lib$ipv6lib"
2427 else
2428 if test $ipv6trylibc = "yes"; then
2429 echo "using libc"
2430 else
2431 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2432 echo "You need to fetch lib$ipv6lib.a from appropriate"
2433 echo 'ipv6 kit and compile beforehand.'
2434 exit 1
2435 fi
2436 fi
2437fi
2438
Georg Brandl93de2162008-07-16 02:21:06 +00002439AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002440AC_COMPILE_IFELSE([
2441 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2442],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002443 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002444 AC_MSG_RESULT(yes)
2445],[
Georg Brandl93de2162008-07-16 02:21:06 +00002446 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002447])
Georg Brandl93de2162008-07-16 02:21:06 +00002448
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002449# Check for --with-doc-strings
2450AC_MSG_CHECKING(for --with-doc-strings)
2451AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002452 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002453
2454if test -z "$with_doc_strings"
2455then with_doc_strings="yes"
2456fi
2457if test "$with_doc_strings" != "no"
2458then
2459 AC_DEFINE(WITH_DOC_STRINGS, 1,
2460 [Define if you want documentation strings in extension modules])
2461fi
2462AC_MSG_RESULT($with_doc_strings)
2463
Georg Brandl9976a512010-08-02 21:02:36 +00002464# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002465AC_MSG_CHECKING(for --with-tsc)
2466AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002467 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002468if test "$withval" != no
2469then
2470 AC_DEFINE(WITH_TSC, 1,
2471 [Define to profile with the Pentium timestamp counter])
2472 AC_MSG_RESULT(yes)
2473else AC_MSG_RESULT(no)
2474fi],
2475[AC_MSG_RESULT(no)])
2476
2477# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002478AC_MSG_CHECKING(for --with-pymalloc)
2479AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002480 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002481
2482if test -z "$with_pymalloc"
2483then with_pymalloc="yes"
2484fi
2485if test "$with_pymalloc" != "no"
2486then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002487 AC_DEFINE(WITH_PYMALLOC, 1,
2488 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002489fi
2490AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002491
Benjamin Peterson05159c42009-12-03 03:01:27 +00002492# Check for Valgrind support
2493AC_MSG_CHECKING([for --with-valgrind])
2494AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002495 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002496 with_valgrind=no)
2497AC_MSG_RESULT([$with_valgrind])
2498if test "$with_valgrind" != no; then
2499 AC_CHECK_HEADER([valgrind/valgrind.h],
2500 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2501 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2502 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002503 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002504fi
2505
Barry Warsawef82cd72000-06-30 16:21:01 +00002506# Check for --with-wctype-functions
2507AC_MSG_CHECKING(for --with-wctype-functions)
2508AC_ARG_WITH(wctype-functions,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002509 AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002510[
Barry Warsawef82cd72000-06-30 16:21:01 +00002511if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002512then
2513 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2514 [Define if you want wctype.h functions to be used instead of the
2515 one supplied by Python itself. (see Include/unicodectype.h).])
2516 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002517else AC_MSG_RESULT(no)
2518fi],
2519[AC_MSG_RESULT(no)])
2520
Guido van Rossum68242b51996-05-28 22:53:03 +00002521# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002522AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002523DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002524
Guido van Rossume97ee181999-12-20 21:27:22 +00002525# the dlopen() function means we might want to use dynload_shlib.o. some
2526# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002527AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002528
2529# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2530# loading of modules.
2531AC_SUBST(DYNLOADFILE)
2532AC_MSG_CHECKING(DYNLOADFILE)
2533if test -z "$DYNLOADFILE"
2534then
2535 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002536 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2537 if test "$ac_cv_func_dlopen" = yes
2538 then DYNLOADFILE="dynload_shlib.o"
2539 else DYNLOADFILE="dynload_aix.o"
2540 fi
2541 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002542 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002543 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2544 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002545 *)
2546 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2547 # out any dynamic loading
2548 if test "$ac_cv_func_dlopen" = yes
2549 then DYNLOADFILE="dynload_shlib.o"
2550 else DYNLOADFILE="dynload_stub.o"
2551 fi
2552 ;;
2553 esac
2554fi
2555AC_MSG_RESULT($DYNLOADFILE)
2556if test "$DYNLOADFILE" != "dynload_stub.o"
2557then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002558 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2559 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002560fi
2561
Jack Jansenc49e5b72001-06-19 15:00:23 +00002562# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2563
2564AC_SUBST(MACHDEP_OBJS)
2565AC_MSG_CHECKING(MACHDEP_OBJS)
2566if test -z "$MACHDEP_OBJS"
2567then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002568 MACHDEP_OBJS=$extra_machdep_objs
2569else
2570 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002571fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002572AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002573
Guido van Rossum627b2d71993-12-24 10:39:16 +00002574# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002575AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2576 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002577 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002578 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002579 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002580 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002581 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002582 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2583 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002584 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
Jean-Paul Calderone6ed7ac42010-06-19 19:58:37 +00002585 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002586 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002587 truncate uname unsetenv utimes waitpid wait3 wait4 \
2588 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002589
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002590# For some functions, having a definition is not sufficient, since
2591# we want to take their address.
2592AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002593AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2594 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2595 AC_MSG_RESULT(yes)],
2596 [AC_MSG_RESULT(no)
2597])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002598AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002599AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2600 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2601 AC_MSG_RESULT(yes)],
2602 [AC_MSG_RESULT(no)
2603])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002604AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002605AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2606 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2607 AC_MSG_RESULT(yes)],
2608 [AC_MSG_RESULT(no)
2609])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002610AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002611AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2612 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2613 AC_MSG_RESULT(yes)],
2614 [AC_MSG_RESULT(no)
2615])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002616AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002617AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2618 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2619 AC_MSG_RESULT(yes)],
2620 [AC_MSG_RESULT(no)
2621])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002622AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002623AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2624 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2625 AC_MSG_RESULT(yes)],
2626 [AC_MSG_RESULT(no)
2627])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002628AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002629AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2630 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2631 AC_MSG_RESULT(yes)],
2632 [AC_MSG_RESULT(no)
2633])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002634AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002635AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002636#include <sys/types.h>
2637#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002638 ]], [[int x=kqueue()]])],
2639 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2640 AC_MSG_RESULT(yes)],
2641 [AC_MSG_RESULT(no)
2642])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002643# On some systems (eg. FreeBSD 5), we would find a definition of the
2644# functions ctermid_r, setgroups in the library, but no prototype
2645# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2646# address to avoid compiler warnings and potential miscompilations
2647# because of the missing prototypes.
2648
2649AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002650AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002651#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002652]], [[void* p = ctermid_r]])],
2653 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2654 AC_MSG_RESULT(yes)],
2655 [AC_MSG_RESULT(no)
2656])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002657
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002658AC_MSG_CHECKING(for flock)
Matthias Kloseb159a552010-04-25 21:00:44 +00002659AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002660#include <sys/file.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002661]], [[void* p = flock]])],
2662 [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2663 AC_MSG_RESULT(yes)],
2664 [AC_MSG_RESULT(no)
2665])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002666
2667AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002668AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002669#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002670]], [[void* p = getpagesize]])],
2671 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2672 AC_MSG_RESULT(yes)],
2673 [AC_MSG_RESULT(no)
2674])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002675
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002676dnl check for true
2677AC_CHECK_PROGS(TRUE, true, /bin/true)
2678
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002679dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2680dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002681AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002682 AC_CHECK_LIB(resolv, inet_aton)
2683)
2684
Christian Heimesd0764e22007-12-04 15:00:33 +00002685# On Tru64, chflags seems to be present, but calling it will
2686# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002687AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002688AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002689#include <sys/stat.h>
2690#include <unistd.h>
2691int main(int argc, char*argv[])
2692{
2693 if(chflags(argv[0], 0) != 0)
2694 return 1;
2695 return 0;
2696}
Matthias Kloseb159a552010-04-25 21:00:44 +00002697]]])],
2698[ac_cv_have_chflags=yes],
2699[ac_cv_have_chflags=no],
2700[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002701])
2702if test "$ac_cv_have_chflags" = cross ; then
2703 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2704fi
2705if test "$ac_cv_have_chflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002706 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002707fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002708
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002709AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002710AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002711#include <sys/stat.h>
2712#include <unistd.h>
2713int main(int argc, char*argv[])
2714{
2715 if(lchflags(argv[0], 0) != 0)
2716 return 1;
2717 return 0;
2718}
Matthias Kloseb159a552010-04-25 21:00:44 +00002719]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002720])
2721if test "$ac_cv_have_lchflags" = cross ; then
2722 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2723fi
2724if test "$ac_cv_have_lchflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002725 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002726fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002727
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002728dnl Check if system zlib has *Copy() functions
2729dnl
2730dnl On MacOSX the linker will search for dylibs on the entire linker path
2731dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2732dnl to revert to a more traditional unix behaviour and make it possible to
2733dnl override the system libz with a local static library of libz. Temporarily
2734dnl add that flag to our CFLAGS as well to ensure that we check the version
2735dnl of libz that will be used by setup.py.
2736dnl The -L/usr/local/lib is needed as wel to get the same compilation
2737dnl environment as setup.py (and leaving it out can cause configure to use the
2738dnl wrong version of the library)
2739case $ac_sys_system/$ac_sys_release in
2740Darwin/*)
2741 _CUR_CFLAGS="${CFLAGS}"
2742 _CUR_LDFLAGS="${LDFLAGS}"
2743 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2744 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2745 ;;
2746esac
2747
Matthias Klosec80c93f2010-04-24 17:04:35 +00002748AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002749
2750case $ac_sys_system/$ac_sys_release in
2751Darwin/*)
2752 CFLAGS="${_CUR_CFLAGS}"
2753 LDFLAGS="${_CUR_LDFLAGS}"
2754 ;;
2755esac
2756
Martin v. Löwise9416172003-05-03 10:12:45 +00002757AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002758AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002759#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002760]], [[void* p = hstrerror; hstrerror(0)]])],
2761 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2762 AC_MSG_RESULT(yes)],
2763 [AC_MSG_RESULT(no)
2764])
Martin v. Löwise9416172003-05-03 10:12:45 +00002765
2766AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002767AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002768#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002769#include <sys/socket.h>
2770#include <netinet/in.h>
2771#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002772]], [[void* p = inet_aton;inet_aton(0,0)]])],
2773 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2774 AC_MSG_RESULT(yes)],
2775 [AC_MSG_RESULT(no)
2776])
Martin v. Löwise9416172003-05-03 10:12:45 +00002777
2778AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002779AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002780#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002781#include <sys/socket.h>
2782#include <netinet/in.h>
2783#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002784]], [[void* p = inet_pton]])],
2785 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2786 AC_MSG_RESULT(yes)],
2787 [AC_MSG_RESULT(no)
2788])
Martin v. Löwise9416172003-05-03 10:12:45 +00002789
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002790# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002791AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002792AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002793#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002794#ifdef HAVE_GRP_H
2795#include <grp.h>
2796#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002797]], [[void* p = setgroups]])],
2798 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2799 AC_MSG_RESULT(yes)],
2800 [AC_MSG_RESULT(no)
2801])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002802
Fred Drake8cef4cf2000-06-28 16:40:38 +00002803# check for openpty and forkpty
2804
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002805AC_CHECK_FUNCS(openpty,,
2806 AC_CHECK_LIB(util,openpty,
2807 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2808 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2809 )
2810)
2811AC_CHECK_FUNCS(forkpty,,
2812 AC_CHECK_LIB(util,forkpty,
2813 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2814 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2815 )
2816)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002817
Christian Heimesb186d002008-03-18 15:15:01 +00002818# Stuff for expat.
2819AC_CHECK_FUNCS(memmove)
2820
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002821# check for long file support functions
2822AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2823
Christian Heimesb186d002008-03-18 15:15:01 +00002824AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002825AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002826 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2827 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2828 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002829)
Jack Jansen150753c2003-03-29 22:07:47 +00002830AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002831 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2832 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2833 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002834)
2835AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002836 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2837 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2838 [],
2839 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2840 [Define if gettimeofday() does not have second (timezone) argument
2841 This is the case on Motorola V4 (R40V4.2)])
2842 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002843)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002844
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002845AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002846AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002847#if defined(MAJOR_IN_MKDEV)
2848#include <sys/mkdev.h>
2849#elif defined(MAJOR_IN_SYSMACROS)
2850#include <sys/sysmacros.h>
2851#else
2852#include <sys/types.h>
2853#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002854]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002855 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002856]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002857 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2858 [Define to 1 if you have the device macros.])
2859 AC_MSG_RESULT(yes)
2860],[
2861 AC_MSG_RESULT(no)
2862])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002863
2864# On OSF/1 V5.1, getaddrinfo is available, but a define
2865# for [no]getaddrinfo in netdb.h.
2866AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002867AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002868#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002869#include <sys/socket.h>
2870#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002871#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002872]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2873[have_getaddrinfo=yes],
2874[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002875AC_MSG_RESULT($have_getaddrinfo)
2876if test $have_getaddrinfo = yes
2877then
2878 AC_MSG_CHECKING(getaddrinfo bug)
2879 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002880 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002881#include <sys/types.h>
2882#include <netdb.h>
2883#include <string.h>
2884#include <sys/socket.h>
2885#include <netinet/in.h>
2886
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002887int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002888{
2889 int passive, gaierr, inet4 = 0, inet6 = 0;
2890 struct addrinfo hints, *ai, *aitop;
2891 char straddr[INET6_ADDRSTRLEN], strport[16];
2892
2893 for (passive = 0; passive <= 1; passive++) {
2894 memset(&hints, 0, sizeof(hints));
2895 hints.ai_family = AF_UNSPEC;
2896 hints.ai_flags = passive ? AI_PASSIVE : 0;
2897 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002898 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002899 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2900 (void)gai_strerror(gaierr);
2901 goto bad;
2902 }
2903 for (ai = aitop; ai; ai = ai->ai_next) {
2904 if (ai->ai_addr == NULL ||
2905 ai->ai_addrlen == 0 ||
2906 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2907 straddr, sizeof(straddr), strport, sizeof(strport),
2908 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2909 goto bad;
2910 }
2911 switch (ai->ai_family) {
2912 case AF_INET:
2913 if (strcmp(strport, "54321") != 0) {
2914 goto bad;
2915 }
2916 if (passive) {
2917 if (strcmp(straddr, "0.0.0.0") != 0) {
2918 goto bad;
2919 }
2920 } else {
2921 if (strcmp(straddr, "127.0.0.1") != 0) {
2922 goto bad;
2923 }
2924 }
2925 inet4++;
2926 break;
2927 case AF_INET6:
2928 if (strcmp(strport, "54321") != 0) {
2929 goto bad;
2930 }
2931 if (passive) {
2932 if (strcmp(straddr, "::") != 0) {
2933 goto bad;
2934 }
2935 } else {
2936 if (strcmp(straddr, "::1") != 0) {
2937 goto bad;
2938 }
2939 }
2940 inet6++;
2941 break;
2942 case AF_UNSPEC:
2943 goto bad;
2944 break;
2945 default:
2946 /* another family support? */
2947 break;
2948 }
2949 }
2950 }
2951
2952 if (!(inet4 == 0 || inet4 == 2))
2953 goto bad;
2954 if (!(inet6 == 0 || inet6 == 2))
2955 goto bad;
2956
2957 if (aitop)
2958 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002959 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002960
2961 bad:
2962 if (aitop)
2963 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002964 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002965}
Matthias Kloseb159a552010-04-25 21:00:44 +00002966]]])],
2967[ac_cv_buggy_getaddrinfo=no],
2968[ac_cv_buggy_getaddrinfo=yes],
2969[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002970fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002971
Mark Dickinson2df5d282009-12-31 21:22:50 +00002972if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002973then
2974 if test $ipv6 = yes
2975 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002976 echo 'Fatal: You must get working getaddrinfo() function.'
2977 echo ' or you can specify "--disable-ipv6"'.
2978 exit 1
2979 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002980else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002981 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002982fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002983AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002984
Guido van Rossum627b2d71993-12-24 10:39:16 +00002985# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002986AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002987AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002988AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002989AC_CHECK_MEMBERS([struct stat.st_rdev])
2990AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002991AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002992AC_CHECK_MEMBERS([struct stat.st_gen])
2993AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002994AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002995
2996AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00002997AC_CACHE_VAL(ac_cv_header_time_altzone,[
2998 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
2999 [ac_cv_header_time_altzone=yes],
3000 [ac_cv_header_time_altzone=no])
3001 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002AC_MSG_RESULT($ac_cv_header_time_altzone)
3003if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003004 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003005fi
3006
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003007was_it_defined=no
3008AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003009AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003010#include <sys/types.h>
3011#include <sys/select.h>
3012#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003013]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3015 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3016 (which you can't on SCO ODT 3.0).])
3017 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003018],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003019AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003020
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003021AC_MSG_CHECKING(for addrinfo)
3022AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003023AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3024 [ac_cv_struct_addrinfo=yes],
3025 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003026AC_MSG_RESULT($ac_cv_struct_addrinfo)
3027if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003028 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003029fi
3030
3031AC_MSG_CHECKING(for sockaddr_storage)
3032AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003033AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003034# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003035# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3036 [ac_cv_struct_sockaddr_storage=yes],
3037 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003038AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3039if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003040 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003041fi
3042
Guido van Rossum627b2d71993-12-24 10:39:16 +00003043# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003044
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003045AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003046AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003047
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003048works=no
3049AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003050AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3051 [works=yes],
3052 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003053)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003054AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003055
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003056works=no
3057AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003058AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3059 [works=yes],
3060 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003061)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003062AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003063
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003064have_prototypes=no
3065AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003066AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3067 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3068 [Define if your compiler supports function prototype])
3069 have_prototypes=yes],
3070 []
3071)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003072AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003073
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003074works=no
3075AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003076AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003077#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003078int foo(int x, ...) {
3079 va_list va;
3080 va_start(va, x);
3081 va_arg(va, int);
3082 va_arg(va, char *);
3083 va_arg(va, double);
3084 return 0;
3085}
Matthias Kloseb159a552010-04-25 21:00:44 +00003086]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003087 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3088 [Define if your compiler supports variable length function prototypes
3089 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3090 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003091],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003092AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003093
Dave Cole331708b2004-08-09 04:51:41 +00003094# check for socketpair
3095AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003096AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003097#include <sys/types.h>
3098#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003099]], [[void *x=socketpair]])],
3100 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3101 AC_MSG_RESULT(yes)],
3102 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003103)
3104
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003105# check if sockaddr has sa_len member
3106AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003107AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3108#include <sys/socket.h>]], [[struct sockaddr x;
3109x.sa_len = 0;]])],
3110 [AC_MSG_RESULT(yes)
3111 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3112 [AC_MSG_RESULT(no)]
3113)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003114
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003115va_list_is_array=no
3116AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003117AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003118#ifdef HAVE_STDARG_PROTOTYPES
3119#include <stdarg.h>
3120#else
3121#include <varargs.h>
3122#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003123]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003124 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3125 va_list_is_array=yes
3126])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003127AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003128
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003129# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003130AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3131 [Define this if you have some version of gethostbyname_r()])
3132
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003133AC_CHECK_FUNC(gethostbyname_r, [
3134 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3135 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3136 OLD_CFLAGS=$CFLAGS
3137 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003138 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003139# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003140 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003141 char *name;
3142 struct hostent *he, *res;
3143 char buffer[2048];
3144 int buflen = 2048;
3145 int h_errnop;
3146
3147 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003148 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003149 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003150 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3151 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003152 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003153 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003154 AC_MSG_RESULT(no)
3155 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003156 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003157# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003158 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003159 char *name;
3160 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003161 char buffer[2048];
3162 int buflen = 2048;
3163 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003164
Matthias Kloseb159a552010-04-25 21:00:44 +00003165 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3166 ]])],
3167 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003168 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003169 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3170 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003171 AC_MSG_RESULT(yes)
3172 ], [
3173 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003174 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3175 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3176# include <netdb.h>
3177 ]], [[
3178 char *name;
3179 struct hostent *he;
3180 struct hostent_data data;
3181
3182 (void) gethostbyname_r(name, he, &data);
3183 ]])],
3184 [
3185 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3186 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3187 [Define this if you have the 3-arg version of gethostbyname_r().])
3188 AC_MSG_RESULT(yes)
3189 ], [
3190 AC_MSG_RESULT(no)
3191 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003192 ])
3193 ])
3194 CFLAGS=$OLD_CFLAGS
3195], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003196 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003197])
3198AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3199AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3200AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003201AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003202AC_SUBST(HAVE_GETHOSTBYNAME)
3203
Guido van Rossum627b2d71993-12-24 10:39:16 +00003204# checks for system services
3205# (none yet)
3206
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003207# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003208AC_CHECK_FUNC(__fpu_control,
3209 [],
3210 [AC_CHECK_LIB(ieee, __fpu_control)
3211])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003212
Guido van Rossum93274221997-05-09 02:42:00 +00003213# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003214AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003215AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003216 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003217[
Guido van Rossum93274221997-05-09 02:42:00 +00003218if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003219then
3220 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3221 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3222 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003223else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003224fi],
3225[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003226
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003227# check for --with-libm=...
3228AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003229case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003230Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003231*) LIBM=-lm
3232esac
Guido van Rossum93274221997-05-09 02:42:00 +00003233AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003234AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003235 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003236[
Guido van Rossum93274221997-05-09 02:42:00 +00003237if test "$withval" = no
3238then LIBM=
3239 AC_MSG_RESULT(force LIBM empty)
3240elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003241then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003242 AC_MSG_RESULT(set LIBM="$withval")
3243else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003244fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003245[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003246
3247# check for --with-libc=...
3248AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003249AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003250AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003251 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003252[
Guido van Rossum93274221997-05-09 02:42:00 +00003253if test "$withval" = no
3254then LIBC=
3255 AC_MSG_RESULT(force LIBC empty)
3256elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003257then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003258 AC_MSG_RESULT(set LIBC="$withval")
3259else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003260fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003261[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003262
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003263# **************************************************
3264# * Check for various properties of floating point *
3265# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003266
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003267AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3268AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003269AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003270#include <string.h>
3271int main() {
3272 double x = 9006104071832581.0;
3273 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3274 return 0;
3275 else
3276 return 1;
3277}
Matthias Kloseb159a552010-04-25 21:00:44 +00003278]])],
3279[ac_cv_little_endian_double=yes],
3280[ac_cv_little_endian_double=no],
3281[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003282AC_MSG_RESULT($ac_cv_little_endian_double)
3283if test "$ac_cv_little_endian_double" = yes
3284then
3285 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3286 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3287 with the least significant byte first])
3288fi
3289
3290AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3291AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003292AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003293#include <string.h>
3294int main() {
3295 double x = 9006104071832581.0;
3296 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3297 return 0;
3298 else
3299 return 1;
3300}
Matthias Kloseb159a552010-04-25 21:00:44 +00003301]])],
3302[ac_cv_big_endian_double=yes],
3303[ac_cv_big_endian_double=no],
3304[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003305AC_MSG_RESULT($ac_cv_big_endian_double)
3306if test "$ac_cv_big_endian_double" = yes
3307then
3308 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3309 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3310 with the most significant byte first])
3311fi
3312
3313# Some ARM platforms use a mixed-endian representation for doubles.
3314# While Python doesn't currently have full support for these platforms
3315# (see e.g., issue 1762561), we can at least make sure that float <-> string
3316# conversions work.
3317AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3318AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003319AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003320#include <string.h>
3321int main() {
3322 double x = 9006104071832581.0;
3323 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3324 return 0;
3325 else
3326 return 1;
3327}
Matthias Kloseb159a552010-04-25 21:00:44 +00003328]])],
3329[ac_cv_mixed_endian_double=yes],
3330[ac_cv_mixed_endian_double=no],
3331[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003332AC_MSG_RESULT($ac_cv_mixed_endian_double)
3333if test "$ac_cv_mixed_endian_double" = yes
3334then
3335 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3336 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3337 in ARM mixed-endian order (byte order 45670123)])
3338fi
3339
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003340# The short float repr introduced in Python 3.1 requires the
3341# correctly-rounded string <-> double conversion functions from
3342# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3343# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003344# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003345# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003346
3347# This inline assembler syntax may also work for suncc and icc,
3348# so we try it on all platforms.
3349
3350AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003351AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003352 unsigned short cw;
3353 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3354 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003355]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003356AC_MSG_RESULT($have_gcc_asm_for_x87)
3357if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003358then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003359 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3360 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003361fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003362
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003363# Detect whether system arithmetic is subject to x87-style double
3364# rounding issues. The result of this test has little meaning on non
3365# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3366# mode is round-to-nearest and double rounding issues are present, and
3367# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3368AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003369# $BASECFLAGS may affect the result
3370ac_save_cc="$CC"
3371CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003372AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003373#include <stdlib.h>
3374#include <math.h>
3375int main() {
3376 volatile double x, y, z;
3377 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3378 x = 0.99999999999999989; /* 1-2**-53 */
3379 y = 1./x;
3380 if (y != 1.)
3381 exit(0);
3382 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3383 x = 1e16;
3384 y = 2.99999;
3385 z = x + y;
3386 if (z != 1e16+4.)
3387 exit(0);
3388 /* both tests show evidence of double rounding */
3389 exit(1);
3390}
Matthias Kloseb159a552010-04-25 21:00:44 +00003391]])],
3392[ac_cv_x87_double_rounding=no],
3393[ac_cv_x87_double_rounding=yes],
3394[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003395CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003396AC_MSG_RESULT($ac_cv_x87_double_rounding)
3397if test "$ac_cv_x87_double_rounding" = yes
3398then
3399 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3400 [Define if arithmetic is subject to x87-style double rounding issue])
3401fi
3402
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003403# ************************************
3404# * Check for mathematical functions *
3405# ************************************
3406
3407LIBS_SAVE=$LIBS
3408LIBS="$LIBS $LIBM"
3409
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003410# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3411# -0. on some architectures.
3412AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3413AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003414AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003415#include <math.h>
3416#include <stdlib.h>
3417int main() {
3418 /* return 0 if either negative zeros don't exist
3419 on this platform or if negative zeros exist
3420 and tanh(-0.) == -0. */
3421 if (atan2(0., -1.) == atan2(-0., -1.) ||
3422 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3423 else exit(1);
3424}
Matthias Kloseb159a552010-04-25 21:00:44 +00003425]])],
3426[ac_cv_tanh_preserves_zero_sign=yes],
3427[ac_cv_tanh_preserves_zero_sign=no],
3428[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003429AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3430if test "$ac_cv_tanh_preserves_zero_sign" = yes
3431then
3432 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3433 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3434fi
3435
Mark Dickinson9c113362009-09-05 10:36:23 +00003436AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3437AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003438AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003439
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003440LIBS=$LIBS_SAVE
3441
Mark Dickinsona614f042009-11-28 12:48:43 +00003442# For multiprocessing module, check that sem_open
3443# actually works. For FreeBSD versions <= 7.2,
3444# the kernel module that provides POSIX semaphores
3445# isn't loaded by default, so an attempt to call
3446# sem_open results in a 'Signal 12' error.
3447AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3448AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003449AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003450#include <unistd.h>
3451#include <fcntl.h>
3452#include <stdio.h>
3453#include <semaphore.h>
3454#include <sys/stat.h>
3455
3456int main(void) {
3457 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3458 if (a == SEM_FAILED) {
3459 perror("sem_open");
3460 return 1;
3461 }
3462 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003463 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003464 return 0;
3465}
Matthias Kloseb159a552010-04-25 21:00:44 +00003466]])],
3467[ac_cv_posix_semaphores_enabled=yes],
3468[ac_cv_posix_semaphores_enabled=no],
3469[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003470)
3471AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3472if test $ac_cv_posix_semaphores_enabled = no
3473then
3474 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3475 [Define if POSIX semaphores aren't enabled on your system])
3476fi
3477
Mark Dickinson10683072009-04-18 21:18:19 +00003478# Multiprocessing check for broken sem_getvalue
3479AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003480AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003481AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003482#include <unistd.h>
3483#include <fcntl.h>
3484#include <stdio.h>
3485#include <semaphore.h>
3486#include <sys/stat.h>
3487
3488int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003489 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003490 int count;
3491 int res;
3492 if(a==SEM_FAILED){
3493 perror("sem_open");
3494 return 1;
3495
3496 }
3497 res = sem_getvalue(a, &count);
3498 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003499 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003500 return res==-1 ? 1 : 0;
3501}
Matthias Kloseb159a552010-04-25 21:00:44 +00003502]])],
3503[ac_cv_broken_sem_getvalue=no],
3504[ac_cv_broken_sem_getvalue=yes],
3505[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003506)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003507AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3508if test $ac_cv_broken_sem_getvalue = yes
3509then
3510 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3511 [define to 1 if your sem_getvalue is broken.])
3512fi
Mark Dickinson10683072009-04-18 21:18:19 +00003513
Mark Dickinsonbd792642009-03-18 20:06:12 +00003514# determine what size digit to use for Python's longs
3515AC_MSG_CHECKING([digit size for Python's longs])
3516AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003517AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003518[case $enable_big_digits in
3519yes)
3520 enable_big_digits=30 ;;
3521no)
3522 enable_big_digits=15 ;;
3523[15|30])
3524 ;;
3525*)
3526 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3527esac
3528AC_MSG_RESULT($enable_big_digits)
3529AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3530],
3531[AC_MSG_RESULT(no value specified)])
3532
Guido van Rossumef2255b2000-03-10 22:30:29 +00003533# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003534AC_CHECK_HEADER(wchar.h, [
3535 AC_DEFINE(HAVE_WCHAR_H, 1,
3536 [Define if the compiler provides a wchar.h header file.])
3537 wchar_h="yes"
3538],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003539wchar_h="no"
3540)
3541
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003542# determine wchar_t size
3543if test "$wchar_h" = yes
3544then
Guido van Rossum67b26592001-10-20 14:21:45 +00003545 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003546fi
3547
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003548AC_MSG_CHECKING(for UCS-4 tcl)
3549have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003550AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003551#include <tcl.h>
3552#if TCL_UTF_MAX != 6
3553# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003554#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003555 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3556 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003557],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003558AC_MSG_RESULT($have_ucs4_tcl)
3559
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003560# check whether wchar_t is signed or not
3561if test "$wchar_h" = yes
3562then
3563 # check whether wchar_t is signed or not
3564 AC_MSG_CHECKING(whether wchar_t is signed)
3565 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003566 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003567 #include <wchar.h>
3568 int main()
3569 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003570 /* Success: exit code 0 */
3571 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003572 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003573 ]])],
3574 [ac_cv_wchar_t_signed=yes],
3575 [ac_cv_wchar_t_signed=no],
3576 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003577 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3578fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003579
Georg Brandl52d168a2008-01-07 18:10:24 +00003580AC_MSG_CHECKING(what type to use for str)
3581AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003582 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003583[
3584if test "$withval" != no
3585then unicode_size="4"
3586else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003587fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003588],
3589[
3590case "$have_ucs4_tcl" in
3591 yes) unicode_size="4" ;;
3592 *) unicode_size="2" ;;
3593esac
3594])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003595
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003596AH_TEMPLATE(Py_UNICODE_SIZE,
3597 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003598case "$unicode_size" in
3599 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3600 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003601esac
3602
Martin v. Löwis11437992002-04-12 09:54:03 +00003603AH_TEMPLATE(PY_UNICODE_TYPE,
3604 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003605
Georg Brandl52d168a2008-01-07 18:10:24 +00003606# wchar_t is only usable if it maps to an unsigned type
3607if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003608 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003609then
3610 PY_UNICODE_TYPE="wchar_t"
3611 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3612 [Define if you have a useable wchar_t type defined in wchar.h; useable
3613 means wchar_t must be an unsigned type with at least 16 bits. (see
3614 Include/unicodeobject.h).])
3615 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3616elif test "$ac_cv_sizeof_short" = "$unicode_size"
3617then
3618 PY_UNICODE_TYPE="unsigned short"
3619 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3620elif test "$ac_cv_sizeof_long" = "$unicode_size"
3621then
3622 PY_UNICODE_TYPE="unsigned long"
3623 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3624else
3625 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003626fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003627AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003628
3629# check for endianness
3630AC_C_BIGENDIAN
3631
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003632# Check whether right shifting a negative integer extends the sign bit
3633# or fills with zeros (like the Cray J90, according to Tim Peters).
3634AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003635AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003636AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003637int main()
3638{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003639 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003640}
Matthias Kloseb159a552010-04-25 21:00:44 +00003641]])],
3642[ac_cv_rshift_extends_sign=yes],
3643[ac_cv_rshift_extends_sign=no],
3644[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003645AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3646if test "$ac_cv_rshift_extends_sign" = no
3647then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003648 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3649 [Define if i>>j for signed int i does not extend the sign bit
3650 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003651fi
3652
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003653# check for getc_unlocked and related locking functions
3654AC_MSG_CHECKING(for getc_unlocked() and friends)
3655AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003656AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003657 FILE *f = fopen("/dev/null", "r");
3658 flockfile(f);
3659 getc_unlocked(f);
3660 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003661]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003662AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3663if test "$ac_cv_have_getc_unlocked" = yes
3664then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003665 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3666 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003667fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003668
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003669# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003670# save the value of LIBS so we don't actually link Python with readline
3671LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003672
3673# On some systems we need to link readline to a termcap compatible
3674# library. NOTE: Keep the precedence of listed libraries synchronised
3675# with setup.py.
3676py_cv_lib_readline=no
3677AC_MSG_CHECKING([how to link readline libs])
3678for py_libtermcap in "" ncursesw ncurses curses termcap; do
3679 if test -z "$py_libtermcap"; then
3680 READLINE_LIBS="-lreadline"
3681 else
3682 READLINE_LIBS="-lreadline -l$py_libtermcap"
3683 fi
3684 LIBS="$READLINE_LIBS $LIBS_no_readline"
3685 AC_LINK_IFELSE(
3686 [AC_LANG_CALL([],[readline])],
3687 [py_cv_lib_readline=yes])
3688 if test $py_cv_lib_readline = yes; then
3689 break
3690 fi
3691done
3692# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3693#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003694if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003695 AC_MSG_RESULT([none])
3696else
3697 AC_MSG_RESULT([$READLINE_LIBS])
3698 AC_DEFINE(HAVE_LIBREADLINE, 1,
3699 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003700fi
3701
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003702# check for readline 2.1
3703AC_CHECK_LIB(readline, rl_callback_handler_install,
3704 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003705 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003706
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003707# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003708AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3709 [have_readline=yes],
3710 [have_readline=no]
3711)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003712if test $have_readline = yes
3713then
3714 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3715 [readline/readline.h],
3716 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3717 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003718 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3719 [readline/readline.h],
3720 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3721 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003722fi
3723
Martin v. Löwis0daad592001-09-30 21:09:59 +00003724# check for readline 4.0
3725AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003726 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003727 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003728
Thomas Wouters89d996e2007-09-08 17:39:28 +00003729# also in 4.0
3730AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3731 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003732 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003733
Guido van Rossum353ae582001-07-10 16:45:32 +00003734# check for readline 4.2
3735AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003736 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003737 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003738
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003739# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003740AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3741 [have_readline=yes],
3742 [have_readline=no]
3743)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003744if test $have_readline = yes
3745then
3746 AC_EGREP_HEADER([extern int rl_catch_signals;],
3747 [readline/readline.h],
3748 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3749 [Define if you can turn off readline's signal handling.]), )
3750fi
3751
Martin v. Löwis82bca632006-02-10 20:49:30 +00003752# End of readline checks: restore LIBS
3753LIBS=$LIBS_no_readline
3754
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003755AC_MSG_CHECKING(for broken nice())
3756AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003757AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003758int main()
3759{
3760 int val1 = nice(1);
3761 if (val1 != -1 && val1 == nice(2))
3762 exit(0);
3763 exit(1);
3764}
Matthias Kloseb159a552010-04-25 21:00:44 +00003765]])],
3766[ac_cv_broken_nice=yes],
3767[ac_cv_broken_nice=no],
3768[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003769AC_MSG_RESULT($ac_cv_broken_nice)
3770if test "$ac_cv_broken_nice" = yes
3771then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003772 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3773 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003774fi
3775
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003776AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003777AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003778AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003779#include <poll.h>
3780
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003781int main()
3782{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003783 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003784 int poll_test;
3785
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003786 close (42);
3787
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003788 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003789 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003790 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003791 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003792 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003793 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003794 return 1;
3795}
Matthias Kloseb159a552010-04-25 21:00:44 +00003796]])],
3797[ac_cv_broken_poll=yes],
3798[ac_cv_broken_poll=no],
3799[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003800AC_MSG_RESULT($ac_cv_broken_poll)
3801if test "$ac_cv_broken_poll" = yes
3802then
3803 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3804 [Define if poll() sets errno on invalid file descriptors.])
3805fi
3806
Brett Cannon43802422005-02-10 20:48:03 +00003807# Before we can test tzset, we need to check if struct tm has a tm_zone
3808# (which is not required by ISO C or UNIX spec) and/or if we support
3809# tzname[]
3810AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003811
Brett Cannon43802422005-02-10 20:48:03 +00003812# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003813AC_MSG_CHECKING(for working tzset())
3814AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003815AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003816#include <stdlib.h>
3817#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003818#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003819
3820#if HAVE_TZNAME
3821extern char *tzname[];
3822#endif
3823
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003824int main()
3825{
Brett Cannon18367812003-09-19 00:59:16 +00003826 /* Note that we need to ensure that not only does tzset(3)
3827 do 'something' with localtime, but it works as documented
3828 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003829 This includes making sure that tzname is set properly if
3830 tm->tm_zone does not exist since it is the alternative way
3831 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003832
3833 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003834 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003835 */
3836
Brett Cannon43802422005-02-10 20:48:03 +00003837 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003838 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3839
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003840 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003841 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003842 if (localtime(&groundhogday)->tm_hour != 0)
3843 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003844#if HAVE_TZNAME
3845 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3846 if (strcmp(tzname[0], "UTC") ||
3847 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3848 exit(1);
3849#endif
Brett Cannon18367812003-09-19 00:59:16 +00003850
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003851 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003852 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003853 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003854 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003855#if HAVE_TZNAME
3856 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3857 exit(1);
3858#endif
Brett Cannon18367812003-09-19 00:59:16 +00003859
3860 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3861 tzset();
3862 if (localtime(&groundhogday)->tm_hour != 11)
3863 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003864#if HAVE_TZNAME
3865 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3866 exit(1);
3867#endif
3868
3869#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003870 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3871 exit(1);
3872 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3873 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003874#endif
Brett Cannon18367812003-09-19 00:59:16 +00003875
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003876 exit(0);
3877}
Matthias Kloseb159a552010-04-25 21:00:44 +00003878]])],
3879[ac_cv_working_tzset=yes],
3880[ac_cv_working_tzset=no],
3881[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003882AC_MSG_RESULT($ac_cv_working_tzset)
3883if test "$ac_cv_working_tzset" = yes
3884then
3885 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3886 [Define if tzset() actually switches the local timezone in a meaningful way.])
3887fi
3888
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003889# Look for subsecond timestamps in struct stat
3890AC_MSG_CHECKING(for tv_nsec in struct stat)
3891AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00003892AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003893struct stat st;
3894st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003895]])],
3896[ac_cv_stat_tv_nsec=yes],
3897[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003898AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3899if test "$ac_cv_stat_tv_nsec" = yes
3900then
3901 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3902 [Define if you have struct stat.st_mtim.tv_nsec])
3903fi
3904
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003905# Look for BSD style subsecond timestamps in struct stat
3906AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3907AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00003908AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003909struct stat st;
3910st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003911]])],
3912[ac_cv_stat_tv_nsec2=yes],
3913[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003914AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3915if test "$ac_cv_stat_tv_nsec2" = yes
3916then
3917 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3918 [Define if you have struct stat.st_mtimensec])
3919fi
3920
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003921# On HP/UX 11.0, mvwdelch is a block with a return statement
3922AC_MSG_CHECKING(whether mvwdelch is an expression)
3923AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00003924AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003925 int rtn;
3926 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003927]])],
3928[ac_cv_mvwdelch_is_expression=yes],
3929[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003930AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3931
3932if test "$ac_cv_mvwdelch_is_expression" = yes
3933then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003934 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3935 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003936fi
3937
3938AC_MSG_CHECKING(whether WINDOW has _flags)
3939AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00003940AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003941 WINDOW *w;
3942 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00003943]])],
3944[ac_cv_window_has_flags=yes],
3945[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003946AC_MSG_RESULT($ac_cv_window_has_flags)
3947
3948
3949if test "$ac_cv_window_has_flags" = yes
3950then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003951 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3952 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003953fi
3954
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003955AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00003956AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
3957 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3958 AC_MSG_RESULT(yes)],
3959 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003960)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003961
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003962AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00003963AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
3964 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3965 AC_MSG_RESULT(yes)],
3966 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003967)
3968
3969AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00003970AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
3971 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3972 AC_MSG_RESULT(yes)],
3973 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003974)
3975
Thomas Wouters89f507f2006-12-13 04:49:30 +00003976AC_MSG_CHECKING(for /dev/ptmx)
3977
3978if test -r /dev/ptmx
3979then
3980 AC_MSG_RESULT(yes)
3981 AC_DEFINE(HAVE_DEV_PTMX, 1,
3982 [Define if we have /dev/ptmx.])
3983else
3984 AC_MSG_RESULT(no)
3985fi
3986
3987AC_MSG_CHECKING(for /dev/ptc)
3988
3989if test -r /dev/ptc
3990then
3991 AC_MSG_RESULT(yes)
3992 AC_DEFINE(HAVE_DEV_PTC, 1,
3993 [Define if we have /dev/ptc.])
3994else
3995 AC_MSG_RESULT(no)
3996fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003997
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003998if test "$have_long_long" = yes
3999then
4000 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4001 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004002 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004003 #include <stdio.h>
4004 #include <stddef.h>
4005 #include <string.h>
4006
4007 #ifdef HAVE_SYS_TYPES_H
4008 #include <sys/types.h>
4009 #endif
4010
4011 int main()
4012 {
4013 char buffer[256];
4014
4015 if (sprintf(buffer, "%lld", (long long)123) < 0)
4016 return 1;
4017 if (strcmp(buffer, "123"))
4018 return 1;
4019
4020 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4021 return 1;
4022 if (strcmp(buffer, "-123"))
4023 return 1;
4024
4025 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4026 return 1;
4027 if (strcmp(buffer, "123"))
4028 return 1;
4029
4030 return 0;
4031 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004032 ]]])],
4033 [ac_cv_have_long_long_format=yes],
4034 [ac_cv_have_long_long_format=no],
4035 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004036 )
4037 AC_MSG_RESULT($ac_cv_have_long_long_format)
4038fi
4039
Mark Dickinson89d7d412009-12-31 20:50:59 +00004040if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004041then
4042 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4043 [Define to printf format modifier for long long type])
4044fi
4045
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004046if test $ac_sys_system = Darwin
4047then
4048 LIBS="$LIBS -framework CoreFoundation"
4049fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004050
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004051AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004052AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004053#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004054#include <stddef.h>
4055#include <string.h>
4056
Christian Heimes2c181612007-12-17 20:04:13 +00004057#ifdef HAVE_SYS_TYPES_H
4058#include <sys/types.h>
4059#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004060
4061#ifdef HAVE_SSIZE_T
4062typedef ssize_t Py_ssize_t;
4063#elif SIZEOF_VOID_P == SIZEOF_LONG
4064typedef long Py_ssize_t;
4065#else
4066typedef int Py_ssize_t;
4067#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004068
Christian Heimes2c181612007-12-17 20:04:13 +00004069int main()
4070{
4071 char buffer[256];
4072
Thomas Wouters477c8d52006-05-27 19:21:47 +00004073 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4074 return 1;
4075
Thomas Wouters89f507f2006-12-13 04:49:30 +00004076 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004077 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004078
4079 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4080 return 1;
4081
4082 if (strcmp(buffer, "-123"))
4083 return 1;
4084
Thomas Wouters477c8d52006-05-27 19:21:47 +00004085 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004086}
Matthias Kloseb159a552010-04-25 21:00:44 +00004087]])],
4088 [ac_cv_have_size_t_format=yes],
4089 [ac_cv_have_size_t_format=no],
4090 [ac_cv_have_size_t_format="cross -- assuming yes"
4091])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004092if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004093 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4094 [Define to printf format modifier for Py_ssize_t])
4095fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004096
Martin v. Löwis01c04012002-11-11 14:58:44 +00004097AC_CHECK_TYPE(socklen_t,,
4098 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004099 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004100#ifdef HAVE_SYS_TYPES_H
4101#include <sys/types.h>
4102#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004103#ifdef HAVE_SYS_SOCKET_H
4104#include <sys/socket.h>
4105#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004106])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004107
Antoine Pitroufff95302008-09-03 18:58:51 +00004108AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004109AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004110AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004111#include<stdlib.h>
4112int main() {
4113 size_t len = -1;
4114 const char *str = "text";
4115 len = mbstowcs(NULL, str, 0);
4116 return (len != 4);
4117}
Matthias Kloseb159a552010-04-25 21:00:44 +00004118]])],
4119[ac_cv_broken_mbstowcs=no],
4120[ac_cv_broken_mbstowcs=yes],
4121[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004122AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4123if test "$ac_cv_broken_mbstowcs" = yes
4124then
4125 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4126 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4127 wide chars that would be converted.])
4128fi
4129
Antoine Pitrou042b1282010-08-13 21:15:58 +00004130AC_MSG_CHECKING(whether $CC supports computed gotos)
4131AC_CACHE_VAL(ac_cv_computed_gotos,
4132AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4133int main(int argc, char **argv)
4134{
4135 static void *targets[1] = { &&LABEL1 };
4136 goto LABEL2;
4137LABEL1:
4138 return 0;
4139LABEL2:
4140 goto *targets[0];
4141 return 1;
4142}
4143]]])],
4144[ac_cv_computed_gotos=yes],
4145[ac_cv_computed_gotos=no],
4146[ac_cv_computed_gotos=no]))
4147AC_MSG_RESULT($ac_cv_computed_gotos)
4148if test "$ac_cv_computed_gotos" = yes
4149then
4150 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4151 [Define if the C compiler supports computed gotos.])
4152fi
4153
Antoine Pitroub52ec782009-01-25 16:34:23 +00004154# Check for --with-computed-gotos
4155AC_MSG_CHECKING(for --with-computed-gotos)
4156AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004157 AS_HELP_STRING([--with(out)-computed-gotos],
4158 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004159[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004160if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004161then
4162 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4163 [Define if you want to use computed gotos in ceval.c.])
4164 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004165fi
4166if test "$withval" = no
4167then
4168 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4169 [Define if you want to use computed gotos in ceval.c.])
4170 AC_MSG_RESULT(no)
4171fi
4172],
4173[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004174
4175
Jesus Cea6a792292010-05-03 21:18:48 +00004176
4177case $ac_sys_system in
4178 OSF*) AC_MSG_ERROR(OSF* systems are deprecated unless somebody volunteers. Check http://bugs.python.org/issue8606) ;;
4179esac
4180
4181
4182
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004183AC_SUBST(THREADHEADERS)
4184
4185for h in `(cd $srcdir;echo Python/thread_*.h)`
4186do
4187 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4188done
4189
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004190AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004191SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004192AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004193for dir in $SRCDIRS; do
4194 if test ! -d $dir; then
4195 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004196 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004197done
4198AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004199
Guido van Rossum627b2d71993-12-24 10:39:16 +00004200# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004201AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004202AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004203
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004204echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004205if test ! -f Modules/Setup
4206then
4207 cp $srcdir/Modules/Setup.dist Modules/Setup
4208fi
4209
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004210echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004211if test ! -f Modules/Setup.local
4212then
4213 echo "# Edit this file for local setup changes" >Modules/Setup.local
4214fi
4215
4216echo "creating Makefile"
4217$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4218 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004219 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004220mv config.c Modules