blob: 4713d573dbb755655cb57e55035e9e68311b39eb [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson98b1b022008-11-30 14:43:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwis174440b2008-10-03 08:59:41 +00007m4_define(PYTHON_VERSION, 2.7)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalotti130ae152009-07-18 00:31:06 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandl464432d2009-05-20 18:24:08 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Georg Brandlbcd64a32009-03-31 21:45:18 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Ronald Oussoren5640ce22008-06-05 12:58:24 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren988117f2006-04-29 11:31:35 +000089AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000090 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
95 ;;
96 esac
97 case $enableval in
98 no)
99 UNIVERSALSDK=
100 enable_universalsdk=
101 ;;
102 *)
103 UNIVERSALSDK=$enableval
104 ;;
105 esac
106],[
107 UNIVERSALSDK=
108 enable_universalsdk=
109])
110AC_SUBST(UNIVERSALSDK)
111
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000112AC_SUBST(ARCH_RUN_32BIT)
113
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000114UNIVERSAL_ARCHS="32-bit"
115AC_MSG_CHECKING(for --with-universal-archs)
116AC_ARG_WITH(universal-archs,
Ronald Oussoren23d92532009-09-07 06:12:00 +0000117 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000118[
119 AC_MSG_RESULT($withval)
120 UNIVERSAL_ARCHS="$withval"
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000121 if test "${enable_universalsdk}" ; then
122 :
123 else
124 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
125 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000126],
127[
128 AC_MSG_RESULT(32-bit)
129])
130
131
132
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000133AC_ARG_WITH(framework-name,
134 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
135 specify an alternate name of the framework built with --enable-framework),
136[
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000137 if test "${enable_framework}"; then
138 :
139 else
140 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
141 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000142 PYTHONFRAMEWORK=${withval}
143 PYTHONFRAMEWORKDIR=${withval}.framework
144 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
145 ],[
146 PYTHONFRAMEWORK=Python
147 PYTHONFRAMEWORKDIR=Python.framework
148 PYTHONFRAMEWORKIDENTIFIER=org.python.python
149])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000150dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000151AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000152 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
153[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000154 case $enableval in
155 yes)
156 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000157 esac
158 case $enableval in
159 no)
160 PYTHONFRAMEWORK=
161 PYTHONFRAMEWORKDIR=no-framework
162 PYTHONFRAMEWORKPREFIX=
163 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000164 FRAMEWORKINSTALLFIRST=
165 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000166 FRAMEWORKALTINSTALLFIRST=
167 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000168 if test "x${prefix}" = "xNONE"; then
169 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
170 else
171 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
172 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000173 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000174 ;;
175 *)
176 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000177 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000178 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000179 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
180 if test "$UNIVERSAL_ARCHS" = "all"
181 then
182 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000183 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000184 else
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000185 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000186 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
187 fi
188
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000189 if test "x${prefix}" = "xNONE" ; then
190 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
191 else
192 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
193 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000194 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000195
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000196 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000197 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000198 AC_CONFIG_FILES(Mac/Makefile)
199 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
200 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000219
220 if test "$UNIVERSAL_ARCHS" = "all"
221 then
222 FRAMEWORKINSTALLLAST=update4wayuniversal
223 FRAMEWORKALTINSTALLLAST=update4wayuniversal
224 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000225])
226AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000227AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000228AC_SUBST(PYTHONFRAMEWORKDIR)
229AC_SUBST(PYTHONFRAMEWORKPREFIX)
230AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000231AC_SUBST(FRAMEWORKINSTALLFIRST)
232AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000233AC_SUBST(FRAMEWORKALTINSTALLFIRST)
234AC_SUBST(FRAMEWORKALTINSTALLLAST)
235AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000236
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000237##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000238## AC_HELP_STRING(--with-dyld,
239## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000240##
Guido van Rossumb418f891996-07-30 18:06:02 +0000241# Set name for machine-dependent library files
242AC_SUBST(MACHDEP)
243AC_MSG_CHECKING(MACHDEP)
244if test -z "$MACHDEP"
245then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000247 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000248 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000249 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000250 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000251 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000252 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253 ac_md_system=`echo $ac_sys_system |
254 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
255 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000256 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000257 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000258
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000259 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000260 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000261 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000262 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000263 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000264 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000265 esac
266fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000267
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000268# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
269# disable features if it is defined, without any means to access these
270# features as extensions. For these systems, we skip the definition of
271# _XOPEN_SOURCE. Before adding a system to the list to gain access to
272# some feature, make sure there is no alternative way to access this
273# feature. Also, when using wildcards, make sure you have verified the
274# need for not defining _XOPEN_SOURCE on all systems matching the
275# wildcard, and that the wildcard does not include future systems
276# (which may remove their limitations).
277dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
278case $ac_sys_system/$ac_sys_release in
279 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
280 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000281 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000282 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000283 define_xopen_source=no
284 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
285 # also defined. This can be overridden by defining _BSD_SOURCE
286 # As this has a different meaning on Linux, only define it on OpenBSD
287 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
288 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000289 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
290 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
291 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000292 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000293 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000294 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
295 # of union __?sigval. Reported by Stuart Bishop.
296 SunOS/5.6)
297 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000298 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
299 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000300 # Reconfirmed for 7.1.4 by Martin v. Loewis.
301 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000302 define_xopen_source=no;;
303 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000304 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000305 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000306 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000307 # On FreeBSD 4, the math functions C89 does not cover are never defined
308 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
309 FreeBSD/4.*)
310 define_xopen_source=no;;
311 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
312 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
313 # identifies itself as Darwin/7.*
314 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
315 # disables platform specific features beyond repair.
316 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
317 # has no effect, don't bother defining them
318 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000319 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000320 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
321 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
322 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000323 AIX/4)
324 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000325 AIX/5)
326 if test `uname -r` -eq 1; then
327 define_xopen_source=no
328 fi
329 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000330 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
331 # defining NI_NUMERICHOST.
332 QNX/6.3.2)
333 define_xopen_source=no
334 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000335
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000336esac
337
338if test $define_xopen_source = yes
339then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000340 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
341 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000342 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
343 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000344 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000345 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000346 AC_DEFINE(_XOPEN_SOURCE, 500,
347 Define to the level of X/Open that your system supports)
348 ;;
349 *)
350 AC_DEFINE(_XOPEN_SOURCE, 600,
351 Define to the level of X/Open that your system supports)
352 ;;
353 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000354
355 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
356 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
357 # several APIs are not declared. Since this is also needed in some
358 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000359 # except for Solaris 10, where it must not be defined,
360 # as it implies XPG4.2
361 case $ac_sys_system/$ac_sys_release in
362 SunOS/5.10)
363 ;;
364 *)
365 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
366 Define to activate Unix95-and-earlier features)
367 ;;
368 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000369
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000370 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
371
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000372fi
373
Guido van Rossum91922671997-10-09 20:24:13 +0000374#
375# SGI compilers allow the specification of the both the ABI and the
376# ISA on the command line. Depending on the values of these switches,
377# different and often incompatable code will be generated.
378#
379# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
380# thus supply support for various ABI/ISA combinations. The MACHDEP
381# variable is also adjusted.
382#
383AC_SUBST(SGI_ABI)
384if test ! -z "$SGI_ABI"
385then
386 CC="cc $SGI_ABI"
387 LDFLAGS="$SGI_ABI $LDFLAGS"
388 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
389fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000390AC_MSG_RESULT($MACHDEP)
391
Jack Jansen83f898c2002-12-30 22:23:40 +0000392# And add extra plat-mac for darwin
393AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000394AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000395AC_MSG_CHECKING(EXTRAPLATDIR)
396if test -z "$EXTRAPLATDIR"
397then
398 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000399 darwin)
400 EXTRAPLATDIR="\$(PLATMACDIRS)"
401 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
402 ;;
403 *)
404 EXTRAPLATDIR=""
405 EXTRAMACHDEPPATH=""
406 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000407 esac
408fi
409AC_MSG_RESULT($EXTRAPLATDIR)
410
Jack Jansen6b08a402004-06-03 12:41:45 +0000411# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
412# it may influence the way we can build extensions, so distutils
413# needs to check it
414AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000415AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000416CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000417EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000418
Mark Dickinson65134662008-04-25 16:11:04 +0000419AC_MSG_CHECKING(machine type as reported by uname -m)
420ac_sys_machine=`uname -m`
421AC_MSG_RESULT($ac_sys_machine)
422
Guido van Rossum627b2d71993-12-24 10:39:16 +0000423# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000424
425# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
426# for debug/optimization stuff. BASECFLAGS is for flags that are required
427# just to get things to compile and link. Users are free to override OPT
428# when running configure or make. The build should not break if they do.
429# BASECFLAGS should generally not be messed with, however.
430
431# XXX shouldn't some/most/all of this code be merged with the stuff later
432# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000433AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000434AC_ARG_WITH(gcc,
435 AC_HELP_STRING(--without-gcc,never use gcc),
436[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000437 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000438 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000439 without_gcc=yes;;
440 yes) CC=gcc
441 without_gcc=no;;
442 *) CC=$withval
443 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000444 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000445 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000446 AIX*) CC=cc_r
447 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000448 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000449 case $BE_HOST_CPU in
450 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000451 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000452 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000453 BASECFLAGS="$BASECFLAGS -export pragma"
454 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000455 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000456 ;;
457 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000458 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000459 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000460 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000461 ;;
462 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000463 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000464 ;;
465 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000466 AR="\$(srcdir)/Modules/ar_beos"
467 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000468 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000469 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000470 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000471AC_MSG_RESULT($without_gcc)
472
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000473# If the user switches compilers, we can't believe the cache
474if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
475then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000476 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
477(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000478fi
479
Guido van Rossum627b2d71993-12-24 10:39:16 +0000480AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000481
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000482AC_SUBST(CXX)
483AC_SUBST(MAINCC)
484AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
485AC_ARG_WITH(cxx_main,
486 AC_HELP_STRING([--with-cxx-main=<compiler>],
487 [compile main() and link python executable with C++ compiler]),
488[
489
490 case $withval in
491 no) with_cxx_main=no
492 MAINCC='$(CC)';;
493 yes) with_cxx_main=yes
494 MAINCC='$(CXX)';;
495 *) with_cxx_main=yes
496 MAINCC=$withval
497 if test -z "$CXX"
498 then
499 CXX=$withval
500 fi;;
501 esac], [
502 with_cxx_main=no
503 MAINCC='$(CC)'
504])
505AC_MSG_RESULT($with_cxx_main)
506
507preset_cxx="$CXX"
508if test -z "$CXX"
509then
510 case "$CC" in
511 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
512 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
513 esac
514 if test "$CXX" = "notfound"
515 then
516 CXX=""
517 fi
518fi
519if test -z "$CXX"
520then
521 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
522 if test "$CXX" = "notfound"
523 then
524 CXX=""
525 fi
526fi
527if test "$preset_cxx" != "$CXX"
528then
529 AC_MSG_WARN([
530
531 By default, distutils will build C++ extension modules with "$CXX".
532 If this is not intended, then set CXX on the configure command line.
533 ])
534fi
535
536
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000537# checks for UNIX variants that set C preprocessor variables
538AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000539
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000540# Check for unsupported systems
541case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000542atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000543 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
544 echo See README for details.
545 exit 1;;
546esac
547
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000548AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000549AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000550AC_ARG_WITH(suffix,
551 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
552[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000553 case $withval in
554 no) EXEEXT=;;
555 yes) EXEEXT=.exe;;
556 *) EXEEXT=$withval;;
557 esac])
558AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000559
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000560# Test whether we're running on a non-case-sensitive system, in which
561# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000562AC_SUBST(BUILDEXEEXT)
563AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000564if test ! -d CaseSensitiveTestDir; then
565mkdir CaseSensitiveTestDir
566fi
567
568if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000569then
Jack Jansen1999ef42001-12-06 21:47:20 +0000570 AC_MSG_RESULT(yes)
571 BUILDEXEEXT=.exe
572else
573 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000574 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000575fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000576rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000577
Guido van Rossumdd997f71998-10-07 19:58:26 +0000578case $MACHDEP in
579bsdos*)
580 case $CC in
581 gcc) CC="$CC -D_HAVE_BSDI";;
582 esac;;
583esac
584
Guido van Rossum84561611997-08-21 00:08:11 +0000585case $ac_sys_system in
586hp*|HP*)
587 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000588 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000589 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000590SunOS*)
591 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000592 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000593 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000594esac
595
Martin v. Löwise8964d42001-03-06 12:09:07 +0000596
Neil Schemenauer61c51152001-01-26 16:18:16 +0000597AC_SUBST(LIBRARY)
598AC_MSG_CHECKING(LIBRARY)
599if test -z "$LIBRARY"
600then
601 LIBRARY='libpython$(VERSION).a'
602fi
603AC_MSG_RESULT($LIBRARY)
604
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000605# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000606# name of the library into which to insert object files). BLDLIBRARY is also
607# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
608# is blank as the main program is not linked directly against LDLIBRARY.
609# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
610# systems without shared libraries, LDLIBRARY is the same as LIBRARY
611# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
612# DLLLIBRARY is the shared (i.e., DLL) library.
613#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000614# RUNSHARED is used to run shared python without installed libraries
615#
616# INSTSONAME is the name of the shared library that will be use to install
617# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000618AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000619AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000620AC_SUBST(BLDLIBRARY)
621AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000622AC_SUBST(INSTSONAME)
623AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000624LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000625BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000626INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000627DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000628LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000629RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000630
Guido van Rossumfb842551997-08-06 23:42:07 +0000631# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000632# If CXX is set, and if it is needed to link a main function that was
633# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
634# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000635# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000636# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000637AC_SUBST(LINKCC)
638AC_MSG_CHECKING(LINKCC)
639if test -z "$LINKCC"
640then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000641 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000642 case $ac_sys_system in
643 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000644 exp_extra="\"\""
645 if test $ac_sys_release -ge 5 -o \
646 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
647 exp_extra="."
648 fi
649 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000650 QNX*)
651 # qcc must be used because the other compilers do not
652 # support -N.
653 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000654 esac
655fi
656AC_MSG_RESULT($LINKCC)
657
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000658# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
659# make sure we default having it set to "no": this is used by
660# distutils.unixccompiler to know if it should add --enable-new-dtags
661# to linker command lines, and failing to detect GNU ld simply results
662# in the same bahaviour as before.
663AC_SUBST(GNULD)
664AC_MSG_CHECKING(for GNU ld)
665ac_prog=ld
666if test "$GCC" = yes; then
667 ac_prog=`$CC -print-prog-name=ld`
668fi
669case `"$ac_prog" -V 2>&1 < /dev/null` in
670 *GNU*)
671 GNULD=yes;;
672 *)
673 GNULD=no;;
674esac
675AC_MSG_RESULT($GNULD)
676
Martin v. Löwis1142de32002-03-29 16:28:31 +0000677AC_MSG_CHECKING(for --enable-shared)
678AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000679 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000680
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681if test -z "$enable_shared"
682then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000683 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000684 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000685 enable_shared="yes";;
686 *)
687 enable_shared="no";;
688 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000689fi
690AC_MSG_RESULT($enable_shared)
691
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000692AC_MSG_CHECKING(for --enable-profiling)
693AC_ARG_ENABLE(profiling,
694 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
695[ac_save_cc="$CC"
696 CC="$CC -pg"
697 AC_TRY_RUN([int main() { return 0; }],
698 ac_enable_profiling="yes",
699 ac_enable_profiling="no",
700 ac_enable_profiling="no")
701 CC="$ac_save_cc"])
702AC_MSG_RESULT($ac_enable_profiling)
703
704case "$ac_enable_profiling" in
705 "yes")
706 BASECFLAGS="-pg $BASECFLAGS"
707 LDFLAGS="-pg $LDFLAGS"
708 ;;
709esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000710
711AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000712
Guido van Rossumb8552162001-09-05 14:58:11 +0000713# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
714# library that we build, but we do not want to link against it (we
715# will find it with a -framework option). For this reason there is an
716# extra variable BLDLIBRARY against which Python and the extension
717# modules are linked, BLDLIBRARY. This is normally the same as
718# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000719if test "$enable_framework"
720then
721 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000722 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000723 BLDLIBRARY=''
724else
725 BLDLIBRARY='$(LDLIBRARY)'
726fi
727
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728# Other platforms follow
729if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000730 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 case $ac_sys_system in
732 BeOS*)
733 LDLIBRARY='libpython$(VERSION).so'
734 ;;
735 CYGWIN*)
736 LDLIBRARY='libpython$(VERSION).dll.a'
737 DLLLIBRARY='libpython$(VERSION).dll'
738 ;;
739 SunOS*)
740 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000741 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000742 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000743 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000744 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000745 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000746 LDLIBRARY='libpython$(VERSION).so'
747 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000748 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000749 case $ac_sys_system in
750 FreeBSD*)
751 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
752 ;;
753 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000754 INSTSONAME="$LDLIBRARY".$SOVERSION
755 ;;
756 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000757 case `uname -m` in
758 ia64)
759 LDLIBRARY='libpython$(VERSION).so'
760 ;;
761 *)
762 LDLIBRARY='libpython$(VERSION).sl'
763 ;;
764 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000765 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000766 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000767 ;;
768 OSF*)
769 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000770 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000771 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000772 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000773 atheos*)
774 LDLIBRARY='libpython$(VERSION).so'
775 BLDLIBRARY='-L. -lpython$(VERSION)'
776 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
777 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000778 Darwin*)
779 LDLIBRARY='libpython$(VERSION).dylib'
780 BLDLIBRARY='-L. -lpython$(VERSION)'
781 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
782 ;;
783
Martin v. Löwis1142de32002-03-29 16:28:31 +0000784 esac
Jason Tishler30765592003-09-04 11:04:06 +0000785else # shared is disabled
786 case $ac_sys_system in
787 CYGWIN*)
788 BLDLIBRARY='$(LIBRARY)'
789 LDLIBRARY='libpython$(VERSION).dll.a'
790 ;;
791 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000792fi
793
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000794AC_MSG_RESULT($LDLIBRARY)
795
Guido van Rossum627b2d71993-12-24 10:39:16 +0000796AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000797AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000798AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000799
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000800# tweak ARFLAGS only if the user didn't set it on the command line
801AC_SUBST(ARFLAGS)
802if test -z "$ARFLAGS"
803then
804 ARFLAGS="rc"
805fi
806
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000807AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000808AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000809if test $SVNVERSION = found
810then
811 SVNVERSION="svnversion \$(srcdir)"
812else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000813 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000814fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000815
Neil Schemenauera42c8272001-03-31 00:01:55 +0000816case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000817bsdos*|hp*|HP*)
818 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000819 if test -z "$INSTALL"
820 then
821 INSTALL="${srcdir}/install-sh -c"
822 fi
823esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000824AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000825
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000826# Not every filesystem supports hard links
827AC_SUBST(LN)
828if test -z "$LN" ; then
829 case $ac_sys_system in
830 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000831 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000832 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000833 *) LN=ln;;
834 esac
835fi
836
Fred Drake9f715822001-07-11 06:27:00 +0000837# Check for --with-pydebug
838AC_MSG_CHECKING(for --with-pydebug)
839AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000840 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
841[
Fred Drake9f715822001-07-11 06:27:00 +0000842if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000843then
844 AC_DEFINE(Py_DEBUG, 1,
845 [Define if you want to build an interpreter with many run-time checks.])
846 AC_MSG_RESULT(yes);
847 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000848else AC_MSG_RESULT(no); Py_DEBUG='false'
849fi],
850[AC_MSG_RESULT(no)])
851
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
853# merged with this chunk of code?
854
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000855# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856# ------------------------
857# (The following bit of code is complicated enough - please keep things
858# indented properly. Just pretend you're editing Python code. ;-)
859
860# There are two parallel sets of case statements below, one that checks to
861# see if OPT was set and one that does BASECFLAGS setting based upon
862# compiler and platform. BASECFLAGS tweaks need to be made even if the
863# user set OPT.
864
865# tweak OPT based on compiler and platform, only if the user didn't set
866# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000867AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000868if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000869then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870 case $GCC in
871 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000872 if test "$CC" != 'g++' ; then
873 STRICT_PROTO="-Wstrict-prototypes"
874 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000875 # For gcc 4.x we need to use -fwrapv so lets check if its supported
876 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
877 WRAP="-fwrapv"
878 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000879 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000880 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000881 if test "$Py_DEBUG" = 'true' ; then
882 # Optimization messes up debuggers, so turn it off for
883 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000884 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000885 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000886 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000887 fi
888 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000889 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000890 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000891 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000892 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000893 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000894 SCO_SV*) OPT="$OPT -m486 -DSCO5"
895 ;;
896 esac
Fred Drake9f715822001-07-11 06:27:00 +0000897 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000898
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000899 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000900 OPT="-O"
901 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000902 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000903fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000904
Skip Montanarodecc6a42003-01-01 20:07:49 +0000905AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000906
907# The -arch flags for universal builds on OSX
908UNIVERSAL_ARCH_FLAGS=
909AC_SUBST(UNIVERSAL_ARCH_FLAGS)
910
Skip Montanarodecc6a42003-01-01 20:07:49 +0000911# tweak BASECFLAGS based on compiler and platform
912case $GCC in
913yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000914 # Python violates C99 rules, by casting between incompatible
915 # pointer types. GCC may generate bad code as a result of that,
916 # so use -fno-strict-aliasing if supported.
917 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
918 ac_save_cc="$CC"
919 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000920 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000921 AC_TRY_RUN([int main() { return 0; }],
922 ac_cv_no_strict_aliasing_ok=yes,
923 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000924 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000925 CC="$ac_save_cc"
926 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
927 if test $ac_cv_no_strict_aliasing_ok = yes
928 then
929 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
930 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000931
932 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
933 # support. Without this, treatment of subnormals doesn't follow
934 # the standard.
935 case $ac_sys_machine in
936 alpha*)
937 BASECFLAGS="$BASECFLAGS -mieee"
938 ;;
939 esac
940
Skip Montanarodecc6a42003-01-01 20:07:49 +0000941 case $ac_sys_system in
942 SCO_SV*)
943 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
944 ;;
945 # is there any other compiler on Darwin besides gcc?
946 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000947 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
948 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000949
950
Ronald Oussoren988117f2006-04-29 11:31:35 +0000951 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000952 UNIVERSAL_ARCH_FLAGS=""
953 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
954 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000955 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000956
957 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
958 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren25967582009-09-06 10:00:26 +0000959 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000960
961 elif test "$UNIVERSAL_ARCHS" = "all" ; then
962 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000963 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000964
Ronald Oussoren23d92532009-09-07 06:12:00 +0000965 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
966 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
967 ARCH_RUN_32BIT="arch -i386"
968
969 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
970 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
971 ARCH_RUN_32BIT="arch -i386 -ppc"
972
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000973 else
Ronald Oussorena9cfbde2009-09-20 20:05:44 +0000974 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000975
976 fi
977
978
979 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000980 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000981 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
982 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
983 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000984 fi
985
Benjamin Peterson4347c442008-07-17 15:59:24 +0000986 # Calculate the right deployment target for this build.
987 #
988 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
989 if test ${cur_target} '>' 10.2; then
990 cur_target=10.3
Ronald Oussoren25967582009-09-06 10:00:26 +0000991 if test ${enable_universalsdk}; then
992 if test "${UNIVERSAL_ARCHS}" = "all"; then
993 # Ensure that the default platform for a
994 # 4-way universal build is OSX 10.5,
995 # that's the first OS release where
996 # 4-way builds make sense.
997 cur_target='10.5'
Ronald Oussoren23d92532009-09-07 06:12:00 +0000998
999 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1000 cur_target='10.5'
1001
1002 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1003 cur_target='10.5'
1004
1005 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1006 cur_target='10.5'
Ronald Oussoren25967582009-09-06 10:00:26 +00001007 fi
1008 else
1009 if test `arch` = "i386"; then
1010 # On Intel macs default to a deployment
1011 # target of 10.4, that's the first OSX
1012 # release with Intel support.
1013 cur_target="10.4"
1014 fi
1015 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001016 fi
1017 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1018
1019 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1020 # environment with a value that is the same as what we'll use
1021 # in the Makefile to ensure that we'll get the same compiler
1022 # environment during configure and build time.
1023 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1024 export MACOSX_DEPLOYMENT_TARGET
1025 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1026
Skip Montanarodecc6a42003-01-01 20:07:49 +00001027 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001028 OSF*)
1029 BASECFLAGS="$BASECFLAGS -mieee"
1030 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001031 esac
1032 ;;
1033
1034*)
1035 case $ac_sys_system in
1036 OpenUNIX*|UnixWare*)
1037 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1038 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001039 OSF*)
1040 BASECFLAGS="$BASECFLAGS -ieee -std"
1041 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001042 SCO_SV*)
1043 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1044 ;;
1045 esac
1046 ;;
1047esac
1048
Fred Drakee1ceaa02001-12-04 20:55:47 +00001049if test "$Py_DEBUG" = 'true'; then
1050 :
1051else
1052 OPT="-DNDEBUG $OPT"
1053fi
1054
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001055if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001056then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001057 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001058fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001059
Neal Norwitz020c46a2006-01-07 21:39:28 +00001060# disable check for icc since it seems to pass, but generates a warning
1061if test "$CC" = icc
1062then
1063 ac_cv_opt_olimit_ok=no
1064fi
1065
Guido van Rossum91922671997-10-09 20:24:13 +00001066AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1067AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1068[ac_save_cc="$CC"
1069CC="$CC -OPT:Olimit=0"
1070AC_TRY_RUN([int main() { return 0; }],
1071 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001072 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001073 ac_cv_opt_olimit_ok=no)
1074CC="$ac_save_cc"])
1075AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001076if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001077 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001078 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1079 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1080 # environment?
1081 Darwin*)
1082 ;;
1083 *)
1084 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1085 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001086 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001087else
1088 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1089 AC_CACHE_VAL(ac_cv_olimit_ok,
1090 [ac_save_cc="$CC"
1091 CC="$CC -Olimit 1500"
1092 AC_TRY_RUN([int main() { return 0; }],
1093 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001094 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001095 ac_cv_olimit_ok=no)
1096 CC="$ac_save_cc"])
1097 AC_MSG_RESULT($ac_cv_olimit_ok)
1098 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001099 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001100 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001101fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001102
Martin v. Löwisaac13162006-10-19 10:58:46 +00001103# Check whether GCC supports PyArg_ParseTuple format
1104if test "$GCC" = "yes"
1105then
1106 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1107 save_CFLAGS=$CFLAGS
1108 CFLAGS="$CFLAGS -Werror"
1109 AC_TRY_COMPILE([
1110 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1111 ],,
1112 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1113 AC_MSG_RESULT(yes),
1114 AC_MSG_RESULT(no)
1115 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001116 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001117fi
1118
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001119# On some compilers, pthreads are available without further options
1120# (e.g. MacOS X). On some of these systems, the compiler will not
1121# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1122# So we have to see first whether pthreads are available without
1123# options before we can check whether -Kpthread improves anything.
1124AC_MSG_CHECKING(whether pthreads are available without options)
1125AC_CACHE_VAL(ac_cv_pthread_is_default,
1126[AC_TRY_RUN([
1127#include <pthread.h>
1128
1129void* routine(void* p){return NULL;}
1130
1131int main(){
1132 pthread_t p;
1133 if(pthread_create(&p,NULL,routine,NULL)!=0)
1134 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001135 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001136 return 0;
1137}
1138],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001139[
1140 ac_cv_pthread_is_default=yes
1141 ac_cv_kthread=no
1142 ac_cv_pthread=no
1143],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001144 ac_cv_pthread_is_default=no,
1145 ac_cv_pthread_is_default=no)
1146])
1147AC_MSG_RESULT($ac_cv_pthread_is_default)
1148
1149
1150if test $ac_cv_pthread_is_default = yes
1151then
1152 ac_cv_kpthread=no
1153else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154# -Kpthread, if available, provides the right #defines
1155# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001156# Some compilers won't report that they do not support -Kpthread,
1157# so we need to run a program to see whether it really made the
1158# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001159AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1160AC_CACHE_VAL(ac_cv_kpthread,
1161[ac_save_cc="$CC"
1162CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001163AC_TRY_RUN([
1164#include <pthread.h>
1165
1166void* routine(void* p){return NULL;}
1167
1168int main(){
1169 pthread_t p;
1170 if(pthread_create(&p,NULL,routine,NULL)!=0)
1171 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001172 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001173 return 0;
1174}
1175],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001176 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001177 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001178 ac_cv_kpthread=no)
1179CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001180AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001181fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001182
Skip Montanarod8d39a02003-07-10 20:44:10 +00001183if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001184then
1185# -Kthread, if available, provides the right #defines
1186# and linker options to make pthread_create available
1187# Some compilers won't report that they do not support -Kthread,
1188# so we need to run a program to see whether it really made the
1189# function available.
1190AC_MSG_CHECKING(whether $CC accepts -Kthread)
1191AC_CACHE_VAL(ac_cv_kthread,
1192[ac_save_cc="$CC"
1193CC="$CC -Kthread"
1194AC_TRY_RUN([
1195#include <pthread.h>
1196
1197void* routine(void* p){return NULL;}
1198
1199int main(){
1200 pthread_t p;
1201 if(pthread_create(&p,NULL,routine,NULL)!=0)
1202 return 1;
1203 (void)pthread_detach(p);
1204 return 0;
1205}
1206],
1207 ac_cv_kthread=yes,
1208 ac_cv_kthread=no,
1209 ac_cv_kthread=no)
1210CC="$ac_save_cc"])
1211AC_MSG_RESULT($ac_cv_kthread)
1212fi
1213
Skip Montanarod8d39a02003-07-10 20:44:10 +00001214if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001215then
1216# -pthread, if available, provides the right #defines
1217# and linker options to make pthread_create available
1218# Some compilers won't report that they do not support -pthread,
1219# so we need to run a program to see whether it really made the
1220# function available.
1221AC_MSG_CHECKING(whether $CC accepts -pthread)
1222AC_CACHE_VAL(ac_cv_thread,
1223[ac_save_cc="$CC"
1224CC="$CC -pthread"
1225AC_TRY_RUN([
1226#include <pthread.h>
1227
1228void* routine(void* p){return NULL;}
1229
1230int main(){
1231 pthread_t p;
1232 if(pthread_create(&p,NULL,routine,NULL)!=0)
1233 return 1;
1234 (void)pthread_detach(p);
1235 return 0;
1236}
1237],
1238 ac_cv_pthread=yes,
1239 ac_cv_pthread=no,
1240 ac_cv_pthread=no)
1241CC="$ac_save_cc"])
1242AC_MSG_RESULT($ac_cv_pthread)
1243fi
1244
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001245# If we have set a CC compiler flag for thread support then
1246# check if it works for CXX, too.
1247ac_cv_cxx_thread=no
1248if test ! -z "$CXX"
1249then
1250AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1251ac_save_cxx="$CXX"
1252
1253if test "$ac_cv_kpthread" = "yes"
1254then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001255 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001256 ac_cv_cxx_thread=yes
1257elif test "$ac_cv_kthread" = "yes"
1258then
1259 CXX="$CXX -Kthread"
1260 ac_cv_cxx_thread=yes
1261elif test "$ac_cv_pthread" = "yes"
1262then
1263 CXX="$CXX -pthread"
1264 ac_cv_cxx_thread=yes
1265fi
1266
1267if test $ac_cv_cxx_thread = yes
1268then
1269 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1270 $CXX -c conftest.$ac_ext 2>&5
1271 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1272 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1273 then
1274 ac_cv_cxx_thread=yes
1275 else
1276 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001277 fi
1278 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001279fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001280AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001281fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001282CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001283
Fred Drakece81d592000-07-09 14:39:29 +00001284dnl # check for ANSI or K&R ("traditional") preprocessor
1285dnl AC_MSG_CHECKING(for C preprocessor type)
1286dnl AC_TRY_COMPILE([
1287dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1288dnl int foo;
1289dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1290dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1291dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001292
Guido van Rossum627b2d71993-12-24 10:39:16 +00001293# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001294AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001295AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1296fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001297ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001298shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001299unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001300sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1301sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001302sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001303sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001304sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001305sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001306bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001307AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001308AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001309
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001310# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001311AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001312#ifdef HAVE_CURSES_H
1313#include <curses.h>
1314#endif
1315])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001316
Martin v. Löwis11017b12006-01-14 18:12:57 +00001317# On Linux, netlink.h requires asm/types.h
1318AC_CHECK_HEADERS(linux/netlink.h,,,[
1319#ifdef HAVE_ASM_TYPES_H
1320#include <asm/types.h>
1321#endif
1322#ifdef HAVE_SYS_SOCKET_H
1323#include <sys/socket.h>
1324#endif
1325])
1326
Guido van Rossum627b2d71993-12-24 10:39:16 +00001327# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001328was_it_defined=no
1329AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001330AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1331 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1332])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001333AC_MSG_RESULT($was_it_defined)
1334
Neal Norwitz11690112002-07-30 01:08:28 +00001335# Check whether using makedev requires defining _OSF_SOURCE
1336AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001337AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001338 [ makedev(0, 0) ],
1339 ac_cv_has_makedev=yes,
1340 ac_cv_has_makedev=no)
1341if test "$ac_cv_has_makedev" = "no"; then
1342 # we didn't link, try if _OSF_SOURCE will allow us to link
1343 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001344#define _OSF_SOURCE 1
1345#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001346 ],
1347 [ makedev(0, 0) ],
1348 ac_cv_has_makedev=yes,
1349 ac_cv_has_makedev=no)
1350 if test "$ac_cv_has_makedev" = "yes"; then
1351 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1352 fi
1353fi
1354AC_MSG_RESULT($ac_cv_has_makedev)
1355if test "$ac_cv_has_makedev" = "yes"; then
1356 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1357fi
1358
Martin v. Löwis399a6892002-10-04 10:22:02 +00001359# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1360# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1361# defined, but the compiler does not support pragma redefine_extname,
1362# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1363# structures (such as rlimit64) without declaring them. As a
1364# work-around, disable LFS on such configurations
1365
1366use_lfs=yes
1367AC_MSG_CHECKING(Solaris LFS bug)
1368AC_TRY_COMPILE([
1369#define _LARGEFILE_SOURCE 1
1370#define _FILE_OFFSET_BITS 64
1371#include <sys/resource.h>
1372],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1373AC_MSG_RESULT($sol_lfs_bug)
1374if test "$sol_lfs_bug" = "yes"; then
1375 use_lfs=no
1376fi
1377
1378if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001379# Two defines needed to enable largefile support on various platforms
1380# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001381AC_DEFINE(_LARGEFILE_SOURCE, 1,
1382[This must be defined on some systems to enable large file support.])
1383AC_DEFINE(_FILE_OFFSET_BITS, 64,
1384[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001385fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001386
Guido van Rossum300fda71996-08-19 21:58:16 +00001387# Add some code to confdefs.h so that the test for off_t works on SCO
1388cat >> confdefs.h <<\EOF
1389#if defined(SCO_DS)
1390#undef _OFF_T
1391#endif
1392EOF
1393
Guido van Rossumef2255b2000-03-10 22:30:29 +00001394# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001395AC_TYPE_MODE_T
1396AC_TYPE_OFF_T
1397AC_TYPE_PID_T
1398AC_TYPE_SIGNAL
1399AC_TYPE_SIZE_T
1400AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001401AC_TYPE_UINT32_T
1402AC_TYPE_UINT64_T
1403AC_TYPE_INT32_T
1404AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001405AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001406 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001407
Guido van Rossumef2255b2000-03-10 22:30:29 +00001408# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001409# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001410AC_CHECK_SIZEOF(int, 4)
1411AC_CHECK_SIZEOF(long, 4)
1412AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001413AC_CHECK_SIZEOF(short, 2)
1414AC_CHECK_SIZEOF(float, 4)
1415AC_CHECK_SIZEOF(double, 8)
1416AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001417AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001418AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001419
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001420AC_MSG_CHECKING(for long long support)
1421have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001422AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1423 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1424 have_long_long=yes
1425])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001426AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001427if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001428AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001429fi
1430
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001431AC_MSG_CHECKING(for long double support)
1432have_long_double=no
1433AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1434 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1435 have_long_double=yes
1436])
1437AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001438if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001439AC_CHECK_SIZEOF(long double, 12)
1440fi
1441
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001442AC_MSG_CHECKING(for _Bool support)
1443have_c99_bool=no
1444AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1445 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1446 have_c99_bool=yes
1447])
1448AC_MSG_RESULT($have_c99_bool)
1449if test "$have_c99_bool" = yes ; then
1450AC_CHECK_SIZEOF(_Bool, 1)
1451fi
1452
Martin v. Löwisebe26702006-10-02 14:55:51 +00001453AC_CHECK_TYPES(uintptr_t,
1454 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001455 [], [#ifdef HAVE_STDINT_H
1456 #include <stdint.h>
1457 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001458
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001459AC_CHECK_SIZEOF(off_t, [], [
1460#ifdef HAVE_SYS_TYPES_H
1461#include <sys/types.h>
1462#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001463])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001464
1465AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001466if test "$have_long_long" = yes -a \
1467 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1468 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001469 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1470 [Defined to enable large file support when an off_t is bigger than a long
1471 and long long is available and at least as big as an off_t. You may need
1472 to add some flags for configuration and compilation to enable this mode.
1473 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001474 AC_MSG_RESULT(yes)
1475else
1476 AC_MSG_RESULT(no)
1477fi
1478
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001479AC_CHECK_SIZEOF(time_t, [], [
1480#ifdef HAVE_SYS_TYPES_H
1481#include <sys/types.h>
1482#endif
1483#ifdef HAVE_TIME_H
1484#include <time.h>
1485#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001486])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001487
Trent Mick635f6fb2000-08-23 21:33:05 +00001488# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001489ac_save_cc="$CC"
1490if test "$ac_cv_kpthread" = "yes"
1491then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001492elif test "$ac_cv_kthread" = "yes"
1493then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001494elif test "$ac_cv_pthread" = "yes"
1495then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001496fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001497AC_MSG_CHECKING(for pthread_t)
1498have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001499AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001500AC_MSG_RESULT($have_pthread_t)
1501if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001502 AC_CHECK_SIZEOF(pthread_t, [], [
1503#ifdef HAVE_PTHREAD_H
1504#include <pthread.h>
1505#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001506 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001507fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001508CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001509
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001510AC_MSG_CHECKING(for --enable-toolbox-glue)
1511AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001512 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001513
1514if test -z "$enable_toolbox_glue"
1515then
1516 case $ac_sys_system/$ac_sys_release in
1517 Darwin/*)
1518 enable_toolbox_glue="yes";;
1519 *)
1520 enable_toolbox_glue="no";;
1521 esac
1522fi
1523case "$enable_toolbox_glue" in
1524yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001525 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001526 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001527 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1528 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001529 ;;
1530*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001531 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001532 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001533 ;;
1534esac
1535AC_MSG_RESULT($enable_toolbox_glue)
1536
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001537
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001538AC_SUBST(OTHER_LIBTOOL_OPT)
1539case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001540 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001541 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1542 ;;
1543 Darwin/*)
1544 OTHER_LIBTOOL_OPT=""
1545 ;;
1546esac
1547
Ronald Oussoren25967582009-09-06 10:00:26 +00001548
1549ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001550AC_SUBST(LIBTOOL_CRUFT)
1551case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001552 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001553 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1554 if test "${enable_universalsdk}"; then
1555 :
1556 else
Ronald Oussoren25967582009-09-06 10:00:26 +00001557 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001558 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001559 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001560 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001561 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001562 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1563 if test ${gcc_version} '<' 4.0
1564 then
1565 LIBTOOL_CRUFT="-lcc_dynamic"
1566 else
1567 LIBTOOL_CRUFT=""
1568 fi
Ronald Oussoren23d92532009-09-07 06:12:00 +00001569 AC_TRY_RUN([
Ronald Oussoren25967582009-09-06 10:00:26 +00001570 #include <unistd.h>
1571 int main(int argc, char*argv[])
1572 {
1573 if (sizeof(long) == 4) {
1574 return 0;
1575 } else {
1576 return 1;
1577 }
Ronald Oussoren84ddd722009-09-08 07:17:10 +00001578 }
Ronald Oussoren23d92532009-09-07 06:12:00 +00001579 ], ac_osx_32bit=yes,
Ronald Oussoren25967582009-09-06 10:00:26 +00001580 ac_osx_32bit=no,
Ronald Oussoren23d92532009-09-07 06:12:00 +00001581 ac_osx_32bit=yes)
Ronald Oussoren25967582009-09-06 10:00:26 +00001582
1583 if test "${ac_osx_32bit}" = "yes"; then
1584 case `arch` in
1585 i386)
1586 MACOSX_DEFAULT_ARCH="i386"
1587 ;;
1588 ppc)
1589 MACOSX_DEFAULT_ARCH="ppc"
1590 ;;
1591 *)
1592 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1593 ;;
1594 esac
1595 else
1596 case `arch` in
1597 i386)
1598 MACOSX_DEFAULT_ARCH="x86_64"
1599 ;;
1600 ppc)
1601 MACOSX_DEFAULT_ARCH="ppc64"
1602 ;;
1603 *)
1604 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1605 ;;
1606 esac
1607
1608 #ARCH_RUN_32BIT="true"
1609 fi
1610
1611 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001612 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001613 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001614esac
1615
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001616AC_MSG_CHECKING(for --enable-framework)
1617if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001618then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001619 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001620 # -F. is needed to allow linking to the framework while
1621 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001622 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1623 [Define if you want to produce an OpenStep/Rhapsody framework
1624 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001625 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001626 if test $enable_shared = "yes"
1627 then
Ronald Oussoren9ebd2422009-09-29 13:00:44 +00001628 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussoren450d5612009-06-08 21:12:41 +00001629 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001630else
1631 AC_MSG_RESULT(no)
1632fi
1633
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001634AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001635case $ac_sys_system/$ac_sys_release in
1636 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001637 AC_DEFINE(WITH_DYLD, 1,
1638 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1639 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1640 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001641 AC_MSG_RESULT(always on for Darwin)
1642 ;;
1643 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001644 AC_MSG_RESULT(no)
1645 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001646esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001647
Guido van Rossumac405f61994-09-12 10:56:06 +00001648# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001649AC_SUBST(SO)
1650AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001651AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001652AC_SUBST(CCSHARED)
1653AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001654# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001655# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001656AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001657if test -z "$SO"
1658then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001659 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001660 hp*|HP*)
1661 case `uname -m` in
1662 ia64) SO=.so;;
1663 *) SO=.sl;;
1664 esac
1665 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001666 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001667 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001668 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001669else
1670 # this might also be a termcap variable, see #610332
1671 echo
1672 echo '====================================================================='
1673 echo '+ +'
1674 echo '+ WARNING: You have set SO in your environment. +'
1675 echo '+ Do you really mean to change the extension for shared libraries? +'
1676 echo '+ Continuing in 10 seconds to let you to ponder. +'
1677 echo '+ +'
1678 echo '====================================================================='
1679 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001680fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001681AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001682
Neal Norwitz58e28882006-05-19 07:00:58 +00001683AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001684# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001685# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001686# (Shared libraries in this instance are shared modules to be loaded into
1687# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001688AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001689if test -z "$LDSHARED"
1690then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001691 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001692 AIX*)
1693 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001694 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001695 ;;
1696 BeOS*)
1697 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001698 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001699 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001700 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001701 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001702 SunOS/5*)
1703 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001704 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001705 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001706 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001707 hp*|HP*)
1708 if test "$GCC" = "yes"
1709 then LDSHARED='$(CC) -shared'
1710 else LDSHARED='ld -b';
1711 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001712 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001713 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001714 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1715 if test "$enable_framework" ; then
1716 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001717 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1718 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001719 else
1720 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001721 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001722 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001723 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001724 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1725 if test "$enable_framework" ; then
1726 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001727 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1728 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001729 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001730 # No framework, use the Python app as bundle-loader
1731 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001732 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001733 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001734 Darwin/*)
1735 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1736 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001737
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001738 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001739 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001740 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001741 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001742 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001743 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1744 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001745 else
1746 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1747 if test "$enable_framework" ; then
1748 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001749 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1750 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001751 else
1752 # No framework, use the Python app as bundle-loader
1753 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1754 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1755 fi
1756 fi
1757 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001758 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001759 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001760 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001761 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001762 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001763 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001764 else
1765 LDSHARED="ld -Bshareable ${LDFLAGS}"
1766 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001767 OpenBSD*)
1768 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1769 then
1770 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1771 else
1772 case `uname -r` in
1773 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1774 LDSHARED="ld -Bshareable ${LDFLAGS}"
1775 ;;
1776 *)
1777 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1778 ;;
1779 esac
1780 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001781 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001782 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001783 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001784 then LDSHARED='$(CC) -shared'
1785 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001786 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001787 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001788 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001789 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001790 *) LDSHARED="ld";;
1791 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001792fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001793AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001794BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001795# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001796# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001797AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001798if test -z "$CCSHARED"
1799then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001800 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001801 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001802 then CCSHARED="-fPIC";
1803 elif test `uname -p` = sparc;
1804 then CCSHARED="-xcode=pic32";
1805 else CCSHARED="-Kpic";
1806 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001807 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001808 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001809 else CCSHARED="+z";
1810 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001811 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001812 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001813 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001814 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001815 if test "$GCC" = "yes"
1816 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001817 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001818 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001819 SCO_SV*)
1820 if test "$GCC" = "yes"
1821 then CCSHARED="-fPIC"
1822 else CCSHARED="-Kpic -belf"
1823 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001824 IRIX*/6*) case $CC in
1825 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001826 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001827 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001828 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001829 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001830fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001831AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001832# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001833# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001834AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001835if test -z "$LINKFORSHARED"
1836then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001837 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001838 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001839 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001840 LINKFORSHARED="-Wl,-E -Wl,+s";;
1841# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001842 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001843 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001844 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001845 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001846 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1847 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001848 # not used by the core itself but which needs to be in the core so
1849 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001850 # -prebind is no longer used, because it actually seems to give a
1851 # slowdown in stead of a speedup, maybe due to the large number of
1852 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001853
1854 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001855 if test "$enable_framework"
1856 then
Jack Jansenda49e192005-01-07 13:08:22 +00001857 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001858 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001859 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001860 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001861 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001862 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001863 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001864 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1865 then
1866 LINKFORSHARED="-Wl,--export-dynamic"
1867 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001868 SunOS/5*) case $CC in
1869 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001870 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001871 then
1872 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001873 fi;;
1874 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001875 CYGWIN*)
1876 if test $enable_shared = "no"
1877 then
1878 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1879 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001880 QNX*)
1881 # -Wl,-E causes the symbols to be added to the dynamic
1882 # symbol table so that they can be found when a module
1883 # is loaded. -N 2048K causes the stack size to be set
1884 # to 2048 kilobytes so that the stack doesn't overflow
1885 # when running test_compile.py.
1886 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001887 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001888fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001889AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001890
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001891
Neil Schemenauer61c51152001-01-26 16:18:16 +00001892AC_SUBST(CFLAGSFORSHARED)
1893AC_MSG_CHECKING(CFLAGSFORSHARED)
1894if test ! "$LIBRARY" = "$LDLIBRARY"
1895then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001896 case $ac_sys_system in
1897 CYGWIN*)
1898 # Cygwin needs CCSHARED when building extension DLLs
1899 # but not when building the interpreter DLL.
1900 CFLAGSFORSHARED='';;
1901 *)
1902 CFLAGSFORSHARED='$(CCSHARED)'
1903 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001904fi
1905AC_MSG_RESULT($CFLAGSFORSHARED)
1906
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001907# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1908# library (with --enable-shared).
1909# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001910# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1911# if it is not required, since it creates a dependency of the shared library
1912# to LIBS. This, in turn, means that applications linking the shared libpython
1913# don't need to link LIBS explicitly. The default should be only changed
1914# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001915AC_SUBST(SHLIBS)
1916AC_MSG_CHECKING(SHLIBS)
1917case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001918 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001919 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001920esac
1921AC_MSG_RESULT($SHLIBS)
1922
1923
Guido van Rossum627b2d71993-12-24 10:39:16 +00001924# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001925AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1926AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001927
Skip Montanaro4d756af2008-12-01 01:55:22 +00001928# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001929if test "$with_threads" = "yes" -o -z "$with_threads"; then
1930 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1931 # posix4 on Solaris 2.6
1932 # pthread (first!) on Linux
1933fi
1934
Martin v. Löwis19d17342003-06-14 21:03:05 +00001935# check if we need libintl for locale functions
1936AC_CHECK_LIB(intl, textdomain,
1937 AC_DEFINE(WITH_LIBINTL, 1,
1938 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001939
1940# checks for system dependent C++ extensions support
1941case "$ac_sys_system" in
1942 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1943 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1944 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001945 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1946 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1947 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001948 AC_MSG_RESULT(yes)],
1949 [AC_MSG_RESULT(no)]);;
1950 *) ;;
1951esac
1952
Guido van Rossum70c7f481998-03-26 18:44:10 +00001953# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001954# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001955AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001956AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001957
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001958case "$ac_sys_system" in
1959BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001960AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1961;;
1962esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001963
Guido van Rossumc5a39031996-07-31 17:35:03 +00001964AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001965AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001966 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1967[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001968AC_MSG_RESULT($withval)
1969LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001970],
1971[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001972
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001973# Check for use of the system libffi library
1974AC_MSG_CHECKING(for --with-system-ffi)
1975AC_ARG_WITH(system_ffi,
1976 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1977
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001978AC_MSG_RESULT($with_system_ffi)
1979
Matthias Klose10cbe482009-04-29 17:18:19 +00001980# Check for --with-dbmliborder
1981AC_MSG_CHECKING(for --with-dbmliborder)
1982AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00001983 AC_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
Matthias Klose10cbe482009-04-29 17:18:19 +00001984[
1985if test x$with_dbmliborder = xyes
1986then
1987AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1988else
1989 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1990 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1991 then
1992 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1993 fi
1994 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00001995fi])
1996AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00001997
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001998# Determine if signalmodule should be used.
1999AC_SUBST(USE_SIGNAL_MODULE)
2000AC_SUBST(SIGNAL_OBJS)
2001AC_MSG_CHECKING(for --with-signal-module)
2002AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002003 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002004
2005if test -z "$with_signal_module"
2006then with_signal_module="yes"
2007fi
2008AC_MSG_RESULT($with_signal_module)
2009
2010if test "${with_signal_module}" = "yes"; then
2011 USE_SIGNAL_MODULE=""
2012 SIGNAL_OBJS=""
2013else
2014 USE_SIGNAL_MODULE="#"
2015 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2016fi
2017
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002018# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002019AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002020USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002021
Guido van Rossum54d93d41997-01-22 20:51:58 +00002022AC_MSG_CHECKING(for --with-dec-threads)
2023AC_SUBST(LDLAST)
2024AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002025 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2026[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002027AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002028LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002029if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002030 with_thread="$withval";
2031fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002032[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002033
Martin v. Löwis11437992002-04-12 09:54:03 +00002034# Templates for things AC_DEFINEd more than once.
2035# For a single AC_DEFINE, no template is needed.
2036AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2037AH_TEMPLATE(_REENTRANT,
2038 [Define to force use of thread-safe errno, h_errno, and other functions])
2039AH_TEMPLATE(WITH_THREAD,
2040 [Define if you want to compile in rudimentary thread support])
2041
Guido van Rossum54d93d41997-01-22 20:51:58 +00002042AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002043dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002044AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002045 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002046
Barry Warsawc0d24d82000-06-29 16:12:00 +00002047# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002048dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002049AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002050 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2051 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002052
2053if test -z "$with_threads"
2054then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002055fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002056AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002057
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002058AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002059if test "$with_threads" = "no"
2060then
2061 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002062elif test "$ac_cv_pthread_is_default" = yes
2063then
2064 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002065 # Defining _REENTRANT on system with POSIX threads should not hurt.
2066 AC_DEFINE(_REENTRANT)
2067 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002068 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002069elif test "$ac_cv_kpthread" = "yes"
2070then
2071 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002072 if test "$ac_cv_cxx_thread" = "yes"; then
2073 CXX="$CXX -Kpthread"
2074 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002075 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002076 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002077 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002078elif test "$ac_cv_kthread" = "yes"
2079then
2080 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002081 if test "$ac_cv_cxx_thread" = "yes"; then
2082 CXX="$CXX -Kthread"
2083 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002084 AC_DEFINE(WITH_THREAD)
2085 posix_threads=yes
2086 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002087elif test "$ac_cv_pthread" = "yes"
2088then
2089 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002090 if test "$ac_cv_cxx_thread" = "yes"; then
2091 CXX="$CXX -pthread"
2092 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002093 AC_DEFINE(WITH_THREAD)
2094 posix_threads=yes
2095 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002096else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002097 if test ! -z "$with_threads" -a -d "$with_threads"
2098 then LDFLAGS="$LDFLAGS -L$with_threads"
2099 fi
2100 if test ! -z "$withval" -a -d "$withval"
2101 then LDFLAGS="$LDFLAGS -L$withval"
2102 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002103
2104 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002105 # define _POSIX_THREADS in unistd.h. Some apparently don't
2106 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002107 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2108 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002109 [
2110#include <unistd.h>
2111#ifdef _POSIX_THREADS
2112yes
2113#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002114 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2115 AC_MSG_RESULT($unistd_defines_pthreads)
2116
Martin v. Löwis130fb172001-07-19 11:00:41 +00002117 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002118 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2119 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002120 AC_DEFINE(HURD_C_THREADS, 1,
2121 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002122 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002123 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002124 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2125 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002126 AC_DEFINE(MACH_C_THREADS, 1,
2127 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002128 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002129 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002130 AC_ARG_WITH([pth],
2131 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2132 [AC_MSG_RESULT($withval)
2133 AC_DEFINE([WITH_THREAD])
2134 AC_DEFINE([HAVE_PTH], 1,
2135 [Define if you have GNU PTH threads.])
2136 LIBS="-lpth $LIBS"
2137 THREADOBJ="Python/thread.o"],
2138 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002139
2140 # Just looking for pthread_create in libpthread is not enough:
2141 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2142 # So we really have to include pthread.h, and then link.
2143 _libs=$LIBS
2144 LIBS="$LIBS -lpthread"
2145 AC_MSG_CHECKING([for pthread_create in -lpthread])
2146 AC_TRY_LINK([#include <pthread.h>
2147
2148void * start_routine (void *arg) { exit (0); }], [
2149pthread_create (NULL, NULL, start_routine, NULL)], [
2150 AC_MSG_RESULT(yes)
2151 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002152 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002153 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002154 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002155 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002156 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002157 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002158 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2159 AC_DEFINE(ATHEOS_THREADS, 1,
2160 [Define this if you have AtheOS threads.])
2161 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002162 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002163 AC_DEFINE(BEOS_THREADS, 1,
2164 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002165 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002166 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002167 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002168 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002169 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002170 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002171 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002172 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002173 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002174 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002175 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002176 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002177 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002178 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002179 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002180 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002181 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002182 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002183 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002184
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002185 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2186 LIBS="$LIBS -lmpc"
2187 THREADOBJ="Python/thread.o"
2188 USE_THREAD_MODULE=""])
2189
2190 if test "$posix_threads" != "yes"; then
2191 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2192 LIBS="$LIBS -lthread"
2193 THREADOBJ="Python/thread.o"
2194 USE_THREAD_MODULE=""])
2195 fi
2196
2197 if test "$USE_THREAD_MODULE" != "#"
2198 then
2199 # If the above checks didn't disable threads, (at least) OSF1
2200 # needs this '-threads' argument during linking.
2201 case $ac_sys_system in
2202 OSF1) LDLAST=-threads;;
2203 esac
2204 fi
2205fi
2206
2207if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002208 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002209 AC_DEFINE(_POSIX_THREADS, 1,
2210 [Define if you have POSIX threads,
2211 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002212 fi
2213
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002214 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2215 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002216 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2217 Defined for Solaris 2.6 bug in pthread header.)
2218 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002219 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002220 Define if the Posix semaphores do not work on your system)
2221 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002222 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2223 Define if the Posix semaphores do not work on your system)
2224 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002225 esac
2226
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002227 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2228 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2229 [AC_TRY_RUN([#include <pthread.h>
2230 void *foo(void *parm) {
2231 return NULL;
2232 }
2233 main() {
2234 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002235 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002236 if (pthread_attr_init(&attr)) exit(-1);
2237 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002238 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002239 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002240 }],
2241 ac_cv_pthread_system_supported=yes,
2242 ac_cv_pthread_system_supported=no,
2243 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002244 ])
2245 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2246 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002247 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002248 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002249 AC_CHECK_FUNCS(pthread_sigmask,
2250 [case $ac_sys_system in
2251 CYGWIN*)
2252 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2253 [Define if pthread_sigmask() does not work on your system.])
2254 ;;
2255 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002256fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002257
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002258
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002259# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002260AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002261AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002262AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002263[ --enable-ipv6 Enable ipv6 (with ipv4) support
2264 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002265[ case "$enableval" in
2266 no)
2267 AC_MSG_RESULT(no)
2268 ipv6=no
2269 ;;
2270 *) AC_MSG_RESULT(yes)
2271 AC_DEFINE(ENABLE_IPV6)
2272 ipv6=yes
2273 ;;
2274 esac ],
2275
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002276[
2277dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002278 AC_TRY_RUN([ /* AF_INET6 available check */
2279#include <sys/types.h>
2280#include <sys/socket.h>
2281main()
2282{
2283 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2284 exit(1);
2285 else
2286 exit(0);
2287}
2288],
2289 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002290 ipv6=yes,
2291 AC_MSG_RESULT(no)
2292 ipv6=no,
2293 AC_MSG_RESULT(no)
2294 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002295)
2296
2297if test "$ipv6" = "yes"; then
2298 AC_MSG_CHECKING(if RFC2553 API is available)
2299 AC_TRY_COMPILE([#include <sys/types.h>
2300#include <netinet/in.h>],
2301 [struct sockaddr_in6 x;
2302x.sin6_scope_id;],
2303 AC_MSG_RESULT(yes)
2304 ipv6=yes,
2305 AC_MSG_RESULT(no, IPv6 disabled)
2306 ipv6=no)
2307fi
2308
2309if test "$ipv6" = "yes"; then
2310 AC_DEFINE(ENABLE_IPV6)
2311fi
2312])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313
2314ipv6type=unknown
2315ipv6lib=none
2316ipv6trylibc=no
2317
2318if test "$ipv6" = "yes"; then
2319 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002320 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2321 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002322 case $i in
2323 inria)
2324 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002325 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326#include <netinet/in.h>
2327#ifdef IPV6_INRIA_VERSION
2328yes
2329#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002330 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002331 ;;
2332 kame)
2333 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002334 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002335#include <netinet/in.h>
2336#ifdef __KAME__
2337yes
2338#endif],
2339 [ipv6type=$i;
2340 ipv6lib=inet6
2341 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002342 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002343 ;;
2344 linux-glibc)
2345 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002346 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002347#include <features.h>
2348#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2349yes
2350#endif],
2351 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002352 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002353 ;;
2354 linux-inet6)
2355 dnl http://www.v6.linux.or.jp/
2356 if test -d /usr/inet6; then
2357 ipv6type=$i
2358 ipv6lib=inet6
2359 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002360 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002361 fi
2362 ;;
2363 solaris)
2364 if test -f /etc/netconfig; then
2365 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2366 ipv6type=$i
2367 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002368 fi
2369 fi
2370 ;;
2371 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002372 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002373#include <sys/param.h>
2374#ifdef _TOSHIBA_INET6
2375yes
2376#endif],
2377 [ipv6type=$i;
2378 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002379 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002380 ;;
2381 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002382 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002383#include </usr/local/v6/include/sys/v6config.h>
2384#ifdef __V6D__
2385yes
2386#endif],
2387 [ipv6type=$i;
2388 ipv6lib=v6;
2389 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002390 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002391 ;;
2392 zeta)
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 <sys/param.h>
2395#ifdef _ZETA_MINAMI_INET6
2396yes
2397#endif],
2398 [ipv6type=$i;
2399 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002400 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002401 ;;
2402 esac
2403 if test "$ipv6type" != "unknown"; then
2404 break
2405 fi
2406 done
2407 AC_MSG_RESULT($ipv6type)
2408fi
2409
2410if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2411 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2412 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2413 echo "using lib$ipv6lib"
2414 else
2415 if test $ipv6trylibc = "yes"; then
2416 echo "using libc"
2417 else
2418 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2419 echo "You need to fetch lib$ipv6lib.a from appropriate"
2420 echo 'ipv6 kit and compile beforehand.'
2421 exit 1
2422 fi
2423 fi
2424fi
2425
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002426AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2427AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2428 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2429 AC_MSG_RESULT(yes),
2430 AC_MSG_RESULT(no)
2431)
2432
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002433# Check for --with-doc-strings
2434AC_MSG_CHECKING(for --with-doc-strings)
2435AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002436 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002437
2438if test -z "$with_doc_strings"
2439then with_doc_strings="yes"
2440fi
2441if test "$with_doc_strings" != "no"
2442then
2443 AC_DEFINE(WITH_DOC_STRINGS, 1,
2444 [Define if you want documentation strings in extension modules])
2445fi
2446AC_MSG_RESULT($with_doc_strings)
2447
Neil Schemenauera35c6882001-02-27 04:45:05 +00002448# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002449AC_MSG_CHECKING(for --with-tsc)
2450AC_ARG_WITH(tsc,
2451[ --with(out)-tsc enable/disable timestamp counter profile], [
2452if test "$withval" != no
2453then
2454 AC_DEFINE(WITH_TSC, 1,
2455 [Define to profile with the Pentium timestamp counter])
2456 AC_MSG_RESULT(yes)
2457else AC_MSG_RESULT(no)
2458fi],
2459[AC_MSG_RESULT(no)])
2460
2461# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002462AC_MSG_CHECKING(for --with-pymalloc)
2463AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002464 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002465
2466if test -z "$with_pymalloc"
2467then with_pymalloc="yes"
2468fi
2469if test "$with_pymalloc" != "no"
2470then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002471 AC_DEFINE(WITH_PYMALLOC, 1,
2472 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002473fi
2474AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002475
Barry Warsawef82cd72000-06-30 16:21:01 +00002476# Check for --with-wctype-functions
2477AC_MSG_CHECKING(for --with-wctype-functions)
2478AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002479 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2480[
Barry Warsawef82cd72000-06-30 16:21:01 +00002481if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002482then
2483 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2484 [Define if you want wctype.h functions to be used instead of the
2485 one supplied by Python itself. (see Include/unicodectype.h).])
2486 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002487else AC_MSG_RESULT(no)
2488fi],
2489[AC_MSG_RESULT(no)])
2490
Guido van Rossum68242b51996-05-28 22:53:03 +00002491# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002492AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002493DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002494
Guido van Rossume97ee181999-12-20 21:27:22 +00002495# the dlopen() function means we might want to use dynload_shlib.o. some
2496# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002497AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002498
2499# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2500# loading of modules.
2501AC_SUBST(DYNLOADFILE)
2502AC_MSG_CHECKING(DYNLOADFILE)
2503if test -z "$DYNLOADFILE"
2504then
2505 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002506 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2507 if test "$ac_cv_func_dlopen" = yes
2508 then DYNLOADFILE="dynload_shlib.o"
2509 else DYNLOADFILE="dynload_aix.o"
2510 fi
2511 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002512 BeOS*) DYNLOADFILE="dynload_beos.o";;
2513 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002514 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2515 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002516 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002517 *)
2518 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2519 # out any dynamic loading
2520 if test "$ac_cv_func_dlopen" = yes
2521 then DYNLOADFILE="dynload_shlib.o"
2522 else DYNLOADFILE="dynload_stub.o"
2523 fi
2524 ;;
2525 esac
2526fi
2527AC_MSG_RESULT($DYNLOADFILE)
2528if test "$DYNLOADFILE" != "dynload_stub.o"
2529then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002530 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2531 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002532fi
2533
Jack Jansenc49e5b72001-06-19 15:00:23 +00002534# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2535
2536AC_SUBST(MACHDEP_OBJS)
2537AC_MSG_CHECKING(MACHDEP_OBJS)
2538if test -z "$MACHDEP_OBJS"
2539then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002540 MACHDEP_OBJS=$extra_machdep_objs
2541else
2542 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002543fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002544AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002545
Guido van Rossum627b2d71993-12-24 10:39:16 +00002546# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002547AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2548 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002549 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002550 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002551 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002552 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002553 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002554 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2555 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002556 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002557 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002558 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002559 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002560
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002561# For some functions, having a definition is not sufficient, since
2562# we want to take their address.
2563AC_MSG_CHECKING(for chroot)
2564AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2565 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no)
2568)
2569AC_MSG_CHECKING(for link)
2570AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2571 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2572 AC_MSG_RESULT(yes),
2573 AC_MSG_RESULT(no)
2574)
2575AC_MSG_CHECKING(for symlink)
2576AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2577 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2578 AC_MSG_RESULT(yes),
2579 AC_MSG_RESULT(no)
2580)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002581AC_MSG_CHECKING(for fchdir)
2582AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2583 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2584 AC_MSG_RESULT(yes),
2585 AC_MSG_RESULT(no)
2586)
2587AC_MSG_CHECKING(for fsync)
2588AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002589 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002590 AC_MSG_RESULT(yes),
2591 AC_MSG_RESULT(no)
2592)
2593AC_MSG_CHECKING(for fdatasync)
2594AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2595 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2596 AC_MSG_RESULT(yes),
2597 AC_MSG_RESULT(no)
2598)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002599AC_MSG_CHECKING(for epoll)
2600AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2601 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2602 AC_MSG_RESULT(yes),
2603 AC_MSG_RESULT(no)
2604)
2605AC_MSG_CHECKING(for kqueue)
2606AC_TRY_COMPILE([
2607#include <sys/types.h>
2608#include <sys/event.h>
2609 ], int x=kqueue(),
2610 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2611 AC_MSG_RESULT(yes),
2612 AC_MSG_RESULT(no)
2613)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002614# On some systems (eg. FreeBSD 5), we would find a definition of the
2615# functions ctermid_r, setgroups in the library, but no prototype
2616# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2617# address to avoid compiler warnings and potential miscompilations
2618# because of the missing prototypes.
2619
2620AC_MSG_CHECKING(for ctermid_r)
2621AC_TRY_COMPILE([
2622#include "confdefs.h"
2623#include <stdio.h>
2624], void* p = ctermid_r,
2625 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2626 AC_MSG_RESULT(yes),
2627 AC_MSG_RESULT(no)
2628)
2629
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002630AC_MSG_CHECKING(for flock)
2631AC_TRY_COMPILE([
2632#include "confdefs.h"
2633#include <sys/file.h>
2634], void* p = flock,
2635 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2636 AC_MSG_RESULT(yes),
2637 AC_MSG_RESULT(no)
2638)
2639
2640AC_MSG_CHECKING(for getpagesize)
2641AC_TRY_COMPILE([
2642#include "confdefs.h"
2643#include <unistd.h>
2644], void* p = getpagesize,
2645 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2646 AC_MSG_RESULT(yes),
2647 AC_MSG_RESULT(no)
2648)
2649
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002650dnl check for true
2651AC_CHECK_PROGS(TRUE, true, /bin/true)
2652
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002653dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2654dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002655AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002656 AC_CHECK_LIB(resolv, inet_aton)
2657)
2658
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002659# On Tru64, chflags seems to be present, but calling it will
2660# exit Python
2661AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002662AC_CACHE_VAL(ac_cv_have_chflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002663AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002664#include <sys/stat.h>
2665#include <unistd.h>
2666int main(int argc, char*argv[])
2667{
2668 if(chflags(argv[0], 0) != 0)
2669 return 1;
2670 return 0;
2671}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002672]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002673 ac_cv_have_chflags=no,
2674 ac_cv_have_chflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002675)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002676AC_MSG_RESULT($ac_cv_have_chflags)
2677if test $ac_cv_have_chflags = yes
2678then
2679 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2680fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002681
2682AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002683AC_CACHE_VAL(ac_cv_have_lchflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002684AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002685#include <sys/stat.h>
2686#include <unistd.h>
2687int main(int argc, char*argv[])
2688{
2689 if(lchflags(argv[0], 0) != 0)
2690 return 1;
2691 return 0;
2692}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002693]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002694 ac_cv_have_lchflags=no,
2695 ac_cv_have_lchflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002696)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002697AC_MSG_RESULT($ac_cv_have_lchflags)
2698if test $ac_cv_have_lchflags = yes
2699then
2700 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2701fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002702
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002703dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002704dnl
2705dnl On MacOSX the linker will search for dylibs on the entire linker path
2706dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2707dnl to revert to a more traditional unix behaviour and make it possible to
2708dnl override the system libz with a local static library of libz. Temporarily
2709dnl add that flag to our CFLAGS as well to ensure that we check the version
2710dnl of libz that will be used by setup.py.
2711dnl The -L/usr/local/lib is needed as wel to get the same compilation
2712dnl environment as setup.py (and leaving it out can cause configure to use the
2713dnl wrong version of the library)
2714case $ac_sys_system/$ac_sys_release in
2715Darwin/*)
2716 _CUR_CFLAGS="${CFLAGS}"
2717 _CUR_LDFLAGS="${LDFLAGS}"
2718 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2719 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2720 ;;
2721esac
2722
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002723AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2724
Ronald Oussorenf8752642006-07-06 10:13:35 +00002725case $ac_sys_system/$ac_sys_release in
2726Darwin/*)
2727 CFLAGS="${_CUR_CFLAGS}"
2728 LDFLAGS="${_CUR_LDFLAGS}"
2729 ;;
2730esac
2731
Martin v. Löwise9416172003-05-03 10:12:45 +00002732AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002733AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002734#include "confdefs.h"
2735#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002736], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002737 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2738 AC_MSG_RESULT(yes),
2739 AC_MSG_RESULT(no)
2740)
2741
2742AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002743AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002744#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002745#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002746#include <sys/socket.h>
2747#include <netinet/in.h>
2748#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002749], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002750 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2751 AC_MSG_RESULT(yes),
2752 AC_MSG_RESULT(no)
2753)
2754
2755AC_MSG_CHECKING(for inet_pton)
2756AC_TRY_COMPILE([
2757#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002758#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002759#include <sys/socket.h>
2760#include <netinet/in.h>
2761#include <arpa/inet.h>
2762], void* p = inet_pton,
2763 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2764 AC_MSG_RESULT(yes),
2765 AC_MSG_RESULT(no)
2766)
2767
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002768# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002769AC_MSG_CHECKING(for setgroups)
2770AC_TRY_COMPILE([
2771#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002772#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002773#ifdef HAVE_GRP_H
2774#include <grp.h>
2775#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002776],
2777void* p = setgroups,
2778 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2779 AC_MSG_RESULT(yes),
2780 AC_MSG_RESULT(no)
2781)
2782
Fred Drake8cef4cf2000-06-28 16:40:38 +00002783# check for openpty and forkpty
2784
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002785AC_CHECK_FUNCS(openpty,,
2786 AC_CHECK_LIB(util,openpty,
2787 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2788 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2789 )
2790)
2791AC_CHECK_FUNCS(forkpty,,
2792 AC_CHECK_LIB(util,forkpty,
2793 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2794 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2795 )
2796)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002797
Brett Cannonaa5778d2008-03-18 04:09:00 +00002798# Stuff for expat.
2799AC_CHECK_FUNCS(memmove)
2800
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002801# check for long file support functions
2802AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2803
Brett Cannonaa5778d2008-03-18 04:09:00 +00002804AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002805AC_CHECK_FUNCS(getpgrp,
2806 AC_TRY_COMPILE([#include <unistd.h>],
2807 [getpgrp(0);],
2808 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2809 [Define if getpgrp() must be called as getpgrp(0).])
2810 )
2811)
Jack Jansen150753c2003-03-29 22:07:47 +00002812AC_CHECK_FUNCS(setpgrp,
2813 AC_TRY_COMPILE([#include <unistd.h>],
2814 [setpgrp(0,0);],
2815 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2816 [Define if setpgrp() must be called as setpgrp(0, 0).])
2817 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002818)
2819AC_CHECK_FUNCS(gettimeofday,
2820 AC_TRY_COMPILE([#include <sys/time.h>],
2821 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2822 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2823 [Define if gettimeofday() does not have second (timezone) argument
2824 This is the case on Motorola V4 (R40V4.2)])
2825 )
2826)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002827
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002828AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002829AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002830#if defined(MAJOR_IN_MKDEV)
2831#include <sys/mkdev.h>
2832#elif defined(MAJOR_IN_SYSMACROS)
2833#include <sys/sysmacros.h>
2834#else
2835#include <sys/types.h>
2836#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002837],[
2838 makedev(major(0),minor(0));
2839],[
2840 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2841 [Define to 1 if you have the device macros.])
2842 AC_MSG_RESULT(yes)
2843],[
2844 AC_MSG_RESULT(no)
2845])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002846
2847# On OSF/1 V5.1, getaddrinfo is available, but a define
2848# for [no]getaddrinfo in netdb.h.
2849AC_MSG_CHECKING(for getaddrinfo)
2850AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002851#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002852#include <sys/socket.h>
2853#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002854#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002855], [getaddrinfo(NULL, NULL, NULL, NULL);],
2856have_getaddrinfo=yes,
2857have_getaddrinfo=no)
2858AC_MSG_RESULT($have_getaddrinfo)
2859if test $have_getaddrinfo = yes
2860then
2861 AC_MSG_CHECKING(getaddrinfo bug)
2862 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2863 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002864#include <sys/types.h>
2865#include <netdb.h>
2866#include <string.h>
2867#include <sys/socket.h>
2868#include <netinet/in.h>
2869
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002870int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002871{
2872 int passive, gaierr, inet4 = 0, inet6 = 0;
2873 struct addrinfo hints, *ai, *aitop;
2874 char straddr[INET6_ADDRSTRLEN], strport[16];
2875
2876 for (passive = 0; passive <= 1; passive++) {
2877 memset(&hints, 0, sizeof(hints));
2878 hints.ai_family = AF_UNSPEC;
2879 hints.ai_flags = passive ? AI_PASSIVE : 0;
2880 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002881 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002882 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2883 (void)gai_strerror(gaierr);
2884 goto bad;
2885 }
2886 for (ai = aitop; ai; ai = ai->ai_next) {
2887 if (ai->ai_addr == NULL ||
2888 ai->ai_addrlen == 0 ||
2889 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2890 straddr, sizeof(straddr), strport, sizeof(strport),
2891 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2892 goto bad;
2893 }
2894 switch (ai->ai_family) {
2895 case AF_INET:
2896 if (strcmp(strport, "54321") != 0) {
2897 goto bad;
2898 }
2899 if (passive) {
2900 if (strcmp(straddr, "0.0.0.0") != 0) {
2901 goto bad;
2902 }
2903 } else {
2904 if (strcmp(straddr, "127.0.0.1") != 0) {
2905 goto bad;
2906 }
2907 }
2908 inet4++;
2909 break;
2910 case AF_INET6:
2911 if (strcmp(strport, "54321") != 0) {
2912 goto bad;
2913 }
2914 if (passive) {
2915 if (strcmp(straddr, "::") != 0) {
2916 goto bad;
2917 }
2918 } else {
2919 if (strcmp(straddr, "::1") != 0) {
2920 goto bad;
2921 }
2922 }
2923 inet6++;
2924 break;
2925 case AF_UNSPEC:
2926 goto bad;
2927 break;
2928 default:
2929 /* another family support? */
2930 break;
2931 }
2932 }
2933 }
2934
2935 if (!(inet4 == 0 || inet4 == 2))
2936 goto bad;
2937 if (!(inet6 == 0 || inet6 == 2))
2938 goto bad;
2939
2940 if (aitop)
2941 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002942 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002943
2944 bad:
2945 if (aitop)
2946 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002947 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002948}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002949]], ac_cv_buggy_getaddrinfo=no,
2950 ac_cv_buggy_getaddrinfo=yes,
2951 ac_cv_buggy_getaddrinfo=yes))
2952fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002953
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002954if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2955then
2956 if test $ipv6 = yes
2957 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002958 echo 'Fatal: You must get working getaddrinfo() function.'
2959 echo ' or you can specify "--disable-ipv6"'.
2960 exit 1
2961 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002962else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002964fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002965AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002966
Guido van Rossum627b2d71993-12-24 10:39:16 +00002967# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002968AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002969AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002970AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002971AC_CHECK_MEMBERS([struct stat.st_rdev])
2972AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002973AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002974AC_CHECK_MEMBERS([struct stat.st_gen])
2975AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002976AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002977
2978AC_MSG_CHECKING(for time.h that defines altzone)
2979AC_CACHE_VAL(ac_cv_header_time_altzone,
2980[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2981 ac_cv_header_time_altzone=yes,
2982 ac_cv_header_time_altzone=no)])
2983AC_MSG_RESULT($ac_cv_header_time_altzone)
2984if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002985 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002986fi
2987
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002988was_it_defined=no
2989AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002990AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002991#include <sys/types.h>
2992#include <sys/select.h>
2993#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002994], [;], [
2995 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2996 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2997 (which you can't on SCO ODT 3.0).])
2998 was_it_defined=yes
2999])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003000AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003001
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003002AC_MSG_CHECKING(for addrinfo)
3003AC_CACHE_VAL(ac_cv_struct_addrinfo,
3004AC_TRY_COMPILE([
3005# include <netdb.h>],
3006 [struct addrinfo a],
3007 ac_cv_struct_addrinfo=yes,
3008 ac_cv_struct_addrinfo=no))
3009AC_MSG_RESULT($ac_cv_struct_addrinfo)
3010if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003011 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003012fi
3013
3014AC_MSG_CHECKING(for sockaddr_storage)
3015AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3016AC_TRY_COMPILE([
3017# include <sys/types.h>
3018# include <sys/socket.h>],
3019 [struct sockaddr_storage s],
3020 ac_cv_struct_sockaddr_storage=yes,
3021 ac_cv_struct_sockaddr_storage=no))
3022AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3023if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003024 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003025fi
3026
Guido van Rossum627b2d71993-12-24 10:39:16 +00003027# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003028
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003029AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003030AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003031
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003032works=no
3033AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003034AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3035 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3036)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003037AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003038
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003039works=no
3040AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003041AC_TRY_COMPILE([], [signed char c;], works=yes,
3042 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3043)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003044AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003045
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003046have_prototypes=no
3047AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3049 AC_DEFINE(HAVE_PROTOTYPES, 1,
3050 [Define if your compiler supports function prototype])
3051 have_prototypes=yes
3052])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003053AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003054
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003055works=no
3056AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003057AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003058#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003059int foo(int x, ...) {
3060 va_list va;
3061 va_start(va, x);
3062 va_arg(va, int);
3063 va_arg(va, char *);
3064 va_arg(va, double);
3065 return 0;
3066}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003067], [return foo(10, "", 3.14);], [
3068 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3069 [Define if your compiler supports variable length function prototypes
3070 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3071 works=yes
3072])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003073AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003074
Dave Cole331708b2004-08-09 04:51:41 +00003075# check for socketpair
3076AC_MSG_CHECKING(for socketpair)
3077AC_TRY_COMPILE([
3078#include <sys/types.h>
3079#include <sys/socket.h>
3080], void *x=socketpair,
3081 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3082 AC_MSG_RESULT(yes),
3083 AC_MSG_RESULT(no)
3084)
3085
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003086# check if sockaddr has sa_len member
3087AC_MSG_CHECKING(if sockaddr has sa_len member)
3088AC_TRY_COMPILE([#include <sys/types.h>
3089#include <sys/socket.h>],
3090[struct sockaddr x;
3091x.sa_len = 0;],
3092 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003093 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003094 AC_MSG_RESULT(no))
3095
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003096va_list_is_array=no
3097AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003098AC_TRY_COMPILE([
3099#ifdef HAVE_STDARG_PROTOTYPES
3100#include <stdarg.h>
3101#else
3102#include <varargs.h>
3103#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003104], [va_list list1, list2; list1 = list2;], , [
3105 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3106 va_list_is_array=yes
3107])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003108AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003109
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003110# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003111AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3112 [Define this if you have some version of gethostbyname_r()])
3113
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003114AC_CHECK_FUNC(gethostbyname_r, [
3115 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3116 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3117 OLD_CFLAGS=$CFLAGS
3118 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3119 AC_TRY_COMPILE([
3120# include <netdb.h>
3121 ], [
3122 char *name;
3123 struct hostent *he, *res;
3124 char buffer[2048];
3125 int buflen = 2048;
3126 int h_errnop;
3127
3128 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3129 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003130 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003131 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3132 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003133 AC_MSG_RESULT(yes)
3134 ], [
3135 AC_MSG_RESULT(no)
3136 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3137 AC_TRY_COMPILE([
3138# include <netdb.h>
3139 ], [
3140 char *name;
3141 struct hostent *he;
3142 char buffer[2048];
3143 int buflen = 2048;
3144 int h_errnop;
3145
3146 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3147 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003148 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003149 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3150 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003151 AC_MSG_RESULT(yes)
3152 ], [
3153 AC_MSG_RESULT(no)
3154 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3155 AC_TRY_COMPILE([
3156# include <netdb.h>
3157 ], [
3158 char *name;
3159 struct hostent *he;
3160 struct hostent_data data;
3161
3162 (void) gethostbyname_r(name, he, &data);
3163 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003164 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003165 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3166 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003167 AC_MSG_RESULT(yes)
3168 ], [
3169 AC_MSG_RESULT(no)
3170 ])
3171 ])
3172 ])
3173 CFLAGS=$OLD_CFLAGS
3174], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003175 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003176])
3177AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3178AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3179AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003180AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003181AC_SUBST(HAVE_GETHOSTBYNAME)
3182
Guido van Rossum627b2d71993-12-24 10:39:16 +00003183# checks for system services
3184# (none yet)
3185
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003186# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003187AC_CHECK_FUNC(__fpu_control,
3188 [],
3189 [AC_CHECK_LIB(ieee, __fpu_control)
3190])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003191
Guido van Rossum93274221997-05-09 02:42:00 +00003192# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003193AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003194AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003195 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3196[
Guido van Rossum93274221997-05-09 02:42:00 +00003197if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003198then
3199 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3200 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3201 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003202else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003203fi],
3204[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003205
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003206# check for --with-libm=...
3207AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003208case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003209Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003210BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003211*) LIBM=-lm
3212esac
Guido van Rossum93274221997-05-09 02:42:00 +00003213AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003214AC_ARG_WITH(libm,
3215 AC_HELP_STRING(--with-libm=STRING, math library),
3216[
Guido van Rossum93274221997-05-09 02:42:00 +00003217if test "$withval" = no
3218then LIBM=
3219 AC_MSG_RESULT(force LIBM empty)
3220elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003221then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003222 AC_MSG_RESULT(set LIBM="$withval")
3223else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003224fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003225[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003226
3227# check for --with-libc=...
3228AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003229AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003230AC_ARG_WITH(libc,
3231 AC_HELP_STRING(--with-libc=STRING, C library),
3232[
Guido van Rossum93274221997-05-09 02:42:00 +00003233if test "$withval" = no
3234then LIBC=
3235 AC_MSG_RESULT(force LIBC empty)
3236elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003237then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003238 AC_MSG_RESULT(set LIBC="$withval")
3239else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003240fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003241[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003242
Christian Heimes0a8143f2007-12-18 23:22:54 +00003243# ************************************
3244# * Check for mathematical functions *
3245# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003246
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003247LIBS_SAVE=$LIBS
3248LIBS="$LIBS $LIBM"
3249
Mark Dickinson04b27232009-01-04 12:29:36 +00003250# Detect whether system arithmetic is subject to x87-style double
3251# rounding issues. The result of this test has little meaning on non
3252# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3253# mode is round-to-nearest and double rounding issues are present, and
3254# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3255AC_MSG_CHECKING(for x87-style double rounding)
3256AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3257AC_TRY_RUN([
3258#include <stdlib.h>
3259#include <math.h>
3260int main() {
3261 volatile double x, y, z;
3262 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3263 x = 0.99999999999999989; /* 1-2**-53 */
3264 y = 1./x;
3265 if (y != 1.)
3266 exit(0);
3267 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3268 x = 1e16;
3269 y = 2.99999;
3270 z = x + y;
3271 if (z != 1e16+4.)
3272 exit(0);
3273 /* both tests show evidence of double rounding */
3274 exit(1);
3275}
3276],
3277ac_cv_x87_double_rounding=no,
3278ac_cv_x87_double_rounding=yes,
3279ac_cv_x87_double_rounding=no)])
3280AC_MSG_RESULT($ac_cv_x87_double_rounding)
3281if test "$ac_cv_x87_double_rounding" = yes
3282then
3283 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3284 [Define if arithmetic is subject to x87-style double rounding issue])
3285fi
3286
Jesse Noller355b1262009-04-02 00:03:28 +00003287# Multiprocessing check for broken sem_getvalue
3288AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003289AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003290AC_TRY_RUN([
3291#include <unistd.h>
3292#include <fcntl.h>
3293#include <stdio.h>
3294#include <semaphore.h>
3295#include <sys/stat.h>
3296
3297int main(void){
3298 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3299 int count;
3300 int res;
3301 if(a==SEM_FAILED){
3302 perror("sem_open");
3303 return 1;
3304
3305 }
3306 res = sem_getvalue(a, &count);
3307 sem_close(a);
3308 return res==-1 ? 1 : 0;
3309}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003310], ac_cv_broken_sem_getvalue=no,
3311 ac_cv_broken_sem_getvalue=yes,
3312 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003313)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003314AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3315if test $ac_cv_broken_sem_getvalue = yes
3316then
3317 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3318 [define to 1 if your sem_getvalue is broken.])
3319fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003320
Mark Dickinson265d7382008-04-21 22:32:24 +00003321# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3322# -0. on some architectures.
3323AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3324AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3325AC_TRY_RUN([
3326#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003327#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003328int main() {
3329 /* return 0 if either negative zeros don't exist
3330 on this platform or if negative zeros exist
3331 and tanh(-0.) == -0. */
3332 if (atan2(0., -1.) == atan2(-0., -1.) ||
3333 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3334 else exit(1);
3335}
3336],
3337ac_cv_tanh_preserves_zero_sign=yes,
3338ac_cv_tanh_preserves_zero_sign=no,
3339ac_cv_tanh_preserves_zero_sign=no)])
3340AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3341if test "$ac_cv_tanh_preserves_zero_sign" = yes
3342then
3343 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3344 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3345fi
3346
Mark Dickinson65898e02009-09-05 10:27:00 +00003347AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3348AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinsond181e3a2009-01-04 13:57:26 +00003349AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003350
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003351LIBS=$LIBS_SAVE
3352
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003353# determine what size digit to use for Python's longs
3354AC_MSG_CHECKING([digit size for Python's longs])
3355AC_ARG_ENABLE(big-digits,
3356AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3357[case $enable_big_digits in
3358yes)
3359 enable_big_digits=30 ;;
3360no)
3361 enable_big_digits=15 ;;
3362[15|30])
3363 ;;
3364*)
3365 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3366esac
3367AC_MSG_RESULT($enable_big_digits)
3368AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3369],
3370[AC_MSG_RESULT(no value specified)])
3371
Guido van Rossumef2255b2000-03-10 22:30:29 +00003372# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003373AC_CHECK_HEADER(wchar.h, [
3374 AC_DEFINE(HAVE_WCHAR_H, 1,
3375 [Define if the compiler provides a wchar.h header file.])
3376 wchar_h="yes"
3377],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003378wchar_h="no"
3379)
3380
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003381# determine wchar_t size
3382if test "$wchar_h" = yes
3383then
Guido van Rossum67b26592001-10-20 14:21:45 +00003384 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003385fi
3386
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003387AC_MSG_CHECKING(for UCS-4 tcl)
3388have_ucs4_tcl=no
3389AC_TRY_COMPILE([
3390#include <tcl.h>
3391#if TCL_UTF_MAX != 6
3392# error "NOT UCS4_TCL"
3393#endif], [], [
3394 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3395 have_ucs4_tcl=yes
3396])
3397AC_MSG_RESULT($have_ucs4_tcl)
3398
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003399# check whether wchar_t is signed or not
3400if test "$wchar_h" = yes
3401then
3402 # check whether wchar_t is signed or not
3403 AC_MSG_CHECKING(whether wchar_t is signed)
3404 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3405 AC_TRY_RUN([
3406 #include <wchar.h>
3407 int main()
3408 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003409 /* Success: exit code 0 */
3410 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003411 }
3412 ],
3413 ac_cv_wchar_t_signed=yes,
3414 ac_cv_wchar_t_signed=no,
3415 ac_cv_wchar_t_signed=yes)])
3416 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3417fi
3418
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003419AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003420dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003421AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003422 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3423 [],
3424 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003425
3426if test $enable_unicode = yes
3427then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003428 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003429 case "$have_ucs4_tcl" in
3430 yes) enable_unicode="ucs4"
3431 ;;
3432 *) enable_unicode="ucs2"
3433 ;;
3434 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003435fi
3436
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003437AH_TEMPLATE(Py_UNICODE_SIZE,
3438 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003439case "$enable_unicode" in
3440ucs2) unicode_size="2"
3441 AC_DEFINE(Py_UNICODE_SIZE,2)
3442 ;;
3443ucs4) unicode_size="4"
3444 AC_DEFINE(Py_UNICODE_SIZE,4)
3445 ;;
3446esac
3447
Martin v. Löwis11437992002-04-12 09:54:03 +00003448AH_TEMPLATE(PY_UNICODE_TYPE,
3449 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003450
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003451AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003452if test "$enable_unicode" = "no"
3453then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003454 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003455 AC_MSG_RESULT(not used)
3456else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003457 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003458 AC_DEFINE(Py_USING_UNICODE, 1,
3459 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003460
3461 # wchar_t is only usable if it maps to an unsigned type
3462 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003463 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003464 then
3465 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003466 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3467 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003468 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003469 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003470 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3471 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3472 then
3473 PY_UNICODE_TYPE="unsigned short"
3474 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3475 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3476 then
3477 PY_UNICODE_TYPE="unsigned long"
3478 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3479 else
3480 PY_UNICODE_TYPE="no type found"
3481 fi
3482 AC_MSG_RESULT($PY_UNICODE_TYPE)
3483fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003484
3485# check for endianness
3486AC_C_BIGENDIAN
3487
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003488# Check whether right shifting a negative integer extends the sign bit
3489# or fills with zeros (like the Cray J90, according to Tim Peters).
3490AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003491AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003492AC_TRY_RUN([
3493int main()
3494{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003495 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003496}
Guido van Rossum3065c942001-09-17 04:03:14 +00003497],
3498ac_cv_rshift_extends_sign=yes,
3499ac_cv_rshift_extends_sign=no,
3500ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003501AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3502if test "$ac_cv_rshift_extends_sign" = no
3503then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003504 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3505 [Define if i>>j for signed int i does not extend the sign bit
3506 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003507fi
3508
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003509# check for getc_unlocked and related locking functions
3510AC_MSG_CHECKING(for getc_unlocked() and friends)
3511AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3512AC_TRY_LINK([#include <stdio.h>],[
3513 FILE *f = fopen("/dev/null", "r");
3514 flockfile(f);
3515 getc_unlocked(f);
3516 funlockfile(f);
3517], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3518AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3519if test "$ac_cv_have_getc_unlocked" = yes
3520then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003521 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3522 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003523fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003524
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003525# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003526# save the value of LIBS so we don't actually link Python with readline
3527LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003528
3529# On some systems we need to link readline to a termcap compatible
3530# library. NOTE: Keep the precedence of listed libraries synchronised
3531# with setup.py.
3532py_cv_lib_readline=no
3533AC_MSG_CHECKING([how to link readline libs])
3534for py_libtermcap in "" ncursesw ncurses curses termcap; do
3535 if test -z "$py_libtermcap"; then
3536 READLINE_LIBS="-lreadline"
3537 else
3538 READLINE_LIBS="-lreadline -l$py_libtermcap"
3539 fi
3540 LIBS="$READLINE_LIBS $LIBS_no_readline"
3541 AC_LINK_IFELSE(
3542 [AC_LANG_CALL([],[readline])],
3543 [py_cv_lib_readline=yes])
3544 if test $py_cv_lib_readline = yes; then
3545 break
3546 fi
3547done
3548# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3549#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003550if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003551 AC_MSG_RESULT([none])
3552else
3553 AC_MSG_RESULT([$READLINE_LIBS])
3554 AC_DEFINE(HAVE_LIBREADLINE, 1,
3555 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003556fi
3557
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003558# check for readline 2.1
3559AC_CHECK_LIB(readline, rl_callback_handler_install,
3560 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003561 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003562
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003563# check for readline 2.2
3564AC_TRY_CPP([#include <readline/readline.h>],
3565have_readline=yes, have_readline=no)
3566if test $have_readline = yes
3567then
3568 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3569 [readline/readline.h],
3570 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3571 [Define if you have readline 2.2]), )
3572fi
3573
Martin v. Löwis0daad592001-09-30 21:09:59 +00003574# check for readline 4.0
3575AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003576 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003577 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003578
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003579# also in 4.0
3580AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3581 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003582 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003583
Guido van Rossum353ae582001-07-10 16:45:32 +00003584# check for readline 4.2
3585AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003586 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003587 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003588
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003589# also in readline 4.2
3590AC_TRY_CPP([#include <readline/readline.h>],
3591have_readline=yes, have_readline=no)
3592if test $have_readline = yes
3593then
3594 AC_EGREP_HEADER([extern int rl_catch_signals;],
3595 [readline/readline.h],
3596 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3597 [Define if you can turn off readline's signal handling.]), )
3598fi
3599
Martin v. Löwis82bca632006-02-10 20:49:30 +00003600# End of readline checks: restore LIBS
3601LIBS=$LIBS_no_readline
3602
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003603AC_MSG_CHECKING(for broken nice())
3604AC_CACHE_VAL(ac_cv_broken_nice, [
3605AC_TRY_RUN([
3606int main()
3607{
3608 int val1 = nice(1);
3609 if (val1 != -1 && val1 == nice(2))
3610 exit(0);
3611 exit(1);
3612}
Guido van Rossum3065c942001-09-17 04:03:14 +00003613],
3614ac_cv_broken_nice=yes,
3615ac_cv_broken_nice=no,
3616ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003617AC_MSG_RESULT($ac_cv_broken_nice)
3618if test "$ac_cv_broken_nice" = yes
3619then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003620 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3621 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003622fi
3623
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003624AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003625AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003626AC_TRY_RUN([
3627#include <poll.h>
3628
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003629int main()
3630{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003631 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003632 int poll_test;
3633
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003634 close (42);
3635
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003636 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003637 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003638 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003639 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003640 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003641 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003642 return 1;
3643}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003644],
3645ac_cv_broken_poll=yes,
3646ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003647ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003648AC_MSG_RESULT($ac_cv_broken_poll)
3649if test "$ac_cv_broken_poll" = yes
3650then
3651 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3652 [Define if poll() sets errno on invalid file descriptors.])
3653fi
3654
Brett Cannon43802422005-02-10 20:48:03 +00003655# Before we can test tzset, we need to check if struct tm has a tm_zone
3656# (which is not required by ISO C or UNIX spec) and/or if we support
3657# tzname[]
3658AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003659
Brett Cannon43802422005-02-10 20:48:03 +00003660# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003661AC_MSG_CHECKING(for working tzset())
3662AC_CACHE_VAL(ac_cv_working_tzset, [
3663AC_TRY_RUN([
3664#include <stdlib.h>
3665#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003666#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003667
3668#if HAVE_TZNAME
3669extern char *tzname[];
3670#endif
3671
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003672int main()
3673{
Brett Cannon18367812003-09-19 00:59:16 +00003674 /* Note that we need to ensure that not only does tzset(3)
3675 do 'something' with localtime, but it works as documented
3676 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003677 This includes making sure that tzname is set properly if
3678 tm->tm_zone does not exist since it is the alternative way
3679 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003680
3681 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003682 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003683 */
3684
Brett Cannon43802422005-02-10 20:48:03 +00003685 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003686 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3687
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003688 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003689 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003690 if (localtime(&groundhogday)->tm_hour != 0)
3691 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003692#if HAVE_TZNAME
3693 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3694 if (strcmp(tzname[0], "UTC") ||
3695 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3696 exit(1);
3697#endif
Brett Cannon18367812003-09-19 00:59:16 +00003698
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003699 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003700 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003701 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003702 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003703#if HAVE_TZNAME
3704 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3705 exit(1);
3706#endif
Brett Cannon18367812003-09-19 00:59:16 +00003707
3708 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3709 tzset();
3710 if (localtime(&groundhogday)->tm_hour != 11)
3711 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003712#if HAVE_TZNAME
3713 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3714 exit(1);
3715#endif
3716
3717#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003718 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3719 exit(1);
3720 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3721 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003722#endif
Brett Cannon18367812003-09-19 00:59:16 +00003723
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003724 exit(0);
3725}
3726],
3727ac_cv_working_tzset=yes,
3728ac_cv_working_tzset=no,
3729ac_cv_working_tzset=no)])
3730AC_MSG_RESULT($ac_cv_working_tzset)
3731if test "$ac_cv_working_tzset" = yes
3732then
3733 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3734 [Define if tzset() actually switches the local timezone in a meaningful way.])
3735fi
3736
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003737# Look for subsecond timestamps in struct stat
3738AC_MSG_CHECKING(for tv_nsec in struct stat)
3739AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3740AC_TRY_COMPILE([#include <sys/stat.h>], [
3741struct stat st;
3742st.st_mtim.tv_nsec = 1;
3743],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003744ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003745ac_cv_stat_tv_nsec=no,
3746ac_cv_stat_tv_nsec=no))
3747AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3748if test "$ac_cv_stat_tv_nsec" = yes
3749then
3750 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3751 [Define if you have struct stat.st_mtim.tv_nsec])
3752fi
3753
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003754# Look for BSD style subsecond timestamps in struct stat
3755AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3756AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3757AC_TRY_COMPILE([#include <sys/stat.h>], [
3758struct stat st;
3759st.st_mtimespec.tv_nsec = 1;
3760],
3761ac_cv_stat_tv_nsec2=yes,
3762ac_cv_stat_tv_nsec2=no,
3763ac_cv_stat_tv_nsec2=no))
3764AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3765if test "$ac_cv_stat_tv_nsec2" = yes
3766then
3767 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3768 [Define if you have struct stat.st_mtimensec])
3769fi
3770
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003771# On HP/UX 11.0, mvwdelch is a block with a return statement
3772AC_MSG_CHECKING(whether mvwdelch is an expression)
3773AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3774AC_TRY_COMPILE([#include <curses.h>], [
3775 int rtn;
3776 rtn = mvwdelch(0,0,0);
3777], ac_cv_mvwdelch_is_expression=yes,
3778 ac_cv_mvwdelch_is_expression=no,
3779 ac_cv_mvwdelch_is_expression=yes))
3780AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3781
3782if test "$ac_cv_mvwdelch_is_expression" = yes
3783then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003784 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3785 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003786fi
3787
3788AC_MSG_CHECKING(whether WINDOW has _flags)
3789AC_CACHE_VAL(ac_cv_window_has_flags,
3790AC_TRY_COMPILE([#include <curses.h>], [
3791 WINDOW *w;
3792 w->_flags = 0;
3793], ac_cv_window_has_flags=yes,
3794 ac_cv_window_has_flags=no,
3795 ac_cv_window_has_flags=no))
3796AC_MSG_RESULT($ac_cv_window_has_flags)
3797
3798
3799if test "$ac_cv_window_has_flags" = yes
3800then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003801 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3802 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003803fi
3804
Walter Dörwald4994d952006-06-19 08:07:50 +00003805AC_MSG_CHECKING(for is_term_resized)
3806AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3807 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3808 AC_MSG_RESULT(yes),
3809 AC_MSG_RESULT(no)
3810)
3811
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003812AC_MSG_CHECKING(for resize_term)
3813AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3814 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003815 AC_MSG_RESULT(yes),
3816 AC_MSG_RESULT(no)
3817)
3818
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003819AC_MSG_CHECKING(for resizeterm)
3820AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3821 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003822 AC_MSG_RESULT(yes),
3823 AC_MSG_RESULT(no)
3824)
3825
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003826AC_MSG_CHECKING(for /dev/ptmx)
3827
3828if test -r /dev/ptmx
3829then
3830 AC_MSG_RESULT(yes)
3831 AC_DEFINE(HAVE_DEV_PTMX, 1,
3832 [Define if we have /dev/ptmx.])
3833else
3834 AC_MSG_RESULT(no)
3835fi
3836
3837AC_MSG_CHECKING(for /dev/ptc)
3838
3839if test -r /dev/ptc
3840then
3841 AC_MSG_RESULT(yes)
3842 AC_DEFINE(HAVE_DEV_PTC, 1,
3843 [Define if we have /dev/ptc.])
3844else
3845 AC_MSG_RESULT(no)
3846fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003847
Brett Cannon09d12362006-05-11 05:11:33 +00003848AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003849AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003850AC_TRY_RUN([[
3851#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00003852#include <stddef.h>
3853#include <string.h>
3854
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003855#ifdef HAVE_SYS_TYPES_H
3856#include <sys/types.h>
3857#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003858
3859#ifdef HAVE_SSIZE_T
3860typedef ssize_t Py_ssize_t;
3861#elif SIZEOF_VOID_P == SIZEOF_LONG
3862typedef long Py_ssize_t;
3863#else
3864typedef int Py_ssize_t;
3865#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003866
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003867int main()
3868{
3869 char buffer[256];
3870
Brett Cannon09d12362006-05-11 05:11:33 +00003871 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3872 return 1;
3873
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003874 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003875 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003876
3877 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3878 return 1;
3879
3880 if (strcmp(buffer, "-123"))
3881 return 1;
3882
Brett Cannon09d12362006-05-11 05:11:33 +00003883 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003884}
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003885]], ac_cv_have_size_t_format=yes,
3886 ac_cv_have_size_t_format=no,
3887 ac_cv_have_size_t_format=no)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003888)
3889AC_MSG_RESULT($ac_cv_have_size_t_format)
3890if test $ac_cv_have_size_t_format = yes
3891then
3892 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3893 [Define to printf format modifier for Py_ssize_t])
3894fi
Brett Cannon09d12362006-05-11 05:11:33 +00003895
Martin v. Löwis01c04012002-11-11 14:58:44 +00003896AC_CHECK_TYPE(socklen_t,,
3897 AC_DEFINE(socklen_t,int,
3898 Define to `int' if <sys/socket.h> does not define.),[
3899#ifdef HAVE_SYS_TYPES_H
3900#include <sys/types.h>
3901#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003902#ifdef HAVE_SYS_SOCKET_H
3903#include <sys/socket.h>
3904#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003905])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003906
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003907AC_SUBST(THREADHEADERS)
3908
3909for h in `(cd $srcdir;echo Python/thread_*.h)`
3910do
3911 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3912done
3913
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003914AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003915SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003916AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003917for dir in $SRCDIRS; do
3918 if test ! -d $dir; then
3919 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003920 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003921done
3922AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003923
Guido van Rossum627b2d71993-12-24 10:39:16 +00003924# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00003925AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003926AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003927
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003928echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003929if test ! -f Modules/Setup
3930then
3931 cp $srcdir/Modules/Setup.dist Modules/Setup
3932fi
3933
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003934echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003935if test ! -f Modules/Setup.local
3936then
3937 echo "# Edit this file for local setup changes" >Modules/Setup.local
3938fi
3939
3940echo "creating Makefile"
3941$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3942 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003943 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003944
3945case $ac_sys_system in
3946BeOS)
3947 AC_MSG_WARN([
3948
3949 Support for BeOS is deprecated as of Python 2.6.
3950 See PEP 11 for the gory details.
3951 ])
3952 ;;
3953*) ;;
3954esac
3955
Neil Schemenauer66252162001-02-19 04:47:42 +00003956mv config.c Modules