blob: b3d51587743908601b8b4ed5cfc5a22be353c435 [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
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000464# If the user set CFLAGS, use this instead of the automatically
465# determined setting
466preset_cflags="$CFLAGS"
Guido van Rossum627b2d71993-12-24 10:39:16 +0000467AC_PROG_CC
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000468if test ! -z "$preset_cflags"
469then
470 CFLAGS=$preset_cflags
471fi
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000472
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000473AC_SUBST(CXX)
474AC_SUBST(MAINCC)
475AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
476AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000477 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000478 [compile main() and link python executable with C++ compiler]),
479[
480
481 case $withval in
482 no) with_cxx_main=no
483 MAINCC='$(CC)';;
484 yes) with_cxx_main=yes
485 MAINCC='$(CXX)';;
486 *) with_cxx_main=yes
487 MAINCC=$withval
488 if test -z "$CXX"
489 then
490 CXX=$withval
491 fi;;
492 esac], [
493 with_cxx_main=no
494 MAINCC='$(CC)'
495])
496AC_MSG_RESULT($with_cxx_main)
497
498preset_cxx="$CXX"
499if test -z "$CXX"
500then
501 case "$CC" in
502 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
503 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
504 esac
505 if test "$CXX" = "notfound"
506 then
507 CXX=""
508 fi
509fi
510if test -z "$CXX"
511then
512 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
513 if test "$CXX" = "notfound"
514 then
515 CXX=""
516 fi
517fi
518if test "$preset_cxx" != "$CXX"
519then
520 AC_MSG_WARN([
521
522 By default, distutils will build C++ extension modules with "$CXX".
523 If this is not intended, then set CXX on the configure command line.
524 ])
525fi
526
527
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000528# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000529AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000530
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000531# Check for unsupported systems
532case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000533atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000534 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
535 echo See README for details.
536 exit 1;;
537esac
538
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000539AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000540AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000541AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000542 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000543[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000544 case $withval in
545 no) EXEEXT=;;
546 yes) EXEEXT=.exe;;
547 *) EXEEXT=$withval;;
548 esac])
549AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000550
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000551# Test whether we're running on a non-case-sensitive system, in which
552# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000553AC_SUBST(BUILDEXEEXT)
554AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000555if test ! -d CaseSensitiveTestDir; then
556mkdir CaseSensitiveTestDir
557fi
558
559if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000560then
Jack Jansen1999ef42001-12-06 21:47:20 +0000561 AC_MSG_RESULT(yes)
562 BUILDEXEEXT=.exe
563else
564 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000565 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000566fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000567rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000568
Guido van Rossumdd997f71998-10-07 19:58:26 +0000569case $MACHDEP in
570bsdos*)
571 case $CC in
572 gcc) CC="$CC -D_HAVE_BSDI";;
573 esac;;
574esac
575
Guido van Rossum84561611997-08-21 00:08:11 +0000576case $ac_sys_system in
577hp*|HP*)
578 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000579 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000580 esac;;
581esac
582
Martin v. Löwise8964d42001-03-06 12:09:07 +0000583
Neil Schemenauer61c51152001-01-26 16:18:16 +0000584AC_SUBST(LIBRARY)
585AC_MSG_CHECKING(LIBRARY)
586if test -z "$LIBRARY"
587then
588 LIBRARY='libpython$(VERSION).a'
589fi
590AC_MSG_RESULT($LIBRARY)
591
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000592# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000593# name of the library into which to insert object files). BLDLIBRARY is also
594# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
595# is blank as the main program is not linked directly against LDLIBRARY.
596# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
597# systems without shared libraries, LDLIBRARY is the same as LIBRARY
598# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
599# DLLLIBRARY is the shared (i.e., DLL) library.
600#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601# RUNSHARED is used to run shared python without installed libraries
602#
603# INSTSONAME is the name of the shared library that will be use to install
604# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000605AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000606AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000607AC_SUBST(BLDLIBRARY)
608AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000609AC_SUBST(INSTSONAME)
610AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000611LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000612BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000613INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000614DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000615LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000616RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000617
Guido van Rossumfb842551997-08-06 23:42:07 +0000618# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000619# If CXX is set, and if it is needed to link a main function that was
620# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
621# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000622# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000623# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000624AC_SUBST(LINKCC)
625AC_MSG_CHECKING(LINKCC)
626if test -z "$LINKCC"
627then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000628 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000629 case $ac_sys_system in
630 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000631 exp_extra="\"\""
632 if test $ac_sys_release -ge 5 -o \
633 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
634 exp_extra="."
635 fi
636 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000637 QNX*)
638 # qcc must be used because the other compilers do not
639 # support -N.
640 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000641 esac
642fi
643AC_MSG_RESULT($LINKCC)
644
Tarek Ziadébe720e02009-05-09 11:55:12 +0000645# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
646# make sure we default having it set to "no": this is used by
647# distutils.unixccompiler to know if it should add --enable-new-dtags
648# to linker command lines, and failing to detect GNU ld simply results
649# in the same bahaviour as before.
650AC_SUBST(GNULD)
651AC_MSG_CHECKING(for GNU ld)
652ac_prog=ld
653if test "$GCC" = yes; then
654 ac_prog=`$CC -print-prog-name=ld`
655fi
656case `"$ac_prog" -V 2>&1 < /dev/null` in
657 *GNU*)
658 GNULD=yes;;
659 *)
660 GNULD=no;;
661esac
662AC_MSG_RESULT($GNULD)
663
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664AC_MSG_CHECKING(for --enable-shared)
665AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000666 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000667
Martin v. Löwis1142de32002-03-29 16:28:31 +0000668if test -z "$enable_shared"
669then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000670 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000671 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000672 enable_shared="yes";;
673 *)
674 enable_shared="no";;
675 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676fi
677AC_MSG_RESULT($enable_shared)
678
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000679AC_MSG_CHECKING(for --enable-profiling)
680AC_ARG_ENABLE(profiling,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000681 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]),
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000682[ac_save_cc="$CC"
683 CC="$CC -pg"
Matthias Kloseb159a552010-04-25 21:00:44 +0000684 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
685 [ac_enable_profiling="yes"],
686 [ac_enable_profiling="no"],
687 [ac_enable_profiling="no"])
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000688 CC="$ac_save_cc"])
689AC_MSG_RESULT($ac_enable_profiling)
690
691case "$ac_enable_profiling" in
692 "yes")
693 BASECFLAGS="-pg $BASECFLAGS"
694 LDFLAGS="-pg $LDFLAGS"
695 ;;
696esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697
698AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000699
Guido van Rossumb8552162001-09-05 14:58:11 +0000700# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
701# library that we build, but we do not want to link against it (we
702# will find it with a -framework option). For this reason there is an
703# extra variable BLDLIBRARY against which Python and the extension
704# modules are linked, BLDLIBRARY. This is normally the same as
705# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000706if test "$enable_framework"
707then
708 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000709 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000710 BLDLIBRARY=''
711else
712 BLDLIBRARY='$(LDLIBRARY)'
713fi
714
Martin v. Löwis1142de32002-03-29 16:28:31 +0000715# Other platforms follow
716if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000717 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000719 CYGWIN*)
720 LDLIBRARY='libpython$(VERSION).dll.a'
721 DLLLIBRARY='libpython$(VERSION).dll'
722 ;;
723 SunOS*)
724 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000725 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000726 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000727 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000729 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 LDLIBRARY='libpython$(VERSION).so'
731 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000732 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000733 case $ac_sys_system in
734 FreeBSD*)
735 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
736 ;;
737 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000738 INSTSONAME="$LDLIBRARY".$SOVERSION
739 ;;
740 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000741 case `uname -m` in
742 ia64)
743 LDLIBRARY='libpython$(VERSION).so'
744 ;;
745 *)
746 LDLIBRARY='libpython$(VERSION).sl'
747 ;;
748 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000749 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000750 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000751 ;;
752 OSF*)
753 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000754 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000755 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000756 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000757 Darwin*)
758 LDLIBRARY='libpython$(VERSION).dylib'
759 BLDLIBRARY='-L. -lpython$(VERSION)'
760 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
761 ;;
762
Martin v. Löwis1142de32002-03-29 16:28:31 +0000763 esac
Jason Tishler30765592003-09-04 11:04:06 +0000764else # shared is disabled
765 case $ac_sys_system in
766 CYGWIN*)
767 BLDLIBRARY='$(LIBRARY)'
768 LDLIBRARY='libpython$(VERSION).dll.a'
769 ;;
770 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000771fi
772
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000773AC_MSG_RESULT($LDLIBRARY)
774
Guido van Rossum627b2d71993-12-24 10:39:16 +0000775AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000776AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000777AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000778
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000779# tweak ARFLAGS only if the user didn't set it on the command line
780AC_SUBST(ARFLAGS)
781if test -z "$ARFLAGS"
782then
783 ARFLAGS="rc"
784fi
785
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000786AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000787AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000788if test $SVNVERSION = found
789then
790 SVNVERSION="svnversion \$(srcdir)"
791else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000792 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000793fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000794
Neil Schemenauera42c8272001-03-31 00:01:55 +0000795case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000796bsdos*|hp*|HP*)
797 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000798 if test -z "$INSTALL"
799 then
800 INSTALL="${srcdir}/install-sh -c"
801 fi
802esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000803AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000804
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000805# Not every filesystem supports hard links
806AC_SUBST(LN)
807if test -z "$LN" ; then
808 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000809 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000810 *) LN=ln;;
811 esac
812fi
813
Fred Drake9f715822001-07-11 06:27:00 +0000814# Check for --with-pydebug
815AC_MSG_CHECKING(for --with-pydebug)
816AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000817 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000818[
Fred Drake9f715822001-07-11 06:27:00 +0000819if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000820then
821 AC_DEFINE(Py_DEBUG, 1,
822 [Define if you want to build an interpreter with many run-time checks.])
823 AC_MSG_RESULT(yes);
824 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000825else AC_MSG_RESULT(no); Py_DEBUG='false'
826fi],
827[AC_MSG_RESULT(no)])
828
Skip Montanarodecc6a42003-01-01 20:07:49 +0000829# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
830# merged with this chunk of code?
831
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000832# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000833# ------------------------
834# (The following bit of code is complicated enough - please keep things
835# indented properly. Just pretend you're editing Python code. ;-)
836
837# There are two parallel sets of case statements below, one that checks to
838# see if OPT was set and one that does BASECFLAGS setting based upon
839# compiler and platform. BASECFLAGS tweaks need to be made even if the
840# user set OPT.
841
842# tweak OPT based on compiler and platform, only if the user didn't set
843# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000844AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000845if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000846then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 case $GCC in
848 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000849 if test "$CC" != 'g++' ; then
850 STRICT_PROTO="-Wstrict-prototypes"
851 fi
Christian Heimes38053212007-12-14 01:24:44 +0000852 # For gcc 4.x we need to use -fwrapv so lets check if its supported
853 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
854 WRAP="-fwrapv"
855 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000857 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000858 if test "$Py_DEBUG" = 'true' ; then
859 # Optimization messes up debuggers, so turn it off for
860 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +0000861 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000862 else
Christian Heimes38053212007-12-14 01:24:44 +0000863 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000864 fi
865 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000866 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000867 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000868 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000869 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000870 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000871 SCO_SV*) OPT="$OPT -m486 -DSCO5"
872 ;;
873 esac
Fred Drake9f715822001-07-11 06:27:00 +0000874 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000875
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000876 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 OPT="-O"
878 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000879 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000880fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000881
Skip Montanarodecc6a42003-01-01 20:07:49 +0000882AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000883
884# The -arch flags for universal builds on OSX
885UNIVERSAL_ARCH_FLAGS=
886AC_SUBST(UNIVERSAL_ARCH_FLAGS)
887
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888# tweak BASECFLAGS based on compiler and platform
889case $GCC in
890yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000891 # Python doesn't violate C99 aliasing rules, but older versions of
892 # GCC produce warnings for legal Python code. Enable
893 # -fno-strict-aliasing on versions of GCC that support but produce
894 # warnings. See Issue3326
895 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000896 ac_save_cc="$CC"
897 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000898 save_CFLAGS="$CFLAGS"
899 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +0000900 AC_COMPILE_IFELSE(
901 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000902 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000903 ],[
904 CC="$ac_save_cc -fstrict-aliasing"
905 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
906 AC_COMPILE_IFELSE(
907 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +0000908 AC_LANG_PROGRAM([[void f(int **x) {}]],
909 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +0000910 ],[
911 ac_cv_no_strict_aliasing=no
912 ],[
913 ac_cv_no_strict_aliasing=yes
914 ])
915 ],[
916 ac_cv_no_strict_aliasing=no
917 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000918 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000919 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000920 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
921 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000922 then
923 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
924 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000925
926 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
927 # support. Without this, treatment of subnormals doesn't follow
928 # the standard.
929 case $ac_sys_machine in
930 alpha*)
931 BASECFLAGS="$BASECFLAGS -mieee"
932 ;;
933 esac
934
Skip Montanarodecc6a42003-01-01 20:07:49 +0000935 case $ac_sys_system in
936 SCO_SV*)
937 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
938 ;;
939 # is there any other compiler on Darwin besides gcc?
940 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000941 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
942 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +0000943 if test "${CC}" = gcc
944 then
945 AC_MSG_CHECKING(which compiler should be used)
946 case "${UNIVERSALSDK}" in
947 */MacOSX10.4u.sdk)
948 # Build using 10.4 SDK, force usage of gcc when the
949 # compiler is gcc, otherwise the user will get very
950 # confusing error messages when building on OSX 10.6
951 CC=gcc-4.0
952 CPP=cpp-4.0
953 ;;
954 esac
955 AC_MSG_RESULT($CC)
956 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000957
958
Thomas Wouters477c8d52006-05-27 19:21:47 +0000959 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000960 UNIVERSAL_ARCH_FLAGS=""
961 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
962 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000963 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +0000964 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000965 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
966 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000967 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000968 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000969
970 elif test "$UNIVERSAL_ARCHS" = "all" ; then
971 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000972 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000973 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000974
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000975 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
976 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000977 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000978 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000979
980 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
981 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000982 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000983 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000984
Georg Brandlfcaf9102008-07-16 02:17:56 +0000985 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000986 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000987
988 fi
989
990
Ronald Oussoren666028b2010-04-18 19:07:43 +0000991 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
992 if test "${UNIVERSALSDK}" != "/"
993 then
994 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
995 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +0000996 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000997 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000998 fi
999
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001000 # Calculate the right deployment target for this build.
1001 #
1002 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1003 if test ${cur_target} '>' 10.2; then
1004 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001005 if test ${enable_universalsdk}; then
1006 if test "${UNIVERSAL_ARCHS}" = "all"; then
1007 # Ensure that the default platform for a
1008 # 4-way universal build is OSX 10.5,
1009 # that's the first OS release where
1010 # 4-way builds make sense.
1011 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001012
1013 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1014 cur_target='10.5'
1015
1016 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1017 cur_target='10.5'
1018
1019 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1020 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001021 fi
1022 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001023 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001024 # On Intel macs default to a deployment
1025 # target of 10.4, that's the first OSX
1026 # release with Intel support.
1027 cur_target="10.4"
1028 fi
1029 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001030 fi
1031 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1032
1033 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1034 # environment with a value that is the same as what we'll use
1035 # in the Makefile to ensure that we'll get the same compiler
1036 # environment during configure and build time.
1037 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1038 export MACOSX_DEPLOYMENT_TARGET
1039 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1040
Skip Montanarodecc6a42003-01-01 20:07:49 +00001041 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001042 OSF*)
1043 BASECFLAGS="$BASECFLAGS -mieee"
1044 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001045 esac
1046 ;;
1047
1048*)
1049 case $ac_sys_system in
1050 OpenUNIX*|UnixWare*)
1051 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1052 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001053 OSF*)
1054 BASECFLAGS="$BASECFLAGS -ieee -std"
1055 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001056 SCO_SV*)
1057 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1058 ;;
1059 esac
1060 ;;
1061esac
1062
Fred Drakee1ceaa02001-12-04 20:55:47 +00001063if test "$Py_DEBUG" = 'true'; then
1064 :
1065else
1066 OPT="-DNDEBUG $OPT"
1067fi
1068
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001069if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001070then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001071 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001072fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001073
Neal Norwitz020c46a2006-01-07 21:39:28 +00001074# disable check for icc since it seems to pass, but generates a warning
1075if test "$CC" = icc
1076then
1077 ac_cv_opt_olimit_ok=no
1078fi
1079
Guido van Rossum91922671997-10-09 20:24:13 +00001080AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1081AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1082[ac_save_cc="$CC"
1083CC="$CC -OPT:Olimit=0"
Matthias Kloseb159a552010-04-25 21:00:44 +00001084AC_COMPILE_IFELSE(
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001085 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00001086 [ac_cv_opt_olimit_ok=yes],
1087 [ac_cv_opt_olimit_ok=no]
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001088 )
Guido van Rossum91922671997-10-09 20:24:13 +00001089CC="$ac_save_cc"])
1090AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001091if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001092 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001093 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1094 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1095 # environment?
1096 Darwin*)
1097 ;;
1098 *)
1099 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1100 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001101 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001102else
1103 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1104 AC_CACHE_VAL(ac_cv_olimit_ok,
1105 [ac_save_cc="$CC"
1106 CC="$CC -Olimit 1500"
Matthias Kloseb159a552010-04-25 21:00:44 +00001107 AC_COMPILE_IFELSE(
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001108 [AC_LANG_PROGRAM([[]], [[]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00001109 [ac_cv_olimit_ok=yes],
1110 [ac_cv_olimit_ok=no]
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001111 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001112 CC="$ac_save_cc"])
1113 AC_MSG_RESULT($ac_cv_olimit_ok)
1114 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001115 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001116 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001117fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001118
Thomas Wouters89f507f2006-12-13 04:49:30 +00001119# Check whether GCC supports PyArg_ParseTuple format
1120if test "$GCC" = "yes"
1121then
1122 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1123 save_CFLAGS=$CFLAGS
1124 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001125 AC_COMPILE_IFELSE([
1126 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1127 ],[
1128 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1129 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1130 AC_MSG_RESULT(yes)
1131 ],[
1132 AC_MSG_RESULT(no)
1133 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001134 CFLAGS=$save_CFLAGS
1135fi
1136
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001137# On some compilers, pthreads are available without further options
1138# (e.g. MacOS X). On some of these systems, the compiler will not
1139# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1140# So we have to see first whether pthreads are available without
1141# options before we can check whether -Kpthread improves anything.
1142AC_MSG_CHECKING(whether pthreads are available without options)
1143AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001144[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001145#include <pthread.h>
1146
1147void* routine(void* p){return NULL;}
1148
1149int main(){
1150 pthread_t p;
1151 if(pthread_create(&p,NULL,routine,NULL)!=0)
1152 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001153 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001154 return 0;
1155}
Matthias Kloseb159a552010-04-25 21:00:44 +00001156]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001157 ac_cv_pthread_is_default=yes
1158 ac_cv_kthread=no
1159 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001160],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001161])
1162AC_MSG_RESULT($ac_cv_pthread_is_default)
1163
1164
1165if test $ac_cv_pthread_is_default = yes
1166then
1167 ac_cv_kpthread=no
1168else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001169# -Kpthread, if available, provides the right #defines
1170# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001171# Some compilers won't report that they do not support -Kpthread,
1172# so we need to run a program to see whether it really made the
1173# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001174AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1175AC_CACHE_VAL(ac_cv_kpthread,
1176[ac_save_cc="$CC"
1177CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001178AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001179#include <pthread.h>
1180
1181void* routine(void* p){return NULL;}
1182
1183int main(){
1184 pthread_t p;
1185 if(pthread_create(&p,NULL,routine,NULL)!=0)
1186 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001187 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001188 return 0;
1189}
Matthias Kloseb159a552010-04-25 21:00:44 +00001190]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001191CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001192AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001193fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001194
Skip Montanarod8d39a02003-07-10 20:44:10 +00001195if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001196then
1197# -Kthread, if available, provides the right #defines
1198# and linker options to make pthread_create available
1199# Some compilers won't report that they do not support -Kthread,
1200# so we need to run a program to see whether it really made the
1201# function available.
1202AC_MSG_CHECKING(whether $CC accepts -Kthread)
1203AC_CACHE_VAL(ac_cv_kthread,
1204[ac_save_cc="$CC"
1205CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001206AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001207#include <pthread.h>
1208
1209void* routine(void* p){return NULL;}
1210
1211int main(){
1212 pthread_t p;
1213 if(pthread_create(&p,NULL,routine,NULL)!=0)
1214 return 1;
1215 (void)pthread_detach(p);
1216 return 0;
1217}
Matthias Kloseb159a552010-04-25 21:00:44 +00001218]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001219CC="$ac_save_cc"])
1220AC_MSG_RESULT($ac_cv_kthread)
1221fi
1222
Skip Montanarod8d39a02003-07-10 20:44:10 +00001223if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001224then
1225# -pthread, if available, provides the right #defines
1226# and linker options to make pthread_create available
1227# Some compilers won't report that they do not support -pthread,
1228# so we need to run a program to see whether it really made the
1229# function available.
1230AC_MSG_CHECKING(whether $CC accepts -pthread)
1231AC_CACHE_VAL(ac_cv_thread,
1232[ac_save_cc="$CC"
1233CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001234AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001235#include <pthread.h>
1236
1237void* routine(void* p){return NULL;}
1238
1239int main(){
1240 pthread_t p;
1241 if(pthread_create(&p,NULL,routine,NULL)!=0)
1242 return 1;
1243 (void)pthread_detach(p);
1244 return 0;
1245}
Matthias Kloseb159a552010-04-25 21:00:44 +00001246]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001247CC="$ac_save_cc"])
1248AC_MSG_RESULT($ac_cv_pthread)
1249fi
1250
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001251# If we have set a CC compiler flag for thread support then
1252# check if it works for CXX, too.
1253ac_cv_cxx_thread=no
1254if test ! -z "$CXX"
1255then
1256AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1257ac_save_cxx="$CXX"
1258
1259if test "$ac_cv_kpthread" = "yes"
1260then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001261 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001262 ac_cv_cxx_thread=yes
1263elif test "$ac_cv_kthread" = "yes"
1264then
1265 CXX="$CXX -Kthread"
1266 ac_cv_cxx_thread=yes
1267elif test "$ac_cv_pthread" = "yes"
1268then
1269 CXX="$CXX -pthread"
1270 ac_cv_cxx_thread=yes
1271fi
1272
1273if test $ac_cv_cxx_thread = yes
1274then
1275 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1276 $CXX -c conftest.$ac_ext 2>&5
1277 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1278 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1279 then
1280 ac_cv_cxx_thread=yes
1281 else
1282 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001283 fi
1284 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001285fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001286AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001287fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001288CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001289
Fred Drakece81d592000-07-09 14:39:29 +00001290dnl # check for ANSI or K&R ("traditional") preprocessor
1291dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001292dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001293dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1294dnl int foo;
1295dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001296dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001297dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001298
Guido van Rossum627b2d71993-12-24 10:39:16 +00001299# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001300AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001301AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1302fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001303ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001304shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001305unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001306sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1307sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001308sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001309sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001310sys/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 +00001311sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001312bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001313AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001314AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001315
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001316# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001317AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001318#ifdef HAVE_CURSES_H
1319#include <curses.h>
1320#endif
1321])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001322
Martin v. Löwis11017b12006-01-14 18:12:57 +00001323# On Linux, netlink.h requires asm/types.h
1324AC_CHECK_HEADERS(linux/netlink.h,,,[
1325#ifdef HAVE_ASM_TYPES_H
1326#include <asm/types.h>
1327#endif
1328#ifdef HAVE_SYS_SOCKET_H
1329#include <sys/socket.h>
1330#endif
1331])
1332
Guido van Rossum627b2d71993-12-24 10:39:16 +00001333# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001334was_it_defined=no
1335AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001336AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1337 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1338])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001339AC_MSG_RESULT($was_it_defined)
1340
Neal Norwitz11690112002-07-30 01:08:28 +00001341# Check whether using makedev requires defining _OSF_SOURCE
1342AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001343AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1344#if defined(MAJOR_IN_MKDEV)
1345#include <sys/mkdev.h>
1346#elif defined(MAJOR_IN_SYSMACROS)
1347#include <sys/sysmacros.h>
1348#else
1349#include <sys/types.h>
1350#endif
1351]], [[
1352 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001353],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001354if test "$ac_cv_has_makedev" = "no"; then
1355 # we didn't link, try if _OSF_SOURCE will allow us to link
Matthias Kloseb159a552010-04-25 21:00:44 +00001356 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001357#define _OSF_SOURCE 1
1358#include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001359 ]],
1360 [[ makedev(0, 0) ]])],
1361 [ac_cv_has_makedev=yes],
1362 [ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001363 if test "$ac_cv_has_makedev" = "yes"; then
1364 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1365 fi
1366fi
1367AC_MSG_RESULT($ac_cv_has_makedev)
1368if test "$ac_cv_has_makedev" = "yes"; then
1369 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1370fi
1371
Martin v. Löwis399a6892002-10-04 10:22:02 +00001372# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1373# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1374# defined, but the compiler does not support pragma redefine_extname,
1375# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1376# structures (such as rlimit64) without declaring them. As a
1377# work-around, disable LFS on such configurations
1378
1379use_lfs=yes
1380AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001381AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001382#define _LARGEFILE_SOURCE 1
1383#define _FILE_OFFSET_BITS 64
1384#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001385]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001386AC_MSG_RESULT($sol_lfs_bug)
1387if test "$sol_lfs_bug" = "yes"; then
1388 use_lfs=no
1389fi
1390
1391if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001392# Two defines needed to enable largefile support on various platforms
1393# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001394AC_DEFINE(_LARGEFILE_SOURCE, 1,
1395[This must be defined on some systems to enable large file support.])
1396AC_DEFINE(_FILE_OFFSET_BITS, 64,
1397[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001398fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001399
Guido van Rossum300fda71996-08-19 21:58:16 +00001400# Add some code to confdefs.h so that the test for off_t works on SCO
1401cat >> confdefs.h <<\EOF
1402#if defined(SCO_DS)
1403#undef _OFF_T
1404#endif
1405EOF
1406
Guido van Rossumef2255b2000-03-10 22:30:29 +00001407# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001408AC_TYPE_MODE_T
1409AC_TYPE_OFF_T
1410AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001411AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001412AC_TYPE_SIZE_T
1413AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001414AC_TYPE_UINT32_T
1415AC_TYPE_UINT64_T
1416AC_TYPE_INT32_T
1417AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001418AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001419 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001420
Guido van Rossumef2255b2000-03-10 22:30:29 +00001421# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001422# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001423AC_CHECK_SIZEOF(int, 4)
1424AC_CHECK_SIZEOF(long, 4)
1425AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001426AC_CHECK_SIZEOF(short, 2)
1427AC_CHECK_SIZEOF(float, 4)
1428AC_CHECK_SIZEOF(double, 8)
1429AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001430AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001431AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001432
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001433AC_MSG_CHECKING(for long long support)
1434have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001435AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001436 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1437 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001438],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001439AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001440if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001441AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001442fi
1443
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001444AC_MSG_CHECKING(for long double support)
1445have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001446AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001447 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1448 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001449],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001450AC_MSG_RESULT($have_long_double)
1451if test "$have_long_double" = yes ; then
1452AC_CHECK_SIZEOF(long double, 16)
1453fi
1454
1455
Thomas Woutersb2137042007-02-01 18:02:27 +00001456AC_MSG_CHECKING(for _Bool support)
1457have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001458AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001459 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1460 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001461],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001462AC_MSG_RESULT($have_c99_bool)
1463if test "$have_c99_bool" = yes ; then
1464AC_CHECK_SIZEOF(_Bool, 1)
1465fi
1466
Thomas Wouters89f507f2006-12-13 04:49:30 +00001467AC_CHECK_TYPES(uintptr_t,
1468 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1469 [], [#ifdef HAVE_STDINT_H
1470 #include <stdint.h>
1471 #endif])
1472
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001473AC_CHECK_SIZEOF(off_t, [], [
1474#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001475#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001476#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001477])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001478
1479AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001480if test "$have_long_long" = yes
1481then
1482if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001483 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001484 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1485 [Defined to enable large file support when an off_t is bigger than a long
1486 and long long is available and at least as big as an off_t. You may need
1487 to add some flags for configuration and compilation to enable this mode.
1488 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001489 AC_MSG_RESULT(yes)
1490else
1491 AC_MSG_RESULT(no)
1492fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001493else
1494 AC_MSG_RESULT(no)
1495fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001496
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001497AC_CHECK_SIZEOF(time_t, [], [
1498#ifdef HAVE_SYS_TYPES_H
1499#include <sys/types.h>
1500#endif
1501#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001502#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001503#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001504])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001505
Trent Mick635f6fb2000-08-23 21:33:05 +00001506# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001507ac_save_cc="$CC"
1508if test "$ac_cv_kpthread" = "yes"
1509then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001510elif test "$ac_cv_kthread" = "yes"
1511then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001512elif test "$ac_cv_pthread" = "yes"
1513then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001514fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001515
Trent Mick635f6fb2000-08-23 21:33:05 +00001516AC_MSG_CHECKING(for pthread_t)
1517have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001518AC_COMPILE_IFELSE([
1519 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1520],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001521AC_MSG_RESULT($have_pthread_t)
1522if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001523 AC_CHECK_SIZEOF(pthread_t, [], [
1524#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001525#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001526#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001527 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001528fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001529CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001530
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001531AC_SUBST(OTHER_LIBTOOL_OPT)
1532case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001533 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001534 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1535 ;;
1536 Darwin/*)
1537 OTHER_LIBTOOL_OPT=""
1538 ;;
1539esac
1540
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001541
1542ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001543AC_SUBST(LIBTOOL_CRUFT)
1544case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001545 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001546 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1547 if test "${enable_universalsdk}"; then
1548 :
1549 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001550 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001551 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001552 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001553 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001554 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001555 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001556 if test ${gcc_version} '<' 4.0
1557 then
1558 LIBTOOL_CRUFT="-lcc_dynamic"
1559 else
1560 LIBTOOL_CRUFT=""
1561 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001562 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001563 #include <unistd.h>
1564 int main(int argc, char*argv[])
1565 {
1566 if (sizeof(long) == 4) {
1567 return 0;
1568 } else {
1569 return 1;
1570 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001571 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001572 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001573
1574 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001575 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001576 i386)
1577 MACOSX_DEFAULT_ARCH="i386"
1578 ;;
1579 ppc)
1580 MACOSX_DEFAULT_ARCH="ppc"
1581 ;;
1582 *)
1583 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1584 ;;
1585 esac
1586 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001587 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001588 i386)
1589 MACOSX_DEFAULT_ARCH="x86_64"
1590 ;;
1591 ppc)
1592 MACOSX_DEFAULT_ARCH="ppc64"
1593 ;;
1594 *)
1595 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1596 ;;
1597 esac
1598
1599 #ARCH_RUN_32BIT="true"
1600 fi
1601
1602 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001603 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001604 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001605esac
1606
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001607AC_MSG_CHECKING(for --enable-framework)
1608if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001609then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001610 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001611 # -F. is needed to allow linking to the framework while
1612 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001613 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1614 [Define if you want to produce an OpenStep/Rhapsody framework
1615 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001616 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001617 if test $enable_shared = "yes"
1618 then
1619 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1620 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001621else
1622 AC_MSG_RESULT(no)
1623fi
1624
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001625AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001626case $ac_sys_system/$ac_sys_release in
1627 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001628 AC_DEFINE(WITH_DYLD, 1,
1629 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1630 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1631 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001632 AC_MSG_RESULT(always on for Darwin)
1633 ;;
1634 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001635 AC_MSG_RESULT(no)
1636 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001637esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001638
Guido van Rossumac405f61994-09-12 10:56:06 +00001639# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001640AC_SUBST(SO)
1641AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001642AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001643AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001644AC_SUBST(CCSHARED)
1645AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001646# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001647# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001648AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001649if test -z "$SO"
1650then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001651 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001652 hp*|HP*)
1653 case `uname -m` in
1654 ia64) SO=.so;;
1655 *) SO=.sl;;
1656 esac
1657 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001658 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001659 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001660 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001661else
1662 # this might also be a termcap variable, see #610332
1663 echo
1664 echo '====================================================================='
1665 echo '+ +'
1666 echo '+ WARNING: You have set SO in your environment. +'
1667 echo '+ Do you really mean to change the extension for shared libraries? +'
1668 echo '+ Continuing in 10 seconds to let you to ponder. +'
1669 echo '+ +'
1670 echo '====================================================================='
1671 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001672fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001673AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001674
Thomas Wouters477c8d52006-05-27 19:21:47 +00001675AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001676# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001677# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001678# (Shared libraries in this instance are shared modules to be loaded into
1679# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001680AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001681if test -z "$LDSHARED"
1682then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001683 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001684 AIX*)
1685 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001686 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001687 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001688 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001689 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001690 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001691 if test "$GCC" = "yes" ; then
1692 LDSHARED='$(CC) -shared'
1693 LDCXXSHARED='$(CXX) -shared'
1694 else
1695 LDSHARED='$(CC) -G'
1696 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00001697 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001698 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001699 if test "$GCC" = "yes" ; then
1700 LDSHARED='$(CC) -shared'
1701 LDCXXSHARED='$(CXX) -shared'
1702 else
1703 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001704 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001705 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001706 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001707 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001708 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001709 if test "$enable_framework" ; then
1710 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001711 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1712 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001713 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001714 else
1715 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001716 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001717 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001718 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001719 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001720 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001721 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001722 if test "$enable_framework" ; then
1723 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001724 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1725 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001726 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001727 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001728 # No framework, use the Python app as bundle-loader
1729 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001730 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001731 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001732 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001733 Darwin/*)
1734 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1735 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001736
Georg Brandlfcaf9102008-07-16 02:17:56 +00001737 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001738 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001739 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001740 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001741 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001742 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001743 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001744 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001745 else
1746 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001747 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001748 if test "$enable_framework" ; then
1749 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001750 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1751 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001752 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001753 else
1754 # No framework, use the Python app as bundle-loader
1755 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1756 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001757 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001758 fi
1759 fi
1760 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001761 Linux*|GNU*|QNX*)
1762 LDSHARED='$(CC) -shared'
1763 LDCXXSHARED='$(CXX) -shared';;
1764 BSD/OS*/4*)
1765 LDSHARED="gcc -shared"
1766 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001767 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001768 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001769 then
Benjamin Petersonab0a7522010-03-14 15:18:25 +00001770 LDSHARED='$(CC) -shared ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001771 LDCXXSHARED='$(CXX) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001772 else
1773 LDSHARED="ld -Bshareable ${LDFLAGS}"
1774 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001775 OpenBSD*)
1776 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1777 then
1778 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001779 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001780 else
1781 case `uname -r` in
1782 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1783 LDSHARED="ld -Bshareable ${LDFLAGS}"
1784 ;;
1785 *)
1786 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001787 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001788 ;;
1789 esac
1790 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001791 NetBSD*|DragonFly*)
1792 LDSHARED="cc -shared ${LDFLAGS}"
1793 LDCXXSHARED="c++ -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001794 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001795 if test "$GCC" = "yes" ; then
1796 LDSHARED='$(CC) -shared'
1797 LDCXXSHARED='$(CXX) -shared'
1798 else
1799 LDSHARED='$(CC) -G'
1800 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001801 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001802 SCO_SV*)
1803 LDSHARED='$(CC) -Wl,-G,-Bexport'
1804 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1805 CYGWIN*)
1806 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1807 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001808 *) LDSHARED="ld";;
1809 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001810fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001811AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001812LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001813BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001814# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001815# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001816AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001817if test -z "$CCSHARED"
1818then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001819 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001820 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001821 then CCSHARED="-fPIC";
1822 elif test `uname -p` = sparc;
1823 then CCSHARED="-xcode=pic32";
1824 else CCSHARED="-Kpic";
1825 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001826 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001827 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001828 else CCSHARED="+z";
1829 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001830 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001831 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001832 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001833 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001834 if test "$GCC" = "yes"
1835 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001836 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001837 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001838 SCO_SV*)
1839 if test "$GCC" = "yes"
1840 then CCSHARED="-fPIC"
1841 else CCSHARED="-Kpic -belf"
1842 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001843 IRIX*/6*) case $CC in
1844 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001845 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001846 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001847 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001848fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001849AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001850# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001851# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001852AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001853if test -z "$LINKFORSHARED"
1854then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001855 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001856 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001857 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001858 LINKFORSHARED="-Wl,-E -Wl,+s";;
1859# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001860 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001861 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001862 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001863 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001864 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001865 if test "$enable_framework"
1866 then
Jack Jansenda49e192005-01-07 13:08:22 +00001867 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001868 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001869 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001870 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001871 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001872 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001873 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001874 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1875 then
1876 LINKFORSHARED="-Wl,--export-dynamic"
1877 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001878 SunOS/5*) case $CC in
1879 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001880 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001881 then
1882 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001883 fi;;
1884 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001885 CYGWIN*)
1886 if test $enable_shared = "no"
1887 then
1888 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1889 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001890 QNX*)
1891 # -Wl,-E causes the symbols to be added to the dynamic
1892 # symbol table so that they can be found when a module
1893 # is loaded. -N 2048K causes the stack size to be set
1894 # to 2048 kilobytes so that the stack doesn't overflow
1895 # when running test_compile.py.
1896 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001897 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001898fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001899AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001900
Georg Brandl93de2162008-07-16 02:21:06 +00001901
Neil Schemenauer61c51152001-01-26 16:18:16 +00001902AC_SUBST(CFLAGSFORSHARED)
1903AC_MSG_CHECKING(CFLAGSFORSHARED)
1904if test ! "$LIBRARY" = "$LDLIBRARY"
1905then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001906 case $ac_sys_system in
1907 CYGWIN*)
1908 # Cygwin needs CCSHARED when building extension DLLs
1909 # but not when building the interpreter DLL.
1910 CFLAGSFORSHARED='';;
1911 *)
1912 CFLAGSFORSHARED='$(CCSHARED)'
1913 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001914fi
1915AC_MSG_RESULT($CFLAGSFORSHARED)
1916
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001917# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1918# library (with --enable-shared).
1919# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001920# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1921# if it is not required, since it creates a dependency of the shared library
1922# to LIBS. This, in turn, means that applications linking the shared libpython
1923# don't need to link LIBS explicitly. The default should be only changed
1924# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001925AC_SUBST(SHLIBS)
1926AC_MSG_CHECKING(SHLIBS)
1927case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001928 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001929 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001930esac
1931AC_MSG_RESULT($SHLIBS)
1932
1933
Guido van Rossum627b2d71993-12-24 10:39:16 +00001934# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001935AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1936AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001937
Georg Brandleee31162008-12-07 15:15:22 +00001938# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001939if test "$with_threads" = "yes" -o -z "$with_threads"; then
1940 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1941 # posix4 on Solaris 2.6
1942 # pthread (first!) on Linux
1943fi
1944
Martin v. Löwis19d17342003-06-14 21:03:05 +00001945# check if we need libintl for locale functions
1946AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001947 [AC_DEFINE(WITH_LIBINTL, 1,
1948 [Define to 1 if libintl is needed for locale functions.])
1949 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001950
1951# checks for system dependent C++ extensions support
1952case "$ac_sys_system" in
1953 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00001954 AC_LINK_IFELSE([
1955 AC_LANG_PROGRAM([[#include "/usr/lpp/xlC/include/load.h"]],
1956 [[loadAndInit("", 0, "")]])
1957 ],[
1958 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001959 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1960 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00001961 AC_MSG_RESULT(yes)
1962 ],[
1963 AC_MSG_RESULT(no)
1964 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001965 *) ;;
1966esac
1967
Guido van Rossum70c7f481998-03-26 18:44:10 +00001968# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001969AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001970AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001971
Guido van Rossumc5a39031996-07-31 17:35:03 +00001972AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001973AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001974 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001975[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001976AC_MSG_RESULT($withval)
1977LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001978],
1979[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001980
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001981AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1982
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001983# Check for use of the system expat library
1984AC_MSG_CHECKING(for --with-system-expat)
1985AC_ARG_WITH(system_expat,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001986 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]))
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001987
1988AC_MSG_RESULT($with_system_expat)
1989
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001990# Check for use of the system libffi library
1991AC_MSG_CHECKING(for --with-system-ffi)
1992AC_ARG_WITH(system_ffi,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001993 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]))
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001994
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001995if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001996 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1997else
1998 LIBFFI_INCLUDEDIR=""
1999fi
2000AC_SUBST(LIBFFI_INCLUDEDIR)
2001
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002002AC_MSG_RESULT($with_system_ffi)
2003
Matthias Klose55708cc2009-04-30 08:06:49 +00002004# Check for --with-dbmliborder
2005AC_MSG_CHECKING(for --with-dbmliborder)
2006AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002007 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 +00002008[
2009if test x$with_dbmliborder = xyes
2010then
2011AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2012else
2013 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2014 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2015 then
2016 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2017 fi
2018 done
2019fi])
2020AC_MSG_RESULT($with_dbmliborder)
2021
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002022# Determine if signalmodule should be used.
2023AC_SUBST(USE_SIGNAL_MODULE)
2024AC_SUBST(SIGNAL_OBJS)
2025AC_MSG_CHECKING(for --with-signal-module)
2026AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002027 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002028
2029if test -z "$with_signal_module"
2030then with_signal_module="yes"
2031fi
2032AC_MSG_RESULT($with_signal_module)
2033
2034if test "${with_signal_module}" = "yes"; then
2035 USE_SIGNAL_MODULE=""
2036 SIGNAL_OBJS=""
2037else
2038 USE_SIGNAL_MODULE="#"
2039 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2040fi
2041
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002042# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002043AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002044USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002045
Guido van Rossum54d93d41997-01-22 20:51:58 +00002046AC_MSG_CHECKING(for --with-dec-threads)
2047AC_SUBST(LDLAST)
2048AC_ARG_WITH(dec-threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002049 AS_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002050[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002051AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002052LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002053if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002054 with_thread="$withval";
2055fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002056[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002057
Martin v. Löwis11437992002-04-12 09:54:03 +00002058# Templates for things AC_DEFINEd more than once.
2059# For a single AC_DEFINE, no template is needed.
2060AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2061AH_TEMPLATE(_REENTRANT,
2062 [Define to force use of thread-safe errno, h_errno, and other functions])
2063AH_TEMPLATE(WITH_THREAD,
2064 [Define if you want to compile in rudimentary thread support])
2065
Guido van Rossum54d93d41997-01-22 20:51:58 +00002066AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002067dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002068AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002069 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002070
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002071# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002072dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002073AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002074 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002075 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002076
2077if test -z "$with_threads"
2078then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002079fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002080AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002081
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002082AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002083if test "$with_threads" = "no"
2084then
2085 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002086elif test "$ac_cv_pthread_is_default" = yes
2087then
2088 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002089 # Defining _REENTRANT on system with POSIX threads should not hurt.
2090 AC_DEFINE(_REENTRANT)
2091 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002092 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002093elif test "$ac_cv_kpthread" = "yes"
2094then
2095 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002096 if test "$ac_cv_cxx_thread" = "yes"; then
2097 CXX="$CXX -Kpthread"
2098 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002099 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002100 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002101 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002102elif test "$ac_cv_kthread" = "yes"
2103then
2104 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002105 if test "$ac_cv_cxx_thread" = "yes"; then
2106 CXX="$CXX -Kthread"
2107 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002108 AC_DEFINE(WITH_THREAD)
2109 posix_threads=yes
2110 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002111elif test "$ac_cv_pthread" = "yes"
2112then
2113 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002114 if test "$ac_cv_cxx_thread" = "yes"; then
2115 CXX="$CXX -pthread"
2116 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002117 AC_DEFINE(WITH_THREAD)
2118 posix_threads=yes
2119 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002120else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002121 if test ! -z "$with_threads" -a -d "$with_threads"
2122 then LDFLAGS="$LDFLAGS -L$with_threads"
2123 fi
2124 if test ! -z "$withval" -a -d "$withval"
2125 then LDFLAGS="$LDFLAGS -L$withval"
2126 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002127
2128 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002129 # define _POSIX_THREADS in unistd.h. Some apparently don't
2130 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002131 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2132 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002133 [
2134#include <unistd.h>
2135#ifdef _POSIX_THREADS
2136yes
2137#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002138 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2139 AC_MSG_RESULT($unistd_defines_pthreads)
2140
Martin v. Löwis130fb172001-07-19 11:00:41 +00002141 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002142 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2143 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002144 AC_DEFINE(HURD_C_THREADS, 1,
2145 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002146 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002147 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002148 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2149 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002150 AC_DEFINE(MACH_C_THREADS, 1,
2151 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002152 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002153 # Just looking for pthread_create in libpthread is not enough:
2154 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2155 # So we really have to include pthread.h, and then link.
2156 _libs=$LIBS
2157 LIBS="$LIBS -lpthread"
2158 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002159 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002160
Matthias Kloseb159a552010-04-25 21:00:44 +00002161void * start_routine (void *arg) { exit (0); }]], [[
2162pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002163 AC_MSG_RESULT(yes)
2164 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002165 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002166 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002167 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002168 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002169 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002170 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002171 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002172 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002173 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002174 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002175 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002176 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002177 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002178 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002179 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002180 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002181 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002182 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002183 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002184 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002185 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002186 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002187 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002188 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002189
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002190 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2191 LIBS="$LIBS -lmpc"
2192 THREADOBJ="Python/thread.o"
2193 USE_THREAD_MODULE=""])
2194
2195 if test "$posix_threads" != "yes"; then
2196 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2197 LIBS="$LIBS -lthread"
2198 THREADOBJ="Python/thread.o"
2199 USE_THREAD_MODULE=""])
2200 fi
2201
2202 if test "$USE_THREAD_MODULE" != "#"
2203 then
2204 # If the above checks didn't disable threads, (at least) OSF1
2205 # needs this '-threads' argument during linking.
2206 case $ac_sys_system in
2207 OSF1) LDLAST=-threads;;
2208 esac
2209 fi
2210fi
2211
2212if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002213 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002214 AC_DEFINE(_POSIX_THREADS, 1,
2215 [Define if you have POSIX threads,
2216 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002217 fi
2218
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002219 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2220 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002221 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002222 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002223 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002224 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002225 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002226 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002227 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002228 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002229 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002230 esac
2231
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002232 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2233 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002234 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002235 void *foo(void *parm) {
2236 return NULL;
2237 }
2238 main() {
2239 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002240 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002241 if (pthread_attr_init(&attr)) exit(-1);
2242 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002243 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002244 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002245 }]])],
2246 [ac_cv_pthread_system_supported=yes],
2247 [ac_cv_pthread_system_supported=no],
2248 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002249 ])
2250 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2251 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002252 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002253 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002254 AC_CHECK_FUNCS(pthread_sigmask,
2255 [case $ac_sys_system in
2256 CYGWIN*)
2257 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2258 [Define if pthread_sigmask() does not work on your system.])
2259 ;;
2260 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002261fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002262
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002263
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002264# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002265AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002266AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002267AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002268[ --enable-ipv6 Enable ipv6 (with ipv4) support
2269 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002270[ case "$enableval" in
2271 no)
2272 AC_MSG_RESULT(no)
2273 ipv6=no
2274 ;;
2275 *) AC_MSG_RESULT(yes)
2276 AC_DEFINE(ENABLE_IPV6)
2277 ipv6=yes
2278 ;;
2279 esac ],
2280
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002281[
2282dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002283 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002284#include <sys/types.h>
2285#include <sys/socket.h>
2286main()
2287{
2288 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2289 exit(1);
2290 else
2291 exit(0);
2292}
Matthias Kloseb159a552010-04-25 21:00:44 +00002293]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002294 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002295 ipv6=yes
2296],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002297 AC_MSG_RESULT(no)
2298 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002299],[
2300 AC_MSG_RESULT(no)
2301 ipv6=no
2302])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002303
2304if test "$ipv6" = "yes"; then
2305 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002306 AC_COMPILE_IFELSE([
2307 AC_LANG_PROGRAM([[#include <sys/types.h>
2308#include <netinet/in.h>]],
2309 [[struct sockaddr_in6 x;
2310 x.sin6_scope_id;]])
2311 ],[
2312 AC_MSG_RESULT(yes)
2313 ipv6=yes
2314 ],[
2315 AC_MSG_RESULT(no, IPv6 disabled)
2316 ipv6=no
2317 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002318fi
2319
2320if test "$ipv6" = "yes"; then
2321 AC_DEFINE(ENABLE_IPV6)
2322fi
2323])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002324
2325ipv6type=unknown
2326ipv6lib=none
2327ipv6trylibc=no
2328
2329if test "$ipv6" = "yes"; then
2330 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002331 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2332 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333 case $i in
2334 inria)
2335 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002336 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002337#include <netinet/in.h>
2338#ifdef IPV6_INRIA_VERSION
2339yes
2340#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002341 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002342 ;;
2343 kame)
2344 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002345 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002346#include <netinet/in.h>
2347#ifdef __KAME__
2348yes
2349#endif],
2350 [ipv6type=$i;
2351 ipv6lib=inet6
2352 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002353 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002354 ;;
2355 linux-glibc)
2356 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002357 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002358#include <features.h>
2359#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2360yes
2361#endif],
2362 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002363 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002364 ;;
2365 linux-inet6)
2366 dnl http://www.v6.linux.or.jp/
2367 if test -d /usr/inet6; then
2368 ipv6type=$i
2369 ipv6lib=inet6
2370 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002371 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002372 fi
2373 ;;
2374 solaris)
2375 if test -f /etc/netconfig; then
2376 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2377 ipv6type=$i
2378 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002379 fi
2380 fi
2381 ;;
2382 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002383 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384#include <sys/param.h>
2385#ifdef _TOSHIBA_INET6
2386yes
2387#endif],
2388 [ipv6type=$i;
2389 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002390 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002391 ;;
2392 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002393 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002394#include </usr/local/v6/include/sys/v6config.h>
2395#ifdef __V6D__
2396yes
2397#endif],
2398 [ipv6type=$i;
2399 ipv6lib=v6;
2400 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002401 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002402 ;;
2403 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002404 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002405#include <sys/param.h>
2406#ifdef _ZETA_MINAMI_INET6
2407yes
2408#endif],
2409 [ipv6type=$i;
2410 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002411 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002412 ;;
2413 esac
2414 if test "$ipv6type" != "unknown"; then
2415 break
2416 fi
2417 done
2418 AC_MSG_RESULT($ipv6type)
2419fi
2420
2421if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2422 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2423 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2424 echo "using lib$ipv6lib"
2425 else
2426 if test $ipv6trylibc = "yes"; then
2427 echo "using libc"
2428 else
2429 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2430 echo "You need to fetch lib$ipv6lib.a from appropriate"
2431 echo 'ipv6 kit and compile beforehand.'
2432 exit 1
2433 fi
2434 fi
2435fi
2436
Georg Brandl93de2162008-07-16 02:21:06 +00002437AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002438AC_COMPILE_IFELSE([
2439 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2440],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002441 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002442 AC_MSG_RESULT(yes)
2443],[
Georg Brandl93de2162008-07-16 02:21:06 +00002444 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002445])
Georg Brandl93de2162008-07-16 02:21:06 +00002446
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002447# Check for --with-doc-strings
2448AC_MSG_CHECKING(for --with-doc-strings)
2449AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002450 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002451
2452if test -z "$with_doc_strings"
2453then with_doc_strings="yes"
2454fi
2455if test "$with_doc_strings" != "no"
2456then
2457 AC_DEFINE(WITH_DOC_STRINGS, 1,
2458 [Define if you want documentation strings in extension modules])
2459fi
2460AC_MSG_RESULT($with_doc_strings)
2461
Neil Schemenauera35c6882001-02-27 04:45:05 +00002462# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002463AC_MSG_CHECKING(for --with-tsc)
2464AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002465 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002466if test "$withval" != no
2467then
2468 AC_DEFINE(WITH_TSC, 1,
2469 [Define to profile with the Pentium timestamp counter])
2470 AC_MSG_RESULT(yes)
2471else AC_MSG_RESULT(no)
2472fi],
2473[AC_MSG_RESULT(no)])
2474
2475# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002476AC_MSG_CHECKING(for --with-pymalloc)
2477AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002478 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002479
2480if test -z "$with_pymalloc"
2481then with_pymalloc="yes"
2482fi
2483if test "$with_pymalloc" != "no"
2484then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002485 AC_DEFINE(WITH_PYMALLOC, 1,
2486 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002487fi
2488AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002489
Benjamin Peterson05159c42009-12-03 03:01:27 +00002490# Check for Valgrind support
2491AC_MSG_CHECKING([for --with-valgrind])
2492AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002493 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002494 with_valgrind=no)
2495AC_MSG_RESULT([$with_valgrind])
2496if test "$with_valgrind" != no; then
2497 AC_CHECK_HEADER([valgrind/valgrind.h],
2498 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2499 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2500 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002501 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002502fi
2503
Barry Warsawef82cd72000-06-30 16:21:01 +00002504# Check for --with-wctype-functions
2505AC_MSG_CHECKING(for --with-wctype-functions)
2506AC_ARG_WITH(wctype-functions,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002507 AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002508[
Barry Warsawef82cd72000-06-30 16:21:01 +00002509if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002510then
2511 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2512 [Define if you want wctype.h functions to be used instead of the
2513 one supplied by Python itself. (see Include/unicodectype.h).])
2514 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002515else AC_MSG_RESULT(no)
2516fi],
2517[AC_MSG_RESULT(no)])
2518
Guido van Rossum68242b51996-05-28 22:53:03 +00002519# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002520AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002521DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002522
Guido van Rossume97ee181999-12-20 21:27:22 +00002523# the dlopen() function means we might want to use dynload_shlib.o. some
2524# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002525AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002526
2527# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2528# loading of modules.
2529AC_SUBST(DYNLOADFILE)
2530AC_MSG_CHECKING(DYNLOADFILE)
2531if test -z "$DYNLOADFILE"
2532then
2533 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002534 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2535 if test "$ac_cv_func_dlopen" = yes
2536 then DYNLOADFILE="dynload_shlib.o"
2537 else DYNLOADFILE="dynload_aix.o"
2538 fi
2539 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002540 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002541 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2542 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002543 *)
2544 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2545 # out any dynamic loading
2546 if test "$ac_cv_func_dlopen" = yes
2547 then DYNLOADFILE="dynload_shlib.o"
2548 else DYNLOADFILE="dynload_stub.o"
2549 fi
2550 ;;
2551 esac
2552fi
2553AC_MSG_RESULT($DYNLOADFILE)
2554if test "$DYNLOADFILE" != "dynload_stub.o"
2555then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002556 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2557 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002558fi
2559
Jack Jansenc49e5b72001-06-19 15:00:23 +00002560# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2561
2562AC_SUBST(MACHDEP_OBJS)
2563AC_MSG_CHECKING(MACHDEP_OBJS)
2564if test -z "$MACHDEP_OBJS"
2565then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002566 MACHDEP_OBJS=$extra_machdep_objs
2567else
2568 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002569fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002570AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002571
Guido van Rossum627b2d71993-12-24 10:39:16 +00002572# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002573AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2574 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002575 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002576 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002577 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002578 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002579 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002580 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2581 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002582 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
Jean-Paul Calderone6ed7ac42010-06-19 19:58:37 +00002583 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002584 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002585 truncate uname unsetenv utimes waitpid wait3 wait4 \
2586 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002587
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002588# For some functions, having a definition is not sufficient, since
2589# we want to take their address.
2590AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002591AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2592 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2593 AC_MSG_RESULT(yes)],
2594 [AC_MSG_RESULT(no)
2595])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002596AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002597AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2598 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2599 AC_MSG_RESULT(yes)],
2600 [AC_MSG_RESULT(no)
2601])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002602AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002603AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2604 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2605 AC_MSG_RESULT(yes)],
2606 [AC_MSG_RESULT(no)
2607])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002608AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002609AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2610 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2611 AC_MSG_RESULT(yes)],
2612 [AC_MSG_RESULT(no)
2613])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002614AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002615AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2616 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2617 AC_MSG_RESULT(yes)],
2618 [AC_MSG_RESULT(no)
2619])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002620AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002621AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2622 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2623 AC_MSG_RESULT(yes)],
2624 [AC_MSG_RESULT(no)
2625])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002626AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002627AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2628 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2629 AC_MSG_RESULT(yes)],
2630 [AC_MSG_RESULT(no)
2631])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002632AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002633AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002634#include <sys/types.h>
2635#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002636 ]], [[int x=kqueue()]])],
2637 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2638 AC_MSG_RESULT(yes)],
2639 [AC_MSG_RESULT(no)
2640])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002641# On some systems (eg. FreeBSD 5), we would find a definition of the
2642# functions ctermid_r, setgroups in the library, but no prototype
2643# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2644# address to avoid compiler warnings and potential miscompilations
2645# because of the missing prototypes.
2646
2647AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002648AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002649#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002650]], [[void* p = ctermid_r]])],
2651 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2652 AC_MSG_RESULT(yes)],
2653 [AC_MSG_RESULT(no)
2654])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002655
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002656AC_MSG_CHECKING(for flock)
Matthias Kloseb159a552010-04-25 21:00:44 +00002657AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002658#include <sys/file.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002659]], [[void* p = flock]])],
2660 [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2661 AC_MSG_RESULT(yes)],
2662 [AC_MSG_RESULT(no)
2663])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002664
2665AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002666AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002667#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002668]], [[void* p = getpagesize]])],
2669 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2670 AC_MSG_RESULT(yes)],
2671 [AC_MSG_RESULT(no)
2672])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002673
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002674dnl check for true
2675AC_CHECK_PROGS(TRUE, true, /bin/true)
2676
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002677dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2678dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002679AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002680 AC_CHECK_LIB(resolv, inet_aton)
2681)
2682
Christian Heimesd0764e22007-12-04 15:00:33 +00002683# On Tru64, chflags seems to be present, but calling it will
2684# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002685AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002686AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002687#include <sys/stat.h>
2688#include <unistd.h>
2689int main(int argc, char*argv[])
2690{
2691 if(chflags(argv[0], 0) != 0)
2692 return 1;
2693 return 0;
2694}
Matthias Kloseb159a552010-04-25 21:00:44 +00002695]]])],
2696[ac_cv_have_chflags=yes],
2697[ac_cv_have_chflags=no],
2698[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002699])
2700if test "$ac_cv_have_chflags" = cross ; then
2701 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2702fi
2703if test "$ac_cv_have_chflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002704 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002705fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002706
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002707AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00002708AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Christian Heimesd0764e22007-12-04 15:00:33 +00002709#include <sys/stat.h>
2710#include <unistd.h>
2711int main(int argc, char*argv[])
2712{
2713 if(lchflags(argv[0], 0) != 0)
2714 return 1;
2715 return 0;
2716}
Matthias Kloseb159a552010-04-25 21:00:44 +00002717]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002718])
2719if test "$ac_cv_have_lchflags" = cross ; then
2720 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2721fi
2722if test "$ac_cv_have_lchflags" = yes ; then
Matthias Klosec80c93f2010-04-24 17:04:35 +00002723 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002724fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002725
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002726dnl Check if system zlib has *Copy() functions
2727dnl
2728dnl On MacOSX the linker will search for dylibs on the entire linker path
2729dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2730dnl to revert to a more traditional unix behaviour and make it possible to
2731dnl override the system libz with a local static library of libz. Temporarily
2732dnl add that flag to our CFLAGS as well to ensure that we check the version
2733dnl of libz that will be used by setup.py.
2734dnl The -L/usr/local/lib is needed as wel to get the same compilation
2735dnl environment as setup.py (and leaving it out can cause configure to use the
2736dnl wrong version of the library)
2737case $ac_sys_system/$ac_sys_release in
2738Darwin/*)
2739 _CUR_CFLAGS="${CFLAGS}"
2740 _CUR_LDFLAGS="${LDFLAGS}"
2741 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2742 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2743 ;;
2744esac
2745
Matthias Klosec80c93f2010-04-24 17:04:35 +00002746AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002747
2748case $ac_sys_system/$ac_sys_release in
2749Darwin/*)
2750 CFLAGS="${_CUR_CFLAGS}"
2751 LDFLAGS="${_CUR_LDFLAGS}"
2752 ;;
2753esac
2754
Martin v. Löwise9416172003-05-03 10:12:45 +00002755AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002756AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002757#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002758]], [[void* p = hstrerror; hstrerror(0)]])],
2759 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2760 AC_MSG_RESULT(yes)],
2761 [AC_MSG_RESULT(no)
2762])
Martin v. Löwise9416172003-05-03 10:12:45 +00002763
2764AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002765AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002766#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002767#include <sys/socket.h>
2768#include <netinet/in.h>
2769#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002770]], [[void* p = inet_aton;inet_aton(0,0)]])],
2771 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2772 AC_MSG_RESULT(yes)],
2773 [AC_MSG_RESULT(no)
2774])
Martin v. Löwise9416172003-05-03 10:12:45 +00002775
2776AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002777AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002778#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002779#include <sys/socket.h>
2780#include <netinet/in.h>
2781#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002782]], [[void* p = inet_pton]])],
2783 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2784 AC_MSG_RESULT(yes)],
2785 [AC_MSG_RESULT(no)
2786])
Martin v. Löwise9416172003-05-03 10:12:45 +00002787
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002788# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002789AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002790AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002791#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002792#ifdef HAVE_GRP_H
2793#include <grp.h>
2794#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002795]], [[void* p = setgroups]])],
2796 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2797 AC_MSG_RESULT(yes)],
2798 [AC_MSG_RESULT(no)
2799])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002800
Fred Drake8cef4cf2000-06-28 16:40:38 +00002801# check for openpty and forkpty
2802
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002803AC_CHECK_FUNCS(openpty,,
2804 AC_CHECK_LIB(util,openpty,
2805 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2806 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2807 )
2808)
2809AC_CHECK_FUNCS(forkpty,,
2810 AC_CHECK_LIB(util,forkpty,
2811 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2812 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2813 )
2814)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002815
Christian Heimesb186d002008-03-18 15:15:01 +00002816# Stuff for expat.
2817AC_CHECK_FUNCS(memmove)
2818
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002819# check for long file support functions
2820AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2821
Christian Heimesb186d002008-03-18 15:15:01 +00002822AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002823AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002824 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2825 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2826 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827)
Jack Jansen150753c2003-03-29 22:07:47 +00002828AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002829 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2830 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2831 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002832)
2833AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002834 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2835 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2836 [],
2837 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2838 [Define if gettimeofday() does not have second (timezone) argument
2839 This is the case on Motorola V4 (R40V4.2)])
2840 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002841)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002842
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002843AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002844AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002845#if defined(MAJOR_IN_MKDEV)
2846#include <sys/mkdev.h>
2847#elif defined(MAJOR_IN_SYSMACROS)
2848#include <sys/sysmacros.h>
2849#else
2850#include <sys/types.h>
2851#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002852]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002853 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002854]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002855 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2856 [Define to 1 if you have the device macros.])
2857 AC_MSG_RESULT(yes)
2858],[
2859 AC_MSG_RESULT(no)
2860])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002861
2862# On OSF/1 V5.1, getaddrinfo is available, but a define
2863# for [no]getaddrinfo in netdb.h.
2864AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002865AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002866#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002867#include <sys/socket.h>
2868#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002869#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002870]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2871[have_getaddrinfo=yes],
2872[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002873AC_MSG_RESULT($have_getaddrinfo)
2874if test $have_getaddrinfo = yes
2875then
2876 AC_MSG_CHECKING(getaddrinfo bug)
2877 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002878 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002879#include <sys/types.h>
2880#include <netdb.h>
2881#include <string.h>
2882#include <sys/socket.h>
2883#include <netinet/in.h>
2884
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002885int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002886{
2887 int passive, gaierr, inet4 = 0, inet6 = 0;
2888 struct addrinfo hints, *ai, *aitop;
2889 char straddr[INET6_ADDRSTRLEN], strport[16];
2890
2891 for (passive = 0; passive <= 1; passive++) {
2892 memset(&hints, 0, sizeof(hints));
2893 hints.ai_family = AF_UNSPEC;
2894 hints.ai_flags = passive ? AI_PASSIVE : 0;
2895 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002896 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002897 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2898 (void)gai_strerror(gaierr);
2899 goto bad;
2900 }
2901 for (ai = aitop; ai; ai = ai->ai_next) {
2902 if (ai->ai_addr == NULL ||
2903 ai->ai_addrlen == 0 ||
2904 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2905 straddr, sizeof(straddr), strport, sizeof(strport),
2906 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2907 goto bad;
2908 }
2909 switch (ai->ai_family) {
2910 case AF_INET:
2911 if (strcmp(strport, "54321") != 0) {
2912 goto bad;
2913 }
2914 if (passive) {
2915 if (strcmp(straddr, "0.0.0.0") != 0) {
2916 goto bad;
2917 }
2918 } else {
2919 if (strcmp(straddr, "127.0.0.1") != 0) {
2920 goto bad;
2921 }
2922 }
2923 inet4++;
2924 break;
2925 case AF_INET6:
2926 if (strcmp(strport, "54321") != 0) {
2927 goto bad;
2928 }
2929 if (passive) {
2930 if (strcmp(straddr, "::") != 0) {
2931 goto bad;
2932 }
2933 } else {
2934 if (strcmp(straddr, "::1") != 0) {
2935 goto bad;
2936 }
2937 }
2938 inet6++;
2939 break;
2940 case AF_UNSPEC:
2941 goto bad;
2942 break;
2943 default:
2944 /* another family support? */
2945 break;
2946 }
2947 }
2948 }
2949
2950 if (!(inet4 == 0 || inet4 == 2))
2951 goto bad;
2952 if (!(inet6 == 0 || inet6 == 2))
2953 goto bad;
2954
2955 if (aitop)
2956 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002957 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002958
2959 bad:
2960 if (aitop)
2961 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002962 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002963}
Matthias Kloseb159a552010-04-25 21:00:44 +00002964]]])],
2965[ac_cv_buggy_getaddrinfo=no],
2966[ac_cv_buggy_getaddrinfo=yes],
2967[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002968fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002969
Mark Dickinson2df5d282009-12-31 21:22:50 +00002970if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002971then
2972 if test $ipv6 = yes
2973 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002974 echo 'Fatal: You must get working getaddrinfo() function.'
2975 echo ' or you can specify "--disable-ipv6"'.
2976 exit 1
2977 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002978else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002979 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002981AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002982
Guido van Rossum627b2d71993-12-24 10:39:16 +00002983# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002984AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002985AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002986AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002987AC_CHECK_MEMBERS([struct stat.st_rdev])
2988AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002989AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002990AC_CHECK_MEMBERS([struct stat.st_gen])
2991AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002992AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002993
2994AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00002995AC_CACHE_VAL(ac_cv_header_time_altzone,[
2996 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
2997 [ac_cv_header_time_altzone=yes],
2998 [ac_cv_header_time_altzone=no])
2999 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003000AC_MSG_RESULT($ac_cv_header_time_altzone)
3001if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003002 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003003fi
3004
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003005was_it_defined=no
3006AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003007AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003008#include <sys/types.h>
3009#include <sys/select.h>
3010#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003011]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003012 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3013 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3014 (which you can't on SCO ODT 3.0).])
3015 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003016],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003017AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003018
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003019AC_MSG_CHECKING(for addrinfo)
3020AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003021AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3022 [ac_cv_struct_addrinfo=yes],
3023 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003024AC_MSG_RESULT($ac_cv_struct_addrinfo)
3025if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003026 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003027fi
3028
3029AC_MSG_CHECKING(for sockaddr_storage)
3030AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003031AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003032# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003033# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3034 [ac_cv_struct_sockaddr_storage=yes],
3035 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003036AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3037if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003038 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003039fi
3040
Guido van Rossum627b2d71993-12-24 10:39:16 +00003041# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003042
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003043AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003044AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003045
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003046works=no
3047AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003048AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3049 [works=yes],
3050 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003051)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003052AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003053
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003054works=no
3055AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003056AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3057 [works=yes],
3058 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003059)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003060AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003061
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003062have_prototypes=no
3063AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003064AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3065 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3066 [Define if your compiler supports function prototype])
3067 have_prototypes=yes],
3068 []
3069)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003070AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003071
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003072works=no
3073AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003074AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003075#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003076int foo(int x, ...) {
3077 va_list va;
3078 va_start(va, x);
3079 va_arg(va, int);
3080 va_arg(va, char *);
3081 va_arg(va, double);
3082 return 0;
3083}
Matthias Kloseb159a552010-04-25 21:00:44 +00003084]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003085 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3086 [Define if your compiler supports variable length function prototypes
3087 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3088 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003089],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003090AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003091
Dave Cole331708b2004-08-09 04:51:41 +00003092# check for socketpair
3093AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003094AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003095#include <sys/types.h>
3096#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003097]], [[void *x=socketpair]])],
3098 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3099 AC_MSG_RESULT(yes)],
3100 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003101)
3102
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003103# check if sockaddr has sa_len member
3104AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003105AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3106#include <sys/socket.h>]], [[struct sockaddr x;
3107x.sa_len = 0;]])],
3108 [AC_MSG_RESULT(yes)
3109 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3110 [AC_MSG_RESULT(no)]
3111)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003112
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003113va_list_is_array=no
3114AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003115AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003116#ifdef HAVE_STDARG_PROTOTYPES
3117#include <stdarg.h>
3118#else
3119#include <varargs.h>
3120#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003121]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003122 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3123 va_list_is_array=yes
3124])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003125AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003126
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003127# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003128AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3129 [Define this if you have some version of gethostbyname_r()])
3130
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003131AC_CHECK_FUNC(gethostbyname_r, [
3132 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3133 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3134 OLD_CFLAGS=$CFLAGS
3135 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003136 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003137# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003138 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003139 char *name;
3140 struct hostent *he, *res;
3141 char buffer[2048];
3142 int buflen = 2048;
3143 int h_errnop;
3144
3145 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003146 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003147 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003148 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3149 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003150 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003151 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003152 AC_MSG_RESULT(no)
3153 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003154 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003155# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003156 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003157 char *name;
3158 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003159 char buffer[2048];
3160 int buflen = 2048;
3161 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003162
Matthias Kloseb159a552010-04-25 21:00:44 +00003163 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3164 ]])],
3165 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003166 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003167 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3168 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003169 AC_MSG_RESULT(yes)
3170 ], [
3171 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003172 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3173 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3174# include <netdb.h>
3175 ]], [[
3176 char *name;
3177 struct hostent *he;
3178 struct hostent_data data;
3179
3180 (void) gethostbyname_r(name, he, &data);
3181 ]])],
3182 [
3183 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3184 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3185 [Define this if you have the 3-arg version of gethostbyname_r().])
3186 AC_MSG_RESULT(yes)
3187 ], [
3188 AC_MSG_RESULT(no)
3189 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003190 ])
3191 ])
3192 CFLAGS=$OLD_CFLAGS
3193], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003194 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003195])
3196AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3197AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3198AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003199AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003200AC_SUBST(HAVE_GETHOSTBYNAME)
3201
Guido van Rossum627b2d71993-12-24 10:39:16 +00003202# checks for system services
3203# (none yet)
3204
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003205# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003206AC_CHECK_FUNC(__fpu_control,
3207 [],
3208 [AC_CHECK_LIB(ieee, __fpu_control)
3209])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003210
Guido van Rossum93274221997-05-09 02:42:00 +00003211# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003212AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003213AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003214 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003215[
Guido van Rossum93274221997-05-09 02:42:00 +00003216if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003217then
3218 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3219 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3220 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003221else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003222fi],
3223[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003224
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003225# check for --with-libm=...
3226AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003227case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003228Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003229*) LIBM=-lm
3230esac
Guido van Rossum93274221997-05-09 02:42:00 +00003231AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003232AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003233 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003234[
Guido van Rossum93274221997-05-09 02:42:00 +00003235if test "$withval" = no
3236then LIBM=
3237 AC_MSG_RESULT(force LIBM empty)
3238elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003239then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003240 AC_MSG_RESULT(set LIBM="$withval")
3241else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003242fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003243[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003244
3245# check for --with-libc=...
3246AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003247AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003248AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003249 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003250[
Guido van Rossum93274221997-05-09 02:42:00 +00003251if test "$withval" = no
3252then LIBC=
3253 AC_MSG_RESULT(force LIBC empty)
3254elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003255then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003256 AC_MSG_RESULT(set LIBC="$withval")
3257else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003258fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003259[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003260
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003261# **************************************************
3262# * Check for various properties of floating point *
3263# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003264
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003265AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3266AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003267AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003268#include <string.h>
3269int main() {
3270 double x = 9006104071832581.0;
3271 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3272 return 0;
3273 else
3274 return 1;
3275}
Matthias Kloseb159a552010-04-25 21:00:44 +00003276]])],
3277[ac_cv_little_endian_double=yes],
3278[ac_cv_little_endian_double=no],
3279[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003280AC_MSG_RESULT($ac_cv_little_endian_double)
3281if test "$ac_cv_little_endian_double" = yes
3282then
3283 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3284 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3285 with the least significant byte first])
3286fi
3287
3288AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3289AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003290AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003291#include <string.h>
3292int main() {
3293 double x = 9006104071832581.0;
3294 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3295 return 0;
3296 else
3297 return 1;
3298}
Matthias Kloseb159a552010-04-25 21:00:44 +00003299]])],
3300[ac_cv_big_endian_double=yes],
3301[ac_cv_big_endian_double=no],
3302[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003303AC_MSG_RESULT($ac_cv_big_endian_double)
3304if test "$ac_cv_big_endian_double" = yes
3305then
3306 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3307 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3308 with the most significant byte first])
3309fi
3310
3311# Some ARM platforms use a mixed-endian representation for doubles.
3312# While Python doesn't currently have full support for these platforms
3313# (see e.g., issue 1762561), we can at least make sure that float <-> string
3314# conversions work.
3315AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3316AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003317AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003318#include <string.h>
3319int main() {
3320 double x = 9006104071832581.0;
3321 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3322 return 0;
3323 else
3324 return 1;
3325}
Matthias Kloseb159a552010-04-25 21:00:44 +00003326]])],
3327[ac_cv_mixed_endian_double=yes],
3328[ac_cv_mixed_endian_double=no],
3329[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003330AC_MSG_RESULT($ac_cv_mixed_endian_double)
3331if test "$ac_cv_mixed_endian_double" = yes
3332then
3333 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3334 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3335 in ARM mixed-endian order (byte order 45670123)])
3336fi
3337
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003338# The short float repr introduced in Python 3.1 requires the
3339# correctly-rounded string <-> double conversion functions from
3340# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3341# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003342# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003343# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003344
3345# This inline assembler syntax may also work for suncc and icc,
3346# so we try it on all platforms.
3347
3348AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003349AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003350 unsigned short cw;
3351 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3352 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003353]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003354AC_MSG_RESULT($have_gcc_asm_for_x87)
3355if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003356then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003357 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3358 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003359fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003360
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003361# Detect whether system arithmetic is subject to x87-style double
3362# rounding issues. The result of this test has little meaning on non
3363# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3364# mode is round-to-nearest and double rounding issues are present, and
3365# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3366AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003367# $BASECFLAGS may affect the result
3368ac_save_cc="$CC"
3369CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003370AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003371#include <stdlib.h>
3372#include <math.h>
3373int main() {
3374 volatile double x, y, z;
3375 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3376 x = 0.99999999999999989; /* 1-2**-53 */
3377 y = 1./x;
3378 if (y != 1.)
3379 exit(0);
3380 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3381 x = 1e16;
3382 y = 2.99999;
3383 z = x + y;
3384 if (z != 1e16+4.)
3385 exit(0);
3386 /* both tests show evidence of double rounding */
3387 exit(1);
3388}
Matthias Kloseb159a552010-04-25 21:00:44 +00003389]])],
3390[ac_cv_x87_double_rounding=no],
3391[ac_cv_x87_double_rounding=yes],
3392[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003393CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003394AC_MSG_RESULT($ac_cv_x87_double_rounding)
3395if test "$ac_cv_x87_double_rounding" = yes
3396then
3397 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3398 [Define if arithmetic is subject to x87-style double rounding issue])
3399fi
3400
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003401# ************************************
3402# * Check for mathematical functions *
3403# ************************************
3404
3405LIBS_SAVE=$LIBS
3406LIBS="$LIBS $LIBM"
3407
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003408# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3409# -0. on some architectures.
3410AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3411AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003412AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003413#include <math.h>
3414#include <stdlib.h>
3415int main() {
3416 /* return 0 if either negative zeros don't exist
3417 on this platform or if negative zeros exist
3418 and tanh(-0.) == -0. */
3419 if (atan2(0., -1.) == atan2(-0., -1.) ||
3420 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3421 else exit(1);
3422}
Matthias Kloseb159a552010-04-25 21:00:44 +00003423]])],
3424[ac_cv_tanh_preserves_zero_sign=yes],
3425[ac_cv_tanh_preserves_zero_sign=no],
3426[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003427AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3428if test "$ac_cv_tanh_preserves_zero_sign" = yes
3429then
3430 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3431 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3432fi
3433
Mark Dickinson9c113362009-09-05 10:36:23 +00003434AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3435AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003436AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003437
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003438LIBS=$LIBS_SAVE
3439
Mark Dickinsona614f042009-11-28 12:48:43 +00003440# For multiprocessing module, check that sem_open
3441# actually works. For FreeBSD versions <= 7.2,
3442# the kernel module that provides POSIX semaphores
3443# isn't loaded by default, so an attempt to call
3444# sem_open results in a 'Signal 12' error.
3445AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3446AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003447AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003448#include <unistd.h>
3449#include <fcntl.h>
3450#include <stdio.h>
3451#include <semaphore.h>
3452#include <sys/stat.h>
3453
3454int main(void) {
3455 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3456 if (a == SEM_FAILED) {
3457 perror("sem_open");
3458 return 1;
3459 }
3460 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003461 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003462 return 0;
3463}
Matthias Kloseb159a552010-04-25 21:00:44 +00003464]])],
3465[ac_cv_posix_semaphores_enabled=yes],
3466[ac_cv_posix_semaphores_enabled=no],
3467[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003468)
3469AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3470if test $ac_cv_posix_semaphores_enabled = no
3471then
3472 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3473 [Define if POSIX semaphores aren't enabled on your system])
3474fi
3475
Mark Dickinson10683072009-04-18 21:18:19 +00003476# Multiprocessing check for broken sem_getvalue
3477AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003478AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003479AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003480#include <unistd.h>
3481#include <fcntl.h>
3482#include <stdio.h>
3483#include <semaphore.h>
3484#include <sys/stat.h>
3485
3486int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003487 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003488 int count;
3489 int res;
3490 if(a==SEM_FAILED){
3491 perror("sem_open");
3492 return 1;
3493
3494 }
3495 res = sem_getvalue(a, &count);
3496 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003497 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003498 return res==-1 ? 1 : 0;
3499}
Matthias Kloseb159a552010-04-25 21:00:44 +00003500]])],
3501[ac_cv_broken_sem_getvalue=no],
3502[ac_cv_broken_sem_getvalue=yes],
3503[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003504)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003505AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3506if test $ac_cv_broken_sem_getvalue = yes
3507then
3508 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3509 [define to 1 if your sem_getvalue is broken.])
3510fi
Mark Dickinson10683072009-04-18 21:18:19 +00003511
Mark Dickinsonbd792642009-03-18 20:06:12 +00003512# determine what size digit to use for Python's longs
3513AC_MSG_CHECKING([digit size for Python's longs])
3514AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003515AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003516[case $enable_big_digits in
3517yes)
3518 enable_big_digits=30 ;;
3519no)
3520 enable_big_digits=15 ;;
3521[15|30])
3522 ;;
3523*)
3524 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3525esac
3526AC_MSG_RESULT($enable_big_digits)
3527AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3528],
3529[AC_MSG_RESULT(no value specified)])
3530
Guido van Rossumef2255b2000-03-10 22:30:29 +00003531# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003532AC_CHECK_HEADER(wchar.h, [
3533 AC_DEFINE(HAVE_WCHAR_H, 1,
3534 [Define if the compiler provides a wchar.h header file.])
3535 wchar_h="yes"
3536],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003537wchar_h="no"
3538)
3539
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003540# determine wchar_t size
3541if test "$wchar_h" = yes
3542then
Guido van Rossum67b26592001-10-20 14:21:45 +00003543 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003544fi
3545
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003546AC_MSG_CHECKING(for UCS-4 tcl)
3547have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003548AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003549#include <tcl.h>
3550#if TCL_UTF_MAX != 6
3551# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003552#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003553 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3554 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003555],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003556AC_MSG_RESULT($have_ucs4_tcl)
3557
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003558# check whether wchar_t is signed or not
3559if test "$wchar_h" = yes
3560then
3561 # check whether wchar_t is signed or not
3562 AC_MSG_CHECKING(whether wchar_t is signed)
3563 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003564 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003565 #include <wchar.h>
3566 int main()
3567 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003568 /* Success: exit code 0 */
3569 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003570 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003571 ]])],
3572 [ac_cv_wchar_t_signed=yes],
3573 [ac_cv_wchar_t_signed=no],
3574 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003575 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3576fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003577
Georg Brandl52d168a2008-01-07 18:10:24 +00003578AC_MSG_CHECKING(what type to use for str)
3579AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003580 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003581[
3582if test "$withval" != no
3583then unicode_size="4"
3584else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003585fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003586],
3587[
3588case "$have_ucs4_tcl" in
3589 yes) unicode_size="4" ;;
3590 *) unicode_size="2" ;;
3591esac
3592])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003593
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003594AH_TEMPLATE(Py_UNICODE_SIZE,
3595 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003596case "$unicode_size" in
3597 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3598 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003599esac
3600
Martin v. Löwis11437992002-04-12 09:54:03 +00003601AH_TEMPLATE(PY_UNICODE_TYPE,
3602 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003603
Georg Brandl52d168a2008-01-07 18:10:24 +00003604# wchar_t is only usable if it maps to an unsigned type
3605if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003606 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003607then
3608 PY_UNICODE_TYPE="wchar_t"
3609 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3610 [Define if you have a useable wchar_t type defined in wchar.h; useable
3611 means wchar_t must be an unsigned type with at least 16 bits. (see
3612 Include/unicodeobject.h).])
3613 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3614elif test "$ac_cv_sizeof_short" = "$unicode_size"
3615then
3616 PY_UNICODE_TYPE="unsigned short"
3617 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3618elif test "$ac_cv_sizeof_long" = "$unicode_size"
3619then
3620 PY_UNICODE_TYPE="unsigned long"
3621 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3622else
3623 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003624fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003625AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003626
3627# check for endianness
3628AC_C_BIGENDIAN
3629
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003630# Check whether right shifting a negative integer extends the sign bit
3631# or fills with zeros (like the Cray J90, according to Tim Peters).
3632AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003633AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003634AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003635int main()
3636{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003637 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003638}
Matthias Kloseb159a552010-04-25 21:00:44 +00003639]])],
3640[ac_cv_rshift_extends_sign=yes],
3641[ac_cv_rshift_extends_sign=no],
3642[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003643AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3644if test "$ac_cv_rshift_extends_sign" = no
3645then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003646 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3647 [Define if i>>j for signed int i does not extend the sign bit
3648 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003649fi
3650
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003651# check for getc_unlocked and related locking functions
3652AC_MSG_CHECKING(for getc_unlocked() and friends)
3653AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003654AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003655 FILE *f = fopen("/dev/null", "r");
3656 flockfile(f);
3657 getc_unlocked(f);
3658 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003659]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003660AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3661if test "$ac_cv_have_getc_unlocked" = yes
3662then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003663 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3664 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003665fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003666
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003667# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003668# save the value of LIBS so we don't actually link Python with readline
3669LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003670
3671# On some systems we need to link readline to a termcap compatible
3672# library. NOTE: Keep the precedence of listed libraries synchronised
3673# with setup.py.
3674py_cv_lib_readline=no
3675AC_MSG_CHECKING([how to link readline libs])
3676for py_libtermcap in "" ncursesw ncurses curses termcap; do
3677 if test -z "$py_libtermcap"; then
3678 READLINE_LIBS="-lreadline"
3679 else
3680 READLINE_LIBS="-lreadline -l$py_libtermcap"
3681 fi
3682 LIBS="$READLINE_LIBS $LIBS_no_readline"
3683 AC_LINK_IFELSE(
3684 [AC_LANG_CALL([],[readline])],
3685 [py_cv_lib_readline=yes])
3686 if test $py_cv_lib_readline = yes; then
3687 break
3688 fi
3689done
3690# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3691#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003692if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003693 AC_MSG_RESULT([none])
3694else
3695 AC_MSG_RESULT([$READLINE_LIBS])
3696 AC_DEFINE(HAVE_LIBREADLINE, 1,
3697 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003698fi
3699
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003700# check for readline 2.1
3701AC_CHECK_LIB(readline, rl_callback_handler_install,
3702 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003703 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003704
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003705# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003706AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3707 [have_readline=yes],
3708 [have_readline=no]
3709)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003710if test $have_readline = yes
3711then
3712 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3713 [readline/readline.h],
3714 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3715 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003716 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3717 [readline/readline.h],
3718 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3719 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003720fi
3721
Martin v. Löwis0daad592001-09-30 21:09:59 +00003722# check for readline 4.0
3723AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003724 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003725 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003726
Thomas Wouters89d996e2007-09-08 17:39:28 +00003727# also in 4.0
3728AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3729 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003730 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003731
Guido van Rossum353ae582001-07-10 16:45:32 +00003732# check for readline 4.2
3733AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003734 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003735 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003736
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003737# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003738AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3739 [have_readline=yes],
3740 [have_readline=no]
3741)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003742if test $have_readline = yes
3743then
3744 AC_EGREP_HEADER([extern int rl_catch_signals;],
3745 [readline/readline.h],
3746 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3747 [Define if you can turn off readline's signal handling.]), )
3748fi
3749
Martin v. Löwis82bca632006-02-10 20:49:30 +00003750# End of readline checks: restore LIBS
3751LIBS=$LIBS_no_readline
3752
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003753AC_MSG_CHECKING(for broken nice())
3754AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003755AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003756int main()
3757{
3758 int val1 = nice(1);
3759 if (val1 != -1 && val1 == nice(2))
3760 exit(0);
3761 exit(1);
3762}
Matthias Kloseb159a552010-04-25 21:00:44 +00003763]])],
3764[ac_cv_broken_nice=yes],
3765[ac_cv_broken_nice=no],
3766[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003767AC_MSG_RESULT($ac_cv_broken_nice)
3768if test "$ac_cv_broken_nice" = yes
3769then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003770 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3771 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003772fi
3773
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003774AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003775AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003776AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003777#include <poll.h>
3778
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003779int main()
3780{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003781 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003782 int poll_test;
3783
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003784 close (42);
3785
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003786 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003787 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003788 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003789 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003790 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003791 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003792 return 1;
3793}
Matthias Kloseb159a552010-04-25 21:00:44 +00003794]])],
3795[ac_cv_broken_poll=yes],
3796[ac_cv_broken_poll=no],
3797[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003798AC_MSG_RESULT($ac_cv_broken_poll)
3799if test "$ac_cv_broken_poll" = yes
3800then
3801 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3802 [Define if poll() sets errno on invalid file descriptors.])
3803fi
3804
Brett Cannon43802422005-02-10 20:48:03 +00003805# Before we can test tzset, we need to check if struct tm has a tm_zone
3806# (which is not required by ISO C or UNIX spec) and/or if we support
3807# tzname[]
3808AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003809
Brett Cannon43802422005-02-10 20:48:03 +00003810# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003811AC_MSG_CHECKING(for working tzset())
3812AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003813AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003814#include <stdlib.h>
3815#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003816#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003817
3818#if HAVE_TZNAME
3819extern char *tzname[];
3820#endif
3821
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003822int main()
3823{
Brett Cannon18367812003-09-19 00:59:16 +00003824 /* Note that we need to ensure that not only does tzset(3)
3825 do 'something' with localtime, but it works as documented
3826 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003827 This includes making sure that tzname is set properly if
3828 tm->tm_zone does not exist since it is the alternative way
3829 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003830
3831 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003832 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003833 */
3834
Brett Cannon43802422005-02-10 20:48:03 +00003835 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003836 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3837
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003838 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003839 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003840 if (localtime(&groundhogday)->tm_hour != 0)
3841 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003842#if HAVE_TZNAME
3843 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3844 if (strcmp(tzname[0], "UTC") ||
3845 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3846 exit(1);
3847#endif
Brett Cannon18367812003-09-19 00:59:16 +00003848
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003849 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003850 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003851 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003852 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003853#if HAVE_TZNAME
3854 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3855 exit(1);
3856#endif
Brett Cannon18367812003-09-19 00:59:16 +00003857
3858 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3859 tzset();
3860 if (localtime(&groundhogday)->tm_hour != 11)
3861 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003862#if HAVE_TZNAME
3863 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3864 exit(1);
3865#endif
3866
3867#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003868 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3869 exit(1);
3870 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3871 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003872#endif
Brett Cannon18367812003-09-19 00:59:16 +00003873
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003874 exit(0);
3875}
Matthias Kloseb159a552010-04-25 21:00:44 +00003876]])],
3877[ac_cv_working_tzset=yes],
3878[ac_cv_working_tzset=no],
3879[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003880AC_MSG_RESULT($ac_cv_working_tzset)
3881if test "$ac_cv_working_tzset" = yes
3882then
3883 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3884 [Define if tzset() actually switches the local timezone in a meaningful way.])
3885fi
3886
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003887# Look for subsecond timestamps in struct stat
3888AC_MSG_CHECKING(for tv_nsec in struct stat)
3889AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00003890AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003891struct stat st;
3892st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003893]])],
3894[ac_cv_stat_tv_nsec=yes],
3895[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003896AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3897if test "$ac_cv_stat_tv_nsec" = yes
3898then
3899 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3900 [Define if you have struct stat.st_mtim.tv_nsec])
3901fi
3902
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003903# Look for BSD style subsecond timestamps in struct stat
3904AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3905AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00003906AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003907struct stat st;
3908st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00003909]])],
3910[ac_cv_stat_tv_nsec2=yes],
3911[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003912AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3913if test "$ac_cv_stat_tv_nsec2" = yes
3914then
3915 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3916 [Define if you have struct stat.st_mtimensec])
3917fi
3918
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003919# On HP/UX 11.0, mvwdelch is a block with a return statement
3920AC_MSG_CHECKING(whether mvwdelch is an expression)
3921AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00003922AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003923 int rtn;
3924 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00003925]])],
3926[ac_cv_mvwdelch_is_expression=yes],
3927[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003928AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3929
3930if test "$ac_cv_mvwdelch_is_expression" = yes
3931then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003932 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3933 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003934fi
3935
3936AC_MSG_CHECKING(whether WINDOW has _flags)
3937AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00003938AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003939 WINDOW *w;
3940 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00003941]])],
3942[ac_cv_window_has_flags=yes],
3943[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003944AC_MSG_RESULT($ac_cv_window_has_flags)
3945
3946
3947if test "$ac_cv_window_has_flags" = yes
3948then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003949 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3950 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003951fi
3952
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003953AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00003954AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
3955 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3956 AC_MSG_RESULT(yes)],
3957 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003958)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003959
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003960AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00003961AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
3962 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3963 AC_MSG_RESULT(yes)],
3964 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003965)
3966
3967AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00003968AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
3969 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3970 AC_MSG_RESULT(yes)],
3971 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003972)
3973
Thomas Wouters89f507f2006-12-13 04:49:30 +00003974AC_MSG_CHECKING(for /dev/ptmx)
3975
3976if test -r /dev/ptmx
3977then
3978 AC_MSG_RESULT(yes)
3979 AC_DEFINE(HAVE_DEV_PTMX, 1,
3980 [Define if we have /dev/ptmx.])
3981else
3982 AC_MSG_RESULT(no)
3983fi
3984
3985AC_MSG_CHECKING(for /dev/ptc)
3986
3987if test -r /dev/ptc
3988then
3989 AC_MSG_RESULT(yes)
3990 AC_DEFINE(HAVE_DEV_PTC, 1,
3991 [Define if we have /dev/ptc.])
3992else
3993 AC_MSG_RESULT(no)
3994fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003995
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003996if test "$have_long_long" = yes
3997then
3998 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3999 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004000 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004001 #include <stdio.h>
4002 #include <stddef.h>
4003 #include <string.h>
4004
4005 #ifdef HAVE_SYS_TYPES_H
4006 #include <sys/types.h>
4007 #endif
4008
4009 int main()
4010 {
4011 char buffer[256];
4012
4013 if (sprintf(buffer, "%lld", (long long)123) < 0)
4014 return 1;
4015 if (strcmp(buffer, "123"))
4016 return 1;
4017
4018 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4019 return 1;
4020 if (strcmp(buffer, "-123"))
4021 return 1;
4022
4023 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4024 return 1;
4025 if (strcmp(buffer, "123"))
4026 return 1;
4027
4028 return 0;
4029 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004030 ]]])],
4031 [ac_cv_have_long_long_format=yes],
4032 [ac_cv_have_long_long_format=no],
4033 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004034 )
4035 AC_MSG_RESULT($ac_cv_have_long_long_format)
4036fi
4037
Mark Dickinson89d7d412009-12-31 20:50:59 +00004038if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004039then
4040 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4041 [Define to printf format modifier for long long type])
4042fi
4043
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004044if test $ac_sys_system = Darwin
4045then
4046 LIBS="$LIBS -framework CoreFoundation"
4047fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004048
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004049AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004050AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004051#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004052#include <stddef.h>
4053#include <string.h>
4054
Christian Heimes2c181612007-12-17 20:04:13 +00004055#ifdef HAVE_SYS_TYPES_H
4056#include <sys/types.h>
4057#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004058
4059#ifdef HAVE_SSIZE_T
4060typedef ssize_t Py_ssize_t;
4061#elif SIZEOF_VOID_P == SIZEOF_LONG
4062typedef long Py_ssize_t;
4063#else
4064typedef int Py_ssize_t;
4065#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004066
Christian Heimes2c181612007-12-17 20:04:13 +00004067int main()
4068{
4069 char buffer[256];
4070
Thomas Wouters477c8d52006-05-27 19:21:47 +00004071 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4072 return 1;
4073
Thomas Wouters89f507f2006-12-13 04:49:30 +00004074 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004075 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004076
4077 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4078 return 1;
4079
4080 if (strcmp(buffer, "-123"))
4081 return 1;
4082
Thomas Wouters477c8d52006-05-27 19:21:47 +00004083 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004084}
Matthias Kloseb159a552010-04-25 21:00:44 +00004085]])],
4086 [ac_cv_have_size_t_format=yes],
4087 [ac_cv_have_size_t_format=no],
4088 [ac_cv_have_size_t_format="cross -- assuming yes"
4089])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004090if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004091 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4092 [Define to printf format modifier for Py_ssize_t])
4093fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004094
Martin v. Löwis01c04012002-11-11 14:58:44 +00004095AC_CHECK_TYPE(socklen_t,,
4096 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004097 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004098#ifdef HAVE_SYS_TYPES_H
4099#include <sys/types.h>
4100#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004101#ifdef HAVE_SYS_SOCKET_H
4102#include <sys/socket.h>
4103#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004104])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004105
Antoine Pitroufff95302008-09-03 18:58:51 +00004106AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004107AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004108AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004109#include<stdlib.h>
4110int main() {
4111 size_t len = -1;
4112 const char *str = "text";
4113 len = mbstowcs(NULL, str, 0);
4114 return (len != 4);
4115}
Matthias Kloseb159a552010-04-25 21:00:44 +00004116]])],
4117[ac_cv_broken_mbstowcs=no],
4118[ac_cv_broken_mbstowcs=yes],
4119[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004120AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4121if test "$ac_cv_broken_mbstowcs" = yes
4122then
4123 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4124 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4125 wide chars that would be converted.])
4126fi
4127
Antoine Pitroub52ec782009-01-25 16:34:23 +00004128# Check for --with-computed-gotos
4129AC_MSG_CHECKING(for --with-computed-gotos)
4130AC_ARG_WITH(computed-gotos,
Matthias Klose2b8733f2010-04-25 18:34:36 +00004131 AS_HELP_STRING([--with-computed-gotos],
Matthias Klosec80c93f2010-04-24 17:04:35 +00004132 [Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004133[
4134if test "$withval" != no
4135then
4136 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4137 [Define if you want to use computed gotos in ceval.c.])
4138 AC_MSG_RESULT(yes)
4139else AC_MSG_RESULT(no)
4140fi],
4141[AC_MSG_RESULT(no)])
4142
4143
Jesus Cea6a792292010-05-03 21:18:48 +00004144
4145case $ac_sys_system in
4146 OSF*) AC_MSG_ERROR(OSF* systems are deprecated unless somebody volunteers. Check http://bugs.python.org/issue8606) ;;
4147esac
4148
4149
4150
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004151AC_SUBST(THREADHEADERS)
4152
4153for h in `(cd $srcdir;echo Python/thread_*.h)`
4154do
4155 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4156done
4157
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004158AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004159SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004160AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004161for dir in $SRCDIRS; do
4162 if test ! -d $dir; then
4163 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004164 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004165done
4166AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004167
Guido van Rossum627b2d71993-12-24 10:39:16 +00004168# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004169AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004170AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004171
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004172echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004173if test ! -f Modules/Setup
4174then
4175 cp $srcdir/Modules/Setup.dist Modules/Setup
4176fi
4177
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004178echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004179if test ! -f Modules/Setup.local
4180then
4181 echo "# Edit this file for local setup changes" >Modules/Setup.local
4182fi
4183
4184echo "creating Makefile"
4185$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4186 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004187 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004188mv config.c Modules