blob: 4c4731fcfeb6e0abd9be386f80fcc5cdb7b143f6 [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"
121],
122[
123 AC_MSG_RESULT(32-bit)
124])
125
126
127
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000128AC_ARG_WITH(framework-name,
129 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
130 specify an alternate name of the framework built with --enable-framework),
131[
132 PYTHONFRAMEWORK=${withval}
133 PYTHONFRAMEWORKDIR=${withval}.framework
134 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
135 ],[
136 PYTHONFRAMEWORK=Python
137 PYTHONFRAMEWORKDIR=Python.framework
138 PYTHONFRAMEWORKIDENTIFIER=org.python.python
139])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000140dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000141AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000142 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
143[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000144 case $enableval in
145 yes)
146 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 esac
148 case $enableval in
149 no)
150 PYTHONFRAMEWORK=
151 PYTHONFRAMEWORKDIR=no-framework
152 PYTHONFRAMEWORKPREFIX=
153 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000154 FRAMEWORKINSTALLFIRST=
155 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000156 FRAMEWORKALTINSTALLFIRST=
157 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000158 if test "x${prefix}" = "xNONE"; then
159 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
160 else
161 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
162 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000163 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000164 ;;
165 *)
166 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000167 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000168 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000169 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
170 if test "$UNIVERSAL_ARCHS" = "all"
171 then
172 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000173 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000174 else
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000175 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000176 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
177 fi
178
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000179 if test "x${prefix}" = "xNONE" ; then
180 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
181 else
182 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
183 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000185
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000186 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000187 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000188 AC_CONFIG_FILES(Mac/Makefile)
189 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
190 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000191 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
192 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000193 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194 ],[
195 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000196 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000197 PYTHONFRAMEWORKPREFIX=
198 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000199 FRAMEWORKINSTALLFIRST=
200 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000201 FRAMEWORKALTINSTALLFIRST=
202 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000203 if test "x${prefix}" = "xNONE" ; then
204 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
205 else
206 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
207 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000208 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000209
210 if test "$UNIVERSAL_ARCHS" = "all"
211 then
212 FRAMEWORKINSTALLLAST=update4wayuniversal
213 FRAMEWORKALTINSTALLLAST=update4wayuniversal
214 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000215])
216AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000217AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218AC_SUBST(PYTHONFRAMEWORKDIR)
219AC_SUBST(PYTHONFRAMEWORKPREFIX)
220AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000221AC_SUBST(FRAMEWORKINSTALLFIRST)
222AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000223AC_SUBST(FRAMEWORKALTINSTALLFIRST)
224AC_SUBST(FRAMEWORKALTINSTALLLAST)
225AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000226
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000227##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000228## AC_HELP_STRING(--with-dyld,
229## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000230##
Guido van Rossumb418f891996-07-30 18:06:02 +0000231# Set name for machine-dependent library files
232AC_SUBST(MACHDEP)
233AC_MSG_CHECKING(MACHDEP)
234if test -z "$MACHDEP"
235then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000236 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000237 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000238 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000239 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000240 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000242 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000243 ac_md_system=`echo $ac_sys_system |
244 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
245 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000246 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000247 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000249 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000250 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000251 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000252 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000253 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000254 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000255 esac
256fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000257
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000258# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
259# disable features if it is defined, without any means to access these
260# features as extensions. For these systems, we skip the definition of
261# _XOPEN_SOURCE. Before adding a system to the list to gain access to
262# some feature, make sure there is no alternative way to access this
263# feature. Also, when using wildcards, make sure you have verified the
264# need for not defining _XOPEN_SOURCE on all systems matching the
265# wildcard, and that the wildcard does not include future systems
266# (which may remove their limitations).
267dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
268case $ac_sys_system/$ac_sys_release in
269 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
270 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000271 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000272 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000273 define_xopen_source=no
274 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
275 # also defined. This can be overridden by defining _BSD_SOURCE
276 # As this has a different meaning on Linux, only define it on OpenBSD
277 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
278 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000279 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
280 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
281 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000282 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 +0000283 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000284 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
285 # of union __?sigval. Reported by Stuart Bishop.
286 SunOS/5.6)
287 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000288 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
289 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000290 # Reconfirmed for 7.1.4 by Martin v. Loewis.
291 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000292 define_xopen_source=no;;
293 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000294 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000295 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000296 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000297 # On FreeBSD 4, the math functions C89 does not cover are never defined
298 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
299 FreeBSD/4.*)
300 define_xopen_source=no;;
301 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
302 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
303 # identifies itself as Darwin/7.*
304 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
305 # disables platform specific features beyond repair.
306 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
307 # has no effect, don't bother defining them
308 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000309 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000310 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
311 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
312 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000313 AIX/4)
314 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000315 AIX/5)
316 if test `uname -r` -eq 1; then
317 define_xopen_source=no
318 fi
319 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000320 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
321 # defining NI_NUMERICHOST.
322 QNX/6.3.2)
323 define_xopen_source=no
324 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000325
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000326esac
327
328if test $define_xopen_source = yes
329then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000330 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
331 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000332 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
333 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000334 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000335 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000336 AC_DEFINE(_XOPEN_SOURCE, 500,
337 Define to the level of X/Open that your system supports)
338 ;;
339 *)
340 AC_DEFINE(_XOPEN_SOURCE, 600,
341 Define to the level of X/Open that your system supports)
342 ;;
343 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000344
345 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
346 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
347 # several APIs are not declared. Since this is also needed in some
348 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 # except for Solaris 10, where it must not be defined,
350 # as it implies XPG4.2
351 case $ac_sys_system/$ac_sys_release in
352 SunOS/5.10)
353 ;;
354 *)
355 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
356 Define to activate Unix95-and-earlier features)
357 ;;
358 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000359
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000360 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
361
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000362fi
363
Guido van Rossum91922671997-10-09 20:24:13 +0000364#
365# SGI compilers allow the specification of the both the ABI and the
366# ISA on the command line. Depending on the values of these switches,
367# different and often incompatable code will be generated.
368#
369# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
370# thus supply support for various ABI/ISA combinations. The MACHDEP
371# variable is also adjusted.
372#
373AC_SUBST(SGI_ABI)
374if test ! -z "$SGI_ABI"
375then
376 CC="cc $SGI_ABI"
377 LDFLAGS="$SGI_ABI $LDFLAGS"
378 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
379fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000380AC_MSG_RESULT($MACHDEP)
381
Jack Jansen83f898c2002-12-30 22:23:40 +0000382# And add extra plat-mac for darwin
383AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000384AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000385AC_MSG_CHECKING(EXTRAPLATDIR)
386if test -z "$EXTRAPLATDIR"
387then
388 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000389 darwin)
390 EXTRAPLATDIR="\$(PLATMACDIRS)"
391 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
392 ;;
393 *)
394 EXTRAPLATDIR=""
395 EXTRAMACHDEPPATH=""
396 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000397 esac
398fi
399AC_MSG_RESULT($EXTRAPLATDIR)
400
Jack Jansen6b08a402004-06-03 12:41:45 +0000401# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
402# it may influence the way we can build extensions, so distutils
403# needs to check it
404AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000405AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000406CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000407EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000408
Mark Dickinson65134662008-04-25 16:11:04 +0000409AC_MSG_CHECKING(machine type as reported by uname -m)
410ac_sys_machine=`uname -m`
411AC_MSG_RESULT($ac_sys_machine)
412
Guido van Rossum627b2d71993-12-24 10:39:16 +0000413# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000414
415# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
416# for debug/optimization stuff. BASECFLAGS is for flags that are required
417# just to get things to compile and link. Users are free to override OPT
418# when running configure or make. The build should not break if they do.
419# BASECFLAGS should generally not be messed with, however.
420
421# XXX shouldn't some/most/all of this code be merged with the stuff later
422# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000423AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000424AC_ARG_WITH(gcc,
425 AC_HELP_STRING(--without-gcc,never use gcc),
426[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000427 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000428 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000429 without_gcc=yes;;
430 yes) CC=gcc
431 without_gcc=no;;
432 *) CC=$withval
433 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000434 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000435 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000436 AIX*) CC=cc_r
437 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000438 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000439 case $BE_HOST_CPU in
440 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000441 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000442 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000443 BASECFLAGS="$BASECFLAGS -export pragma"
444 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000445 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000446 ;;
447 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000448 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000449 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000450 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000451 ;;
452 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000453 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000454 ;;
455 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000456 AR="\$(srcdir)/Modules/ar_beos"
457 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000458 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000459 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000460 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000461AC_MSG_RESULT($without_gcc)
462
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000463# If the user switches compilers, we can't believe the cache
464if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
465then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000466 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
467(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000468fi
469
Guido van Rossum627b2d71993-12-24 10:39:16 +0000470AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000471
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000472AC_SUBST(CXX)
473AC_SUBST(MAINCC)
474AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
475AC_ARG_WITH(cxx_main,
476 AC_HELP_STRING([--with-cxx-main=<compiler>],
477 [compile main() and link python executable with C++ compiler]),
478[
479
480 case $withval in
481 no) with_cxx_main=no
482 MAINCC='$(CC)';;
483 yes) with_cxx_main=yes
484 MAINCC='$(CXX)';;
485 *) with_cxx_main=yes
486 MAINCC=$withval
487 if test -z "$CXX"
488 then
489 CXX=$withval
490 fi;;
491 esac], [
492 with_cxx_main=no
493 MAINCC='$(CC)'
494])
495AC_MSG_RESULT($with_cxx_main)
496
497preset_cxx="$CXX"
498if test -z "$CXX"
499then
500 case "$CC" in
501 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
502 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
503 esac
504 if test "$CXX" = "notfound"
505 then
506 CXX=""
507 fi
508fi
509if test -z "$CXX"
510then
511 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
512 if test "$CXX" = "notfound"
513 then
514 CXX=""
515 fi
516fi
517if test "$preset_cxx" != "$CXX"
518then
519 AC_MSG_WARN([
520
521 By default, distutils will build C++ extension modules with "$CXX".
522 If this is not intended, then set CXX on the configure command line.
523 ])
524fi
525
526
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000527# checks for UNIX variants that set C preprocessor variables
528AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000529
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000530# Check for unsupported systems
531case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000532atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000533 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
534 echo See README for details.
535 exit 1;;
536esac
537
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000538AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000539AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000540AC_ARG_WITH(suffix,
541 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
542[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000543 case $withval in
544 no) EXEEXT=;;
545 yes) EXEEXT=.exe;;
546 *) EXEEXT=$withval;;
547 esac])
548AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000549
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000550# Test whether we're running on a non-case-sensitive system, in which
551# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000552AC_SUBST(BUILDEXEEXT)
553AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000554if test ! -d CaseSensitiveTestDir; then
555mkdir CaseSensitiveTestDir
556fi
557
558if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000559then
Jack Jansen1999ef42001-12-06 21:47:20 +0000560 AC_MSG_RESULT(yes)
561 BUILDEXEEXT=.exe
562else
563 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000564 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000565fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000566rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000567
Guido van Rossumdd997f71998-10-07 19:58:26 +0000568case $MACHDEP in
569bsdos*)
570 case $CC in
571 gcc) CC="$CC -D_HAVE_BSDI";;
572 esac;;
573esac
574
Guido van Rossum84561611997-08-21 00:08:11 +0000575case $ac_sys_system in
576hp*|HP*)
577 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000578 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000579 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000580SunOS*)
581 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000582 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000583 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000584esac
585
Martin v. Löwise8964d42001-03-06 12:09:07 +0000586
Neil Schemenauer61c51152001-01-26 16:18:16 +0000587AC_SUBST(LIBRARY)
588AC_MSG_CHECKING(LIBRARY)
589if test -z "$LIBRARY"
590then
591 LIBRARY='libpython$(VERSION).a'
592fi
593AC_MSG_RESULT($LIBRARY)
594
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000595# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000596# name of the library into which to insert object files). BLDLIBRARY is also
597# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
598# is blank as the main program is not linked directly against LDLIBRARY.
599# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
600# systems without shared libraries, LDLIBRARY is the same as LIBRARY
601# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
602# DLLLIBRARY is the shared (i.e., DLL) library.
603#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000604# RUNSHARED is used to run shared python without installed libraries
605#
606# INSTSONAME is the name of the shared library that will be use to install
607# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000608AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000609AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000610AC_SUBST(BLDLIBRARY)
611AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000612AC_SUBST(INSTSONAME)
613AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000614LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000615BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000616INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000617DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000618LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000619RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000620
Guido van Rossumfb842551997-08-06 23:42:07 +0000621# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000622# If CXX is set, and if it is needed to link a main function that was
623# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
624# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000625# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000626# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000627AC_SUBST(LINKCC)
628AC_MSG_CHECKING(LINKCC)
629if test -z "$LINKCC"
630then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000631 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000632 case $ac_sys_system in
633 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000634 exp_extra="\"\""
635 if test $ac_sys_release -ge 5 -o \
636 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
637 exp_extra="."
638 fi
639 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000640 QNX*)
641 # qcc must be used because the other compilers do not
642 # support -N.
643 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000644 esac
645fi
646AC_MSG_RESULT($LINKCC)
647
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000648# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
649# make sure we default having it set to "no": this is used by
650# distutils.unixccompiler to know if it should add --enable-new-dtags
651# to linker command lines, and failing to detect GNU ld simply results
652# in the same bahaviour as before.
653AC_SUBST(GNULD)
654AC_MSG_CHECKING(for GNU ld)
655ac_prog=ld
656if test "$GCC" = yes; then
657 ac_prog=`$CC -print-prog-name=ld`
658fi
659case `"$ac_prog" -V 2>&1 < /dev/null` in
660 *GNU*)
661 GNULD=yes;;
662 *)
663 GNULD=no;;
664esac
665AC_MSG_RESULT($GNULD)
666
Martin v. Löwis1142de32002-03-29 16:28:31 +0000667AC_MSG_CHECKING(for --enable-shared)
668AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000669 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000670
Martin v. Löwis1142de32002-03-29 16:28:31 +0000671if test -z "$enable_shared"
672then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000673 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000674 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000675 enable_shared="yes";;
676 *)
677 enable_shared="no";;
678 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000679fi
680AC_MSG_RESULT($enable_shared)
681
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000682AC_MSG_CHECKING(for --enable-profiling)
683AC_ARG_ENABLE(profiling,
684 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
685[ac_save_cc="$CC"
686 CC="$CC -pg"
687 AC_TRY_RUN([int main() { return 0; }],
688 ac_enable_profiling="yes",
689 ac_enable_profiling="no",
690 ac_enable_profiling="no")
691 CC="$ac_save_cc"])
692AC_MSG_RESULT($ac_enable_profiling)
693
694case "$ac_enable_profiling" in
695 "yes")
696 BASECFLAGS="-pg $BASECFLAGS"
697 LDFLAGS="-pg $LDFLAGS"
698 ;;
699esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000700
701AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000702
Guido van Rossumb8552162001-09-05 14:58:11 +0000703# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
704# library that we build, but we do not want to link against it (we
705# will find it with a -framework option). For this reason there is an
706# extra variable BLDLIBRARY against which Python and the extension
707# modules are linked, BLDLIBRARY. This is normally the same as
708# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000709if test "$enable_framework"
710then
711 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000712 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000713 BLDLIBRARY=''
714else
715 BLDLIBRARY='$(LDLIBRARY)'
716fi
717
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718# Other platforms follow
719if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000720 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000721 case $ac_sys_system in
722 BeOS*)
723 LDLIBRARY='libpython$(VERSION).so'
724 ;;
725 CYGWIN*)
726 LDLIBRARY='libpython$(VERSION).dll.a'
727 DLLLIBRARY='libpython$(VERSION).dll'
728 ;;
729 SunOS*)
730 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000731 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000732 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000733 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000734 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000735 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000736 LDLIBRARY='libpython$(VERSION).so'
737 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000738 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000739 case $ac_sys_system in
740 FreeBSD*)
741 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
742 ;;
743 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000744 INSTSONAME="$LDLIBRARY".$SOVERSION
745 ;;
746 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000747 case `uname -m` in
748 ia64)
749 LDLIBRARY='libpython$(VERSION).so'
750 ;;
751 *)
752 LDLIBRARY='libpython$(VERSION).sl'
753 ;;
754 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000755 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000756 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000757 ;;
758 OSF*)
759 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000760 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000761 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000762 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000763 atheos*)
764 LDLIBRARY='libpython$(VERSION).so'
765 BLDLIBRARY='-L. -lpython$(VERSION)'
766 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
767 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000768 Darwin*)
769 LDLIBRARY='libpython$(VERSION).dylib'
770 BLDLIBRARY='-L. -lpython$(VERSION)'
771 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
772 ;;
773
Martin v. Löwis1142de32002-03-29 16:28:31 +0000774 esac
Jason Tishler30765592003-09-04 11:04:06 +0000775else # shared is disabled
776 case $ac_sys_system in
777 CYGWIN*)
778 BLDLIBRARY='$(LIBRARY)'
779 LDLIBRARY='libpython$(VERSION).dll.a'
780 ;;
781 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000782fi
783
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000784AC_MSG_RESULT($LDLIBRARY)
785
Guido van Rossum627b2d71993-12-24 10:39:16 +0000786AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000787AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000788AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000789
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000790# tweak ARFLAGS only if the user didn't set it on the command line
791AC_SUBST(ARFLAGS)
792if test -z "$ARFLAGS"
793then
794 ARFLAGS="rc"
795fi
796
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000797AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000798AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000799if test $SVNVERSION = found
800then
801 SVNVERSION="svnversion \$(srcdir)"
802else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000803 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000804fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000805
Neil Schemenauera42c8272001-03-31 00:01:55 +0000806case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000807bsdos*|hp*|HP*)
808 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000809 if test -z "$INSTALL"
810 then
811 INSTALL="${srcdir}/install-sh -c"
812 fi
813esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000814AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000815
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000816# Not every filesystem supports hard links
817AC_SUBST(LN)
818if test -z "$LN" ; then
819 case $ac_sys_system in
820 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000821 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000822 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000823 *) LN=ln;;
824 esac
825fi
826
Fred Drake9f715822001-07-11 06:27:00 +0000827# Check for --with-pydebug
828AC_MSG_CHECKING(for --with-pydebug)
829AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000830 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
831[
Fred Drake9f715822001-07-11 06:27:00 +0000832if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000833then
834 AC_DEFINE(Py_DEBUG, 1,
835 [Define if you want to build an interpreter with many run-time checks.])
836 AC_MSG_RESULT(yes);
837 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000838else AC_MSG_RESULT(no); Py_DEBUG='false'
839fi],
840[AC_MSG_RESULT(no)])
841
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
843# merged with this chunk of code?
844
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000845# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846# ------------------------
847# (The following bit of code is complicated enough - please keep things
848# indented properly. Just pretend you're editing Python code. ;-)
849
850# There are two parallel sets of case statements below, one that checks to
851# see if OPT was set and one that does BASECFLAGS setting based upon
852# compiler and platform. BASECFLAGS tweaks need to be made even if the
853# user set OPT.
854
855# tweak OPT based on compiler and platform, only if the user didn't set
856# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000857AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000859then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860 case $GCC in
861 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000862 if test "$CC" != 'g++' ; then
863 STRICT_PROTO="-Wstrict-prototypes"
864 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000865 # For gcc 4.x we need to use -fwrapv so lets check if its supported
866 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
867 WRAP="-fwrapv"
868 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000870 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000871 if test "$Py_DEBUG" = 'true' ; then
872 # Optimization messes up debuggers, so turn it off for
873 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000874 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000875 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000876 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 fi
878 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000879 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000880 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000881 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000882 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000883 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000884 SCO_SV*) OPT="$OPT -m486 -DSCO5"
885 ;;
886 esac
Fred Drake9f715822001-07-11 06:27:00 +0000887 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000889 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000890 OPT="-O"
891 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000892 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000893fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000894
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000896
897# The -arch flags for universal builds on OSX
898UNIVERSAL_ARCH_FLAGS=
899AC_SUBST(UNIVERSAL_ARCH_FLAGS)
900
Skip Montanarodecc6a42003-01-01 20:07:49 +0000901# tweak BASECFLAGS based on compiler and platform
902case $GCC in
903yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000904 # Python violates C99 rules, by casting between incompatible
905 # pointer types. GCC may generate bad code as a result of that,
906 # so use -fno-strict-aliasing if supported.
907 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
908 ac_save_cc="$CC"
909 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000910 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000911 AC_TRY_RUN([int main() { return 0; }],
912 ac_cv_no_strict_aliasing_ok=yes,
913 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000914 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000915 CC="$ac_save_cc"
916 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
917 if test $ac_cv_no_strict_aliasing_ok = yes
918 then
919 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
920 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000921
922 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
923 # support. Without this, treatment of subnormals doesn't follow
924 # the standard.
925 case $ac_sys_machine in
926 alpha*)
927 BASECFLAGS="$BASECFLAGS -mieee"
928 ;;
929 esac
930
Skip Montanarodecc6a42003-01-01 20:07:49 +0000931 case $ac_sys_system in
932 SCO_SV*)
933 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
934 ;;
935 # is there any other compiler on Darwin besides gcc?
936 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000937 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
938 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000939
940
Ronald Oussoren988117f2006-04-29 11:31:35 +0000941 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000942 UNIVERSAL_ARCH_FLAGS=""
943 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
944 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000945 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000946
947 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
948 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren25967582009-09-06 10:00:26 +0000949 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000950
951 elif test "$UNIVERSAL_ARCHS" = "all" ; then
952 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000953 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000954
Ronald Oussoren23d92532009-09-07 06:12:00 +0000955 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
956 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
957 ARCH_RUN_32BIT="arch -i386"
958
959 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
960 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
961 ARCH_RUN_32BIT="arch -i386 -ppc"
962
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000963 else
Ronald Oussorena9cfbde2009-09-20 20:05:44 +0000964 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000965
966 fi
967
968
969 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000970 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000971 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
972 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
973 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000974 fi
975
Benjamin Peterson4347c442008-07-17 15:59:24 +0000976 # Calculate the right deployment target for this build.
977 #
978 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
979 if test ${cur_target} '>' 10.2; then
980 cur_target=10.3
Ronald Oussoren25967582009-09-06 10:00:26 +0000981 if test ${enable_universalsdk}; then
982 if test "${UNIVERSAL_ARCHS}" = "all"; then
983 # Ensure that the default platform for a
984 # 4-way universal build is OSX 10.5,
985 # that's the first OS release where
986 # 4-way builds make sense.
987 cur_target='10.5'
Ronald Oussoren23d92532009-09-07 06:12:00 +0000988
989 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
990 cur_target='10.5'
991
992 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
993 cur_target='10.5'
994
995 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
996 cur_target='10.5'
Ronald Oussoren25967582009-09-06 10:00:26 +0000997 fi
998 else
999 if test `arch` = "i386"; then
1000 # On Intel macs default to a deployment
1001 # target of 10.4, that's the first OSX
1002 # release with Intel support.
1003 cur_target="10.4"
1004 fi
1005 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001006 fi
1007 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1008
1009 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1010 # environment with a value that is the same as what we'll use
1011 # in the Makefile to ensure that we'll get the same compiler
1012 # environment during configure and build time.
1013 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1014 export MACOSX_DEPLOYMENT_TARGET
1015 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1016
Skip Montanarodecc6a42003-01-01 20:07:49 +00001017 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001018 OSF*)
1019 BASECFLAGS="$BASECFLAGS -mieee"
1020 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001021 esac
1022 ;;
1023
1024*)
1025 case $ac_sys_system in
1026 OpenUNIX*|UnixWare*)
1027 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1028 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001029 OSF*)
1030 BASECFLAGS="$BASECFLAGS -ieee -std"
1031 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001032 SCO_SV*)
1033 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1034 ;;
1035 esac
1036 ;;
1037esac
1038
Fred Drakee1ceaa02001-12-04 20:55:47 +00001039if test "$Py_DEBUG" = 'true'; then
1040 :
1041else
1042 OPT="-DNDEBUG $OPT"
1043fi
1044
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001045if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001046then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001047 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001048fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001049
Neal Norwitz020c46a2006-01-07 21:39:28 +00001050# disable check for icc since it seems to pass, but generates a warning
1051if test "$CC" = icc
1052then
1053 ac_cv_opt_olimit_ok=no
1054fi
1055
Guido van Rossum91922671997-10-09 20:24:13 +00001056AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1057AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1058[ac_save_cc="$CC"
1059CC="$CC -OPT:Olimit=0"
1060AC_TRY_RUN([int main() { return 0; }],
1061 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001062 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001063 ac_cv_opt_olimit_ok=no)
1064CC="$ac_save_cc"])
1065AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001066if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001067 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001068 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1069 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1070 # environment?
1071 Darwin*)
1072 ;;
1073 *)
1074 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1075 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001076 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001077else
1078 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1079 AC_CACHE_VAL(ac_cv_olimit_ok,
1080 [ac_save_cc="$CC"
1081 CC="$CC -Olimit 1500"
1082 AC_TRY_RUN([int main() { return 0; }],
1083 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001084 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001085 ac_cv_olimit_ok=no)
1086 CC="$ac_save_cc"])
1087 AC_MSG_RESULT($ac_cv_olimit_ok)
1088 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001089 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001090 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001091fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001092
Martin v. Löwisaac13162006-10-19 10:58:46 +00001093# Check whether GCC supports PyArg_ParseTuple format
1094if test "$GCC" = "yes"
1095then
1096 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1097 save_CFLAGS=$CFLAGS
1098 CFLAGS="$CFLAGS -Werror"
1099 AC_TRY_COMPILE([
1100 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1101 ],,
1102 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1103 AC_MSG_RESULT(yes),
1104 AC_MSG_RESULT(no)
1105 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001106 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001107fi
1108
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001109# On some compilers, pthreads are available without further options
1110# (e.g. MacOS X). On some of these systems, the compiler will not
1111# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1112# So we have to see first whether pthreads are available without
1113# options before we can check whether -Kpthread improves anything.
1114AC_MSG_CHECKING(whether pthreads are available without options)
1115AC_CACHE_VAL(ac_cv_pthread_is_default,
1116[AC_TRY_RUN([
1117#include <pthread.h>
1118
1119void* routine(void* p){return NULL;}
1120
1121int main(){
1122 pthread_t p;
1123 if(pthread_create(&p,NULL,routine,NULL)!=0)
1124 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001125 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001126 return 0;
1127}
1128],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001129[
1130 ac_cv_pthread_is_default=yes
1131 ac_cv_kthread=no
1132 ac_cv_pthread=no
1133],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001134 ac_cv_pthread_is_default=no,
1135 ac_cv_pthread_is_default=no)
1136])
1137AC_MSG_RESULT($ac_cv_pthread_is_default)
1138
1139
1140if test $ac_cv_pthread_is_default = yes
1141then
1142 ac_cv_kpthread=no
1143else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001144# -Kpthread, if available, provides the right #defines
1145# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001146# Some compilers won't report that they do not support -Kpthread,
1147# so we need to run a program to see whether it really made the
1148# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001149AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1150AC_CACHE_VAL(ac_cv_kpthread,
1151[ac_save_cc="$CC"
1152CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001153AC_TRY_RUN([
1154#include <pthread.h>
1155
1156void* routine(void* p){return NULL;}
1157
1158int main(){
1159 pthread_t p;
1160 if(pthread_create(&p,NULL,routine,NULL)!=0)
1161 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001162 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001163 return 0;
1164}
1165],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001166 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001167 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001168 ac_cv_kpthread=no)
1169CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001170AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001171fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001172
Skip Montanarod8d39a02003-07-10 20:44:10 +00001173if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001174then
1175# -Kthread, if available, provides the right #defines
1176# and linker options to make pthread_create available
1177# Some compilers won't report that they do not support -Kthread,
1178# so we need to run a program to see whether it really made the
1179# function available.
1180AC_MSG_CHECKING(whether $CC accepts -Kthread)
1181AC_CACHE_VAL(ac_cv_kthread,
1182[ac_save_cc="$CC"
1183CC="$CC -Kthread"
1184AC_TRY_RUN([
1185#include <pthread.h>
1186
1187void* routine(void* p){return NULL;}
1188
1189int main(){
1190 pthread_t p;
1191 if(pthread_create(&p,NULL,routine,NULL)!=0)
1192 return 1;
1193 (void)pthread_detach(p);
1194 return 0;
1195}
1196],
1197 ac_cv_kthread=yes,
1198 ac_cv_kthread=no,
1199 ac_cv_kthread=no)
1200CC="$ac_save_cc"])
1201AC_MSG_RESULT($ac_cv_kthread)
1202fi
1203
Skip Montanarod8d39a02003-07-10 20:44:10 +00001204if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001205then
1206# -pthread, if available, provides the right #defines
1207# and linker options to make pthread_create available
1208# Some compilers won't report that they do not support -pthread,
1209# so we need to run a program to see whether it really made the
1210# function available.
1211AC_MSG_CHECKING(whether $CC accepts -pthread)
1212AC_CACHE_VAL(ac_cv_thread,
1213[ac_save_cc="$CC"
1214CC="$CC -pthread"
1215AC_TRY_RUN([
1216#include <pthread.h>
1217
1218void* routine(void* p){return NULL;}
1219
1220int main(){
1221 pthread_t p;
1222 if(pthread_create(&p,NULL,routine,NULL)!=0)
1223 return 1;
1224 (void)pthread_detach(p);
1225 return 0;
1226}
1227],
1228 ac_cv_pthread=yes,
1229 ac_cv_pthread=no,
1230 ac_cv_pthread=no)
1231CC="$ac_save_cc"])
1232AC_MSG_RESULT($ac_cv_pthread)
1233fi
1234
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001235# If we have set a CC compiler flag for thread support then
1236# check if it works for CXX, too.
1237ac_cv_cxx_thread=no
1238if test ! -z "$CXX"
1239then
1240AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1241ac_save_cxx="$CXX"
1242
1243if test "$ac_cv_kpthread" = "yes"
1244then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001245 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001246 ac_cv_cxx_thread=yes
1247elif test "$ac_cv_kthread" = "yes"
1248then
1249 CXX="$CXX -Kthread"
1250 ac_cv_cxx_thread=yes
1251elif test "$ac_cv_pthread" = "yes"
1252then
1253 CXX="$CXX -pthread"
1254 ac_cv_cxx_thread=yes
1255fi
1256
1257if test $ac_cv_cxx_thread = yes
1258then
1259 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1260 $CXX -c conftest.$ac_ext 2>&5
1261 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1262 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1263 then
1264 ac_cv_cxx_thread=yes
1265 else
1266 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001267 fi
1268 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001269fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001270AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001271fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001272CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001273
Fred Drakece81d592000-07-09 14:39:29 +00001274dnl # check for ANSI or K&R ("traditional") preprocessor
1275dnl AC_MSG_CHECKING(for C preprocessor type)
1276dnl AC_TRY_COMPILE([
1277dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1278dnl int foo;
1279dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1280dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1281dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001282
Guido van Rossum627b2d71993-12-24 10:39:16 +00001283# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001284AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001285AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1286fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001287ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001288shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001289unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001290sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1291sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001292sys/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 +00001293sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001294sys/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 +00001295sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001296bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001297AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001298AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001299
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001300# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001301AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001302#ifdef HAVE_CURSES_H
1303#include <curses.h>
1304#endif
1305])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001306
Martin v. Löwis11017b12006-01-14 18:12:57 +00001307# On Linux, netlink.h requires asm/types.h
1308AC_CHECK_HEADERS(linux/netlink.h,,,[
1309#ifdef HAVE_ASM_TYPES_H
1310#include <asm/types.h>
1311#endif
1312#ifdef HAVE_SYS_SOCKET_H
1313#include <sys/socket.h>
1314#endif
1315])
1316
Guido van Rossum627b2d71993-12-24 10:39:16 +00001317# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001318was_it_defined=no
1319AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001320AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1321 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1322])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001323AC_MSG_RESULT($was_it_defined)
1324
Neal Norwitz11690112002-07-30 01:08:28 +00001325# Check whether using makedev requires defining _OSF_SOURCE
1326AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001327AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001328 [ makedev(0, 0) ],
1329 ac_cv_has_makedev=yes,
1330 ac_cv_has_makedev=no)
1331if test "$ac_cv_has_makedev" = "no"; then
1332 # we didn't link, try if _OSF_SOURCE will allow us to link
1333 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001334#define _OSF_SOURCE 1
1335#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001336 ],
1337 [ makedev(0, 0) ],
1338 ac_cv_has_makedev=yes,
1339 ac_cv_has_makedev=no)
1340 if test "$ac_cv_has_makedev" = "yes"; then
1341 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1342 fi
1343fi
1344AC_MSG_RESULT($ac_cv_has_makedev)
1345if test "$ac_cv_has_makedev" = "yes"; then
1346 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1347fi
1348
Martin v. Löwis399a6892002-10-04 10:22:02 +00001349# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1350# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1351# defined, but the compiler does not support pragma redefine_extname,
1352# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1353# structures (such as rlimit64) without declaring them. As a
1354# work-around, disable LFS on such configurations
1355
1356use_lfs=yes
1357AC_MSG_CHECKING(Solaris LFS bug)
1358AC_TRY_COMPILE([
1359#define _LARGEFILE_SOURCE 1
1360#define _FILE_OFFSET_BITS 64
1361#include <sys/resource.h>
1362],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1363AC_MSG_RESULT($sol_lfs_bug)
1364if test "$sol_lfs_bug" = "yes"; then
1365 use_lfs=no
1366fi
1367
1368if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001369# Two defines needed to enable largefile support on various platforms
1370# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001371AC_DEFINE(_LARGEFILE_SOURCE, 1,
1372[This must be defined on some systems to enable large file support.])
1373AC_DEFINE(_FILE_OFFSET_BITS, 64,
1374[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001375fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001376
Guido van Rossum300fda71996-08-19 21:58:16 +00001377# Add some code to confdefs.h so that the test for off_t works on SCO
1378cat >> confdefs.h <<\EOF
1379#if defined(SCO_DS)
1380#undef _OFF_T
1381#endif
1382EOF
1383
Guido van Rossumef2255b2000-03-10 22:30:29 +00001384# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001385AC_TYPE_MODE_T
1386AC_TYPE_OFF_T
1387AC_TYPE_PID_T
1388AC_TYPE_SIGNAL
1389AC_TYPE_SIZE_T
1390AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001391AC_TYPE_UINT32_T
1392AC_TYPE_UINT64_T
1393AC_TYPE_INT32_T
1394AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001395AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001396 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001397
Guido van Rossumef2255b2000-03-10 22:30:29 +00001398# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001399# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001400AC_CHECK_SIZEOF(int, 4)
1401AC_CHECK_SIZEOF(long, 4)
1402AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001403AC_CHECK_SIZEOF(short, 2)
1404AC_CHECK_SIZEOF(float, 4)
1405AC_CHECK_SIZEOF(double, 8)
1406AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001407AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001408AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001409
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001410AC_MSG_CHECKING(for long long support)
1411have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001412AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1413 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1414 have_long_long=yes
1415])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001416AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001417if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001418AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001419fi
1420
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001421AC_MSG_CHECKING(for long double support)
1422have_long_double=no
1423AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1424 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1425 have_long_double=yes
1426])
1427AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001428if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001429AC_CHECK_SIZEOF(long double, 12)
1430fi
1431
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001432AC_MSG_CHECKING(for _Bool support)
1433have_c99_bool=no
1434AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1435 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1436 have_c99_bool=yes
1437])
1438AC_MSG_RESULT($have_c99_bool)
1439if test "$have_c99_bool" = yes ; then
1440AC_CHECK_SIZEOF(_Bool, 1)
1441fi
1442
Martin v. Löwisebe26702006-10-02 14:55:51 +00001443AC_CHECK_TYPES(uintptr_t,
1444 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001445 [], [#ifdef HAVE_STDINT_H
1446 #include <stdint.h>
1447 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001448
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001449AC_CHECK_SIZEOF(off_t, [], [
1450#ifdef HAVE_SYS_TYPES_H
1451#include <sys/types.h>
1452#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001453])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001454
1455AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001456if test "$have_long_long" = yes -a \
1457 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1458 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001459 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1460 [Defined to enable large file support when an off_t is bigger than a long
1461 and long long is available and at least as big as an off_t. You may need
1462 to add some flags for configuration and compilation to enable this mode.
1463 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001464 AC_MSG_RESULT(yes)
1465else
1466 AC_MSG_RESULT(no)
1467fi
1468
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001469AC_CHECK_SIZEOF(time_t, [], [
1470#ifdef HAVE_SYS_TYPES_H
1471#include <sys/types.h>
1472#endif
1473#ifdef HAVE_TIME_H
1474#include <time.h>
1475#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001476])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001477
Trent Mick635f6fb2000-08-23 21:33:05 +00001478# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001479ac_save_cc="$CC"
1480if test "$ac_cv_kpthread" = "yes"
1481then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001482elif test "$ac_cv_kthread" = "yes"
1483then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001484elif test "$ac_cv_pthread" = "yes"
1485then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001486fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001487AC_MSG_CHECKING(for pthread_t)
1488have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001489AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001490AC_MSG_RESULT($have_pthread_t)
1491if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001492 AC_CHECK_SIZEOF(pthread_t, [], [
1493#ifdef HAVE_PTHREAD_H
1494#include <pthread.h>
1495#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001496 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001497fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001498CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001499
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001500AC_MSG_CHECKING(for --enable-toolbox-glue)
1501AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001502 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001503
1504if test -z "$enable_toolbox_glue"
1505then
1506 case $ac_sys_system/$ac_sys_release in
1507 Darwin/*)
1508 enable_toolbox_glue="yes";;
1509 *)
1510 enable_toolbox_glue="no";;
1511 esac
1512fi
1513case "$enable_toolbox_glue" in
1514yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001515 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001516 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001517 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1518 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001519 ;;
1520*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001521 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001522 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001523 ;;
1524esac
1525AC_MSG_RESULT($enable_toolbox_glue)
1526
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001527
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001528AC_SUBST(OTHER_LIBTOOL_OPT)
1529case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001530 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001531 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1532 ;;
1533 Darwin/*)
1534 OTHER_LIBTOOL_OPT=""
1535 ;;
1536esac
1537
Ronald Oussoren25967582009-09-06 10:00:26 +00001538
1539ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001540AC_SUBST(LIBTOOL_CRUFT)
1541case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001542 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001543 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1544 if test "${enable_universalsdk}"; then
1545 :
1546 else
Ronald Oussoren25967582009-09-06 10:00:26 +00001547 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001548 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001549 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001550 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001551 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001552 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1553 if test ${gcc_version} '<' 4.0
1554 then
1555 LIBTOOL_CRUFT="-lcc_dynamic"
1556 else
1557 LIBTOOL_CRUFT=""
1558 fi
Ronald Oussoren23d92532009-09-07 06:12:00 +00001559 AC_TRY_RUN([
Ronald Oussoren25967582009-09-06 10:00:26 +00001560 #include <unistd.h>
1561 int main(int argc, char*argv[])
1562 {
1563 if (sizeof(long) == 4) {
1564 return 0;
1565 } else {
1566 return 1;
1567 }
Ronald Oussoren84ddd722009-09-08 07:17:10 +00001568 }
Ronald Oussoren23d92532009-09-07 06:12:00 +00001569 ], ac_osx_32bit=yes,
Ronald Oussoren25967582009-09-06 10:00:26 +00001570 ac_osx_32bit=no,
Ronald Oussoren23d92532009-09-07 06:12:00 +00001571 ac_osx_32bit=yes)
Ronald Oussoren25967582009-09-06 10:00:26 +00001572
1573 if test "${ac_osx_32bit}" = "yes"; then
1574 case `arch` in
1575 i386)
1576 MACOSX_DEFAULT_ARCH="i386"
1577 ;;
1578 ppc)
1579 MACOSX_DEFAULT_ARCH="ppc"
1580 ;;
1581 *)
1582 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1583 ;;
1584 esac
1585 else
1586 case `arch` in
1587 i386)
1588 MACOSX_DEFAULT_ARCH="x86_64"
1589 ;;
1590 ppc)
1591 MACOSX_DEFAULT_ARCH="ppc64"
1592 ;;
1593 *)
1594 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1595 ;;
1596 esac
1597
1598 #ARCH_RUN_32BIT="true"
1599 fi
1600
1601 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001602 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001603 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001604esac
1605
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001606AC_MSG_CHECKING(for --enable-framework)
1607if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001608then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001609 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001610 # -F. is needed to allow linking to the framework while
1611 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001612 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1613 [Define if you want to produce an OpenStep/Rhapsody framework
1614 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001615 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001616 if test $enable_shared = "yes"
1617 then
1618 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1619 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001620else
1621 AC_MSG_RESULT(no)
1622fi
1623
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001624AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001625case $ac_sys_system/$ac_sys_release in
1626 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001627 AC_DEFINE(WITH_DYLD, 1,
1628 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1629 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1630 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001631 AC_MSG_RESULT(always on for Darwin)
1632 ;;
1633 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001634 AC_MSG_RESULT(no)
1635 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001636esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001637
Guido van Rossumac405f61994-09-12 10:56:06 +00001638# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001639AC_SUBST(SO)
1640AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001641AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001642AC_SUBST(CCSHARED)
1643AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001644# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001645# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001646AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001647if test -z "$SO"
1648then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001649 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001650 hp*|HP*)
1651 case `uname -m` in
1652 ia64) SO=.so;;
1653 *) SO=.sl;;
1654 esac
1655 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001656 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001657 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001658 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001659else
1660 # this might also be a termcap variable, see #610332
1661 echo
1662 echo '====================================================================='
1663 echo '+ +'
1664 echo '+ WARNING: You have set SO in your environment. +'
1665 echo '+ Do you really mean to change the extension for shared libraries? +'
1666 echo '+ Continuing in 10 seconds to let you to ponder. +'
1667 echo '+ +'
1668 echo '====================================================================='
1669 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001670fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001671AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001672
Neal Norwitz58e28882006-05-19 07:00:58 +00001673AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001674# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001675# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001676# (Shared libraries in this instance are shared modules to be loaded into
1677# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001678AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001679if test -z "$LDSHARED"
1680then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001681 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001682 AIX*)
1683 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001684 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001685 ;;
1686 BeOS*)
1687 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001688 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001689 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001690 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001691 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001692 SunOS/5*)
1693 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001694 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001695 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001696 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001697 hp*|HP*)
1698 if test "$GCC" = "yes"
1699 then LDSHARED='$(CC) -shared'
1700 else LDSHARED='ld -b';
1701 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001702 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001703 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001704 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1705 if test "$enable_framework" ; then
1706 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001707 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1708 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001709 else
1710 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001711 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001712 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001713 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +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 Jansenb6e9cad2001-08-15 01:26:28 +00001719 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001720 # No framework, use the Python app as bundle-loader
1721 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001722 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001723 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001724 Darwin/*)
1725 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1726 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001727
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001728 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001729 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001730 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001731 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001732 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001733 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1734 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001735 else
1736 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1737 if test "$enable_framework" ; then
1738 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001739 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1740 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001741 else
1742 # No framework, use the Python app as bundle-loader
1743 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1744 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1745 fi
1746 fi
1747 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001748 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001749 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001750 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001751 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001752 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001753 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001754 else
1755 LDSHARED="ld -Bshareable ${LDFLAGS}"
1756 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001757 OpenBSD*)
1758 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1759 then
1760 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1761 else
1762 case `uname -r` in
1763 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1764 LDSHARED="ld -Bshareable ${LDFLAGS}"
1765 ;;
1766 *)
1767 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1768 ;;
1769 esac
1770 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001771 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001772 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001773 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001774 then LDSHARED='$(CC) -shared'
1775 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001776 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001777 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001778 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001779 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001780 *) LDSHARED="ld";;
1781 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001782fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001783AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001784BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001785# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001786# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001787AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001788if test -z "$CCSHARED"
1789then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001790 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001791 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001792 then CCSHARED="-fPIC";
1793 elif test `uname -p` = sparc;
1794 then CCSHARED="-xcode=pic32";
1795 else CCSHARED="-Kpic";
1796 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001797 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001798 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001799 else CCSHARED="+z";
1800 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001801 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001802 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001803 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001804 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001805 if test "$GCC" = "yes"
1806 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001807 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001808 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001809 SCO_SV*)
1810 if test "$GCC" = "yes"
1811 then CCSHARED="-fPIC"
1812 else CCSHARED="-Kpic -belf"
1813 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001814 IRIX*/6*) case $CC in
1815 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001816 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001817 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001818 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001819 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001820fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001821AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001822# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001823# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001824AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001825if test -z "$LINKFORSHARED"
1826then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001827 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001828 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001829 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001830 LINKFORSHARED="-Wl,-E -Wl,+s";;
1831# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001832 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001833 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001834 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001835 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001836 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1837 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001838 # not used by the core itself but which needs to be in the core so
1839 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001840 # -prebind is no longer used, because it actually seems to give a
1841 # slowdown in stead of a speedup, maybe due to the large number of
1842 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001843
1844 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001845 if test "$enable_framework"
1846 then
Jack Jansenda49e192005-01-07 13:08:22 +00001847 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001848 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001849 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001850 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001851 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001852 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001853 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001854 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1855 then
1856 LINKFORSHARED="-Wl,--export-dynamic"
1857 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001858 SunOS/5*) case $CC in
1859 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001860 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001861 then
1862 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001863 fi;;
1864 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001865 CYGWIN*)
1866 if test $enable_shared = "no"
1867 then
1868 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1869 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001870 QNX*)
1871 # -Wl,-E causes the symbols to be added to the dynamic
1872 # symbol table so that they can be found when a module
1873 # is loaded. -N 2048K causes the stack size to be set
1874 # to 2048 kilobytes so that the stack doesn't overflow
1875 # when running test_compile.py.
1876 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001877 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001878fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001879AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001880
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001881
Neil Schemenauer61c51152001-01-26 16:18:16 +00001882AC_SUBST(CFLAGSFORSHARED)
1883AC_MSG_CHECKING(CFLAGSFORSHARED)
1884if test ! "$LIBRARY" = "$LDLIBRARY"
1885then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001886 case $ac_sys_system in
1887 CYGWIN*)
1888 # Cygwin needs CCSHARED when building extension DLLs
1889 # but not when building the interpreter DLL.
1890 CFLAGSFORSHARED='';;
1891 *)
1892 CFLAGSFORSHARED='$(CCSHARED)'
1893 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001894fi
1895AC_MSG_RESULT($CFLAGSFORSHARED)
1896
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001897# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1898# library (with --enable-shared).
1899# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001900# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1901# if it is not required, since it creates a dependency of the shared library
1902# to LIBS. This, in turn, means that applications linking the shared libpython
1903# don't need to link LIBS explicitly. The default should be only changed
1904# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001905AC_SUBST(SHLIBS)
1906AC_MSG_CHECKING(SHLIBS)
1907case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001908 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001909 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001910esac
1911AC_MSG_RESULT($SHLIBS)
1912
1913
Guido van Rossum627b2d71993-12-24 10:39:16 +00001914# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001915AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1916AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001917
Skip Montanaro4d756af2008-12-01 01:55:22 +00001918# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001919if test "$with_threads" = "yes" -o -z "$with_threads"; then
1920 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1921 # posix4 on Solaris 2.6
1922 # pthread (first!) on Linux
1923fi
1924
Martin v. Löwis19d17342003-06-14 21:03:05 +00001925# check if we need libintl for locale functions
1926AC_CHECK_LIB(intl, textdomain,
1927 AC_DEFINE(WITH_LIBINTL, 1,
1928 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001929
1930# checks for system dependent C++ extensions support
1931case "$ac_sys_system" in
1932 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1933 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1934 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001935 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1936 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1937 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001938 AC_MSG_RESULT(yes)],
1939 [AC_MSG_RESULT(no)]);;
1940 *) ;;
1941esac
1942
Guido van Rossum70c7f481998-03-26 18:44:10 +00001943# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001944# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001945AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001946AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001947
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001948case "$ac_sys_system" in
1949BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001950AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1951;;
1952esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001953
Guido van Rossumc5a39031996-07-31 17:35:03 +00001954AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001955AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001956 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1957[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001958AC_MSG_RESULT($withval)
1959LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001960],
1961[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001962
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001963# Check for use of the system libffi library
1964AC_MSG_CHECKING(for --with-system-ffi)
1965AC_ARG_WITH(system_ffi,
1966 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1967
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001968AC_MSG_RESULT($with_system_ffi)
1969
Matthias Klose10cbe482009-04-29 17:18:19 +00001970# Check for --with-dbmliborder
1971AC_MSG_CHECKING(for --with-dbmliborder)
1972AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00001973 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 +00001974[
1975if test x$with_dbmliborder = xyes
1976then
1977AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1978else
1979 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1980 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1981 then
1982 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1983 fi
1984 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00001985fi])
1986AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00001987
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001988# Determine if signalmodule should be used.
1989AC_SUBST(USE_SIGNAL_MODULE)
1990AC_SUBST(SIGNAL_OBJS)
1991AC_MSG_CHECKING(for --with-signal-module)
1992AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001993 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001994
1995if test -z "$with_signal_module"
1996then with_signal_module="yes"
1997fi
1998AC_MSG_RESULT($with_signal_module)
1999
2000if test "${with_signal_module}" = "yes"; then
2001 USE_SIGNAL_MODULE=""
2002 SIGNAL_OBJS=""
2003else
2004 USE_SIGNAL_MODULE="#"
2005 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2006fi
2007
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002008# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002009AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002010USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002011
Guido van Rossum54d93d41997-01-22 20:51:58 +00002012AC_MSG_CHECKING(for --with-dec-threads)
2013AC_SUBST(LDLAST)
2014AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002015 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2016[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002017AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002018LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002019if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002020 with_thread="$withval";
2021fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002022[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002023
Martin v. Löwis11437992002-04-12 09:54:03 +00002024# Templates for things AC_DEFINEd more than once.
2025# For a single AC_DEFINE, no template is needed.
2026AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2027AH_TEMPLATE(_REENTRANT,
2028 [Define to force use of thread-safe errno, h_errno, and other functions])
2029AH_TEMPLATE(WITH_THREAD,
2030 [Define if you want to compile in rudimentary thread support])
2031
Guido van Rossum54d93d41997-01-22 20:51:58 +00002032AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002033dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002034AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002035 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002036
Barry Warsawc0d24d82000-06-29 16:12:00 +00002037# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002038dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002039AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002040 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2041 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002042
2043if test -z "$with_threads"
2044then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002045fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002046AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002047
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002048AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002049if test "$with_threads" = "no"
2050then
2051 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002052elif test "$ac_cv_pthread_is_default" = yes
2053then
2054 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002055 # Defining _REENTRANT on system with POSIX threads should not hurt.
2056 AC_DEFINE(_REENTRANT)
2057 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002058 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002059elif test "$ac_cv_kpthread" = "yes"
2060then
2061 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002062 if test "$ac_cv_cxx_thread" = "yes"; then
2063 CXX="$CXX -Kpthread"
2064 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002065 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002066 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002067 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002068elif test "$ac_cv_kthread" = "yes"
2069then
2070 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002071 if test "$ac_cv_cxx_thread" = "yes"; then
2072 CXX="$CXX -Kthread"
2073 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002074 AC_DEFINE(WITH_THREAD)
2075 posix_threads=yes
2076 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002077elif test "$ac_cv_pthread" = "yes"
2078then
2079 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002080 if test "$ac_cv_cxx_thread" = "yes"; then
2081 CXX="$CXX -pthread"
2082 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002083 AC_DEFINE(WITH_THREAD)
2084 posix_threads=yes
2085 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002086else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002087 if test ! -z "$with_threads" -a -d "$with_threads"
2088 then LDFLAGS="$LDFLAGS -L$with_threads"
2089 fi
2090 if test ! -z "$withval" -a -d "$withval"
2091 then LDFLAGS="$LDFLAGS -L$withval"
2092 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002093
2094 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002095 # define _POSIX_THREADS in unistd.h. Some apparently don't
2096 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002097 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2098 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002099 [
2100#include <unistd.h>
2101#ifdef _POSIX_THREADS
2102yes
2103#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002104 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2105 AC_MSG_RESULT($unistd_defines_pthreads)
2106
Martin v. Löwis130fb172001-07-19 11:00:41 +00002107 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002108 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2109 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002110 AC_DEFINE(HURD_C_THREADS, 1,
2111 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002112 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002113 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002114 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2115 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002116 AC_DEFINE(MACH_C_THREADS, 1,
2117 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002118 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002119 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002120 AC_ARG_WITH([pth],
2121 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2122 [AC_MSG_RESULT($withval)
2123 AC_DEFINE([WITH_THREAD])
2124 AC_DEFINE([HAVE_PTH], 1,
2125 [Define if you have GNU PTH threads.])
2126 LIBS="-lpth $LIBS"
2127 THREADOBJ="Python/thread.o"],
2128 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002129
2130 # Just looking for pthread_create in libpthread is not enough:
2131 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2132 # So we really have to include pthread.h, and then link.
2133 _libs=$LIBS
2134 LIBS="$LIBS -lpthread"
2135 AC_MSG_CHECKING([for pthread_create in -lpthread])
2136 AC_TRY_LINK([#include <pthread.h>
2137
2138void * start_routine (void *arg) { exit (0); }], [
2139pthread_create (NULL, NULL, start_routine, NULL)], [
2140 AC_MSG_RESULT(yes)
2141 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002142 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002143 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002144 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002145 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002146 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002147 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002148 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2149 AC_DEFINE(ATHEOS_THREADS, 1,
2150 [Define this if you have AtheOS threads.])
2151 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002152 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002153 AC_DEFINE(BEOS_THREADS, 1,
2154 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002155 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002156 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002157 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002158 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002159 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002160 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002161 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002162 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002163 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002164 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002165 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002166 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002167 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002168 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002169 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002170 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002171 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002172 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002173 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002174
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002175 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2176 LIBS="$LIBS -lmpc"
2177 THREADOBJ="Python/thread.o"
2178 USE_THREAD_MODULE=""])
2179
2180 if test "$posix_threads" != "yes"; then
2181 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2182 LIBS="$LIBS -lthread"
2183 THREADOBJ="Python/thread.o"
2184 USE_THREAD_MODULE=""])
2185 fi
2186
2187 if test "$USE_THREAD_MODULE" != "#"
2188 then
2189 # If the above checks didn't disable threads, (at least) OSF1
2190 # needs this '-threads' argument during linking.
2191 case $ac_sys_system in
2192 OSF1) LDLAST=-threads;;
2193 esac
2194 fi
2195fi
2196
2197if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002198 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002199 AC_DEFINE(_POSIX_THREADS, 1,
2200 [Define if you have POSIX threads,
2201 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002202 fi
2203
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002204 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2205 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002206 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2207 Defined for Solaris 2.6 bug in pthread header.)
2208 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002209 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002210 Define if the Posix semaphores do not work on your system)
2211 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002212 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2213 Define if the Posix semaphores do not work on your system)
2214 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002215 esac
2216
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002217 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2218 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2219 [AC_TRY_RUN([#include <pthread.h>
2220 void *foo(void *parm) {
2221 return NULL;
2222 }
2223 main() {
2224 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002225 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002226 if (pthread_attr_init(&attr)) exit(-1);
2227 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002228 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002229 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002230 }],
2231 ac_cv_pthread_system_supported=yes,
2232 ac_cv_pthread_system_supported=no,
2233 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002234 ])
2235 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2236 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002237 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002238 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002239 AC_CHECK_FUNCS(pthread_sigmask,
2240 [case $ac_sys_system in
2241 CYGWIN*)
2242 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2243 [Define if pthread_sigmask() does not work on your system.])
2244 ;;
2245 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002246fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002247
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002248
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002249# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002250AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002251AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002253[ --enable-ipv6 Enable ipv6 (with ipv4) support
2254 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002255[ case "$enableval" in
2256 no)
2257 AC_MSG_RESULT(no)
2258 ipv6=no
2259 ;;
2260 *) AC_MSG_RESULT(yes)
2261 AC_DEFINE(ENABLE_IPV6)
2262 ipv6=yes
2263 ;;
2264 esac ],
2265
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002266[
2267dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002268 AC_TRY_RUN([ /* AF_INET6 available check */
2269#include <sys/types.h>
2270#include <sys/socket.h>
2271main()
2272{
2273 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2274 exit(1);
2275 else
2276 exit(0);
2277}
2278],
2279 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002280 ipv6=yes,
2281 AC_MSG_RESULT(no)
2282 ipv6=no,
2283 AC_MSG_RESULT(no)
2284 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002285)
2286
2287if test "$ipv6" = "yes"; then
2288 AC_MSG_CHECKING(if RFC2553 API is available)
2289 AC_TRY_COMPILE([#include <sys/types.h>
2290#include <netinet/in.h>],
2291 [struct sockaddr_in6 x;
2292x.sin6_scope_id;],
2293 AC_MSG_RESULT(yes)
2294 ipv6=yes,
2295 AC_MSG_RESULT(no, IPv6 disabled)
2296 ipv6=no)
2297fi
2298
2299if test "$ipv6" = "yes"; then
2300 AC_DEFINE(ENABLE_IPV6)
2301fi
2302])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303
2304ipv6type=unknown
2305ipv6lib=none
2306ipv6trylibc=no
2307
2308if test "$ipv6" = "yes"; then
2309 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002310 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2311 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002312 case $i in
2313 inria)
2314 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002315 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002316#include <netinet/in.h>
2317#ifdef IPV6_INRIA_VERSION
2318yes
2319#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002320 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002321 ;;
2322 kame)
2323 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002324 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002325#include <netinet/in.h>
2326#ifdef __KAME__
2327yes
2328#endif],
2329 [ipv6type=$i;
2330 ipv6lib=inet6
2331 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002332 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333 ;;
2334 linux-glibc)
2335 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002336 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002337#include <features.h>
2338#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2339yes
2340#endif],
2341 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002342 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002343 ;;
2344 linux-inet6)
2345 dnl http://www.v6.linux.or.jp/
2346 if test -d /usr/inet6; then
2347 ipv6type=$i
2348 ipv6lib=inet6
2349 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002350 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351 fi
2352 ;;
2353 solaris)
2354 if test -f /etc/netconfig; then
2355 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2356 ipv6type=$i
2357 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002358 fi
2359 fi
2360 ;;
2361 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002362 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002363#include <sys/param.h>
2364#ifdef _TOSHIBA_INET6
2365yes
2366#endif],
2367 [ipv6type=$i;
2368 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002369 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002370 ;;
2371 v6d)
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 </usr/local/v6/include/sys/v6config.h>
2374#ifdef __V6D__
2375yes
2376#endif],
2377 [ipv6type=$i;
2378 ipv6lib=v6;
2379 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002380 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002381 ;;
2382 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002383 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384#include <sys/param.h>
2385#ifdef _ZETA_MINAMI_INET6
2386yes
2387#endif],
2388 [ipv6type=$i;
2389 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002390 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002391 ;;
2392 esac
2393 if test "$ipv6type" != "unknown"; then
2394 break
2395 fi
2396 done
2397 AC_MSG_RESULT($ipv6type)
2398fi
2399
2400if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2401 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2402 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2403 echo "using lib$ipv6lib"
2404 else
2405 if test $ipv6trylibc = "yes"; then
2406 echo "using libc"
2407 else
2408 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2409 echo "You need to fetch lib$ipv6lib.a from appropriate"
2410 echo 'ipv6 kit and compile beforehand.'
2411 exit 1
2412 fi
2413 fi
2414fi
2415
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002416AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2417AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2418 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2419 AC_MSG_RESULT(yes),
2420 AC_MSG_RESULT(no)
2421)
2422
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002423# Check for --with-doc-strings
2424AC_MSG_CHECKING(for --with-doc-strings)
2425AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002426 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002427
2428if test -z "$with_doc_strings"
2429then with_doc_strings="yes"
2430fi
2431if test "$with_doc_strings" != "no"
2432then
2433 AC_DEFINE(WITH_DOC_STRINGS, 1,
2434 [Define if you want documentation strings in extension modules])
2435fi
2436AC_MSG_RESULT($with_doc_strings)
2437
Neil Schemenauera35c6882001-02-27 04:45:05 +00002438# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002439AC_MSG_CHECKING(for --with-tsc)
2440AC_ARG_WITH(tsc,
2441[ --with(out)-tsc enable/disable timestamp counter profile], [
2442if test "$withval" != no
2443then
2444 AC_DEFINE(WITH_TSC, 1,
2445 [Define to profile with the Pentium timestamp counter])
2446 AC_MSG_RESULT(yes)
2447else AC_MSG_RESULT(no)
2448fi],
2449[AC_MSG_RESULT(no)])
2450
2451# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002452AC_MSG_CHECKING(for --with-pymalloc)
2453AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002454 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002455
2456if test -z "$with_pymalloc"
2457then with_pymalloc="yes"
2458fi
2459if test "$with_pymalloc" != "no"
2460then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002461 AC_DEFINE(WITH_PYMALLOC, 1,
2462 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002463fi
2464AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002465
Barry Warsawef82cd72000-06-30 16:21:01 +00002466# Check for --with-wctype-functions
2467AC_MSG_CHECKING(for --with-wctype-functions)
2468AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002469 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2470[
Barry Warsawef82cd72000-06-30 16:21:01 +00002471if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002472then
2473 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2474 [Define if you want wctype.h functions to be used instead of the
2475 one supplied by Python itself. (see Include/unicodectype.h).])
2476 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002477else AC_MSG_RESULT(no)
2478fi],
2479[AC_MSG_RESULT(no)])
2480
Guido van Rossum68242b51996-05-28 22:53:03 +00002481# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002482AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002483DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002484
Guido van Rossume97ee181999-12-20 21:27:22 +00002485# the dlopen() function means we might want to use dynload_shlib.o. some
2486# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002487AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002488
2489# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2490# loading of modules.
2491AC_SUBST(DYNLOADFILE)
2492AC_MSG_CHECKING(DYNLOADFILE)
2493if test -z "$DYNLOADFILE"
2494then
2495 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002496 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2497 if test "$ac_cv_func_dlopen" = yes
2498 then DYNLOADFILE="dynload_shlib.o"
2499 else DYNLOADFILE="dynload_aix.o"
2500 fi
2501 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002502 BeOS*) DYNLOADFILE="dynload_beos.o";;
2503 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002504 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2505 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002506 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002507 *)
2508 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2509 # out any dynamic loading
2510 if test "$ac_cv_func_dlopen" = yes
2511 then DYNLOADFILE="dynload_shlib.o"
2512 else DYNLOADFILE="dynload_stub.o"
2513 fi
2514 ;;
2515 esac
2516fi
2517AC_MSG_RESULT($DYNLOADFILE)
2518if test "$DYNLOADFILE" != "dynload_stub.o"
2519then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002520 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2521 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002522fi
2523
Jack Jansenc49e5b72001-06-19 15:00:23 +00002524# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2525
2526AC_SUBST(MACHDEP_OBJS)
2527AC_MSG_CHECKING(MACHDEP_OBJS)
2528if test -z "$MACHDEP_OBJS"
2529then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002530 MACHDEP_OBJS=$extra_machdep_objs
2531else
2532 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002533fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002534AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002535
Guido van Rossum627b2d71993-12-24 10:39:16 +00002536# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002537AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2538 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002539 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002540 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002541 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002542 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002543 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002544 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2545 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002546 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002547 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002548 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002549 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002550
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002551# For some functions, having a definition is not sufficient, since
2552# we want to take their address.
2553AC_MSG_CHECKING(for chroot)
2554AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2555 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2556 AC_MSG_RESULT(yes),
2557 AC_MSG_RESULT(no)
2558)
2559AC_MSG_CHECKING(for link)
2560AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2561 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2562 AC_MSG_RESULT(yes),
2563 AC_MSG_RESULT(no)
2564)
2565AC_MSG_CHECKING(for symlink)
2566AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2567 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2568 AC_MSG_RESULT(yes),
2569 AC_MSG_RESULT(no)
2570)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002571AC_MSG_CHECKING(for fchdir)
2572AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2573 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2574 AC_MSG_RESULT(yes),
2575 AC_MSG_RESULT(no)
2576)
2577AC_MSG_CHECKING(for fsync)
2578AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002579 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002580 AC_MSG_RESULT(yes),
2581 AC_MSG_RESULT(no)
2582)
2583AC_MSG_CHECKING(for fdatasync)
2584AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2585 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2586 AC_MSG_RESULT(yes),
2587 AC_MSG_RESULT(no)
2588)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002589AC_MSG_CHECKING(for epoll)
2590AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2591 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2592 AC_MSG_RESULT(yes),
2593 AC_MSG_RESULT(no)
2594)
2595AC_MSG_CHECKING(for kqueue)
2596AC_TRY_COMPILE([
2597#include <sys/types.h>
2598#include <sys/event.h>
2599 ], int x=kqueue(),
2600 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2601 AC_MSG_RESULT(yes),
2602 AC_MSG_RESULT(no)
2603)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002604# On some systems (eg. FreeBSD 5), we would find a definition of the
2605# functions ctermid_r, setgroups in the library, but no prototype
2606# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2607# address to avoid compiler warnings and potential miscompilations
2608# because of the missing prototypes.
2609
2610AC_MSG_CHECKING(for ctermid_r)
2611AC_TRY_COMPILE([
2612#include "confdefs.h"
2613#include <stdio.h>
2614], void* p = ctermid_r,
2615 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2616 AC_MSG_RESULT(yes),
2617 AC_MSG_RESULT(no)
2618)
2619
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002620AC_MSG_CHECKING(for flock)
2621AC_TRY_COMPILE([
2622#include "confdefs.h"
2623#include <sys/file.h>
2624], void* p = flock,
2625 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2626 AC_MSG_RESULT(yes),
2627 AC_MSG_RESULT(no)
2628)
2629
2630AC_MSG_CHECKING(for getpagesize)
2631AC_TRY_COMPILE([
2632#include "confdefs.h"
2633#include <unistd.h>
2634], void* p = getpagesize,
2635 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2636 AC_MSG_RESULT(yes),
2637 AC_MSG_RESULT(no)
2638)
2639
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002640dnl check for true
2641AC_CHECK_PROGS(TRUE, true, /bin/true)
2642
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002643dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2644dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002645AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002646 AC_CHECK_LIB(resolv, inet_aton)
2647)
2648
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002649# On Tru64, chflags seems to be present, but calling it will
2650# exit Python
2651AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002652AC_CACHE_VAL(ac_cv_have_chflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002653AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002654#include <sys/stat.h>
2655#include <unistd.h>
2656int main(int argc, char*argv[])
2657{
2658 if(chflags(argv[0], 0) != 0)
2659 return 1;
2660 return 0;
2661}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002662]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002663 ac_cv_have_chflags=no,
2664 ac_cv_have_chflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002665)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002666AC_MSG_RESULT($ac_cv_have_chflags)
2667if test $ac_cv_have_chflags = yes
2668then
2669 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2670fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002671
2672AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002673AC_CACHE_VAL(ac_cv_have_lchflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002674AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002675#include <sys/stat.h>
2676#include <unistd.h>
2677int main(int argc, char*argv[])
2678{
2679 if(lchflags(argv[0], 0) != 0)
2680 return 1;
2681 return 0;
2682}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002683]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002684 ac_cv_have_lchflags=no,
2685 ac_cv_have_lchflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002686)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002687AC_MSG_RESULT($ac_cv_have_lchflags)
2688if test $ac_cv_have_lchflags = yes
2689then
2690 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2691fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002692
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002693dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002694dnl
2695dnl On MacOSX the linker will search for dylibs on the entire linker path
2696dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2697dnl to revert to a more traditional unix behaviour and make it possible to
2698dnl override the system libz with a local static library of libz. Temporarily
2699dnl add that flag to our CFLAGS as well to ensure that we check the version
2700dnl of libz that will be used by setup.py.
2701dnl The -L/usr/local/lib is needed as wel to get the same compilation
2702dnl environment as setup.py (and leaving it out can cause configure to use the
2703dnl wrong version of the library)
2704case $ac_sys_system/$ac_sys_release in
2705Darwin/*)
2706 _CUR_CFLAGS="${CFLAGS}"
2707 _CUR_LDFLAGS="${LDFLAGS}"
2708 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2709 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2710 ;;
2711esac
2712
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002713AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2714
Ronald Oussorenf8752642006-07-06 10:13:35 +00002715case $ac_sys_system/$ac_sys_release in
2716Darwin/*)
2717 CFLAGS="${_CUR_CFLAGS}"
2718 LDFLAGS="${_CUR_LDFLAGS}"
2719 ;;
2720esac
2721
Martin v. Löwise9416172003-05-03 10:12:45 +00002722AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002723AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002724#include "confdefs.h"
2725#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002726], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002727 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2728 AC_MSG_RESULT(yes),
2729 AC_MSG_RESULT(no)
2730)
2731
2732AC_MSG_CHECKING(for inet_aton)
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"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002735#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002736#include <sys/socket.h>
2737#include <netinet/in.h>
2738#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002739], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002740 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2741 AC_MSG_RESULT(yes),
2742 AC_MSG_RESULT(no)
2743)
2744
2745AC_MSG_CHECKING(for inet_pton)
2746AC_TRY_COMPILE([
2747#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002748#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002749#include <sys/socket.h>
2750#include <netinet/in.h>
2751#include <arpa/inet.h>
2752], void* p = inet_pton,
2753 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2754 AC_MSG_RESULT(yes),
2755 AC_MSG_RESULT(no)
2756)
2757
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002758# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002759AC_MSG_CHECKING(for setgroups)
2760AC_TRY_COMPILE([
2761#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002762#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002763#ifdef HAVE_GRP_H
2764#include <grp.h>
2765#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002766],
2767void* p = setgroups,
2768 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2769 AC_MSG_RESULT(yes),
2770 AC_MSG_RESULT(no)
2771)
2772
Fred Drake8cef4cf2000-06-28 16:40:38 +00002773# check for openpty and forkpty
2774
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002775AC_CHECK_FUNCS(openpty,,
2776 AC_CHECK_LIB(util,openpty,
2777 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2778 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2779 )
2780)
2781AC_CHECK_FUNCS(forkpty,,
2782 AC_CHECK_LIB(util,forkpty,
2783 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2784 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2785 )
2786)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002787
Brett Cannonaa5778d2008-03-18 04:09:00 +00002788# Stuff for expat.
2789AC_CHECK_FUNCS(memmove)
2790
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002791# check for long file support functions
2792AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2793
Brett Cannonaa5778d2008-03-18 04:09:00 +00002794AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002795AC_CHECK_FUNCS(getpgrp,
2796 AC_TRY_COMPILE([#include <unistd.h>],
2797 [getpgrp(0);],
2798 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2799 [Define if getpgrp() must be called as getpgrp(0).])
2800 )
2801)
Jack Jansen150753c2003-03-29 22:07:47 +00002802AC_CHECK_FUNCS(setpgrp,
2803 AC_TRY_COMPILE([#include <unistd.h>],
2804 [setpgrp(0,0);],
2805 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2806 [Define if setpgrp() must be called as setpgrp(0, 0).])
2807 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002808)
2809AC_CHECK_FUNCS(gettimeofday,
2810 AC_TRY_COMPILE([#include <sys/time.h>],
2811 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2812 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2813 [Define if gettimeofday() does not have second (timezone) argument
2814 This is the case on Motorola V4 (R40V4.2)])
2815 )
2816)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002817
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002818AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002819AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002820#if defined(MAJOR_IN_MKDEV)
2821#include <sys/mkdev.h>
2822#elif defined(MAJOR_IN_SYSMACROS)
2823#include <sys/sysmacros.h>
2824#else
2825#include <sys/types.h>
2826#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002827],[
2828 makedev(major(0),minor(0));
2829],[
2830 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2831 [Define to 1 if you have the device macros.])
2832 AC_MSG_RESULT(yes)
2833],[
2834 AC_MSG_RESULT(no)
2835])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002836
2837# On OSF/1 V5.1, getaddrinfo is available, but a define
2838# for [no]getaddrinfo in netdb.h.
2839AC_MSG_CHECKING(for getaddrinfo)
2840AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002841#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002842#include <sys/socket.h>
2843#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002844#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002845], [getaddrinfo(NULL, NULL, NULL, NULL);],
2846have_getaddrinfo=yes,
2847have_getaddrinfo=no)
2848AC_MSG_RESULT($have_getaddrinfo)
2849if test $have_getaddrinfo = yes
2850then
2851 AC_MSG_CHECKING(getaddrinfo bug)
2852 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2853 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002854#include <sys/types.h>
2855#include <netdb.h>
2856#include <string.h>
2857#include <sys/socket.h>
2858#include <netinet/in.h>
2859
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002860int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002861{
2862 int passive, gaierr, inet4 = 0, inet6 = 0;
2863 struct addrinfo hints, *ai, *aitop;
2864 char straddr[INET6_ADDRSTRLEN], strport[16];
2865
2866 for (passive = 0; passive <= 1; passive++) {
2867 memset(&hints, 0, sizeof(hints));
2868 hints.ai_family = AF_UNSPEC;
2869 hints.ai_flags = passive ? AI_PASSIVE : 0;
2870 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002871 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002872 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2873 (void)gai_strerror(gaierr);
2874 goto bad;
2875 }
2876 for (ai = aitop; ai; ai = ai->ai_next) {
2877 if (ai->ai_addr == NULL ||
2878 ai->ai_addrlen == 0 ||
2879 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2880 straddr, sizeof(straddr), strport, sizeof(strport),
2881 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2882 goto bad;
2883 }
2884 switch (ai->ai_family) {
2885 case AF_INET:
2886 if (strcmp(strport, "54321") != 0) {
2887 goto bad;
2888 }
2889 if (passive) {
2890 if (strcmp(straddr, "0.0.0.0") != 0) {
2891 goto bad;
2892 }
2893 } else {
2894 if (strcmp(straddr, "127.0.0.1") != 0) {
2895 goto bad;
2896 }
2897 }
2898 inet4++;
2899 break;
2900 case AF_INET6:
2901 if (strcmp(strport, "54321") != 0) {
2902 goto bad;
2903 }
2904 if (passive) {
2905 if (strcmp(straddr, "::") != 0) {
2906 goto bad;
2907 }
2908 } else {
2909 if (strcmp(straddr, "::1") != 0) {
2910 goto bad;
2911 }
2912 }
2913 inet6++;
2914 break;
2915 case AF_UNSPEC:
2916 goto bad;
2917 break;
2918 default:
2919 /* another family support? */
2920 break;
2921 }
2922 }
2923 }
2924
2925 if (!(inet4 == 0 || inet4 == 2))
2926 goto bad;
2927 if (!(inet6 == 0 || inet6 == 2))
2928 goto bad;
2929
2930 if (aitop)
2931 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002932 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002933
2934 bad:
2935 if (aitop)
2936 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002937 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002938}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002939]], ac_cv_buggy_getaddrinfo=no,
2940 ac_cv_buggy_getaddrinfo=yes,
2941 ac_cv_buggy_getaddrinfo=yes))
2942fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002943
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002944if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2945then
2946 if test $ipv6 = yes
2947 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002948 echo 'Fatal: You must get working getaddrinfo() function.'
2949 echo ' or you can specify "--disable-ipv6"'.
2950 exit 1
2951 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002952else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002953 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002954fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002955AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002956
Guido van Rossum627b2d71993-12-24 10:39:16 +00002957# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002958AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002959AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002960AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002961AC_CHECK_MEMBERS([struct stat.st_rdev])
2962AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002963AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002964AC_CHECK_MEMBERS([struct stat.st_gen])
2965AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002966AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002967
2968AC_MSG_CHECKING(for time.h that defines altzone)
2969AC_CACHE_VAL(ac_cv_header_time_altzone,
2970[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2971 ac_cv_header_time_altzone=yes,
2972 ac_cv_header_time_altzone=no)])
2973AC_MSG_RESULT($ac_cv_header_time_altzone)
2974if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002975 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002976fi
2977
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002978was_it_defined=no
2979AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002980AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002981#include <sys/types.h>
2982#include <sys/select.h>
2983#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002984], [;], [
2985 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2986 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2987 (which you can't on SCO ODT 3.0).])
2988 was_it_defined=yes
2989])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002990AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002991
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002992AC_MSG_CHECKING(for addrinfo)
2993AC_CACHE_VAL(ac_cv_struct_addrinfo,
2994AC_TRY_COMPILE([
2995# include <netdb.h>],
2996 [struct addrinfo a],
2997 ac_cv_struct_addrinfo=yes,
2998 ac_cv_struct_addrinfo=no))
2999AC_MSG_RESULT($ac_cv_struct_addrinfo)
3000if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003001 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003002fi
3003
3004AC_MSG_CHECKING(for sockaddr_storage)
3005AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3006AC_TRY_COMPILE([
3007# include <sys/types.h>
3008# include <sys/socket.h>],
3009 [struct sockaddr_storage s],
3010 ac_cv_struct_sockaddr_storage=yes,
3011 ac_cv_struct_sockaddr_storage=no))
3012AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3013if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003015fi
3016
Guido van Rossum627b2d71993-12-24 10:39:16 +00003017# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003018
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003019AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003020AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003021
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003022works=no
3023AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003024AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3025 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3026)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003027AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003028
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003029works=no
3030AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003031AC_TRY_COMPILE([], [signed char c;], works=yes,
3032 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3033)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003034AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003035
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003036have_prototypes=no
3037AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003038AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3039 AC_DEFINE(HAVE_PROTOTYPES, 1,
3040 [Define if your compiler supports function prototype])
3041 have_prototypes=yes
3042])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003043AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003044
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003045works=no
3046AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003047AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003048#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003049int foo(int x, ...) {
3050 va_list va;
3051 va_start(va, x);
3052 va_arg(va, int);
3053 va_arg(va, char *);
3054 va_arg(va, double);
3055 return 0;
3056}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003057], [return foo(10, "", 3.14);], [
3058 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3059 [Define if your compiler supports variable length function prototypes
3060 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3061 works=yes
3062])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003063AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003064
Dave Cole331708b2004-08-09 04:51:41 +00003065# check for socketpair
3066AC_MSG_CHECKING(for socketpair)
3067AC_TRY_COMPILE([
3068#include <sys/types.h>
3069#include <sys/socket.h>
3070], void *x=socketpair,
3071 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3072 AC_MSG_RESULT(yes),
3073 AC_MSG_RESULT(no)
3074)
3075
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003076# check if sockaddr has sa_len member
3077AC_MSG_CHECKING(if sockaddr has sa_len member)
3078AC_TRY_COMPILE([#include <sys/types.h>
3079#include <sys/socket.h>],
3080[struct sockaddr x;
3081x.sa_len = 0;],
3082 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003083 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003084 AC_MSG_RESULT(no))
3085
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003086va_list_is_array=no
3087AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003088AC_TRY_COMPILE([
3089#ifdef HAVE_STDARG_PROTOTYPES
3090#include <stdarg.h>
3091#else
3092#include <varargs.h>
3093#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003094], [va_list list1, list2; list1 = list2;], , [
3095 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3096 va_list_is_array=yes
3097])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003098AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003099
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003100# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003101AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3102 [Define this if you have some version of gethostbyname_r()])
3103
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003104AC_CHECK_FUNC(gethostbyname_r, [
3105 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3106 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3107 OLD_CFLAGS=$CFLAGS
3108 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3109 AC_TRY_COMPILE([
3110# include <netdb.h>
3111 ], [
3112 char *name;
3113 struct hostent *he, *res;
3114 char buffer[2048];
3115 int buflen = 2048;
3116 int h_errnop;
3117
3118 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3119 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003120 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003121 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3122 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003123 AC_MSG_RESULT(yes)
3124 ], [
3125 AC_MSG_RESULT(no)
3126 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3127 AC_TRY_COMPILE([
3128# include <netdb.h>
3129 ], [
3130 char *name;
3131 struct hostent *he;
3132 char buffer[2048];
3133 int buflen = 2048;
3134 int h_errnop;
3135
3136 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3137 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003138 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003139 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3140 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003141 AC_MSG_RESULT(yes)
3142 ], [
3143 AC_MSG_RESULT(no)
3144 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3145 AC_TRY_COMPILE([
3146# include <netdb.h>
3147 ], [
3148 char *name;
3149 struct hostent *he;
3150 struct hostent_data data;
3151
3152 (void) gethostbyname_r(name, he, &data);
3153 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003154 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003155 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3156 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003157 AC_MSG_RESULT(yes)
3158 ], [
3159 AC_MSG_RESULT(no)
3160 ])
3161 ])
3162 ])
3163 CFLAGS=$OLD_CFLAGS
3164], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003165 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003166])
3167AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3168AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3169AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003170AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003171AC_SUBST(HAVE_GETHOSTBYNAME)
3172
Guido van Rossum627b2d71993-12-24 10:39:16 +00003173# checks for system services
3174# (none yet)
3175
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003176# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003177AC_CHECK_FUNC(__fpu_control,
3178 [],
3179 [AC_CHECK_LIB(ieee, __fpu_control)
3180])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003181
Guido van Rossum93274221997-05-09 02:42:00 +00003182# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003183AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003184AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003185 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3186[
Guido van Rossum93274221997-05-09 02:42:00 +00003187if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003188then
3189 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3190 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3191 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003192else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003193fi],
3194[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003195
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003196# check for --with-libm=...
3197AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003198case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003199Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003200BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003201*) LIBM=-lm
3202esac
Guido van Rossum93274221997-05-09 02:42:00 +00003203AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003204AC_ARG_WITH(libm,
3205 AC_HELP_STRING(--with-libm=STRING, math library),
3206[
Guido van Rossum93274221997-05-09 02:42:00 +00003207if test "$withval" = no
3208then LIBM=
3209 AC_MSG_RESULT(force LIBM empty)
3210elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003211then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003212 AC_MSG_RESULT(set LIBM="$withval")
3213else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003214fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003215[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003216
3217# check for --with-libc=...
3218AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003219AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003220AC_ARG_WITH(libc,
3221 AC_HELP_STRING(--with-libc=STRING, C library),
3222[
Guido van Rossum93274221997-05-09 02:42:00 +00003223if test "$withval" = no
3224then LIBC=
3225 AC_MSG_RESULT(force LIBC empty)
3226elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003227then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003228 AC_MSG_RESULT(set LIBC="$withval")
3229else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003230fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003231[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003232
Christian Heimes0a8143f2007-12-18 23:22:54 +00003233# ************************************
3234# * Check for mathematical functions *
3235# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003236
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003237LIBS_SAVE=$LIBS
3238LIBS="$LIBS $LIBM"
3239
Mark Dickinson04b27232009-01-04 12:29:36 +00003240# Detect whether system arithmetic is subject to x87-style double
3241# rounding issues. The result of this test has little meaning on non
3242# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3243# mode is round-to-nearest and double rounding issues are present, and
3244# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3245AC_MSG_CHECKING(for x87-style double rounding)
3246AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3247AC_TRY_RUN([
3248#include <stdlib.h>
3249#include <math.h>
3250int main() {
3251 volatile double x, y, z;
3252 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3253 x = 0.99999999999999989; /* 1-2**-53 */
3254 y = 1./x;
3255 if (y != 1.)
3256 exit(0);
3257 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3258 x = 1e16;
3259 y = 2.99999;
3260 z = x + y;
3261 if (z != 1e16+4.)
3262 exit(0);
3263 /* both tests show evidence of double rounding */
3264 exit(1);
3265}
3266],
3267ac_cv_x87_double_rounding=no,
3268ac_cv_x87_double_rounding=yes,
3269ac_cv_x87_double_rounding=no)])
3270AC_MSG_RESULT($ac_cv_x87_double_rounding)
3271if test "$ac_cv_x87_double_rounding" = yes
3272then
3273 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3274 [Define if arithmetic is subject to x87-style double rounding issue])
3275fi
3276
Jesse Noller355b1262009-04-02 00:03:28 +00003277# Multiprocessing check for broken sem_getvalue
3278AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003279AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003280AC_TRY_RUN([
3281#include <unistd.h>
3282#include <fcntl.h>
3283#include <stdio.h>
3284#include <semaphore.h>
3285#include <sys/stat.h>
3286
3287int main(void){
3288 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3289 int count;
3290 int res;
3291 if(a==SEM_FAILED){
3292 perror("sem_open");
3293 return 1;
3294
3295 }
3296 res = sem_getvalue(a, &count);
3297 sem_close(a);
3298 return res==-1 ? 1 : 0;
3299}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003300], ac_cv_broken_sem_getvalue=no,
3301 ac_cv_broken_sem_getvalue=yes,
3302 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003303)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003304AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3305if test $ac_cv_broken_sem_getvalue = yes
3306then
3307 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3308 [define to 1 if your sem_getvalue is broken.])
3309fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003310
Mark Dickinson265d7382008-04-21 22:32:24 +00003311# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3312# -0. on some architectures.
3313AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3314AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3315AC_TRY_RUN([
3316#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003317#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003318int main() {
3319 /* return 0 if either negative zeros don't exist
3320 on this platform or if negative zeros exist
3321 and tanh(-0.) == -0. */
3322 if (atan2(0., -1.) == atan2(-0., -1.) ||
3323 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3324 else exit(1);
3325}
3326],
3327ac_cv_tanh_preserves_zero_sign=yes,
3328ac_cv_tanh_preserves_zero_sign=no,
3329ac_cv_tanh_preserves_zero_sign=no)])
3330AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3331if test "$ac_cv_tanh_preserves_zero_sign" = yes
3332then
3333 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3334 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3335fi
3336
Mark Dickinson65898e02009-09-05 10:27:00 +00003337AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3338AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinsond181e3a2009-01-04 13:57:26 +00003339AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003340
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003341LIBS=$LIBS_SAVE
3342
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003343# determine what size digit to use for Python's longs
3344AC_MSG_CHECKING([digit size for Python's longs])
3345AC_ARG_ENABLE(big-digits,
3346AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3347[case $enable_big_digits in
3348yes)
3349 enable_big_digits=30 ;;
3350no)
3351 enable_big_digits=15 ;;
3352[15|30])
3353 ;;
3354*)
3355 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3356esac
3357AC_MSG_RESULT($enable_big_digits)
3358AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3359],
3360[AC_MSG_RESULT(no value specified)])
3361
Guido van Rossumef2255b2000-03-10 22:30:29 +00003362# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003363AC_CHECK_HEADER(wchar.h, [
3364 AC_DEFINE(HAVE_WCHAR_H, 1,
3365 [Define if the compiler provides a wchar.h header file.])
3366 wchar_h="yes"
3367],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003368wchar_h="no"
3369)
3370
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003371# determine wchar_t size
3372if test "$wchar_h" = yes
3373then
Guido van Rossum67b26592001-10-20 14:21:45 +00003374 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003375fi
3376
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003377AC_MSG_CHECKING(for UCS-4 tcl)
3378have_ucs4_tcl=no
3379AC_TRY_COMPILE([
3380#include <tcl.h>
3381#if TCL_UTF_MAX != 6
3382# error "NOT UCS4_TCL"
3383#endif], [], [
3384 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3385 have_ucs4_tcl=yes
3386])
3387AC_MSG_RESULT($have_ucs4_tcl)
3388
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003389# check whether wchar_t is signed or not
3390if test "$wchar_h" = yes
3391then
3392 # check whether wchar_t is signed or not
3393 AC_MSG_CHECKING(whether wchar_t is signed)
3394 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3395 AC_TRY_RUN([
3396 #include <wchar.h>
3397 int main()
3398 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003399 /* Success: exit code 0 */
3400 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003401 }
3402 ],
3403 ac_cv_wchar_t_signed=yes,
3404 ac_cv_wchar_t_signed=no,
3405 ac_cv_wchar_t_signed=yes)])
3406 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3407fi
3408
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003409AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003410dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003411AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003412 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3413 [],
3414 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003415
3416if test $enable_unicode = yes
3417then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003418 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003419 case "$have_ucs4_tcl" in
3420 yes) enable_unicode="ucs4"
3421 ;;
3422 *) enable_unicode="ucs2"
3423 ;;
3424 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003425fi
3426
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003427AH_TEMPLATE(Py_UNICODE_SIZE,
3428 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003429case "$enable_unicode" in
3430ucs2) unicode_size="2"
3431 AC_DEFINE(Py_UNICODE_SIZE,2)
3432 ;;
3433ucs4) unicode_size="4"
3434 AC_DEFINE(Py_UNICODE_SIZE,4)
3435 ;;
3436esac
3437
Martin v. Löwis11437992002-04-12 09:54:03 +00003438AH_TEMPLATE(PY_UNICODE_TYPE,
3439 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003440
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003441AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003442if test "$enable_unicode" = "no"
3443then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003444 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003445 AC_MSG_RESULT(not used)
3446else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003447 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003448 AC_DEFINE(Py_USING_UNICODE, 1,
3449 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003450
3451 # wchar_t is only usable if it maps to an unsigned type
3452 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003453 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003454 then
3455 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003456 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3457 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003458 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003459 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003460 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3461 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3462 then
3463 PY_UNICODE_TYPE="unsigned short"
3464 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3465 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3466 then
3467 PY_UNICODE_TYPE="unsigned long"
3468 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3469 else
3470 PY_UNICODE_TYPE="no type found"
3471 fi
3472 AC_MSG_RESULT($PY_UNICODE_TYPE)
3473fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003474
3475# check for endianness
3476AC_C_BIGENDIAN
3477
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003478# Check whether right shifting a negative integer extends the sign bit
3479# or fills with zeros (like the Cray J90, according to Tim Peters).
3480AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003481AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003482AC_TRY_RUN([
3483int main()
3484{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003485 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003486}
Guido van Rossum3065c942001-09-17 04:03:14 +00003487],
3488ac_cv_rshift_extends_sign=yes,
3489ac_cv_rshift_extends_sign=no,
3490ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003491AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3492if test "$ac_cv_rshift_extends_sign" = no
3493then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003494 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3495 [Define if i>>j for signed int i does not extend the sign bit
3496 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003497fi
3498
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003499# check for getc_unlocked and related locking functions
3500AC_MSG_CHECKING(for getc_unlocked() and friends)
3501AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3502AC_TRY_LINK([#include <stdio.h>],[
3503 FILE *f = fopen("/dev/null", "r");
3504 flockfile(f);
3505 getc_unlocked(f);
3506 funlockfile(f);
3507], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3508AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3509if test "$ac_cv_have_getc_unlocked" = yes
3510then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003511 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3512 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003513fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003514
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003515# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003516# save the value of LIBS so we don't actually link Python with readline
3517LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003518
3519# On some systems we need to link readline to a termcap compatible
3520# library. NOTE: Keep the precedence of listed libraries synchronised
3521# with setup.py.
3522py_cv_lib_readline=no
3523AC_MSG_CHECKING([how to link readline libs])
3524for py_libtermcap in "" ncursesw ncurses curses termcap; do
3525 if test -z "$py_libtermcap"; then
3526 READLINE_LIBS="-lreadline"
3527 else
3528 READLINE_LIBS="-lreadline -l$py_libtermcap"
3529 fi
3530 LIBS="$READLINE_LIBS $LIBS_no_readline"
3531 AC_LINK_IFELSE(
3532 [AC_LANG_CALL([],[readline])],
3533 [py_cv_lib_readline=yes])
3534 if test $py_cv_lib_readline = yes; then
3535 break
3536 fi
3537done
3538# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3539#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003540if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003541 AC_MSG_RESULT([none])
3542else
3543 AC_MSG_RESULT([$READLINE_LIBS])
3544 AC_DEFINE(HAVE_LIBREADLINE, 1,
3545 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003546fi
3547
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003548# check for readline 2.1
3549AC_CHECK_LIB(readline, rl_callback_handler_install,
3550 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003551 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003552
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003553# check for readline 2.2
3554AC_TRY_CPP([#include <readline/readline.h>],
3555have_readline=yes, have_readline=no)
3556if test $have_readline = yes
3557then
3558 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3559 [readline/readline.h],
3560 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3561 [Define if you have readline 2.2]), )
3562fi
3563
Martin v. Löwis0daad592001-09-30 21:09:59 +00003564# check for readline 4.0
3565AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003566 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003567 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003568
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003569# also in 4.0
3570AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3571 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003572 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003573
Guido van Rossum353ae582001-07-10 16:45:32 +00003574# check for readline 4.2
3575AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003576 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003577 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003578
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003579# also in readline 4.2
3580AC_TRY_CPP([#include <readline/readline.h>],
3581have_readline=yes, have_readline=no)
3582if test $have_readline = yes
3583then
3584 AC_EGREP_HEADER([extern int rl_catch_signals;],
3585 [readline/readline.h],
3586 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3587 [Define if you can turn off readline's signal handling.]), )
3588fi
3589
Martin v. Löwis82bca632006-02-10 20:49:30 +00003590# End of readline checks: restore LIBS
3591LIBS=$LIBS_no_readline
3592
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003593AC_MSG_CHECKING(for broken nice())
3594AC_CACHE_VAL(ac_cv_broken_nice, [
3595AC_TRY_RUN([
3596int main()
3597{
3598 int val1 = nice(1);
3599 if (val1 != -1 && val1 == nice(2))
3600 exit(0);
3601 exit(1);
3602}
Guido van Rossum3065c942001-09-17 04:03:14 +00003603],
3604ac_cv_broken_nice=yes,
3605ac_cv_broken_nice=no,
3606ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003607AC_MSG_RESULT($ac_cv_broken_nice)
3608if test "$ac_cv_broken_nice" = yes
3609then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003610 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3611 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003612fi
3613
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003614AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003615AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003616AC_TRY_RUN([
3617#include <poll.h>
3618
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003619int main()
3620{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003621 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003622 int poll_test;
3623
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003624 close (42);
3625
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003626 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003627 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003628 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003629 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003630 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003631 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003632 return 1;
3633}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003634],
3635ac_cv_broken_poll=yes,
3636ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003637ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003638AC_MSG_RESULT($ac_cv_broken_poll)
3639if test "$ac_cv_broken_poll" = yes
3640then
3641 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3642 [Define if poll() sets errno on invalid file descriptors.])
3643fi
3644
Brett Cannon43802422005-02-10 20:48:03 +00003645# Before we can test tzset, we need to check if struct tm has a tm_zone
3646# (which is not required by ISO C or UNIX spec) and/or if we support
3647# tzname[]
3648AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003649
Brett Cannon43802422005-02-10 20:48:03 +00003650# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003651AC_MSG_CHECKING(for working tzset())
3652AC_CACHE_VAL(ac_cv_working_tzset, [
3653AC_TRY_RUN([
3654#include <stdlib.h>
3655#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003656#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003657
3658#if HAVE_TZNAME
3659extern char *tzname[];
3660#endif
3661
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003662int main()
3663{
Brett Cannon18367812003-09-19 00:59:16 +00003664 /* Note that we need to ensure that not only does tzset(3)
3665 do 'something' with localtime, but it works as documented
3666 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003667 This includes making sure that tzname is set properly if
3668 tm->tm_zone does not exist since it is the alternative way
3669 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003670
3671 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003672 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003673 */
3674
Brett Cannon43802422005-02-10 20:48:03 +00003675 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003676 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3677
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003678 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003679 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003680 if (localtime(&groundhogday)->tm_hour != 0)
3681 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003682#if HAVE_TZNAME
3683 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3684 if (strcmp(tzname[0], "UTC") ||
3685 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3686 exit(1);
3687#endif
Brett Cannon18367812003-09-19 00:59:16 +00003688
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003689 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003690 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003691 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003692 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003693#if HAVE_TZNAME
3694 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3695 exit(1);
3696#endif
Brett Cannon18367812003-09-19 00:59:16 +00003697
3698 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3699 tzset();
3700 if (localtime(&groundhogday)->tm_hour != 11)
3701 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003702#if HAVE_TZNAME
3703 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3704 exit(1);
3705#endif
3706
3707#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003708 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3709 exit(1);
3710 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3711 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003712#endif
Brett Cannon18367812003-09-19 00:59:16 +00003713
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003714 exit(0);
3715}
3716],
3717ac_cv_working_tzset=yes,
3718ac_cv_working_tzset=no,
3719ac_cv_working_tzset=no)])
3720AC_MSG_RESULT($ac_cv_working_tzset)
3721if test "$ac_cv_working_tzset" = yes
3722then
3723 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3724 [Define if tzset() actually switches the local timezone in a meaningful way.])
3725fi
3726
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003727# Look for subsecond timestamps in struct stat
3728AC_MSG_CHECKING(for tv_nsec in struct stat)
3729AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3730AC_TRY_COMPILE([#include <sys/stat.h>], [
3731struct stat st;
3732st.st_mtim.tv_nsec = 1;
3733],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003734ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003735ac_cv_stat_tv_nsec=no,
3736ac_cv_stat_tv_nsec=no))
3737AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3738if test "$ac_cv_stat_tv_nsec" = yes
3739then
3740 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3741 [Define if you have struct stat.st_mtim.tv_nsec])
3742fi
3743
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003744# Look for BSD style subsecond timestamps in struct stat
3745AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3746AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3747AC_TRY_COMPILE([#include <sys/stat.h>], [
3748struct stat st;
3749st.st_mtimespec.tv_nsec = 1;
3750],
3751ac_cv_stat_tv_nsec2=yes,
3752ac_cv_stat_tv_nsec2=no,
3753ac_cv_stat_tv_nsec2=no))
3754AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3755if test "$ac_cv_stat_tv_nsec2" = yes
3756then
3757 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3758 [Define if you have struct stat.st_mtimensec])
3759fi
3760
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003761# On HP/UX 11.0, mvwdelch is a block with a return statement
3762AC_MSG_CHECKING(whether mvwdelch is an expression)
3763AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3764AC_TRY_COMPILE([#include <curses.h>], [
3765 int rtn;
3766 rtn = mvwdelch(0,0,0);
3767], ac_cv_mvwdelch_is_expression=yes,
3768 ac_cv_mvwdelch_is_expression=no,
3769 ac_cv_mvwdelch_is_expression=yes))
3770AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3771
3772if test "$ac_cv_mvwdelch_is_expression" = yes
3773then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003774 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3775 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003776fi
3777
3778AC_MSG_CHECKING(whether WINDOW has _flags)
3779AC_CACHE_VAL(ac_cv_window_has_flags,
3780AC_TRY_COMPILE([#include <curses.h>], [
3781 WINDOW *w;
3782 w->_flags = 0;
3783], ac_cv_window_has_flags=yes,
3784 ac_cv_window_has_flags=no,
3785 ac_cv_window_has_flags=no))
3786AC_MSG_RESULT($ac_cv_window_has_flags)
3787
3788
3789if test "$ac_cv_window_has_flags" = yes
3790then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003791 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3792 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003793fi
3794
Walter Dörwald4994d952006-06-19 08:07:50 +00003795AC_MSG_CHECKING(for is_term_resized)
3796AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3797 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3798 AC_MSG_RESULT(yes),
3799 AC_MSG_RESULT(no)
3800)
3801
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003802AC_MSG_CHECKING(for resize_term)
3803AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3804 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003805 AC_MSG_RESULT(yes),
3806 AC_MSG_RESULT(no)
3807)
3808
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003809AC_MSG_CHECKING(for resizeterm)
3810AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3811 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003812 AC_MSG_RESULT(yes),
3813 AC_MSG_RESULT(no)
3814)
3815
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003816AC_MSG_CHECKING(for /dev/ptmx)
3817
3818if test -r /dev/ptmx
3819then
3820 AC_MSG_RESULT(yes)
3821 AC_DEFINE(HAVE_DEV_PTMX, 1,
3822 [Define if we have /dev/ptmx.])
3823else
3824 AC_MSG_RESULT(no)
3825fi
3826
3827AC_MSG_CHECKING(for /dev/ptc)
3828
3829if test -r /dev/ptc
3830then
3831 AC_MSG_RESULT(yes)
3832 AC_DEFINE(HAVE_DEV_PTC, 1,
3833 [Define if we have /dev/ptc.])
3834else
3835 AC_MSG_RESULT(no)
3836fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003837
Brett Cannon09d12362006-05-11 05:11:33 +00003838AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003839AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003840AC_TRY_RUN([[
3841#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00003842#include <stddef.h>
3843#include <string.h>
3844
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003845#ifdef HAVE_SYS_TYPES_H
3846#include <sys/types.h>
3847#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003848
3849#ifdef HAVE_SSIZE_T
3850typedef ssize_t Py_ssize_t;
3851#elif SIZEOF_VOID_P == SIZEOF_LONG
3852typedef long Py_ssize_t;
3853#else
3854typedef int Py_ssize_t;
3855#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003856
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003857int main()
3858{
3859 char buffer[256];
3860
Brett Cannon09d12362006-05-11 05:11:33 +00003861 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3862 return 1;
3863
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003864 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003865 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003866
3867 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3868 return 1;
3869
3870 if (strcmp(buffer, "-123"))
3871 return 1;
3872
Brett Cannon09d12362006-05-11 05:11:33 +00003873 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003874}
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003875]], ac_cv_have_size_t_format=yes,
3876 ac_cv_have_size_t_format=no,
3877 ac_cv_have_size_t_format=no)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003878)
3879AC_MSG_RESULT($ac_cv_have_size_t_format)
3880if test $ac_cv_have_size_t_format = yes
3881then
3882 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3883 [Define to printf format modifier for Py_ssize_t])
3884fi
Brett Cannon09d12362006-05-11 05:11:33 +00003885
Martin v. Löwis01c04012002-11-11 14:58:44 +00003886AC_CHECK_TYPE(socklen_t,,
3887 AC_DEFINE(socklen_t,int,
3888 Define to `int' if <sys/socket.h> does not define.),[
3889#ifdef HAVE_SYS_TYPES_H
3890#include <sys/types.h>
3891#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003892#ifdef HAVE_SYS_SOCKET_H
3893#include <sys/socket.h>
3894#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003895])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003896
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003897AC_SUBST(THREADHEADERS)
3898
3899for h in `(cd $srcdir;echo Python/thread_*.h)`
3900do
3901 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3902done
3903
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003904AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003905SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003906AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003907for dir in $SRCDIRS; do
3908 if test ! -d $dir; then
3909 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003910 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003911done
3912AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003913
Guido van Rossum627b2d71993-12-24 10:39:16 +00003914# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00003915AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003916AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003917
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003918echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003919if test ! -f Modules/Setup
3920then
3921 cp $srcdir/Modules/Setup.dist Modules/Setup
3922fi
3923
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003924echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003925if test ! -f Modules/Setup.local
3926then
3927 echo "# Edit this file for local setup changes" >Modules/Setup.local
3928fi
3929
3930echo "creating Makefile"
3931$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3932 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003933 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003934
3935case $ac_sys_system in
3936BeOS)
3937 AC_MSG_WARN([
3938
3939 Support for BeOS is deprecated as of Python 2.6.
3940 See PEP 11 for the gory details.
3941 ])
3942 ;;
3943*) ;;
3944esac
3945
Neil Schemenauer66252162001-02-19 04:47:42 +00003946mv config.c Modules