blob: 77bf364862aaece61e26bf0a7215d3f4a7ec9804 [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 +0000112ARCH_RUN_32BIT=
113AC_SUBST(ARCH_RUN_32BIT)
114
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000115UNIVERSAL_ARCHS="32-bit"
116AC_MSG_CHECKING(for --with-universal-archs)
117AC_ARG_WITH(universal-archs,
118 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
119[
120 AC_MSG_RESULT($withval)
121 UNIVERSAL_ARCHS="$withval"
122],
123[
124 AC_MSG_RESULT(32-bit)
125])
126
127
128
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000129AC_ARG_WITH(framework-name,
130 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
131 specify an alternate name of the framework built with --enable-framework),
132[
133 PYTHONFRAMEWORK=${withval}
134 PYTHONFRAMEWORKDIR=${withval}.framework
135 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
136 ],[
137 PYTHONFRAMEWORK=Python
138 PYTHONFRAMEWORKDIR=Python.framework
139 PYTHONFRAMEWORKIDENTIFIER=org.python.python
140])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000141dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000142AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000143 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
144[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 case $enableval in
146 yes)
147 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000148 esac
149 case $enableval in
150 no)
151 PYTHONFRAMEWORK=
152 PYTHONFRAMEWORKDIR=no-framework
153 PYTHONFRAMEWORKPREFIX=
154 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000155 FRAMEWORKINSTALLFIRST=
156 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000157 FRAMEWORKALTINSTALLFIRST=
158 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000159 if test "x${prefix}" = "xNONE"; then
160 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
161 else
162 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
163 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000165 ;;
166 *)
167 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000168 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000169 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000170 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
171 if test "$UNIVERSAL_ARCHS" = "all"
172 then
173 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000174 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000175 else
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000176 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000177 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
178 fi
179
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000180 if test "x${prefix}" = "xNONE" ; then
181 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
182 else
183 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
184 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000185 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000186
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000187 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000188 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000189 AC_CONFIG_FILES(Mac/Makefile)
190 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
191 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000192 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
193 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000195 ],[
196 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000197 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198 PYTHONFRAMEWORKPREFIX=
199 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000200 FRAMEWORKINSTALLFIRST=
201 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000202 FRAMEWORKALTINSTALLFIRST=
203 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000204 if test "x${prefix}" = "xNONE" ; then
205 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
206 else
207 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
208 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000210
211 if test "$UNIVERSAL_ARCHS" = "all"
212 then
213 FRAMEWORKINSTALLLAST=update4wayuniversal
214 FRAMEWORKALTINSTALLLAST=update4wayuniversal
215 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000216])
217AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000218AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000219AC_SUBST(PYTHONFRAMEWORKDIR)
220AC_SUBST(PYTHONFRAMEWORKPREFIX)
221AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000222AC_SUBST(FRAMEWORKINSTALLFIRST)
223AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000224AC_SUBST(FRAMEWORKALTINSTALLFIRST)
225AC_SUBST(FRAMEWORKALTINSTALLLAST)
226AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000227
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000228##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000229## AC_HELP_STRING(--with-dyld,
230## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000231##
Guido van Rossumb418f891996-07-30 18:06:02 +0000232# Set name for machine-dependent library files
233AC_SUBST(MACHDEP)
234AC_MSG_CHECKING(MACHDEP)
235if test -z "$MACHDEP"
236then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000237 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000238 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
239 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000240 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000241 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000242 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000243 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_md_system=`echo $ac_sys_system |
245 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
246 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000247 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000248 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000249
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000250 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000251 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000252 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000253 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000254 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000255 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000256 esac
257fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000258
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000259# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
260# disable features if it is defined, without any means to access these
261# features as extensions. For these systems, we skip the definition of
262# _XOPEN_SOURCE. Before adding a system to the list to gain access to
263# some feature, make sure there is no alternative way to access this
264# feature. Also, when using wildcards, make sure you have verified the
265# need for not defining _XOPEN_SOURCE on all systems matching the
266# wildcard, and that the wildcard does not include future systems
267# (which may remove their limitations).
268dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
269case $ac_sys_system/$ac_sys_release in
270 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
271 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000272 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000273 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000274 define_xopen_source=no
275 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
276 # also defined. This can be overridden by defining _BSD_SOURCE
277 # As this has a different meaning on Linux, only define it on OpenBSD
278 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
279 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000280 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
281 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
282 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000283 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 +0000284 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000285 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
286 # of union __?sigval. Reported by Stuart Bishop.
287 SunOS/5.6)
288 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000289 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
290 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000291 # Reconfirmed for 7.1.4 by Martin v. Loewis.
292 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000293 define_xopen_source=no;;
294 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000295 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000296 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000297 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000298 # On FreeBSD 4, the math functions C89 does not cover are never defined
299 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
300 FreeBSD/4.*)
301 define_xopen_source=no;;
302 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
303 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
304 # identifies itself as Darwin/7.*
305 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
306 # disables platform specific features beyond repair.
307 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
308 # has no effect, don't bother defining them
309 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000310 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000311 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
312 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
313 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000314 AIX/4)
315 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000316 AIX/5)
317 if test `uname -r` -eq 1; then
318 define_xopen_source=no
319 fi
320 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000321 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
322 # defining NI_NUMERICHOST.
323 QNX/6.3.2)
324 define_xopen_source=no
325 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000326
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000327esac
328
329if test $define_xopen_source = yes
330then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000331 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
332 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000333 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
334 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000335 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000336 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000337 AC_DEFINE(_XOPEN_SOURCE, 500,
338 Define to the level of X/Open that your system supports)
339 ;;
340 *)
341 AC_DEFINE(_XOPEN_SOURCE, 600,
342 Define to the level of X/Open that your system supports)
343 ;;
344 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000345
346 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
347 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
348 # several APIs are not declared. Since this is also needed in some
349 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000350 # except for Solaris 10, where it must not be defined,
351 # as it implies XPG4.2
352 case $ac_sys_system/$ac_sys_release in
353 SunOS/5.10)
354 ;;
355 *)
356 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
357 Define to activate Unix95-and-earlier features)
358 ;;
359 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000360
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000361 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
362
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000363fi
364
Guido van Rossum91922671997-10-09 20:24:13 +0000365#
366# SGI compilers allow the specification of the both the ABI and the
367# ISA on the command line. Depending on the values of these switches,
368# different and often incompatable code will be generated.
369#
370# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
371# thus supply support for various ABI/ISA combinations. The MACHDEP
372# variable is also adjusted.
373#
374AC_SUBST(SGI_ABI)
375if test ! -z "$SGI_ABI"
376then
377 CC="cc $SGI_ABI"
378 LDFLAGS="$SGI_ABI $LDFLAGS"
379 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
380fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000381AC_MSG_RESULT($MACHDEP)
382
Jack Jansen83f898c2002-12-30 22:23:40 +0000383# And add extra plat-mac for darwin
384AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000385AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000386AC_MSG_CHECKING(EXTRAPLATDIR)
387if test -z "$EXTRAPLATDIR"
388then
389 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000390 darwin)
391 EXTRAPLATDIR="\$(PLATMACDIRS)"
392 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
393 ;;
394 *)
395 EXTRAPLATDIR=""
396 EXTRAMACHDEPPATH=""
397 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000398 esac
399fi
400AC_MSG_RESULT($EXTRAPLATDIR)
401
Jack Jansen6b08a402004-06-03 12:41:45 +0000402# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
403# it may influence the way we can build extensions, so distutils
404# needs to check it
405AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000406AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000407CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000408EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000409
Mark Dickinson65134662008-04-25 16:11:04 +0000410AC_MSG_CHECKING(machine type as reported by uname -m)
411ac_sys_machine=`uname -m`
412AC_MSG_RESULT($ac_sys_machine)
413
Guido van Rossum627b2d71993-12-24 10:39:16 +0000414# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000415
416# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
417# for debug/optimization stuff. BASECFLAGS is for flags that are required
418# just to get things to compile and link. Users are free to override OPT
419# when running configure or make. The build should not break if they do.
420# BASECFLAGS should generally not be messed with, however.
421
422# XXX shouldn't some/most/all of this code be merged with the stuff later
423# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000425AC_ARG_WITH(gcc,
426 AC_HELP_STRING(--without-gcc,never use gcc),
427[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000428 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000429 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000430 without_gcc=yes;;
431 yes) CC=gcc
432 without_gcc=no;;
433 *) CC=$withval
434 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000435 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000436 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000437 AIX*) CC=cc_r
438 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000439 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000440 case $BE_HOST_CPU in
441 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000442 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000443 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000444 BASECFLAGS="$BASECFLAGS -export pragma"
445 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000446 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000447 ;;
448 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000449 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000450 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000451 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000452 ;;
453 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000454 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000455 ;;
456 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000457 AR="\$(srcdir)/Modules/ar_beos"
458 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000459 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000460 Monterey*)
461 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000462 without_gcc=;;
463 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000464 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000465AC_MSG_RESULT($without_gcc)
466
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000467# If the user switches compilers, we can't believe the cache
468if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
469then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000470 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
471(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000472fi
473
Guido van Rossum627b2d71993-12-24 10:39:16 +0000474AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000475
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000476AC_SUBST(CXX)
477AC_SUBST(MAINCC)
478AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
479AC_ARG_WITH(cxx_main,
480 AC_HELP_STRING([--with-cxx-main=<compiler>],
481 [compile main() and link python executable with C++ compiler]),
482[
483
484 case $withval in
485 no) with_cxx_main=no
486 MAINCC='$(CC)';;
487 yes) with_cxx_main=yes
488 MAINCC='$(CXX)';;
489 *) with_cxx_main=yes
490 MAINCC=$withval
491 if test -z "$CXX"
492 then
493 CXX=$withval
494 fi;;
495 esac], [
496 with_cxx_main=no
497 MAINCC='$(CC)'
498])
499AC_MSG_RESULT($with_cxx_main)
500
501preset_cxx="$CXX"
502if test -z "$CXX"
503then
504 case "$CC" in
505 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
506 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
507 esac
508 if test "$CXX" = "notfound"
509 then
510 CXX=""
511 fi
512fi
513if test -z "$CXX"
514then
515 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
516 if test "$CXX" = "notfound"
517 then
518 CXX=""
519 fi
520fi
521if test "$preset_cxx" != "$CXX"
522then
523 AC_MSG_WARN([
524
525 By default, distutils will build C++ extension modules with "$CXX".
526 If this is not intended, then set CXX on the configure command line.
527 ])
528fi
529
530
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000531# checks for UNIX variants that set C preprocessor variables
532AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000533
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000534# Check for unsupported systems
535case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000536atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000537 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
538 echo See README for details.
539 exit 1;;
540esac
541
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000542AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000543AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000544AC_ARG_WITH(suffix,
545 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
546[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000547 case $withval in
548 no) EXEEXT=;;
549 yes) EXEEXT=.exe;;
550 *) EXEEXT=$withval;;
551 esac])
552AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000553
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000554# Test whether we're running on a non-case-sensitive system, in which
555# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000556AC_SUBST(BUILDEXEEXT)
557AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000558if test ! -d CaseSensitiveTestDir; then
559mkdir CaseSensitiveTestDir
560fi
561
562if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000563then
Jack Jansen1999ef42001-12-06 21:47:20 +0000564 AC_MSG_RESULT(yes)
565 BUILDEXEEXT=.exe
566else
567 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000568 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000569fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000570rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000571
Guido van Rossumdd997f71998-10-07 19:58:26 +0000572case $MACHDEP in
573bsdos*)
574 case $CC in
575 gcc) CC="$CC -D_HAVE_BSDI";;
576 esac;;
577esac
578
Guido van Rossum84561611997-08-21 00:08:11 +0000579case $ac_sys_system in
580hp*|HP*)
581 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000582 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000583 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000584Monterey*)
585 case $CC in
586 cc) CC="$CC -Wl,-Bexport";;
587 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000588SunOS*)
589 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000590 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000591 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000592esac
593
Martin v. Löwise8964d42001-03-06 12:09:07 +0000594
Neil Schemenauer61c51152001-01-26 16:18:16 +0000595AC_SUBST(LIBRARY)
596AC_MSG_CHECKING(LIBRARY)
597if test -z "$LIBRARY"
598then
599 LIBRARY='libpython$(VERSION).a'
600fi
601AC_MSG_RESULT($LIBRARY)
602
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000603# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000604# name of the library into which to insert object files). BLDLIBRARY is also
605# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
606# is blank as the main program is not linked directly against LDLIBRARY.
607# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
608# systems without shared libraries, LDLIBRARY is the same as LIBRARY
609# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
610# DLLLIBRARY is the shared (i.e., DLL) library.
611#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000612# RUNSHARED is used to run shared python without installed libraries
613#
614# INSTSONAME is the name of the shared library that will be use to install
615# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000616AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000617AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000618AC_SUBST(BLDLIBRARY)
619AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000620AC_SUBST(INSTSONAME)
621AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000622LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000623BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000624INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000625DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000626LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000627RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000628
Guido van Rossumfb842551997-08-06 23:42:07 +0000629# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000630# If CXX is set, and if it is needed to link a main function that was
631# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
632# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000633# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000634# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000635AC_SUBST(LINKCC)
636AC_MSG_CHECKING(LINKCC)
637if test -z "$LINKCC"
638then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000639 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000640 case $ac_sys_system in
641 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000642 exp_extra="\"\""
643 if test $ac_sys_release -ge 5 -o \
644 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
645 exp_extra="."
646 fi
647 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000648 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000649 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000650 QNX*)
651 # qcc must be used because the other compilers do not
652 # support -N.
653 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000654 esac
655fi
656AC_MSG_RESULT($LINKCC)
657
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000658# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
659# make sure we default having it set to "no": this is used by
660# distutils.unixccompiler to know if it should add --enable-new-dtags
661# to linker command lines, and failing to detect GNU ld simply results
662# in the same bahaviour as before.
663AC_SUBST(GNULD)
664AC_MSG_CHECKING(for GNU ld)
665ac_prog=ld
666if test "$GCC" = yes; then
667 ac_prog=`$CC -print-prog-name=ld`
668fi
669case `"$ac_prog" -V 2>&1 < /dev/null` in
670 *GNU*)
671 GNULD=yes;;
672 *)
673 GNULD=no;;
674esac
675AC_MSG_RESULT($GNULD)
676
Martin v. Löwis1142de32002-03-29 16:28:31 +0000677AC_MSG_CHECKING(for --enable-shared)
678AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000679 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000680
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681if test -z "$enable_shared"
682then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000683 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000684 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000685 enable_shared="yes";;
686 *)
687 enable_shared="no";;
688 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000689fi
690AC_MSG_RESULT($enable_shared)
691
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000692AC_MSG_CHECKING(for --enable-profiling)
693AC_ARG_ENABLE(profiling,
694 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
695[ac_save_cc="$CC"
696 CC="$CC -pg"
697 AC_TRY_RUN([int main() { return 0; }],
698 ac_enable_profiling="yes",
699 ac_enable_profiling="no",
700 ac_enable_profiling="no")
701 CC="$ac_save_cc"])
702AC_MSG_RESULT($ac_enable_profiling)
703
704case "$ac_enable_profiling" in
705 "yes")
706 BASECFLAGS="-pg $BASECFLAGS"
707 LDFLAGS="-pg $LDFLAGS"
708 ;;
709esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000710
711AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000712
Guido van Rossumb8552162001-09-05 14:58:11 +0000713# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
714# library that we build, but we do not want to link against it (we
715# will find it with a -framework option). For this reason there is an
716# extra variable BLDLIBRARY against which Python and the extension
717# modules are linked, BLDLIBRARY. This is normally the same as
718# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000719if test "$enable_framework"
720then
721 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000722 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000723 BLDLIBRARY=''
724else
725 BLDLIBRARY='$(LDLIBRARY)'
726fi
727
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728# Other platforms follow
729if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000730 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 case $ac_sys_system in
732 BeOS*)
733 LDLIBRARY='libpython$(VERSION).so'
734 ;;
735 CYGWIN*)
736 LDLIBRARY='libpython$(VERSION).dll.a'
737 DLLLIBRARY='libpython$(VERSION).dll'
738 ;;
739 SunOS*)
740 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000741 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000742 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000743 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000744 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000745 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000746 LDLIBRARY='libpython$(VERSION).so'
747 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000748 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000749 case $ac_sys_system in
750 FreeBSD*)
751 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
752 ;;
753 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000754 INSTSONAME="$LDLIBRARY".$SOVERSION
755 ;;
756 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000757 case `uname -m` in
758 ia64)
759 LDLIBRARY='libpython$(VERSION).so'
760 ;;
761 *)
762 LDLIBRARY='libpython$(VERSION).sl'
763 ;;
764 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000765 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000766 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000767 ;;
768 OSF*)
769 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000770 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000771 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000772 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000773 atheos*)
774 LDLIBRARY='libpython$(VERSION).so'
775 BLDLIBRARY='-L. -lpython$(VERSION)'
776 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
777 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000778 Darwin*)
779 LDLIBRARY='libpython$(VERSION).dylib'
780 BLDLIBRARY='-L. -lpython$(VERSION)'
781 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
782 ;;
783
Martin v. Löwis1142de32002-03-29 16:28:31 +0000784 esac
Jason Tishler30765592003-09-04 11:04:06 +0000785else # shared is disabled
786 case $ac_sys_system in
787 CYGWIN*)
788 BLDLIBRARY='$(LIBRARY)'
789 LDLIBRARY='libpython$(VERSION).dll.a'
790 ;;
791 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000792fi
793
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000794AC_MSG_RESULT($LDLIBRARY)
795
Guido van Rossum627b2d71993-12-24 10:39:16 +0000796AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000797AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000798AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000799
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000800# tweak ARFLAGS only if the user didn't set it on the command line
801AC_SUBST(ARFLAGS)
802if test -z "$ARFLAGS"
803then
804 ARFLAGS="rc"
805fi
806
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000807AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000808AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000809if test $SVNVERSION = found
810then
811 SVNVERSION="svnversion \$(srcdir)"
812else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000813 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000814fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000815
Neil Schemenauera42c8272001-03-31 00:01:55 +0000816case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000817bsdos*|hp*|HP*)
818 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000819 if test -z "$INSTALL"
820 then
821 INSTALL="${srcdir}/install-sh -c"
822 fi
823esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000824AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000825
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000826# Not every filesystem supports hard links
827AC_SUBST(LN)
828if test -z "$LN" ; then
829 case $ac_sys_system in
830 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000831 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000832 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000833 *) LN=ln;;
834 esac
835fi
836
Fred Drake9f715822001-07-11 06:27:00 +0000837# Check for --with-pydebug
838AC_MSG_CHECKING(for --with-pydebug)
839AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000840 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
841[
Fred Drake9f715822001-07-11 06:27:00 +0000842if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000843then
844 AC_DEFINE(Py_DEBUG, 1,
845 [Define if you want to build an interpreter with many run-time checks.])
846 AC_MSG_RESULT(yes);
847 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000848else AC_MSG_RESULT(no); Py_DEBUG='false'
849fi],
850[AC_MSG_RESULT(no)])
851
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
853# merged with this chunk of code?
854
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000855# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856# ------------------------
857# (The following bit of code is complicated enough - please keep things
858# indented properly. Just pretend you're editing Python code. ;-)
859
860# There are two parallel sets of case statements below, one that checks to
861# see if OPT was set and one that does BASECFLAGS setting based upon
862# compiler and platform. BASECFLAGS tweaks need to be made even if the
863# user set OPT.
864
865# tweak OPT based on compiler and platform, only if the user didn't set
866# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000867AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000868if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000869then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870 case $GCC in
871 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000872 if test "$CC" != 'g++' ; then
873 STRICT_PROTO="-Wstrict-prototypes"
874 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000875 # For gcc 4.x we need to use -fwrapv so lets check if its supported
876 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
877 WRAP="-fwrapv"
878 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000879 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000880 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000881 if test "$Py_DEBUG" = 'true' ; then
882 # Optimization messes up debuggers, so turn it off for
883 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000884 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000885 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000886 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000887 fi
888 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000889 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000890 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000891 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000892 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000893 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000894 SCO_SV*) OPT="$OPT -m486 -DSCO5"
895 ;;
896 esac
Fred Drake9f715822001-07-11 06:27:00 +0000897 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000898
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000899 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000900 OPT="-O"
901 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000902 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903
904 # The current (beta) Monterey compiler dies with optimizations
905 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000906 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000907 Monterey*)
908 OPT=""
909 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000910 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000911
Guido van Rossum4e8af441994-08-19 15:33:54 +0000912fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000913
Skip Montanarodecc6a42003-01-01 20:07:49 +0000914AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000915
916# The -arch flags for universal builds on OSX
917UNIVERSAL_ARCH_FLAGS=
918AC_SUBST(UNIVERSAL_ARCH_FLAGS)
919
Skip Montanarodecc6a42003-01-01 20:07:49 +0000920# tweak BASECFLAGS based on compiler and platform
921case $GCC in
922yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000923 # Python violates C99 rules, by casting between incompatible
924 # pointer types. GCC may generate bad code as a result of that,
925 # so use -fno-strict-aliasing if supported.
926 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
927 ac_save_cc="$CC"
928 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000929 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000930 AC_TRY_RUN([int main() { return 0; }],
931 ac_cv_no_strict_aliasing_ok=yes,
932 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000933 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000934 CC="$ac_save_cc"
935 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
936 if test $ac_cv_no_strict_aliasing_ok = yes
937 then
938 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
939 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000940
941 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
942 # support. Without this, treatment of subnormals doesn't follow
943 # the standard.
944 case $ac_sys_machine in
945 alpha*)
946 BASECFLAGS="$BASECFLAGS -mieee"
947 ;;
948 esac
949
Skip Montanarodecc6a42003-01-01 20:07:49 +0000950 case $ac_sys_system in
951 SCO_SV*)
952 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
953 ;;
954 # is there any other compiler on Darwin besides gcc?
955 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000956 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
957 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000958
959
Ronald Oussoren988117f2006-04-29 11:31:35 +0000960 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000961 UNIVERSAL_ARCH_FLAGS=""
962 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
963 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000964 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000965
966 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
967 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
968
969 elif test "$UNIVERSAL_ARCHS" = "all" ; then
970 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000971 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000972
973 else
974 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
975
976 fi
977
978
979 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000980 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000981 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
982 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
983 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000984 fi
985
Benjamin Peterson4347c442008-07-17 15:59:24 +0000986 # Calculate the right deployment target for this build.
987 #
988 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
989 if test ${cur_target} '>' 10.2; then
990 cur_target=10.3
991 fi
992 if test "${UNIVERSAL_ARCHS}" = "all"; then
993 # Ensure that the default platform for a 4-way
994 # universal build is OSX 10.5, that's the first
995 # OS release where 4-way builds make sense.
996 cur_target='10.5'
997 fi
998 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
999
1000 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1001 # environment with a value that is the same as what we'll use
1002 # in the Makefile to ensure that we'll get the same compiler
1003 # environment during configure and build time.
1004 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1005 export MACOSX_DEPLOYMENT_TARGET
1006 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1007
Skip Montanarodecc6a42003-01-01 20:07:49 +00001008 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001009 OSF*)
1010 BASECFLAGS="$BASECFLAGS -mieee"
1011 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001012 esac
1013 ;;
1014
1015*)
1016 case $ac_sys_system in
1017 OpenUNIX*|UnixWare*)
1018 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1019 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001020 OSF*)
1021 BASECFLAGS="$BASECFLAGS -ieee -std"
1022 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001023 SCO_SV*)
1024 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1025 ;;
1026 esac
1027 ;;
1028esac
1029
Fred Drakee1ceaa02001-12-04 20:55:47 +00001030if test "$Py_DEBUG" = 'true'; then
1031 :
1032else
1033 OPT="-DNDEBUG $OPT"
1034fi
1035
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001036if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001037then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001038 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001039fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001040
Neal Norwitz020c46a2006-01-07 21:39:28 +00001041# disable check for icc since it seems to pass, but generates a warning
1042if test "$CC" = icc
1043then
1044 ac_cv_opt_olimit_ok=no
1045fi
1046
Guido van Rossum91922671997-10-09 20:24:13 +00001047AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1048AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1049[ac_save_cc="$CC"
1050CC="$CC -OPT:Olimit=0"
1051AC_TRY_RUN([int main() { return 0; }],
1052 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001053 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001054 ac_cv_opt_olimit_ok=no)
1055CC="$ac_save_cc"])
1056AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001057if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001058 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001059 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1060 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1061 # environment?
1062 Darwin*)
1063 ;;
1064 *)
1065 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1066 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001067 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001068else
1069 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1070 AC_CACHE_VAL(ac_cv_olimit_ok,
1071 [ac_save_cc="$CC"
1072 CC="$CC -Olimit 1500"
1073 AC_TRY_RUN([int main() { return 0; }],
1074 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001075 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001076 ac_cv_olimit_ok=no)
1077 CC="$ac_save_cc"])
1078 AC_MSG_RESULT($ac_cv_olimit_ok)
1079 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001080 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001081 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001082fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001083
Martin v. Löwisaac13162006-10-19 10:58:46 +00001084# Check whether GCC supports PyArg_ParseTuple format
1085if test "$GCC" = "yes"
1086then
1087 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1088 save_CFLAGS=$CFLAGS
1089 CFLAGS="$CFLAGS -Werror"
1090 AC_TRY_COMPILE([
1091 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1092 ],,
1093 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1094 AC_MSG_RESULT(yes),
1095 AC_MSG_RESULT(no)
1096 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001097 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001098fi
1099
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001100# On some compilers, pthreads are available without further options
1101# (e.g. MacOS X). On some of these systems, the compiler will not
1102# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1103# So we have to see first whether pthreads are available without
1104# options before we can check whether -Kpthread improves anything.
1105AC_MSG_CHECKING(whether pthreads are available without options)
1106AC_CACHE_VAL(ac_cv_pthread_is_default,
1107[AC_TRY_RUN([
1108#include <pthread.h>
1109
1110void* routine(void* p){return NULL;}
1111
1112int main(){
1113 pthread_t p;
1114 if(pthread_create(&p,NULL,routine,NULL)!=0)
1115 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001116 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001117 return 0;
1118}
1119],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001120[
1121 ac_cv_pthread_is_default=yes
1122 ac_cv_kthread=no
1123 ac_cv_pthread=no
1124],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001125 ac_cv_pthread_is_default=no,
1126 ac_cv_pthread_is_default=no)
1127])
1128AC_MSG_RESULT($ac_cv_pthread_is_default)
1129
1130
1131if test $ac_cv_pthread_is_default = yes
1132then
1133 ac_cv_kpthread=no
1134else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001135# -Kpthread, if available, provides the right #defines
1136# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001137# Some compilers won't report that they do not support -Kpthread,
1138# so we need to run a program to see whether it really made the
1139# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001140AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1141AC_CACHE_VAL(ac_cv_kpthread,
1142[ac_save_cc="$CC"
1143CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001144AC_TRY_RUN([
1145#include <pthread.h>
1146
1147void* routine(void* p){return NULL;}
1148
1149int main(){
1150 pthread_t p;
1151 if(pthread_create(&p,NULL,routine,NULL)!=0)
1152 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001153 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001154 return 0;
1155}
1156],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001157 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001158 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001159 ac_cv_kpthread=no)
1160CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001161AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001162fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001163
Skip Montanarod8d39a02003-07-10 20:44:10 +00001164if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001165then
1166# -Kthread, if available, provides the right #defines
1167# and linker options to make pthread_create available
1168# Some compilers won't report that they do not support -Kthread,
1169# so we need to run a program to see whether it really made the
1170# function available.
1171AC_MSG_CHECKING(whether $CC accepts -Kthread)
1172AC_CACHE_VAL(ac_cv_kthread,
1173[ac_save_cc="$CC"
1174CC="$CC -Kthread"
1175AC_TRY_RUN([
1176#include <pthread.h>
1177
1178void* routine(void* p){return NULL;}
1179
1180int main(){
1181 pthread_t p;
1182 if(pthread_create(&p,NULL,routine,NULL)!=0)
1183 return 1;
1184 (void)pthread_detach(p);
1185 return 0;
1186}
1187],
1188 ac_cv_kthread=yes,
1189 ac_cv_kthread=no,
1190 ac_cv_kthread=no)
1191CC="$ac_save_cc"])
1192AC_MSG_RESULT($ac_cv_kthread)
1193fi
1194
Skip Montanarod8d39a02003-07-10 20:44:10 +00001195if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001196then
1197# -pthread, if available, provides the right #defines
1198# and linker options to make pthread_create available
1199# Some compilers won't report that they do not support -pthread,
1200# so we need to run a program to see whether it really made the
1201# function available.
1202AC_MSG_CHECKING(whether $CC accepts -pthread)
1203AC_CACHE_VAL(ac_cv_thread,
1204[ac_save_cc="$CC"
1205CC="$CC -pthread"
1206AC_TRY_RUN([
1207#include <pthread.h>
1208
1209void* routine(void* p){return NULL;}
1210
1211int main(){
1212 pthread_t p;
1213 if(pthread_create(&p,NULL,routine,NULL)!=0)
1214 return 1;
1215 (void)pthread_detach(p);
1216 return 0;
1217}
1218],
1219 ac_cv_pthread=yes,
1220 ac_cv_pthread=no,
1221 ac_cv_pthread=no)
1222CC="$ac_save_cc"])
1223AC_MSG_RESULT($ac_cv_pthread)
1224fi
1225
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001226# If we have set a CC compiler flag for thread support then
1227# check if it works for CXX, too.
1228ac_cv_cxx_thread=no
1229if test ! -z "$CXX"
1230then
1231AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1232ac_save_cxx="$CXX"
1233
1234if test "$ac_cv_kpthread" = "yes"
1235then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001236 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001237 ac_cv_cxx_thread=yes
1238elif test "$ac_cv_kthread" = "yes"
1239then
1240 CXX="$CXX -Kthread"
1241 ac_cv_cxx_thread=yes
1242elif test "$ac_cv_pthread" = "yes"
1243then
1244 CXX="$CXX -pthread"
1245 ac_cv_cxx_thread=yes
1246fi
1247
1248if test $ac_cv_cxx_thread = yes
1249then
1250 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1251 $CXX -c conftest.$ac_ext 2>&5
1252 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1253 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1254 then
1255 ac_cv_cxx_thread=yes
1256 else
1257 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001258 fi
1259 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001260fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001261AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001262fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001263CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001264
Fred Drakece81d592000-07-09 14:39:29 +00001265dnl # check for ANSI or K&R ("traditional") preprocessor
1266dnl AC_MSG_CHECKING(for C preprocessor type)
1267dnl AC_TRY_COMPILE([
1268dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1269dnl int foo;
1270dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1271dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1272dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001273
Guido van Rossum627b2d71993-12-24 10:39:16 +00001274# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001275AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001276AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1277fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001278ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001279shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001280unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001281sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1282sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001283sys/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 +00001284sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001285sys/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 +00001286sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001287bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001288AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001289AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001290
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001291# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001292AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001293#ifdef HAVE_CURSES_H
1294#include <curses.h>
1295#endif
1296])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001297
Martin v. Löwis11017b12006-01-14 18:12:57 +00001298# On Linux, netlink.h requires asm/types.h
1299AC_CHECK_HEADERS(linux/netlink.h,,,[
1300#ifdef HAVE_ASM_TYPES_H
1301#include <asm/types.h>
1302#endif
1303#ifdef HAVE_SYS_SOCKET_H
1304#include <sys/socket.h>
1305#endif
1306])
1307
Guido van Rossum627b2d71993-12-24 10:39:16 +00001308# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001309was_it_defined=no
1310AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001311AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1312 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1313])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001314AC_MSG_RESULT($was_it_defined)
1315
Neal Norwitz11690112002-07-30 01:08:28 +00001316# Check whether using makedev requires defining _OSF_SOURCE
1317AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001318AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001319 [ makedev(0, 0) ],
1320 ac_cv_has_makedev=yes,
1321 ac_cv_has_makedev=no)
1322if test "$ac_cv_has_makedev" = "no"; then
1323 # we didn't link, try if _OSF_SOURCE will allow us to link
1324 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001325#define _OSF_SOURCE 1
1326#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001327 ],
1328 [ makedev(0, 0) ],
1329 ac_cv_has_makedev=yes,
1330 ac_cv_has_makedev=no)
1331 if test "$ac_cv_has_makedev" = "yes"; then
1332 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1333 fi
1334fi
1335AC_MSG_RESULT($ac_cv_has_makedev)
1336if test "$ac_cv_has_makedev" = "yes"; then
1337 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1338fi
1339
Martin v. Löwis399a6892002-10-04 10:22:02 +00001340# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1341# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1342# defined, but the compiler does not support pragma redefine_extname,
1343# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1344# structures (such as rlimit64) without declaring them. As a
1345# work-around, disable LFS on such configurations
1346
1347use_lfs=yes
1348AC_MSG_CHECKING(Solaris LFS bug)
1349AC_TRY_COMPILE([
1350#define _LARGEFILE_SOURCE 1
1351#define _FILE_OFFSET_BITS 64
1352#include <sys/resource.h>
1353],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1354AC_MSG_RESULT($sol_lfs_bug)
1355if test "$sol_lfs_bug" = "yes"; then
1356 use_lfs=no
1357fi
1358
1359if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001360# Two defines needed to enable largefile support on various platforms
1361# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001362AC_DEFINE(_LARGEFILE_SOURCE, 1,
1363[This must be defined on some systems to enable large file support.])
1364AC_DEFINE(_FILE_OFFSET_BITS, 64,
1365[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001366fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001367
Guido van Rossum300fda71996-08-19 21:58:16 +00001368# Add some code to confdefs.h so that the test for off_t works on SCO
1369cat >> confdefs.h <<\EOF
1370#if defined(SCO_DS)
1371#undef _OFF_T
1372#endif
1373EOF
1374
Guido van Rossumef2255b2000-03-10 22:30:29 +00001375# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001376AC_TYPE_MODE_T
1377AC_TYPE_OFF_T
1378AC_TYPE_PID_T
1379AC_TYPE_SIGNAL
1380AC_TYPE_SIZE_T
1381AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001382AC_TYPE_UINT32_T
1383AC_TYPE_UINT64_T
1384AC_TYPE_INT32_T
1385AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001386AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001387 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001388
Guido van Rossumef2255b2000-03-10 22:30:29 +00001389# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001390# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001391AC_CHECK_SIZEOF(int, 4)
1392AC_CHECK_SIZEOF(long, 4)
1393AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001394AC_CHECK_SIZEOF(short, 2)
1395AC_CHECK_SIZEOF(float, 4)
1396AC_CHECK_SIZEOF(double, 8)
1397AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001398AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001399AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001400
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001401AC_MSG_CHECKING(for long long support)
1402have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001403AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1404 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1405 have_long_long=yes
1406])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001407AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001408if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001409AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001410fi
1411
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001412AC_MSG_CHECKING(for long double support)
1413have_long_double=no
1414AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1415 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1416 have_long_double=yes
1417])
1418AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001419if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001420AC_CHECK_SIZEOF(long double, 12)
1421fi
1422
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001423AC_MSG_CHECKING(for _Bool support)
1424have_c99_bool=no
1425AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1426 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1427 have_c99_bool=yes
1428])
1429AC_MSG_RESULT($have_c99_bool)
1430if test "$have_c99_bool" = yes ; then
1431AC_CHECK_SIZEOF(_Bool, 1)
1432fi
1433
Martin v. Löwisebe26702006-10-02 14:55:51 +00001434AC_CHECK_TYPES(uintptr_t,
1435 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001436 [], [#ifdef HAVE_STDINT_H
1437 #include <stdint.h>
1438 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001439
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001440AC_CHECK_SIZEOF(off_t, [], [
1441#ifdef HAVE_SYS_TYPES_H
1442#include <sys/types.h>
1443#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001444])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001445
1446AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001447if test "$have_long_long" = yes -a \
1448 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1449 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001450 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1451 [Defined to enable large file support when an off_t is bigger than a long
1452 and long long is available and at least as big as an off_t. You may need
1453 to add some flags for configuration and compilation to enable this mode.
1454 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001455 AC_MSG_RESULT(yes)
1456else
1457 AC_MSG_RESULT(no)
1458fi
1459
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001460AC_CHECK_SIZEOF(time_t, [], [
1461#ifdef HAVE_SYS_TYPES_H
1462#include <sys/types.h>
1463#endif
1464#ifdef HAVE_TIME_H
1465#include <time.h>
1466#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001467])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001468
Trent Mick635f6fb2000-08-23 21:33:05 +00001469# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001470ac_save_cc="$CC"
1471if test "$ac_cv_kpthread" = "yes"
1472then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001473elif test "$ac_cv_kthread" = "yes"
1474then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001475elif test "$ac_cv_pthread" = "yes"
1476then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001477fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001478AC_MSG_CHECKING(for pthread_t)
1479have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001480AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001481AC_MSG_RESULT($have_pthread_t)
1482if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001483 AC_CHECK_SIZEOF(pthread_t, [], [
1484#ifdef HAVE_PTHREAD_H
1485#include <pthread.h>
1486#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001487 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001488fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001489CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001490
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001491AC_MSG_CHECKING(for --enable-toolbox-glue)
1492AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001493 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001494
1495if test -z "$enable_toolbox_glue"
1496then
1497 case $ac_sys_system/$ac_sys_release in
1498 Darwin/*)
1499 enable_toolbox_glue="yes";;
1500 *)
1501 enable_toolbox_glue="no";;
1502 esac
1503fi
1504case "$enable_toolbox_glue" in
1505yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001506 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001507 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001508 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1509 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001510 ;;
1511*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001512 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001513 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001514 ;;
1515esac
1516AC_MSG_RESULT($enable_toolbox_glue)
1517
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001518
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001519AC_SUBST(OTHER_LIBTOOL_OPT)
1520case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001521 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001522 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1523 ;;
1524 Darwin/*)
1525 OTHER_LIBTOOL_OPT=""
1526 ;;
1527esac
1528
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001529AC_SUBST(LIBTOOL_CRUFT)
1530case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001531 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001532 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1533 if test "${enable_universalsdk}"; then
1534 :
1535 else
1536 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1537 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001538 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001539 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001540 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001541 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1542 if test ${gcc_version} '<' 4.0
1543 then
1544 LIBTOOL_CRUFT="-lcc_dynamic"
1545 else
1546 LIBTOOL_CRUFT=""
1547 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001548 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001549 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001550 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001551esac
1552
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553AC_MSG_CHECKING(for --enable-framework)
1554if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001555then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001556 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001557 # -F. is needed to allow linking to the framework while
1558 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001559 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1560 [Define if you want to produce an OpenStep/Rhapsody framework
1561 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001562 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001563 if test $enable_shared = "yes"
1564 then
1565 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1566 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001567else
1568 AC_MSG_RESULT(no)
1569fi
1570
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001571AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001572case $ac_sys_system/$ac_sys_release in
1573 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001574 AC_DEFINE(WITH_DYLD, 1,
1575 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1576 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1577 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001578 AC_MSG_RESULT(always on for Darwin)
1579 ;;
1580 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001581 AC_MSG_RESULT(no)
1582 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001583esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584
Guido van Rossumac405f61994-09-12 10:56:06 +00001585# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001586AC_SUBST(SO)
1587AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001588AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001589AC_SUBST(CCSHARED)
1590AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001591# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001592# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001593AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001594if test -z "$SO"
1595then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001596 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001597 hp*|HP*)
1598 case `uname -m` in
1599 ia64) SO=.so;;
1600 *) SO=.sl;;
1601 esac
1602 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001603 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001604 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001605 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001606else
1607 # this might also be a termcap variable, see #610332
1608 echo
1609 echo '====================================================================='
1610 echo '+ +'
1611 echo '+ WARNING: You have set SO in your environment. +'
1612 echo '+ Do you really mean to change the extension for shared libraries? +'
1613 echo '+ Continuing in 10 seconds to let you to ponder. +'
1614 echo '+ +'
1615 echo '====================================================================='
1616 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001617fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001618AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001619
Neal Norwitz58e28882006-05-19 07:00:58 +00001620AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001621# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001622# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001623# (Shared libraries in this instance are shared modules to be loaded into
1624# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001625AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001626if test -z "$LDSHARED"
1627then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001628 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001629 AIX*)
1630 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001631 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001632 ;;
1633 BeOS*)
1634 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001635 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001636 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001637 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001638 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001639 SunOS/5*)
1640 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001641 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001642 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001643 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001644 hp*|HP*)
1645 if test "$GCC" = "yes"
1646 then LDSHARED='$(CC) -shared'
1647 else LDSHARED='ld -b';
1648 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001649 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001650 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001651 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1652 if test "$enable_framework" ; then
1653 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001654 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1655 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001656 else
1657 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001658 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001659 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001660 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001661 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1662 if test "$enable_framework" ; then
1663 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001664 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1665 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001666 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001667 # No framework, use the Python app as bundle-loader
1668 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001669 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001670 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001671 Darwin/*)
1672 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1673 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001674
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001675 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001676 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001677 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001678 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001679 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001680 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1681 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001682 else
1683 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1684 if test "$enable_framework" ; then
1685 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001686 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1687 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001688 else
1689 # No framework, use the Python app as bundle-loader
1690 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1691 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1692 fi
1693 fi
1694 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001695 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001696 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001697 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001698 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001699 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001700 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001701 else
1702 LDSHARED="ld -Bshareable ${LDFLAGS}"
1703 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001704 OpenBSD*)
1705 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1706 then
1707 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1708 else
1709 case `uname -r` in
1710 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1711 LDSHARED="ld -Bshareable ${LDFLAGS}"
1712 ;;
1713 *)
1714 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1715 ;;
1716 esac
1717 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001718 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001719 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001720 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001721 then LDSHARED='$(CC) -shared'
1722 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001723 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001724 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001725 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001726 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001727 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001728 *) LDSHARED="ld";;
1729 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001730fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001731AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001732BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001733# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001734# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001735AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001736if test -z "$CCSHARED"
1737then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001738 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001739 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001740 then CCSHARED="-fPIC";
1741 elif test `uname -p` = sparc;
1742 then CCSHARED="-xcode=pic32";
1743 else CCSHARED="-Kpic";
1744 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001745 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001746 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001747 else CCSHARED="+z";
1748 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001749 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001750 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001751 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001752 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001753 if test "$GCC" = "yes"
1754 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001755 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001756 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001757 SCO_SV*)
1758 if test "$GCC" = "yes"
1759 then CCSHARED="-fPIC"
1760 else CCSHARED="-Kpic -belf"
1761 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001762 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001763 IRIX*/6*) case $CC in
1764 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001765 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001766 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001767 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001768 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001769fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001770AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001771# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001772# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001773AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001774if test -z "$LINKFORSHARED"
1775then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001776 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001777 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001778 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001779 LINKFORSHARED="-Wl,-E -Wl,+s";;
1780# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001781 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001782 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001783 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001784 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001785 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1786 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001787 # not used by the core itself but which needs to be in the core so
1788 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001789 # -prebind is no longer used, because it actually seems to give a
1790 # slowdown in stead of a speedup, maybe due to the large number of
1791 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001792
1793 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001794 if test "$enable_framework"
1795 then
Jack Jansenda49e192005-01-07 13:08:22 +00001796 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001797 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001798 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001799 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001800 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001801 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001802 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001803 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1804 then
1805 LINKFORSHARED="-Wl,--export-dynamic"
1806 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001807 SunOS/5*) case $CC in
1808 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001809 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001810 then
1811 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001812 fi;;
1813 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001814 CYGWIN*)
1815 if test $enable_shared = "no"
1816 then
1817 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1818 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001819 QNX*)
1820 # -Wl,-E causes the symbols to be added to the dynamic
1821 # symbol table so that they can be found when a module
1822 # is loaded. -N 2048K causes the stack size to be set
1823 # to 2048 kilobytes so that the stack doesn't overflow
1824 # when running test_compile.py.
1825 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001826 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001827fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001828AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001829
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001830
Neil Schemenauer61c51152001-01-26 16:18:16 +00001831AC_SUBST(CFLAGSFORSHARED)
1832AC_MSG_CHECKING(CFLAGSFORSHARED)
1833if test ! "$LIBRARY" = "$LDLIBRARY"
1834then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001835 case $ac_sys_system in
1836 CYGWIN*)
1837 # Cygwin needs CCSHARED when building extension DLLs
1838 # but not when building the interpreter DLL.
1839 CFLAGSFORSHARED='';;
1840 *)
1841 CFLAGSFORSHARED='$(CCSHARED)'
1842 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001843fi
1844AC_MSG_RESULT($CFLAGSFORSHARED)
1845
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001846# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1847# library (with --enable-shared).
1848# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001849# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1850# if it is not required, since it creates a dependency of the shared library
1851# to LIBS. This, in turn, means that applications linking the shared libpython
1852# don't need to link LIBS explicitly. The default should be only changed
1853# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001854AC_SUBST(SHLIBS)
1855AC_MSG_CHECKING(SHLIBS)
1856case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001857 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001858 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001859esac
1860AC_MSG_RESULT($SHLIBS)
1861
1862
Guido van Rossum627b2d71993-12-24 10:39:16 +00001863# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001864AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1865AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001866
Skip Montanaro4d756af2008-12-01 01:55:22 +00001867# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001868if test "$with_threads" = "yes" -o -z "$with_threads"; then
1869 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1870 # posix4 on Solaris 2.6
1871 # pthread (first!) on Linux
1872fi
1873
Martin v. Löwis19d17342003-06-14 21:03:05 +00001874# check if we need libintl for locale functions
1875AC_CHECK_LIB(intl, textdomain,
1876 AC_DEFINE(WITH_LIBINTL, 1,
1877 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001878
1879# checks for system dependent C++ extensions support
1880case "$ac_sys_system" in
1881 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1882 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1883 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001884 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1885 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1886 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001887 AC_MSG_RESULT(yes)],
1888 [AC_MSG_RESULT(no)]);;
1889 *) ;;
1890esac
1891
Guido van Rossum70c7f481998-03-26 18:44:10 +00001892# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001893# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001894AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001895AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001896
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001897case "$ac_sys_system" in
1898BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001899AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1900;;
1901esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001902
Guido van Rossumc5a39031996-07-31 17:35:03 +00001903AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001904AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001905 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1906[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001907AC_MSG_RESULT($withval)
1908LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001909],
1910[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001911
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001912# Check for use of the system libffi library
1913AC_MSG_CHECKING(for --with-system-ffi)
1914AC_ARG_WITH(system_ffi,
1915 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1916
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001917AC_MSG_RESULT($with_system_ffi)
1918
Matthias Klose10cbe482009-04-29 17:18:19 +00001919# Check for --with-dbmliborder
1920AC_MSG_CHECKING(for --with-dbmliborder)
1921AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00001922 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 +00001923[
1924if test x$with_dbmliborder = xyes
1925then
1926AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1927else
1928 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1929 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1930 then
1931 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1932 fi
1933 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00001934fi])
1935AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00001936
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001937# Determine if signalmodule should be used.
1938AC_SUBST(USE_SIGNAL_MODULE)
1939AC_SUBST(SIGNAL_OBJS)
1940AC_MSG_CHECKING(for --with-signal-module)
1941AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001942 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001943
1944if test -z "$with_signal_module"
1945then with_signal_module="yes"
1946fi
1947AC_MSG_RESULT($with_signal_module)
1948
1949if test "${with_signal_module}" = "yes"; then
1950 USE_SIGNAL_MODULE=""
1951 SIGNAL_OBJS=""
1952else
1953 USE_SIGNAL_MODULE="#"
1954 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1955fi
1956
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001957# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001958AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001959USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001960
Guido van Rossum54d93d41997-01-22 20:51:58 +00001961AC_MSG_CHECKING(for --with-dec-threads)
1962AC_SUBST(LDLAST)
1963AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1965[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001966AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001967LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001968if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001969 with_thread="$withval";
1970fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001971[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001972
Martin v. Löwis11437992002-04-12 09:54:03 +00001973# Templates for things AC_DEFINEd more than once.
1974# For a single AC_DEFINE, no template is needed.
1975AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1976AH_TEMPLATE(_REENTRANT,
1977 [Define to force use of thread-safe errno, h_errno, and other functions])
1978AH_TEMPLATE(WITH_THREAD,
1979 [Define if you want to compile in rudimentary thread support])
1980
Guido van Rossum54d93d41997-01-22 20:51:58 +00001981AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001982dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001983AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001984 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001985
Barry Warsawc0d24d82000-06-29 16:12:00 +00001986# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001987dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001988AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001989 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1990 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001991
1992if test -z "$with_threads"
1993then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001994fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001995AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001996
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001997AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001998if test "$with_threads" = "no"
1999then
2000 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002001elif test "$ac_cv_pthread_is_default" = yes
2002then
2003 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002004 # Defining _REENTRANT on system with POSIX threads should not hurt.
2005 AC_DEFINE(_REENTRANT)
2006 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002007 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002008elif test "$ac_cv_kpthread" = "yes"
2009then
2010 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002011 if test "$ac_cv_cxx_thread" = "yes"; then
2012 CXX="$CXX -Kpthread"
2013 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002014 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002015 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002016 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002017elif test "$ac_cv_kthread" = "yes"
2018then
2019 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002020 if test "$ac_cv_cxx_thread" = "yes"; then
2021 CXX="$CXX -Kthread"
2022 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002023 AC_DEFINE(WITH_THREAD)
2024 posix_threads=yes
2025 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002026elif test "$ac_cv_pthread" = "yes"
2027then
2028 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002029 if test "$ac_cv_cxx_thread" = "yes"; then
2030 CXX="$CXX -pthread"
2031 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002032 AC_DEFINE(WITH_THREAD)
2033 posix_threads=yes
2034 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002035else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002036 if test ! -z "$with_threads" -a -d "$with_threads"
2037 then LDFLAGS="$LDFLAGS -L$with_threads"
2038 fi
2039 if test ! -z "$withval" -a -d "$withval"
2040 then LDFLAGS="$LDFLAGS -L$withval"
2041 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002042
2043 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002044 # define _POSIX_THREADS in unistd.h. Some apparently don't
2045 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002046 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2047 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002048 [
2049#include <unistd.h>
2050#ifdef _POSIX_THREADS
2051yes
2052#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002053 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2054 AC_MSG_RESULT($unistd_defines_pthreads)
2055
Martin v. Löwis130fb172001-07-19 11:00:41 +00002056 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002057 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2058 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002059 AC_DEFINE(HURD_C_THREADS, 1,
2060 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002061 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002062 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002063 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2064 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002065 AC_DEFINE(MACH_C_THREADS, 1,
2066 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002067 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002068 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002069 AC_ARG_WITH([pth],
2070 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2071 [AC_MSG_RESULT($withval)
2072 AC_DEFINE([WITH_THREAD])
2073 AC_DEFINE([HAVE_PTH], 1,
2074 [Define if you have GNU PTH threads.])
2075 LIBS="-lpth $LIBS"
2076 THREADOBJ="Python/thread.o"],
2077 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002078
2079 # Just looking for pthread_create in libpthread is not enough:
2080 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2081 # So we really have to include pthread.h, and then link.
2082 _libs=$LIBS
2083 LIBS="$LIBS -lpthread"
2084 AC_MSG_CHECKING([for pthread_create in -lpthread])
2085 AC_TRY_LINK([#include <pthread.h>
2086
2087void * start_routine (void *arg) { exit (0); }], [
2088pthread_create (NULL, NULL, start_routine, NULL)], [
2089 AC_MSG_RESULT(yes)
2090 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002091 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002092 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002093 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002094 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002095 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002096 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002097 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2098 AC_DEFINE(ATHEOS_THREADS, 1,
2099 [Define this if you have AtheOS threads.])
2100 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002101 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002102 AC_DEFINE(BEOS_THREADS, 1,
2103 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002104 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002105 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002106 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002107 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002108 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002109 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002110 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002111 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002112 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002113 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002114 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002115 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002116 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002117 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002118 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002119 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002120 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002121 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002122 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002123
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002124 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2125 LIBS="$LIBS -lmpc"
2126 THREADOBJ="Python/thread.o"
2127 USE_THREAD_MODULE=""])
2128
2129 if test "$posix_threads" != "yes"; then
2130 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2131 LIBS="$LIBS -lthread"
2132 THREADOBJ="Python/thread.o"
2133 USE_THREAD_MODULE=""])
2134 fi
2135
2136 if test "$USE_THREAD_MODULE" != "#"
2137 then
2138 # If the above checks didn't disable threads, (at least) OSF1
2139 # needs this '-threads' argument during linking.
2140 case $ac_sys_system in
2141 OSF1) LDLAST=-threads;;
2142 esac
2143 fi
2144fi
2145
2146if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002147 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002148 AC_DEFINE(_POSIX_THREADS, 1,
2149 [Define if you have POSIX threads,
2150 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002151 fi
2152
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002153 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2154 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002155 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2156 Defined for Solaris 2.6 bug in pthread header.)
2157 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002158 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002159 Define if the Posix semaphores do not work on your system)
2160 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002161 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2162 Define if the Posix semaphores do not work on your system)
2163 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002164 esac
2165
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002166 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2167 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2168 [AC_TRY_RUN([#include <pthread.h>
2169 void *foo(void *parm) {
2170 return NULL;
2171 }
2172 main() {
2173 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002174 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002175 if (pthread_attr_init(&attr)) exit(-1);
2176 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002177 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002178 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002179 }],
2180 ac_cv_pthread_system_supported=yes,
2181 ac_cv_pthread_system_supported=no,
2182 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002183 ])
2184 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2185 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002186 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002187 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002188 AC_CHECK_FUNCS(pthread_sigmask,
2189 [case $ac_sys_system in
2190 CYGWIN*)
2191 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2192 [Define if pthread_sigmask() does not work on your system.])
2193 ;;
2194 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002195fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002196
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002197
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002198# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002199AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002200AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002201AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002202[ --enable-ipv6 Enable ipv6 (with ipv4) support
2203 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002204[ case "$enableval" in
2205 no)
2206 AC_MSG_RESULT(no)
2207 ipv6=no
2208 ;;
2209 *) AC_MSG_RESULT(yes)
2210 AC_DEFINE(ENABLE_IPV6)
2211 ipv6=yes
2212 ;;
2213 esac ],
2214
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002215[
2216dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002217 AC_TRY_RUN([ /* AF_INET6 available check */
2218#include <sys/types.h>
2219#include <sys/socket.h>
2220main()
2221{
2222 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2223 exit(1);
2224 else
2225 exit(0);
2226}
2227],
2228 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002229 ipv6=yes,
2230 AC_MSG_RESULT(no)
2231 ipv6=no,
2232 AC_MSG_RESULT(no)
2233 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002234)
2235
2236if test "$ipv6" = "yes"; then
2237 AC_MSG_CHECKING(if RFC2553 API is available)
2238 AC_TRY_COMPILE([#include <sys/types.h>
2239#include <netinet/in.h>],
2240 [struct sockaddr_in6 x;
2241x.sin6_scope_id;],
2242 AC_MSG_RESULT(yes)
2243 ipv6=yes,
2244 AC_MSG_RESULT(no, IPv6 disabled)
2245 ipv6=no)
2246fi
2247
2248if test "$ipv6" = "yes"; then
2249 AC_DEFINE(ENABLE_IPV6)
2250fi
2251])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252
2253ipv6type=unknown
2254ipv6lib=none
2255ipv6trylibc=no
2256
2257if test "$ipv6" = "yes"; then
2258 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002259 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2260 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002261 case $i in
2262 inria)
2263 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002264 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002265#include <netinet/in.h>
2266#ifdef IPV6_INRIA_VERSION
2267yes
2268#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002269 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002270 ;;
2271 kame)
2272 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002273 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002274#include <netinet/in.h>
2275#ifdef __KAME__
2276yes
2277#endif],
2278 [ipv6type=$i;
2279 ipv6lib=inet6
2280 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002281 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282 ;;
2283 linux-glibc)
2284 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002285 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002286#include <features.h>
2287#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2288yes
2289#endif],
2290 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002291 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002292 ;;
2293 linux-inet6)
2294 dnl http://www.v6.linux.or.jp/
2295 if test -d /usr/inet6; then
2296 ipv6type=$i
2297 ipv6lib=inet6
2298 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002299 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002300 fi
2301 ;;
2302 solaris)
2303 if test -f /etc/netconfig; then
2304 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2305 ipv6type=$i
2306 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002307 fi
2308 fi
2309 ;;
2310 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002311 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002312#include <sys/param.h>
2313#ifdef _TOSHIBA_INET6
2314yes
2315#endif],
2316 [ipv6type=$i;
2317 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002318 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002319 ;;
2320 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002321 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002322#include </usr/local/v6/include/sys/v6config.h>
2323#ifdef __V6D__
2324yes
2325#endif],
2326 [ipv6type=$i;
2327 ipv6lib=v6;
2328 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002329 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002330 ;;
2331 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002332 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333#include <sys/param.h>
2334#ifdef _ZETA_MINAMI_INET6
2335yes
2336#endif],
2337 [ipv6type=$i;
2338 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002339 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002340 ;;
2341 esac
2342 if test "$ipv6type" != "unknown"; then
2343 break
2344 fi
2345 done
2346 AC_MSG_RESULT($ipv6type)
2347fi
2348
2349if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2350 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2351 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2352 echo "using lib$ipv6lib"
2353 else
2354 if test $ipv6trylibc = "yes"; then
2355 echo "using libc"
2356 else
2357 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2358 echo "You need to fetch lib$ipv6lib.a from appropriate"
2359 echo 'ipv6 kit and compile beforehand.'
2360 exit 1
2361 fi
2362 fi
2363fi
2364
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002365AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2366AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2367 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2368 AC_MSG_RESULT(yes),
2369 AC_MSG_RESULT(no)
2370)
2371
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002372# Check for --with-doc-strings
2373AC_MSG_CHECKING(for --with-doc-strings)
2374AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002375 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002376
2377if test -z "$with_doc_strings"
2378then with_doc_strings="yes"
2379fi
2380if test "$with_doc_strings" != "no"
2381then
2382 AC_DEFINE(WITH_DOC_STRINGS, 1,
2383 [Define if you want documentation strings in extension modules])
2384fi
2385AC_MSG_RESULT($with_doc_strings)
2386
Neil Schemenauera35c6882001-02-27 04:45:05 +00002387# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002388AC_MSG_CHECKING(for --with-tsc)
2389AC_ARG_WITH(tsc,
2390[ --with(out)-tsc enable/disable timestamp counter profile], [
2391if test "$withval" != no
2392then
2393 AC_DEFINE(WITH_TSC, 1,
2394 [Define to profile with the Pentium timestamp counter])
2395 AC_MSG_RESULT(yes)
2396else AC_MSG_RESULT(no)
2397fi],
2398[AC_MSG_RESULT(no)])
2399
2400# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002401AC_MSG_CHECKING(for --with-pymalloc)
2402AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002403 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002404
2405if test -z "$with_pymalloc"
2406then with_pymalloc="yes"
2407fi
2408if test "$with_pymalloc" != "no"
2409then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002410 AC_DEFINE(WITH_PYMALLOC, 1,
2411 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002412fi
2413AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002414
Barry Warsawef82cd72000-06-30 16:21:01 +00002415# Check for --with-wctype-functions
2416AC_MSG_CHECKING(for --with-wctype-functions)
2417AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002418 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2419[
Barry Warsawef82cd72000-06-30 16:21:01 +00002420if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002421then
2422 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2423 [Define if you want wctype.h functions to be used instead of the
2424 one supplied by Python itself. (see Include/unicodectype.h).])
2425 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002426else AC_MSG_RESULT(no)
2427fi],
2428[AC_MSG_RESULT(no)])
2429
Guido van Rossum68242b51996-05-28 22:53:03 +00002430# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002431AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002432DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002433
Guido van Rossume97ee181999-12-20 21:27:22 +00002434# the dlopen() function means we might want to use dynload_shlib.o. some
2435# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002436AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002437
2438# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2439# loading of modules.
2440AC_SUBST(DYNLOADFILE)
2441AC_MSG_CHECKING(DYNLOADFILE)
2442if test -z "$DYNLOADFILE"
2443then
2444 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002445 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2446 if test "$ac_cv_func_dlopen" = yes
2447 then DYNLOADFILE="dynload_shlib.o"
2448 else DYNLOADFILE="dynload_aix.o"
2449 fi
2450 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002451 BeOS*) DYNLOADFILE="dynload_beos.o";;
2452 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002453 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2454 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002455 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002456 *)
2457 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2458 # out any dynamic loading
2459 if test "$ac_cv_func_dlopen" = yes
2460 then DYNLOADFILE="dynload_shlib.o"
2461 else DYNLOADFILE="dynload_stub.o"
2462 fi
2463 ;;
2464 esac
2465fi
2466AC_MSG_RESULT($DYNLOADFILE)
2467if test "$DYNLOADFILE" != "dynload_stub.o"
2468then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002469 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2470 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002471fi
2472
Jack Jansenc49e5b72001-06-19 15:00:23 +00002473# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2474
2475AC_SUBST(MACHDEP_OBJS)
2476AC_MSG_CHECKING(MACHDEP_OBJS)
2477if test -z "$MACHDEP_OBJS"
2478then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002479 MACHDEP_OBJS=$extra_machdep_objs
2480else
2481 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002482fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002483AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002484
Guido van Rossum627b2d71993-12-24 10:39:16 +00002485# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002486AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2487 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002488 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002489 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002490 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002491 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002492 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002493 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2494 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002495 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002496 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002497 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002498 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002499
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002500# For some functions, having a definition is not sufficient, since
2501# we want to take their address.
2502AC_MSG_CHECKING(for chroot)
2503AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2504 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2505 AC_MSG_RESULT(yes),
2506 AC_MSG_RESULT(no)
2507)
2508AC_MSG_CHECKING(for link)
2509AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2510 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2511 AC_MSG_RESULT(yes),
2512 AC_MSG_RESULT(no)
2513)
2514AC_MSG_CHECKING(for symlink)
2515AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2516 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2517 AC_MSG_RESULT(yes),
2518 AC_MSG_RESULT(no)
2519)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002520AC_MSG_CHECKING(for fchdir)
2521AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2522 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2523 AC_MSG_RESULT(yes),
2524 AC_MSG_RESULT(no)
2525)
2526AC_MSG_CHECKING(for fsync)
2527AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002528 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002529 AC_MSG_RESULT(yes),
2530 AC_MSG_RESULT(no)
2531)
2532AC_MSG_CHECKING(for fdatasync)
2533AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2534 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2535 AC_MSG_RESULT(yes),
2536 AC_MSG_RESULT(no)
2537)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002538AC_MSG_CHECKING(for epoll)
2539AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2540 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2541 AC_MSG_RESULT(yes),
2542 AC_MSG_RESULT(no)
2543)
2544AC_MSG_CHECKING(for kqueue)
2545AC_TRY_COMPILE([
2546#include <sys/types.h>
2547#include <sys/event.h>
2548 ], int x=kqueue(),
2549 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2550 AC_MSG_RESULT(yes),
2551 AC_MSG_RESULT(no)
2552)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002553# On some systems (eg. FreeBSD 5), we would find a definition of the
2554# functions ctermid_r, setgroups in the library, but no prototype
2555# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2556# address to avoid compiler warnings and potential miscompilations
2557# because of the missing prototypes.
2558
2559AC_MSG_CHECKING(for ctermid_r)
2560AC_TRY_COMPILE([
2561#include "confdefs.h"
2562#include <stdio.h>
2563], void* p = ctermid_r,
2564 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2565 AC_MSG_RESULT(yes),
2566 AC_MSG_RESULT(no)
2567)
2568
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002569AC_MSG_CHECKING(for flock)
2570AC_TRY_COMPILE([
2571#include "confdefs.h"
2572#include <sys/file.h>
2573], void* p = flock,
2574 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2575 AC_MSG_RESULT(yes),
2576 AC_MSG_RESULT(no)
2577)
2578
2579AC_MSG_CHECKING(for getpagesize)
2580AC_TRY_COMPILE([
2581#include "confdefs.h"
2582#include <unistd.h>
2583], void* p = getpagesize,
2584 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2585 AC_MSG_RESULT(yes),
2586 AC_MSG_RESULT(no)
2587)
2588
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002589dnl check for true
2590AC_CHECK_PROGS(TRUE, true, /bin/true)
2591
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002592dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2593dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002594AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002595 AC_CHECK_LIB(resolv, inet_aton)
2596)
2597
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002598# On Tru64, chflags seems to be present, but calling it will
2599# exit Python
2600AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002601AC_CACHE_VAL(ac_cv_have_chflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002602AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002603#include <sys/stat.h>
2604#include <unistd.h>
2605int main(int argc, char*argv[])
2606{
2607 if(chflags(argv[0], 0) != 0)
2608 return 1;
2609 return 0;
2610}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002611]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002612 ac_cv_have_chflags=no,
2613 ac_cv_have_chflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002614)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002615AC_MSG_RESULT($ac_cv_have_chflags)
2616if test $ac_cv_have_chflags = yes
2617then
2618 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2619fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002620
2621AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002622AC_CACHE_VAL(ac_cv_have_lchflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002623AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002624#include <sys/stat.h>
2625#include <unistd.h>
2626int main(int argc, char*argv[])
2627{
2628 if(lchflags(argv[0], 0) != 0)
2629 return 1;
2630 return 0;
2631}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002632]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002633 ac_cv_have_lchflags=no,
2634 ac_cv_have_lchflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002635)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002636AC_MSG_RESULT($ac_cv_have_lchflags)
2637if test $ac_cv_have_lchflags = yes
2638then
2639 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2640fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002641
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002642dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002643dnl
2644dnl On MacOSX the linker will search for dylibs on the entire linker path
2645dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2646dnl to revert to a more traditional unix behaviour and make it possible to
2647dnl override the system libz with a local static library of libz. Temporarily
2648dnl add that flag to our CFLAGS as well to ensure that we check the version
2649dnl of libz that will be used by setup.py.
2650dnl The -L/usr/local/lib is needed as wel to get the same compilation
2651dnl environment as setup.py (and leaving it out can cause configure to use the
2652dnl wrong version of the library)
2653case $ac_sys_system/$ac_sys_release in
2654Darwin/*)
2655 _CUR_CFLAGS="${CFLAGS}"
2656 _CUR_LDFLAGS="${LDFLAGS}"
2657 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2658 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2659 ;;
2660esac
2661
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002662AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2663
Ronald Oussorenf8752642006-07-06 10:13:35 +00002664case $ac_sys_system/$ac_sys_release in
2665Darwin/*)
2666 CFLAGS="${_CUR_CFLAGS}"
2667 LDFLAGS="${_CUR_LDFLAGS}"
2668 ;;
2669esac
2670
Martin v. Löwise9416172003-05-03 10:12:45 +00002671AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002672AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002673#include "confdefs.h"
2674#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002675], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002676 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2677 AC_MSG_RESULT(yes),
2678 AC_MSG_RESULT(no)
2679)
2680
2681AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002682AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002683#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002684#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002685#include <sys/socket.h>
2686#include <netinet/in.h>
2687#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002688], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002689 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2690 AC_MSG_RESULT(yes),
2691 AC_MSG_RESULT(no)
2692)
2693
2694AC_MSG_CHECKING(for inet_pton)
2695AC_TRY_COMPILE([
2696#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002697#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002698#include <sys/socket.h>
2699#include <netinet/in.h>
2700#include <arpa/inet.h>
2701], void* p = inet_pton,
2702 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2703 AC_MSG_RESULT(yes),
2704 AC_MSG_RESULT(no)
2705)
2706
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002707# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002708AC_MSG_CHECKING(for setgroups)
2709AC_TRY_COMPILE([
2710#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002711#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002712#ifdef HAVE_GRP_H
2713#include <grp.h>
2714#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002715],
2716void* p = setgroups,
2717 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2718 AC_MSG_RESULT(yes),
2719 AC_MSG_RESULT(no)
2720)
2721
Fred Drake8cef4cf2000-06-28 16:40:38 +00002722# check for openpty and forkpty
2723
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002724AC_CHECK_FUNCS(openpty,,
2725 AC_CHECK_LIB(util,openpty,
2726 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2727 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2728 )
2729)
2730AC_CHECK_FUNCS(forkpty,,
2731 AC_CHECK_LIB(util,forkpty,
2732 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2733 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2734 )
2735)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002736
Brett Cannonaa5778d2008-03-18 04:09:00 +00002737# Stuff for expat.
2738AC_CHECK_FUNCS(memmove)
2739
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002740# check for long file support functions
2741AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2742
Brett Cannonaa5778d2008-03-18 04:09:00 +00002743AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002744AC_CHECK_FUNCS(getpgrp,
2745 AC_TRY_COMPILE([#include <unistd.h>],
2746 [getpgrp(0);],
2747 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2748 [Define if getpgrp() must be called as getpgrp(0).])
2749 )
2750)
Jack Jansen150753c2003-03-29 22:07:47 +00002751AC_CHECK_FUNCS(setpgrp,
2752 AC_TRY_COMPILE([#include <unistd.h>],
2753 [setpgrp(0,0);],
2754 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2755 [Define if setpgrp() must be called as setpgrp(0, 0).])
2756 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002757)
2758AC_CHECK_FUNCS(gettimeofday,
2759 AC_TRY_COMPILE([#include <sys/time.h>],
2760 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2761 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2762 [Define if gettimeofday() does not have second (timezone) argument
2763 This is the case on Motorola V4 (R40V4.2)])
2764 )
2765)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002766
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002767AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002768AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002769#if defined(MAJOR_IN_MKDEV)
2770#include <sys/mkdev.h>
2771#elif defined(MAJOR_IN_SYSMACROS)
2772#include <sys/sysmacros.h>
2773#else
2774#include <sys/types.h>
2775#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002776],[
2777 makedev(major(0),minor(0));
2778],[
2779 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2780 [Define to 1 if you have the device macros.])
2781 AC_MSG_RESULT(yes)
2782],[
2783 AC_MSG_RESULT(no)
2784])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002785
2786# On OSF/1 V5.1, getaddrinfo is available, but a define
2787# for [no]getaddrinfo in netdb.h.
2788AC_MSG_CHECKING(for getaddrinfo)
2789AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002790#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002791#include <sys/socket.h>
2792#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002793#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002794], [getaddrinfo(NULL, NULL, NULL, NULL);],
2795have_getaddrinfo=yes,
2796have_getaddrinfo=no)
2797AC_MSG_RESULT($have_getaddrinfo)
2798if test $have_getaddrinfo = yes
2799then
2800 AC_MSG_CHECKING(getaddrinfo bug)
2801 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2802 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002803#include <sys/types.h>
2804#include <netdb.h>
2805#include <string.h>
2806#include <sys/socket.h>
2807#include <netinet/in.h>
2808
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002809int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002810{
2811 int passive, gaierr, inet4 = 0, inet6 = 0;
2812 struct addrinfo hints, *ai, *aitop;
2813 char straddr[INET6_ADDRSTRLEN], strport[16];
2814
2815 for (passive = 0; passive <= 1; passive++) {
2816 memset(&hints, 0, sizeof(hints));
2817 hints.ai_family = AF_UNSPEC;
2818 hints.ai_flags = passive ? AI_PASSIVE : 0;
2819 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002820 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002821 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2822 (void)gai_strerror(gaierr);
2823 goto bad;
2824 }
2825 for (ai = aitop; ai; ai = ai->ai_next) {
2826 if (ai->ai_addr == NULL ||
2827 ai->ai_addrlen == 0 ||
2828 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2829 straddr, sizeof(straddr), strport, sizeof(strport),
2830 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2831 goto bad;
2832 }
2833 switch (ai->ai_family) {
2834 case AF_INET:
2835 if (strcmp(strport, "54321") != 0) {
2836 goto bad;
2837 }
2838 if (passive) {
2839 if (strcmp(straddr, "0.0.0.0") != 0) {
2840 goto bad;
2841 }
2842 } else {
2843 if (strcmp(straddr, "127.0.0.1") != 0) {
2844 goto bad;
2845 }
2846 }
2847 inet4++;
2848 break;
2849 case AF_INET6:
2850 if (strcmp(strport, "54321") != 0) {
2851 goto bad;
2852 }
2853 if (passive) {
2854 if (strcmp(straddr, "::") != 0) {
2855 goto bad;
2856 }
2857 } else {
2858 if (strcmp(straddr, "::1") != 0) {
2859 goto bad;
2860 }
2861 }
2862 inet6++;
2863 break;
2864 case AF_UNSPEC:
2865 goto bad;
2866 break;
2867 default:
2868 /* another family support? */
2869 break;
2870 }
2871 }
2872 }
2873
2874 if (!(inet4 == 0 || inet4 == 2))
2875 goto bad;
2876 if (!(inet6 == 0 || inet6 == 2))
2877 goto bad;
2878
2879 if (aitop)
2880 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002881 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002882
2883 bad:
2884 if (aitop)
2885 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002886 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002887}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002888]], ac_cv_buggy_getaddrinfo=no,
2889 ac_cv_buggy_getaddrinfo=yes,
2890 ac_cv_buggy_getaddrinfo=yes))
2891fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002892
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002893if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2894then
2895 if test $ipv6 = yes
2896 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002897 echo 'Fatal: You must get working getaddrinfo() function.'
2898 echo ' or you can specify "--disable-ipv6"'.
2899 exit 1
2900 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002901else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002903fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002904AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002905
Guido van Rossum627b2d71993-12-24 10:39:16 +00002906# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002907AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002908AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002909AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002910AC_CHECK_MEMBERS([struct stat.st_rdev])
2911AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002912AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002913AC_CHECK_MEMBERS([struct stat.st_gen])
2914AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002915AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002916
2917AC_MSG_CHECKING(for time.h that defines altzone)
2918AC_CACHE_VAL(ac_cv_header_time_altzone,
2919[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2920 ac_cv_header_time_altzone=yes,
2921 ac_cv_header_time_altzone=no)])
2922AC_MSG_RESULT($ac_cv_header_time_altzone)
2923if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002924 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925fi
2926
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002927was_it_defined=no
2928AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002929AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002930#include <sys/types.h>
2931#include <sys/select.h>
2932#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002933], [;], [
2934 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2935 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2936 (which you can't on SCO ODT 3.0).])
2937 was_it_defined=yes
2938])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002939AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002940
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002941AC_MSG_CHECKING(for addrinfo)
2942AC_CACHE_VAL(ac_cv_struct_addrinfo,
2943AC_TRY_COMPILE([
2944# include <netdb.h>],
2945 [struct addrinfo a],
2946 ac_cv_struct_addrinfo=yes,
2947 ac_cv_struct_addrinfo=no))
2948AC_MSG_RESULT($ac_cv_struct_addrinfo)
2949if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002950 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002951fi
2952
2953AC_MSG_CHECKING(for sockaddr_storage)
2954AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2955AC_TRY_COMPILE([
2956# include <sys/types.h>
2957# include <sys/socket.h>],
2958 [struct sockaddr_storage s],
2959 ac_cv_struct_sockaddr_storage=yes,
2960 ac_cv_struct_sockaddr_storage=no))
2961AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2962if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002964fi
2965
Guido van Rossum627b2d71993-12-24 10:39:16 +00002966# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002967
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002968AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002969AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002970
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002971works=no
2972AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002973AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2974 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2975)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002976AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002977
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002978works=no
2979AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002980AC_TRY_COMPILE([], [signed char c;], works=yes,
2981 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2982)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002983AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002984
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002985have_prototypes=no
2986AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2988 AC_DEFINE(HAVE_PROTOTYPES, 1,
2989 [Define if your compiler supports function prototype])
2990 have_prototypes=yes
2991])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002993
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994works=no
2995AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002996AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002997#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002998int foo(int x, ...) {
2999 va_list va;
3000 va_start(va, x);
3001 va_arg(va, int);
3002 va_arg(va, char *);
3003 va_arg(va, double);
3004 return 0;
3005}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003006], [return foo(10, "", 3.14);], [
3007 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3008 [Define if your compiler supports variable length function prototypes
3009 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3010 works=yes
3011])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003012AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003013
Dave Cole331708b2004-08-09 04:51:41 +00003014# check for socketpair
3015AC_MSG_CHECKING(for socketpair)
3016AC_TRY_COMPILE([
3017#include <sys/types.h>
3018#include <sys/socket.h>
3019], void *x=socketpair,
3020 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3021 AC_MSG_RESULT(yes),
3022 AC_MSG_RESULT(no)
3023)
3024
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003025# check if sockaddr has sa_len member
3026AC_MSG_CHECKING(if sockaddr has sa_len member)
3027AC_TRY_COMPILE([#include <sys/types.h>
3028#include <sys/socket.h>],
3029[struct sockaddr x;
3030x.sa_len = 0;],
3031 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003032 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003033 AC_MSG_RESULT(no))
3034
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003035va_list_is_array=no
3036AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003037AC_TRY_COMPILE([
3038#ifdef HAVE_STDARG_PROTOTYPES
3039#include <stdarg.h>
3040#else
3041#include <varargs.h>
3042#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043], [va_list list1, list2; list1 = list2;], , [
3044 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3045 va_list_is_array=yes
3046])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003047AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003048
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003049# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003050AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3051 [Define this if you have some version of gethostbyname_r()])
3052
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003053AC_CHECK_FUNC(gethostbyname_r, [
3054 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3055 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3056 OLD_CFLAGS=$CFLAGS
3057 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3058 AC_TRY_COMPILE([
3059# include <netdb.h>
3060 ], [
3061 char *name;
3062 struct hostent *he, *res;
3063 char buffer[2048];
3064 int buflen = 2048;
3065 int h_errnop;
3066
3067 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3068 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003069 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003070 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3071 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003072 AC_MSG_RESULT(yes)
3073 ], [
3074 AC_MSG_RESULT(no)
3075 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3076 AC_TRY_COMPILE([
3077# include <netdb.h>
3078 ], [
3079 char *name;
3080 struct hostent *he;
3081 char buffer[2048];
3082 int buflen = 2048;
3083 int h_errnop;
3084
3085 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3086 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003087 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003088 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3089 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003090 AC_MSG_RESULT(yes)
3091 ], [
3092 AC_MSG_RESULT(no)
3093 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3094 AC_TRY_COMPILE([
3095# include <netdb.h>
3096 ], [
3097 char *name;
3098 struct hostent *he;
3099 struct hostent_data data;
3100
3101 (void) gethostbyname_r(name, he, &data);
3102 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003103 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003104 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3105 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003106 AC_MSG_RESULT(yes)
3107 ], [
3108 AC_MSG_RESULT(no)
3109 ])
3110 ])
3111 ])
3112 CFLAGS=$OLD_CFLAGS
3113], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003114 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003115])
3116AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3117AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3118AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003119AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003120AC_SUBST(HAVE_GETHOSTBYNAME)
3121
Guido van Rossum627b2d71993-12-24 10:39:16 +00003122# checks for system services
3123# (none yet)
3124
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003125# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003126AC_CHECK_FUNC(__fpu_control,
3127 [],
3128 [AC_CHECK_LIB(ieee, __fpu_control)
3129])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003130
Guido van Rossum93274221997-05-09 02:42:00 +00003131# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003132AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003133AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003134 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3135[
Guido van Rossum93274221997-05-09 02:42:00 +00003136if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003137then
3138 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3139 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3140 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003141else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003142fi],
3143[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003144
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003145# check for --with-libm=...
3146AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003147case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003148Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003149BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003150*) LIBM=-lm
3151esac
Guido van Rossum93274221997-05-09 02:42:00 +00003152AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003153AC_ARG_WITH(libm,
3154 AC_HELP_STRING(--with-libm=STRING, math library),
3155[
Guido van Rossum93274221997-05-09 02:42:00 +00003156if test "$withval" = no
3157then LIBM=
3158 AC_MSG_RESULT(force LIBM empty)
3159elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003160then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003161 AC_MSG_RESULT(set LIBM="$withval")
3162else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003163fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003164[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003165
3166# check for --with-libc=...
3167AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003168AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003169AC_ARG_WITH(libc,
3170 AC_HELP_STRING(--with-libc=STRING, C library),
3171[
Guido van Rossum93274221997-05-09 02:42:00 +00003172if test "$withval" = no
3173then LIBC=
3174 AC_MSG_RESULT(force LIBC empty)
3175elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003176then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003177 AC_MSG_RESULT(set LIBC="$withval")
3178else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003179fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003180[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003181
Christian Heimes0a8143f2007-12-18 23:22:54 +00003182# ************************************
3183# * Check for mathematical functions *
3184# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003185
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003186LIBS_SAVE=$LIBS
3187LIBS="$LIBS $LIBM"
3188
Mark Dickinson04b27232009-01-04 12:29:36 +00003189# Detect whether system arithmetic is subject to x87-style double
3190# rounding issues. The result of this test has little meaning on non
3191# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3192# mode is round-to-nearest and double rounding issues are present, and
3193# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3194AC_MSG_CHECKING(for x87-style double rounding)
3195AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3196AC_TRY_RUN([
3197#include <stdlib.h>
3198#include <math.h>
3199int main() {
3200 volatile double x, y, z;
3201 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3202 x = 0.99999999999999989; /* 1-2**-53 */
3203 y = 1./x;
3204 if (y != 1.)
3205 exit(0);
3206 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3207 x = 1e16;
3208 y = 2.99999;
3209 z = x + y;
3210 if (z != 1e16+4.)
3211 exit(0);
3212 /* both tests show evidence of double rounding */
3213 exit(1);
3214}
3215],
3216ac_cv_x87_double_rounding=no,
3217ac_cv_x87_double_rounding=yes,
3218ac_cv_x87_double_rounding=no)])
3219AC_MSG_RESULT($ac_cv_x87_double_rounding)
3220if test "$ac_cv_x87_double_rounding" = yes
3221then
3222 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3223 [Define if arithmetic is subject to x87-style double rounding issue])
3224fi
3225
Jesse Noller355b1262009-04-02 00:03:28 +00003226# Multiprocessing check for broken sem_getvalue
3227AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003228AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003229AC_TRY_RUN([
3230#include <unistd.h>
3231#include <fcntl.h>
3232#include <stdio.h>
3233#include <semaphore.h>
3234#include <sys/stat.h>
3235
3236int main(void){
3237 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3238 int count;
3239 int res;
3240 if(a==SEM_FAILED){
3241 perror("sem_open");
3242 return 1;
3243
3244 }
3245 res = sem_getvalue(a, &count);
3246 sem_close(a);
3247 return res==-1 ? 1 : 0;
3248}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003249], ac_cv_broken_sem_getvalue=no,
3250 ac_cv_broken_sem_getvalue=yes,
3251 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003252)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003253AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3254if test $ac_cv_broken_sem_getvalue = yes
3255then
3256 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3257 [define to 1 if your sem_getvalue is broken.])
3258fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003259
Mark Dickinson265d7382008-04-21 22:32:24 +00003260# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3261# -0. on some architectures.
3262AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3263AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3264AC_TRY_RUN([
3265#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003266#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003267int main() {
3268 /* return 0 if either negative zeros don't exist
3269 on this platform or if negative zeros exist
3270 and tanh(-0.) == -0. */
3271 if (atan2(0., -1.) == atan2(-0., -1.) ||
3272 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3273 else exit(1);
3274}
3275],
3276ac_cv_tanh_preserves_zero_sign=yes,
3277ac_cv_tanh_preserves_zero_sign=no,
3278ac_cv_tanh_preserves_zero_sign=no)])
3279AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3280if test "$ac_cv_tanh_preserves_zero_sign" = yes
3281then
3282 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3283 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3284fi
3285
Mark Dickinson8e5446f2009-04-18 14:41:37 +00003286AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
Mark Dickinsond181e3a2009-01-04 13:57:26 +00003287AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003288
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003289LIBS=$LIBS_SAVE
3290
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003291# determine what size digit to use for Python's longs
3292AC_MSG_CHECKING([digit size for Python's longs])
3293AC_ARG_ENABLE(big-digits,
3294AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3295[case $enable_big_digits in
3296yes)
3297 enable_big_digits=30 ;;
3298no)
3299 enable_big_digits=15 ;;
3300[15|30])
3301 ;;
3302*)
3303 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3304esac
3305AC_MSG_RESULT($enable_big_digits)
3306AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3307],
3308[AC_MSG_RESULT(no value specified)])
3309
Guido van Rossumef2255b2000-03-10 22:30:29 +00003310# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003311AC_CHECK_HEADER(wchar.h, [
3312 AC_DEFINE(HAVE_WCHAR_H, 1,
3313 [Define if the compiler provides a wchar.h header file.])
3314 wchar_h="yes"
3315],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003316wchar_h="no"
3317)
3318
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003319# determine wchar_t size
3320if test "$wchar_h" = yes
3321then
Guido van Rossum67b26592001-10-20 14:21:45 +00003322 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003323fi
3324
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003325AC_MSG_CHECKING(for UCS-4 tcl)
3326have_ucs4_tcl=no
3327AC_TRY_COMPILE([
3328#include <tcl.h>
3329#if TCL_UTF_MAX != 6
3330# error "NOT UCS4_TCL"
3331#endif], [], [
3332 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3333 have_ucs4_tcl=yes
3334])
3335AC_MSG_RESULT($have_ucs4_tcl)
3336
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003337# check whether wchar_t is signed or not
3338if test "$wchar_h" = yes
3339then
3340 # check whether wchar_t is signed or not
3341 AC_MSG_CHECKING(whether wchar_t is signed)
3342 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3343 AC_TRY_RUN([
3344 #include <wchar.h>
3345 int main()
3346 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003347 /* Success: exit code 0 */
3348 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003349 }
3350 ],
3351 ac_cv_wchar_t_signed=yes,
3352 ac_cv_wchar_t_signed=no,
3353 ac_cv_wchar_t_signed=yes)])
3354 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3355fi
3356
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003357AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003358dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003359AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003360 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3361 [],
3362 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003363
3364if test $enable_unicode = yes
3365then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003366 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003367 case "$have_ucs4_tcl" in
3368 yes) enable_unicode="ucs4"
3369 ;;
3370 *) enable_unicode="ucs2"
3371 ;;
3372 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003373fi
3374
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003375AH_TEMPLATE(Py_UNICODE_SIZE,
3376 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003377case "$enable_unicode" in
3378ucs2) unicode_size="2"
3379 AC_DEFINE(Py_UNICODE_SIZE,2)
3380 ;;
3381ucs4) unicode_size="4"
3382 AC_DEFINE(Py_UNICODE_SIZE,4)
3383 ;;
3384esac
3385
Martin v. Löwis11437992002-04-12 09:54:03 +00003386AH_TEMPLATE(PY_UNICODE_TYPE,
3387 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003388
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003389AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003390if test "$enable_unicode" = "no"
3391then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003392 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003393 AC_MSG_RESULT(not used)
3394else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003395 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003396 AC_DEFINE(Py_USING_UNICODE, 1,
3397 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003398
3399 # wchar_t is only usable if it maps to an unsigned type
3400 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003401 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003402 then
3403 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003404 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3405 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003406 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003407 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003408 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3409 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3410 then
3411 PY_UNICODE_TYPE="unsigned short"
3412 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3413 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3414 then
3415 PY_UNICODE_TYPE="unsigned long"
3416 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3417 else
3418 PY_UNICODE_TYPE="no type found"
3419 fi
3420 AC_MSG_RESULT($PY_UNICODE_TYPE)
3421fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003422
3423# check for endianness
3424AC_C_BIGENDIAN
3425
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003426# Check whether right shifting a negative integer extends the sign bit
3427# or fills with zeros (like the Cray J90, according to Tim Peters).
3428AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003429AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003430AC_TRY_RUN([
3431int main()
3432{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003433 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003434}
Guido van Rossum3065c942001-09-17 04:03:14 +00003435],
3436ac_cv_rshift_extends_sign=yes,
3437ac_cv_rshift_extends_sign=no,
3438ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003439AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3440if test "$ac_cv_rshift_extends_sign" = no
3441then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003442 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3443 [Define if i>>j for signed int i does not extend the sign bit
3444 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003445fi
3446
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003447# check for getc_unlocked and related locking functions
3448AC_MSG_CHECKING(for getc_unlocked() and friends)
3449AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3450AC_TRY_LINK([#include <stdio.h>],[
3451 FILE *f = fopen("/dev/null", "r");
3452 flockfile(f);
3453 getc_unlocked(f);
3454 funlockfile(f);
3455], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3456AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3457if test "$ac_cv_have_getc_unlocked" = yes
3458then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003459 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3460 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003461fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003462
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003463# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003464# save the value of LIBS so we don't actually link Python with readline
3465LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003466
3467# On some systems we need to link readline to a termcap compatible
3468# library. NOTE: Keep the precedence of listed libraries synchronised
3469# with setup.py.
3470py_cv_lib_readline=no
3471AC_MSG_CHECKING([how to link readline libs])
3472for py_libtermcap in "" ncursesw ncurses curses termcap; do
3473 if test -z "$py_libtermcap"; then
3474 READLINE_LIBS="-lreadline"
3475 else
3476 READLINE_LIBS="-lreadline -l$py_libtermcap"
3477 fi
3478 LIBS="$READLINE_LIBS $LIBS_no_readline"
3479 AC_LINK_IFELSE(
3480 [AC_LANG_CALL([],[readline])],
3481 [py_cv_lib_readline=yes])
3482 if test $py_cv_lib_readline = yes; then
3483 break
3484 fi
3485done
3486# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3487#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003488if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003489 AC_MSG_RESULT([none])
3490else
3491 AC_MSG_RESULT([$READLINE_LIBS])
3492 AC_DEFINE(HAVE_LIBREADLINE, 1,
3493 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003494fi
3495
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003496# check for readline 2.1
3497AC_CHECK_LIB(readline, rl_callback_handler_install,
3498 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003499 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003500
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003501# check for readline 2.2
3502AC_TRY_CPP([#include <readline/readline.h>],
3503have_readline=yes, have_readline=no)
3504if test $have_readline = yes
3505then
3506 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3507 [readline/readline.h],
3508 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3509 [Define if you have readline 2.2]), )
3510fi
3511
Martin v. Löwis0daad592001-09-30 21:09:59 +00003512# check for readline 4.0
3513AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003514 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003515 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003516
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003517# also in 4.0
3518AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3519 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003520 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003521
Guido van Rossum353ae582001-07-10 16:45:32 +00003522# check for readline 4.2
3523AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003524 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003525 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003526
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003527# also in readline 4.2
3528AC_TRY_CPP([#include <readline/readline.h>],
3529have_readline=yes, have_readline=no)
3530if test $have_readline = yes
3531then
3532 AC_EGREP_HEADER([extern int rl_catch_signals;],
3533 [readline/readline.h],
3534 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3535 [Define if you can turn off readline's signal handling.]), )
3536fi
3537
Martin v. Löwis82bca632006-02-10 20:49:30 +00003538# End of readline checks: restore LIBS
3539LIBS=$LIBS_no_readline
3540
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003541AC_MSG_CHECKING(for broken nice())
3542AC_CACHE_VAL(ac_cv_broken_nice, [
3543AC_TRY_RUN([
3544int main()
3545{
3546 int val1 = nice(1);
3547 if (val1 != -1 && val1 == nice(2))
3548 exit(0);
3549 exit(1);
3550}
Guido van Rossum3065c942001-09-17 04:03:14 +00003551],
3552ac_cv_broken_nice=yes,
3553ac_cv_broken_nice=no,
3554ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003555AC_MSG_RESULT($ac_cv_broken_nice)
3556if test "$ac_cv_broken_nice" = yes
3557then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003558 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3559 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003560fi
3561
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003562AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003563AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003564AC_TRY_RUN([
3565#include <poll.h>
3566
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003567int main()
3568{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003569 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003570 int poll_test;
3571
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003572 close (42);
3573
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003574 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003575 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003576 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003577 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003578 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003579 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003580 return 1;
3581}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003582],
3583ac_cv_broken_poll=yes,
3584ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003585ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003586AC_MSG_RESULT($ac_cv_broken_poll)
3587if test "$ac_cv_broken_poll" = yes
3588then
3589 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3590 [Define if poll() sets errno on invalid file descriptors.])
3591fi
3592
Brett Cannon43802422005-02-10 20:48:03 +00003593# Before we can test tzset, we need to check if struct tm has a tm_zone
3594# (which is not required by ISO C or UNIX spec) and/or if we support
3595# tzname[]
3596AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003597
Brett Cannon43802422005-02-10 20:48:03 +00003598# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003599AC_MSG_CHECKING(for working tzset())
3600AC_CACHE_VAL(ac_cv_working_tzset, [
3601AC_TRY_RUN([
3602#include <stdlib.h>
3603#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003604#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003605
3606#if HAVE_TZNAME
3607extern char *tzname[];
3608#endif
3609
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003610int main()
3611{
Brett Cannon18367812003-09-19 00:59:16 +00003612 /* Note that we need to ensure that not only does tzset(3)
3613 do 'something' with localtime, but it works as documented
3614 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003615 This includes making sure that tzname is set properly if
3616 tm->tm_zone does not exist since it is the alternative way
3617 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003618
3619 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003620 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003621 */
3622
Brett Cannon43802422005-02-10 20:48:03 +00003623 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003624 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3625
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003626 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003627 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003628 if (localtime(&groundhogday)->tm_hour != 0)
3629 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003630#if HAVE_TZNAME
3631 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3632 if (strcmp(tzname[0], "UTC") ||
3633 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3634 exit(1);
3635#endif
Brett Cannon18367812003-09-19 00:59:16 +00003636
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003637 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003638 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003639 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003640 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003641#if HAVE_TZNAME
3642 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3643 exit(1);
3644#endif
Brett Cannon18367812003-09-19 00:59:16 +00003645
3646 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3647 tzset();
3648 if (localtime(&groundhogday)->tm_hour != 11)
3649 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003650#if HAVE_TZNAME
3651 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3652 exit(1);
3653#endif
3654
3655#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003656 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3657 exit(1);
3658 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3659 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003660#endif
Brett Cannon18367812003-09-19 00:59:16 +00003661
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003662 exit(0);
3663}
3664],
3665ac_cv_working_tzset=yes,
3666ac_cv_working_tzset=no,
3667ac_cv_working_tzset=no)])
3668AC_MSG_RESULT($ac_cv_working_tzset)
3669if test "$ac_cv_working_tzset" = yes
3670then
3671 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3672 [Define if tzset() actually switches the local timezone in a meaningful way.])
3673fi
3674
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003675# Look for subsecond timestamps in struct stat
3676AC_MSG_CHECKING(for tv_nsec in struct stat)
3677AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3678AC_TRY_COMPILE([#include <sys/stat.h>], [
3679struct stat st;
3680st.st_mtim.tv_nsec = 1;
3681],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003682ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003683ac_cv_stat_tv_nsec=no,
3684ac_cv_stat_tv_nsec=no))
3685AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3686if test "$ac_cv_stat_tv_nsec" = yes
3687then
3688 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3689 [Define if you have struct stat.st_mtim.tv_nsec])
3690fi
3691
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003692# Look for BSD style subsecond timestamps in struct stat
3693AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3694AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3695AC_TRY_COMPILE([#include <sys/stat.h>], [
3696struct stat st;
3697st.st_mtimespec.tv_nsec = 1;
3698],
3699ac_cv_stat_tv_nsec2=yes,
3700ac_cv_stat_tv_nsec2=no,
3701ac_cv_stat_tv_nsec2=no))
3702AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3703if test "$ac_cv_stat_tv_nsec2" = yes
3704then
3705 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3706 [Define if you have struct stat.st_mtimensec])
3707fi
3708
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003709# On HP/UX 11.0, mvwdelch is a block with a return statement
3710AC_MSG_CHECKING(whether mvwdelch is an expression)
3711AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3712AC_TRY_COMPILE([#include <curses.h>], [
3713 int rtn;
3714 rtn = mvwdelch(0,0,0);
3715], ac_cv_mvwdelch_is_expression=yes,
3716 ac_cv_mvwdelch_is_expression=no,
3717 ac_cv_mvwdelch_is_expression=yes))
3718AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3719
3720if test "$ac_cv_mvwdelch_is_expression" = yes
3721then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003722 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3723 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003724fi
3725
3726AC_MSG_CHECKING(whether WINDOW has _flags)
3727AC_CACHE_VAL(ac_cv_window_has_flags,
3728AC_TRY_COMPILE([#include <curses.h>], [
3729 WINDOW *w;
3730 w->_flags = 0;
3731], ac_cv_window_has_flags=yes,
3732 ac_cv_window_has_flags=no,
3733 ac_cv_window_has_flags=no))
3734AC_MSG_RESULT($ac_cv_window_has_flags)
3735
3736
3737if test "$ac_cv_window_has_flags" = yes
3738then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003739 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3740 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003741fi
3742
Walter Dörwald4994d952006-06-19 08:07:50 +00003743AC_MSG_CHECKING(for is_term_resized)
3744AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3745 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3746 AC_MSG_RESULT(yes),
3747 AC_MSG_RESULT(no)
3748)
3749
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003750AC_MSG_CHECKING(for resize_term)
3751AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3752 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003753 AC_MSG_RESULT(yes),
3754 AC_MSG_RESULT(no)
3755)
3756
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003757AC_MSG_CHECKING(for resizeterm)
3758AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3759 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003760 AC_MSG_RESULT(yes),
3761 AC_MSG_RESULT(no)
3762)
3763
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003764AC_MSG_CHECKING(for /dev/ptmx)
3765
3766if test -r /dev/ptmx
3767then
3768 AC_MSG_RESULT(yes)
3769 AC_DEFINE(HAVE_DEV_PTMX, 1,
3770 [Define if we have /dev/ptmx.])
3771else
3772 AC_MSG_RESULT(no)
3773fi
3774
3775AC_MSG_CHECKING(for /dev/ptc)
3776
3777if test -r /dev/ptc
3778then
3779 AC_MSG_RESULT(yes)
3780 AC_DEFINE(HAVE_DEV_PTC, 1,
3781 [Define if we have /dev/ptc.])
3782else
3783 AC_MSG_RESULT(no)
3784fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003785
Brett Cannon09d12362006-05-11 05:11:33 +00003786AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003787AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003788AC_TRY_RUN([[
3789#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00003790#include <stddef.h>
3791#include <string.h>
3792
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003793#ifdef HAVE_SYS_TYPES_H
3794#include <sys/types.h>
3795#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003796
3797#ifdef HAVE_SSIZE_T
3798typedef ssize_t Py_ssize_t;
3799#elif SIZEOF_VOID_P == SIZEOF_LONG
3800typedef long Py_ssize_t;
3801#else
3802typedef int Py_ssize_t;
3803#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003804
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003805int main()
3806{
3807 char buffer[256];
3808
Brett Cannon09d12362006-05-11 05:11:33 +00003809 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3810 return 1;
3811
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003812 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003813 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003814
3815 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3816 return 1;
3817
3818 if (strcmp(buffer, "-123"))
3819 return 1;
3820
Brett Cannon09d12362006-05-11 05:11:33 +00003821 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003822}
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003823]], ac_cv_have_size_t_format=yes,
3824 ac_cv_have_size_t_format=no,
3825 ac_cv_have_size_t_format=no)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003826)
3827AC_MSG_RESULT($ac_cv_have_size_t_format)
3828if test $ac_cv_have_size_t_format = yes
3829then
3830 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3831 [Define to printf format modifier for Py_ssize_t])
3832fi
Brett Cannon09d12362006-05-11 05:11:33 +00003833
Martin v. Löwis01c04012002-11-11 14:58:44 +00003834AC_CHECK_TYPE(socklen_t,,
3835 AC_DEFINE(socklen_t,int,
3836 Define to `int' if <sys/socket.h> does not define.),[
3837#ifdef HAVE_SYS_TYPES_H
3838#include <sys/types.h>
3839#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003840#ifdef HAVE_SYS_SOCKET_H
3841#include <sys/socket.h>
3842#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003843])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003844
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003845AC_SUBST(THREADHEADERS)
3846
3847for h in `(cd $srcdir;echo Python/thread_*.h)`
3848do
3849 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3850done
3851
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003852AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003853SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003854AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003855for dir in $SRCDIRS; do
3856 if test ! -d $dir; then
3857 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003858 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003859done
3860AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003861
Guido van Rossum627b2d71993-12-24 10:39:16 +00003862# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00003863AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003864AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003865
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003866echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003867if test ! -f Modules/Setup
3868then
3869 cp $srcdir/Modules/Setup.dist Modules/Setup
3870fi
3871
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003872echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003873if test ! -f Modules/Setup.local
3874then
3875 echo "# Edit this file for local setup changes" >Modules/Setup.local
3876fi
3877
3878echo "creating Makefile"
3879$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3880 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003881 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003882
3883case $ac_sys_system in
3884BeOS)
3885 AC_MSG_WARN([
3886
3887 Support for BeOS is deprecated as of Python 2.6.
3888 See PEP 11 for the gory details.
3889 ])
3890 ;;
3891*) ;;
3892esac
3893
Neil Schemenauer66252162001-02-19 04:47:42 +00003894mv config.c Modules