blob: 2390633e41c9aa4728d4c9dd32a5b6f2accb3a32 [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
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Ronald Oussoren5640ce22008-06-05 12:58:24 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Ronald Oussoren988117f2006-04-29 11:31:35 +000072AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +000095ARCH_RUN_32BIT=
96AC_SUBST(ARCH_RUN_32BIT)
97
Ronald Oussoren5640ce22008-06-05 12:58:24 +000098UNIVERSAL_ARCHS="32-bit"
99AC_MSG_CHECKING(for --with-universal-archs)
100AC_ARG_WITH(universal-archs,
101 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
102[
103 AC_MSG_RESULT($withval)
104 UNIVERSAL_ARCHS="$withval"
105],
106[
107 AC_MSG_RESULT(32-bit)
108])
109
110
111
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000112AC_ARG_WITH(framework-name,
113 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
114 specify an alternate name of the framework built with --enable-framework),
115[
116 PYTHONFRAMEWORK=${withval}
117 PYTHONFRAMEWORKDIR=${withval}.framework
118 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
119 ],[
120 PYTHONFRAMEWORK=Python
121 PYTHONFRAMEWORKDIR=Python.framework
122 PYTHONFRAMEWORKIDENTIFIER=org.python.python
123])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000124dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000126 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
127[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000128 case $enableval in
129 yes)
130 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000131 esac
132 case $enableval in
133 no)
134 PYTHONFRAMEWORK=
135 PYTHONFRAMEWORKDIR=no-framework
136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000142 if test "x${prefix}" = "xNONE"; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000148 ;;
149 *)
150 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000151 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000152 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000153 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
154 if test "$UNIVERSAL_ARCHS" = "all"
155 then
156 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
157 else
158 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
159 fi
160
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000161 if test "x${prefix}" = "xNONE" ; then
162 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
163 else
164 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
165 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000166 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000167
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000168 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000169 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000170 AC_CONFIG_FILES(Mac/Makefile)
171 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
172 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000173 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
174 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000175 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000176 ],[
177 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000178 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000179 PYTHONFRAMEWORKPREFIX=
180 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000181 FRAMEWORKINSTALLFIRST=
182 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000183 FRAMEWORKALTINSTALLFIRST=
184 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000185 if test "x${prefix}" = "xNONE" ; then
186 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
187 else
188 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
189 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000190 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000191
192 if test "$UNIVERSAL_ARCHS" = "all"
193 then
194 FRAMEWORKINSTALLLAST=update4wayuniversal
195 FRAMEWORKALTINSTALLLAST=update4wayuniversal
196 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000197])
198AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000199AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000200AC_SUBST(PYTHONFRAMEWORKDIR)
201AC_SUBST(PYTHONFRAMEWORKPREFIX)
202AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000203AC_SUBST(FRAMEWORKINSTALLFIRST)
204AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000205AC_SUBST(FRAMEWORKALTINSTALLFIRST)
206AC_SUBST(FRAMEWORKALTINSTALLLAST)
207AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000208
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000210## AC_HELP_STRING(--with-dyld,
211## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000212##
Guido van Rossumb418f891996-07-30 18:06:02 +0000213# Set name for machine-dependent library files
214AC_SUBST(MACHDEP)
215AC_MSG_CHECKING(MACHDEP)
216if test -z "$MACHDEP"
217then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000218 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000219 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
220 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000221 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000222 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000223 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000224 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000225 ac_md_system=`echo $ac_sys_system |
226 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
227 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000228 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000229 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000230
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000231 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000232 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000233 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000234 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000235 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000236 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000237 esac
238fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000239
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000240# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
241# disable features if it is defined, without any means to access these
242# features as extensions. For these systems, we skip the definition of
243# _XOPEN_SOURCE. Before adding a system to the list to gain access to
244# some feature, make sure there is no alternative way to access this
245# feature. Also, when using wildcards, make sure you have verified the
246# need for not defining _XOPEN_SOURCE on all systems matching the
247# wildcard, and that the wildcard does not include future systems
248# (which may remove their limitations).
249dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
250case $ac_sys_system/$ac_sys_release in
251 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
252 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000253 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000254 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000255 define_xopen_source=no
256 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
257 # also defined. This can be overridden by defining _BSD_SOURCE
258 # As this has a different meaning on Linux, only define it on OpenBSD
259 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
260 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000261 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
262 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
263 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000264 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 +0000265 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000266 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
267 # of union __?sigval. Reported by Stuart Bishop.
268 SunOS/5.6)
269 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000270 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
271 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000272 # Reconfirmed for 7.1.4 by Martin v. Loewis.
273 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000274 define_xopen_source=no;;
275 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000276 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000277 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000278 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000279 # On FreeBSD 4, the math functions C89 does not cover are never defined
280 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
281 FreeBSD/4.*)
282 define_xopen_source=no;;
283 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
284 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
285 # identifies itself as Darwin/7.*
286 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
287 # disables platform specific features beyond repair.
288 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
289 # has no effect, don't bother defining them
290 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000291 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000292 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
293 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
294 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000295 AIX/4)
296 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000297 AIX/5)
298 if test `uname -r` -eq 1; then
299 define_xopen_source=no
300 fi
301 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000302 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
303 # defining NI_NUMERICHOST.
304 QNX/6.3.2)
305 define_xopen_source=no
306 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000307
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000308esac
309
310if test $define_xopen_source = yes
311then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000312 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
313 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000314 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
315 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000316 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000317 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000318 AC_DEFINE(_XOPEN_SOURCE, 500,
319 Define to the level of X/Open that your system supports)
320 ;;
321 *)
322 AC_DEFINE(_XOPEN_SOURCE, 600,
323 Define to the level of X/Open that your system supports)
324 ;;
325 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000326
327 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
328 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
329 # several APIs are not declared. Since this is also needed in some
330 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000331 # except for Solaris 10, where it must not be defined,
332 # as it implies XPG4.2
333 case $ac_sys_system/$ac_sys_release in
334 SunOS/5.10)
335 ;;
336 *)
337 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
338 Define to activate Unix95-and-earlier features)
339 ;;
340 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000341
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000342 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
343
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000344fi
345
Guido van Rossum91922671997-10-09 20:24:13 +0000346#
347# SGI compilers allow the specification of the both the ABI and the
348# ISA on the command line. Depending on the values of these switches,
349# different and often incompatable code will be generated.
350#
351# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
352# thus supply support for various ABI/ISA combinations. The MACHDEP
353# variable is also adjusted.
354#
355AC_SUBST(SGI_ABI)
356if test ! -z "$SGI_ABI"
357then
358 CC="cc $SGI_ABI"
359 LDFLAGS="$SGI_ABI $LDFLAGS"
360 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
361fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000362AC_MSG_RESULT($MACHDEP)
363
Jack Jansen83f898c2002-12-30 22:23:40 +0000364# And add extra plat-mac for darwin
365AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000366AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000367AC_MSG_CHECKING(EXTRAPLATDIR)
368if test -z "$EXTRAPLATDIR"
369then
370 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000371 darwin)
372 EXTRAPLATDIR="\$(PLATMACDIRS)"
373 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
374 ;;
375 *)
376 EXTRAPLATDIR=""
377 EXTRAMACHDEPPATH=""
378 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000379 esac
380fi
381AC_MSG_RESULT($EXTRAPLATDIR)
382
Jack Jansen6b08a402004-06-03 12:41:45 +0000383# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
384# it may influence the way we can build extensions, so distutils
385# needs to check it
386AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000387AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000388CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000389EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000390
Mark Dickinson65134662008-04-25 16:11:04 +0000391AC_MSG_CHECKING(machine type as reported by uname -m)
392ac_sys_machine=`uname -m`
393AC_MSG_RESULT($ac_sys_machine)
394
Guido van Rossum627b2d71993-12-24 10:39:16 +0000395# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000396
397# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
398# for debug/optimization stuff. BASECFLAGS is for flags that are required
399# just to get things to compile and link. Users are free to override OPT
400# when running configure or make. The build should not break if they do.
401# BASECFLAGS should generally not be messed with, however.
402
403# XXX shouldn't some/most/all of this code be merged with the stuff later
404# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000405AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000406AC_ARG_WITH(gcc,
407 AC_HELP_STRING(--without-gcc,never use gcc),
408[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000409 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000410 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000411 without_gcc=yes;;
412 yes) CC=gcc
413 without_gcc=no;;
414 *) CC=$withval
415 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000416 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000417 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000418 AIX*) CC=cc_r
419 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000420 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000421 case $BE_HOST_CPU in
422 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000423 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000424 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000425 BASECFLAGS="$BASECFLAGS -export pragma"
426 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000427 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000428 ;;
429 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000430 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000431 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000432 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000433 ;;
434 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000435 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000436 ;;
437 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000438 AR="\$(srcdir)/Modules/ar_beos"
439 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000440 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000441 Monterey*)
442 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000443 without_gcc=;;
444 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000445 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000446AC_MSG_RESULT($without_gcc)
447
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000448# If the user switches compilers, we can't believe the cache
449if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
450then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000451 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
452(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000453fi
454
Guido van Rossum627b2d71993-12-24 10:39:16 +0000455AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000456
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000457AC_SUBST(CXX)
458AC_SUBST(MAINCC)
459AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
460AC_ARG_WITH(cxx_main,
461 AC_HELP_STRING([--with-cxx-main=<compiler>],
462 [compile main() and link python executable with C++ compiler]),
463[
464
465 case $withval in
466 no) with_cxx_main=no
467 MAINCC='$(CC)';;
468 yes) with_cxx_main=yes
469 MAINCC='$(CXX)';;
470 *) with_cxx_main=yes
471 MAINCC=$withval
472 if test -z "$CXX"
473 then
474 CXX=$withval
475 fi;;
476 esac], [
477 with_cxx_main=no
478 MAINCC='$(CC)'
479])
480AC_MSG_RESULT($with_cxx_main)
481
482preset_cxx="$CXX"
483if test -z "$CXX"
484then
485 case "$CC" in
486 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
487 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
488 esac
489 if test "$CXX" = "notfound"
490 then
491 CXX=""
492 fi
493fi
494if test -z "$CXX"
495then
496 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
497 if test "$CXX" = "notfound"
498 then
499 CXX=""
500 fi
501fi
502if test "$preset_cxx" != "$CXX"
503then
504 AC_MSG_WARN([
505
506 By default, distutils will build C++ extension modules with "$CXX".
507 If this is not intended, then set CXX on the configure command line.
508 ])
509fi
510
511
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000512# checks for UNIX variants that set C preprocessor variables
513AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000514
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000515# Check for unsupported systems
516case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000517atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000518 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
519 echo See README for details.
520 exit 1;;
521esac
522
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000523AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000524AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000525AC_ARG_WITH(suffix,
526 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
527[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000528 case $withval in
529 no) EXEEXT=;;
530 yes) EXEEXT=.exe;;
531 *) EXEEXT=$withval;;
532 esac])
533AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000534
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000535# Test whether we're running on a non-case-sensitive system, in which
536# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000537AC_SUBST(BUILDEXEEXT)
538AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000539if test ! -d CaseSensitiveTestDir; then
540mkdir CaseSensitiveTestDir
541fi
542
543if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000544then
Jack Jansen1999ef42001-12-06 21:47:20 +0000545 AC_MSG_RESULT(yes)
546 BUILDEXEEXT=.exe
547else
548 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000549 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000550fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000551rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000552
Guido van Rossumdd997f71998-10-07 19:58:26 +0000553case $MACHDEP in
554bsdos*)
555 case $CC in
556 gcc) CC="$CC -D_HAVE_BSDI";;
557 esac;;
558esac
559
Guido van Rossum84561611997-08-21 00:08:11 +0000560case $ac_sys_system in
561hp*|HP*)
562 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000563 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000564 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000565Monterey*)
566 case $CC in
567 cc) CC="$CC -Wl,-Bexport";;
568 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000569SunOS*)
570 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000571 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000572 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000573esac
574
Martin v. Löwise8964d42001-03-06 12:09:07 +0000575
Neil Schemenauer61c51152001-01-26 16:18:16 +0000576AC_SUBST(LIBRARY)
577AC_MSG_CHECKING(LIBRARY)
578if test -z "$LIBRARY"
579then
580 LIBRARY='libpython$(VERSION).a'
581fi
582AC_MSG_RESULT($LIBRARY)
583
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000585# name of the library into which to insert object files). BLDLIBRARY is also
586# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
587# is blank as the main program is not linked directly against LDLIBRARY.
588# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
589# systems without shared libraries, LDLIBRARY is the same as LIBRARY
590# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
591# DLLLIBRARY is the shared (i.e., DLL) library.
592#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000593# RUNSHARED is used to run shared python without installed libraries
594#
595# INSTSONAME is the name of the shared library that will be use to install
596# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000597AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000598AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000599AC_SUBST(BLDLIBRARY)
600AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601AC_SUBST(INSTSONAME)
602AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000603LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000604BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000605INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000606DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000607LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000608RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000609
Guido van Rossumfb842551997-08-06 23:42:07 +0000610# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000611# If CXX is set, and if it is needed to link a main function that was
612# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
613# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000614# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000615# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000616AC_SUBST(LINKCC)
617AC_MSG_CHECKING(LINKCC)
618if test -z "$LINKCC"
619then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000620 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000621 case $ac_sys_system in
622 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000623 exp_extra="\"\""
624 if test $ac_sys_release -ge 5 -o \
625 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
626 exp_extra="."
627 fi
628 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000629 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000630 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000631 QNX*)
632 # qcc must be used because the other compilers do not
633 # support -N.
634 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000635 esac
636fi
637AC_MSG_RESULT($LINKCC)
638
Martin v. Löwis1142de32002-03-29 16:28:31 +0000639AC_MSG_CHECKING(for --enable-shared)
640AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000641 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000642
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643if test -z "$enable_shared"
644then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000645 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000646 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000647 enable_shared="yes";;
648 *)
649 enable_shared="no";;
650 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651fi
652AC_MSG_RESULT($enable_shared)
653
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000654AC_MSG_CHECKING(for --enable-profiling)
655AC_ARG_ENABLE(profiling,
656 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
657[ac_save_cc="$CC"
658 CC="$CC -pg"
659 AC_TRY_RUN([int main() { return 0; }],
660 ac_enable_profiling="yes",
661 ac_enable_profiling="no",
662 ac_enable_profiling="no")
663 CC="$ac_save_cc"])
664AC_MSG_RESULT($ac_enable_profiling)
665
666case "$ac_enable_profiling" in
667 "yes")
668 BASECFLAGS="-pg $BASECFLAGS"
669 LDFLAGS="-pg $LDFLAGS"
670 ;;
671esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000672
673AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000674
Guido van Rossumb8552162001-09-05 14:58:11 +0000675# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
676# library that we build, but we do not want to link against it (we
677# will find it with a -framework option). For this reason there is an
678# extra variable BLDLIBRARY against which Python and the extension
679# modules are linked, BLDLIBRARY. This is normally the same as
680# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000681if test "$enable_framework"
682then
683 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000684 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000685 BLDLIBRARY=''
686else
687 BLDLIBRARY='$(LDLIBRARY)'
688fi
689
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690# Other platforms follow
691if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000692 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000693 case $ac_sys_system in
694 BeOS*)
695 LDLIBRARY='libpython$(VERSION).so'
696 ;;
697 CYGWIN*)
698 LDLIBRARY='libpython$(VERSION).dll.a'
699 DLLLIBRARY='libpython$(VERSION).dll'
700 ;;
701 SunOS*)
702 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000703 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000704 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000705 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000706 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000707 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000708 LDLIBRARY='libpython$(VERSION).so'
709 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000710 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000711 case $ac_sys_system in
712 FreeBSD*)
713 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
714 ;;
715 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000716 INSTSONAME="$LDLIBRARY".$SOVERSION
717 ;;
718 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000719 case `uname -m` in
720 ia64)
721 LDLIBRARY='libpython$(VERSION).so'
722 ;;
723 *)
724 LDLIBRARY='libpython$(VERSION).sl'
725 ;;
726 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000727 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000728 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000729 ;;
730 OSF*)
731 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000732 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000733 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000734 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000735 atheos*)
736 LDLIBRARY='libpython$(VERSION).so'
737 BLDLIBRARY='-L. -lpython$(VERSION)'
738 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
739 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000740 Darwin*)
741 LDLIBRARY='libpython$(VERSION).dylib'
742 BLDLIBRARY='-L. -lpython$(VERSION)'
743 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
744 ;;
745
Martin v. Löwis1142de32002-03-29 16:28:31 +0000746 esac
Jason Tishler30765592003-09-04 11:04:06 +0000747else # shared is disabled
748 case $ac_sys_system in
749 CYGWIN*)
750 BLDLIBRARY='$(LIBRARY)'
751 LDLIBRARY='libpython$(VERSION).dll.a'
752 ;;
753 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000754fi
755
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000756AC_MSG_RESULT($LDLIBRARY)
757
Guido van Rossum627b2d71993-12-24 10:39:16 +0000758AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000759AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000760AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000761
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000762AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000763AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000764if test $SVNVERSION = found
765then
766 SVNVERSION="svnversion \$(srcdir)"
767else
768 SVNVERSION="echo exported"
769fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000770
Neil Schemenauera42c8272001-03-31 00:01:55 +0000771case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000772bsdos*|hp*|HP*)
773 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000774 if test -z "$INSTALL"
775 then
776 INSTALL="${srcdir}/install-sh -c"
777 fi
778esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000779AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000780
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000781# Not every filesystem supports hard links
782AC_SUBST(LN)
783if test -z "$LN" ; then
784 case $ac_sys_system in
785 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000786 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000787 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000788 *) LN=ln;;
789 esac
790fi
791
Fred Drake9f715822001-07-11 06:27:00 +0000792# Check for --with-pydebug
793AC_MSG_CHECKING(for --with-pydebug)
794AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000795 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
796[
Fred Drake9f715822001-07-11 06:27:00 +0000797if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000798then
799 AC_DEFINE(Py_DEBUG, 1,
800 [Define if you want to build an interpreter with many run-time checks.])
801 AC_MSG_RESULT(yes);
802 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000803else AC_MSG_RESULT(no); Py_DEBUG='false'
804fi],
805[AC_MSG_RESULT(no)])
806
Skip Montanarodecc6a42003-01-01 20:07:49 +0000807# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
808# merged with this chunk of code?
809
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000810# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000811# ------------------------
812# (The following bit of code is complicated enough - please keep things
813# indented properly. Just pretend you're editing Python code. ;-)
814
815# There are two parallel sets of case statements below, one that checks to
816# see if OPT was set and one that does BASECFLAGS setting based upon
817# compiler and platform. BASECFLAGS tweaks need to be made even if the
818# user set OPT.
819
820# tweak OPT based on compiler and platform, only if the user didn't set
821# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000822AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000823if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000824then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $GCC in
826 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000827 if test "$CC" != 'g++' ; then
828 STRICT_PROTO="-Wstrict-prototypes"
829 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000830 # For gcc 4.x we need to use -fwrapv so lets check if its supported
831 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
832 WRAP="-fwrapv"
833 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000834 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000835 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000836 if test "$Py_DEBUG" = 'true' ; then
837 # Optimization messes up debuggers, so turn it off for
838 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000839 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000840 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000841 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842 fi
843 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000844 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000845 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000847 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000848 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849 SCO_SV*) OPT="$OPT -m486 -DSCO5"
850 ;;
851 esac
Fred Drake9f715822001-07-11 06:27:00 +0000852 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000854 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000855 OPT="-O"
856 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000857 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000858
859 # The current (beta) Monterey compiler dies with optimizations
860 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000861 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000862 Monterey*)
863 OPT=""
864 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000865 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866
Guido van Rossum4e8af441994-08-19 15:33:54 +0000867fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000868
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000870
871# The -arch flags for universal builds on OSX
872UNIVERSAL_ARCH_FLAGS=
873AC_SUBST(UNIVERSAL_ARCH_FLAGS)
874
Skip Montanarodecc6a42003-01-01 20:07:49 +0000875# tweak BASECFLAGS based on compiler and platform
876case $GCC in
877yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000878 # Python violates C99 rules, by casting between incompatible
879 # pointer types. GCC may generate bad code as a result of that,
880 # so use -fno-strict-aliasing if supported.
881 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
882 ac_save_cc="$CC"
883 CC="$CC -fno-strict-aliasing"
884 AC_TRY_RUN([int main() { return 0; }],
885 ac_cv_no_strict_aliasing_ok=yes,
886 ac_cv_no_strict_aliasing_ok=no,
887 ac_cv_no_strict_aliasing_ok=no)
888 CC="$ac_save_cc"
889 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
890 if test $ac_cv_no_strict_aliasing_ok = yes
891 then
892 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
893 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000894
895 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
896 # support. Without this, treatment of subnormals doesn't follow
897 # the standard.
898 case $ac_sys_machine in
899 alpha*)
900 BASECFLAGS="$BASECFLAGS -mieee"
901 ;;
902 esac
903
Skip Montanarodecc6a42003-01-01 20:07:49 +0000904 case $ac_sys_system in
905 SCO_SV*)
906 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
907 ;;
908 # is there any other compiler on Darwin besides gcc?
909 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000910 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
911 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000912
913
Ronald Oussoren988117f2006-04-29 11:31:35 +0000914 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000915 UNIVERSAL_ARCH_FLAGS=""
916 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
917 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000918 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000919
920 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
921 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
922
923 elif test "$UNIVERSAL_ARCHS" = "all" ; then
924 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000925 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000926
927 else
928 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
929
930 fi
931
932
933 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000934 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000935 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
936 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
937 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000938 fi
939
Benjamin Peterson4347c442008-07-17 15:59:24 +0000940 # Calculate the right deployment target for this build.
941 #
942 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
943 if test ${cur_target} '>' 10.2; then
944 cur_target=10.3
945 fi
946 if test "${UNIVERSAL_ARCHS}" = "all"; then
947 # Ensure that the default platform for a 4-way
948 # universal build is OSX 10.5, that's the first
949 # OS release where 4-way builds make sense.
950 cur_target='10.5'
951 fi
952 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
953
954 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
955 # environment with a value that is the same as what we'll use
956 # in the Makefile to ensure that we'll get the same compiler
957 # environment during configure and build time.
958 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
959 export MACOSX_DEPLOYMENT_TARGET
960 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
961
Skip Montanarodecc6a42003-01-01 20:07:49 +0000962 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000963 OSF*)
964 BASECFLAGS="$BASECFLAGS -mieee"
965 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000966 esac
967 ;;
968
969*)
970 case $ac_sys_system in
971 OpenUNIX*|UnixWare*)
972 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
973 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000974 OSF*)
975 BASECFLAGS="$BASECFLAGS -ieee -std"
976 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000977 SCO_SV*)
978 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
979 ;;
980 esac
981 ;;
982esac
983
Fred Drakee1ceaa02001-12-04 20:55:47 +0000984if test "$Py_DEBUG" = 'true'; then
985 :
986else
987 OPT="-DNDEBUG $OPT"
988fi
989
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000990if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000991then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000992 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000993fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000994
Neal Norwitz020c46a2006-01-07 21:39:28 +0000995# disable check for icc since it seems to pass, but generates a warning
996if test "$CC" = icc
997then
998 ac_cv_opt_olimit_ok=no
999fi
1000
Guido van Rossum91922671997-10-09 20:24:13 +00001001AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1002AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1003[ac_save_cc="$CC"
1004CC="$CC -OPT:Olimit=0"
1005AC_TRY_RUN([int main() { return 0; }],
1006 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001007 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001008 ac_cv_opt_olimit_ok=no)
1009CC="$ac_save_cc"])
1010AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001011if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001012 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001013 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1014 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1015 # environment?
1016 Darwin*)
1017 ;;
1018 *)
1019 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1020 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001021 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001022else
1023 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1024 AC_CACHE_VAL(ac_cv_olimit_ok,
1025 [ac_save_cc="$CC"
1026 CC="$CC -Olimit 1500"
1027 AC_TRY_RUN([int main() { return 0; }],
1028 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001029 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001030 ac_cv_olimit_ok=no)
1031 CC="$ac_save_cc"])
1032 AC_MSG_RESULT($ac_cv_olimit_ok)
1033 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001034 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001035 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001036fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001037
Martin v. Löwisaac13162006-10-19 10:58:46 +00001038# Check whether GCC supports PyArg_ParseTuple format
1039if test "$GCC" = "yes"
1040then
1041 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1042 save_CFLAGS=$CFLAGS
1043 CFLAGS="$CFLAGS -Werror"
1044 AC_TRY_COMPILE([
1045 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1046 ],,
1047 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1048 AC_MSG_RESULT(yes),
1049 AC_MSG_RESULT(no)
1050 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001051 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001052fi
1053
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001054# On some compilers, pthreads are available without further options
1055# (e.g. MacOS X). On some of these systems, the compiler will not
1056# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1057# So we have to see first whether pthreads are available without
1058# options before we can check whether -Kpthread improves anything.
1059AC_MSG_CHECKING(whether pthreads are available without options)
1060AC_CACHE_VAL(ac_cv_pthread_is_default,
1061[AC_TRY_RUN([
1062#include <pthread.h>
1063
1064void* routine(void* p){return NULL;}
1065
1066int main(){
1067 pthread_t p;
1068 if(pthread_create(&p,NULL,routine,NULL)!=0)
1069 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001070 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001071 return 0;
1072}
1073],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001074[
1075 ac_cv_pthread_is_default=yes
1076 ac_cv_kthread=no
1077 ac_cv_pthread=no
1078],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001079 ac_cv_pthread_is_default=no,
1080 ac_cv_pthread_is_default=no)
1081])
1082AC_MSG_RESULT($ac_cv_pthread_is_default)
1083
1084
1085if test $ac_cv_pthread_is_default = yes
1086then
1087 ac_cv_kpthread=no
1088else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001089# -Kpthread, if available, provides the right #defines
1090# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001091# Some compilers won't report that they do not support -Kpthread,
1092# so we need to run a program to see whether it really made the
1093# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001094AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1095AC_CACHE_VAL(ac_cv_kpthread,
1096[ac_save_cc="$CC"
1097CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001098AC_TRY_RUN([
1099#include <pthread.h>
1100
1101void* routine(void* p){return NULL;}
1102
1103int main(){
1104 pthread_t p;
1105 if(pthread_create(&p,NULL,routine,NULL)!=0)
1106 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001107 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001108 return 0;
1109}
1110],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001111 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001112 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001113 ac_cv_kpthread=no)
1114CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001115AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001116fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001117
Skip Montanarod8d39a02003-07-10 20:44:10 +00001118if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001119then
1120# -Kthread, if available, provides the right #defines
1121# and linker options to make pthread_create available
1122# Some compilers won't report that they do not support -Kthread,
1123# so we need to run a program to see whether it really made the
1124# function available.
1125AC_MSG_CHECKING(whether $CC accepts -Kthread)
1126AC_CACHE_VAL(ac_cv_kthread,
1127[ac_save_cc="$CC"
1128CC="$CC -Kthread"
1129AC_TRY_RUN([
1130#include <pthread.h>
1131
1132void* routine(void* p){return NULL;}
1133
1134int main(){
1135 pthread_t p;
1136 if(pthread_create(&p,NULL,routine,NULL)!=0)
1137 return 1;
1138 (void)pthread_detach(p);
1139 return 0;
1140}
1141],
1142 ac_cv_kthread=yes,
1143 ac_cv_kthread=no,
1144 ac_cv_kthread=no)
1145CC="$ac_save_cc"])
1146AC_MSG_RESULT($ac_cv_kthread)
1147fi
1148
Skip Montanarod8d39a02003-07-10 20:44:10 +00001149if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001150then
1151# -pthread, if available, provides the right #defines
1152# and linker options to make pthread_create available
1153# Some compilers won't report that they do not support -pthread,
1154# so we need to run a program to see whether it really made the
1155# function available.
1156AC_MSG_CHECKING(whether $CC accepts -pthread)
1157AC_CACHE_VAL(ac_cv_thread,
1158[ac_save_cc="$CC"
1159CC="$CC -pthread"
1160AC_TRY_RUN([
1161#include <pthread.h>
1162
1163void* routine(void* p){return NULL;}
1164
1165int main(){
1166 pthread_t p;
1167 if(pthread_create(&p,NULL,routine,NULL)!=0)
1168 return 1;
1169 (void)pthread_detach(p);
1170 return 0;
1171}
1172],
1173 ac_cv_pthread=yes,
1174 ac_cv_pthread=no,
1175 ac_cv_pthread=no)
1176CC="$ac_save_cc"])
1177AC_MSG_RESULT($ac_cv_pthread)
1178fi
1179
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001180# If we have set a CC compiler flag for thread support then
1181# check if it works for CXX, too.
1182ac_cv_cxx_thread=no
1183if test ! -z "$CXX"
1184then
1185AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1186ac_save_cxx="$CXX"
1187
1188if test "$ac_cv_kpthread" = "yes"
1189then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001190 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001191 ac_cv_cxx_thread=yes
1192elif test "$ac_cv_kthread" = "yes"
1193then
1194 CXX="$CXX -Kthread"
1195 ac_cv_cxx_thread=yes
1196elif test "$ac_cv_pthread" = "yes"
1197then
1198 CXX="$CXX -pthread"
1199 ac_cv_cxx_thread=yes
1200fi
1201
1202if test $ac_cv_cxx_thread = yes
1203then
1204 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1205 $CXX -c conftest.$ac_ext 2>&5
1206 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1207 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1208 then
1209 ac_cv_cxx_thread=yes
1210 else
1211 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001212 fi
1213 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001214fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001215AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001216fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001217CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001218
Fred Drakece81d592000-07-09 14:39:29 +00001219dnl # check for ANSI or K&R ("traditional") preprocessor
1220dnl AC_MSG_CHECKING(for C preprocessor type)
1221dnl AC_TRY_COMPILE([
1222dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1223dnl int foo;
1224dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1225dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1226dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001227
Guido van Rossum627b2d71993-12-24 10:39:16 +00001228# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001229AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001230AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1231fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001232ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001233shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001234unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001235sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1236sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001237sys/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 +00001238sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001239sys/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 +00001240sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001241bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001242AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001243AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001244
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001245# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001246AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001247#ifdef HAVE_CURSES_H
1248#include <curses.h>
1249#endif
1250])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001251
Martin v. Löwis11017b12006-01-14 18:12:57 +00001252# On Linux, netlink.h requires asm/types.h
1253AC_CHECK_HEADERS(linux/netlink.h,,,[
1254#ifdef HAVE_ASM_TYPES_H
1255#include <asm/types.h>
1256#endif
1257#ifdef HAVE_SYS_SOCKET_H
1258#include <sys/socket.h>
1259#endif
1260])
1261
Guido van Rossum627b2d71993-12-24 10:39:16 +00001262# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001263was_it_defined=no
1264AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001265AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1266 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1267])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001268AC_MSG_RESULT($was_it_defined)
1269
Neal Norwitz11690112002-07-30 01:08:28 +00001270# Check whether using makedev requires defining _OSF_SOURCE
1271AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001272AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001273 [ makedev(0, 0) ],
1274 ac_cv_has_makedev=yes,
1275 ac_cv_has_makedev=no)
1276if test "$ac_cv_has_makedev" = "no"; then
1277 # we didn't link, try if _OSF_SOURCE will allow us to link
1278 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001279#define _OSF_SOURCE 1
1280#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001281 ],
1282 [ makedev(0, 0) ],
1283 ac_cv_has_makedev=yes,
1284 ac_cv_has_makedev=no)
1285 if test "$ac_cv_has_makedev" = "yes"; then
1286 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1287 fi
1288fi
1289AC_MSG_RESULT($ac_cv_has_makedev)
1290if test "$ac_cv_has_makedev" = "yes"; then
1291 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1292fi
1293
Martin v. Löwis399a6892002-10-04 10:22:02 +00001294# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1295# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1296# defined, but the compiler does not support pragma redefine_extname,
1297# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1298# structures (such as rlimit64) without declaring them. As a
1299# work-around, disable LFS on such configurations
1300
1301use_lfs=yes
1302AC_MSG_CHECKING(Solaris LFS bug)
1303AC_TRY_COMPILE([
1304#define _LARGEFILE_SOURCE 1
1305#define _FILE_OFFSET_BITS 64
1306#include <sys/resource.h>
1307],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1308AC_MSG_RESULT($sol_lfs_bug)
1309if test "$sol_lfs_bug" = "yes"; then
1310 use_lfs=no
1311fi
1312
1313if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001314# Two defines needed to enable largefile support on various platforms
1315# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001316AC_DEFINE(_LARGEFILE_SOURCE, 1,
1317[This must be defined on some systems to enable large file support.])
1318AC_DEFINE(_FILE_OFFSET_BITS, 64,
1319[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001320fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001321
Guido van Rossum300fda71996-08-19 21:58:16 +00001322# Add some code to confdefs.h so that the test for off_t works on SCO
1323cat >> confdefs.h <<\EOF
1324#if defined(SCO_DS)
1325#undef _OFF_T
1326#endif
1327EOF
1328
Guido van Rossumef2255b2000-03-10 22:30:29 +00001329# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001330AC_TYPE_MODE_T
1331AC_TYPE_OFF_T
1332AC_TYPE_PID_T
1333AC_TYPE_SIGNAL
1334AC_TYPE_SIZE_T
1335AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001336AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001337 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001338
Guido van Rossumef2255b2000-03-10 22:30:29 +00001339# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001340# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001341AC_CHECK_SIZEOF(int, 4)
1342AC_CHECK_SIZEOF(long, 4)
1343AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001344AC_CHECK_SIZEOF(short, 2)
1345AC_CHECK_SIZEOF(float, 4)
1346AC_CHECK_SIZEOF(double, 8)
1347AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001348AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001349AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001350
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001351AC_MSG_CHECKING(for long long support)
1352have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001353AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1354 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1355 have_long_long=yes
1356])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001357AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001358if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001359AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001360fi
1361
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001362AC_MSG_CHECKING(for long double support)
1363have_long_double=no
1364AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1365 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1366 have_long_double=yes
1367])
1368AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001369if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001370AC_CHECK_SIZEOF(long double, 12)
1371fi
1372
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001373AC_MSG_CHECKING(for _Bool support)
1374have_c99_bool=no
1375AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1376 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1377 have_c99_bool=yes
1378])
1379AC_MSG_RESULT($have_c99_bool)
1380if test "$have_c99_bool" = yes ; then
1381AC_CHECK_SIZEOF(_Bool, 1)
1382fi
1383
Martin v. Löwisebe26702006-10-02 14:55:51 +00001384AC_CHECK_TYPES(uintptr_t,
1385 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001386 [], [#ifdef HAVE_STDINT_H
1387 #include <stdint.h>
1388 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001389
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001390
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001391# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1392AC_MSG_CHECKING(size of off_t)
1393AC_CACHE_VAL(ac_cv_sizeof_off_t,
1394[AC_TRY_RUN([#include <stdio.h>
1395#include <sys/types.h>
1396main()
1397{
1398 FILE *f=fopen("conftestval", "w");
1399 if (!f) exit(1);
1400 fprintf(f, "%d\n", sizeof(off_t));
1401 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001402}],
1403ac_cv_sizeof_off_t=`cat conftestval`,
1404ac_cv_sizeof_off_t=0,
1405ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001406])
1407AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001408AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1409[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001410
1411AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001412if test "$have_long_long" = yes -a \
1413 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1414 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001415 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1416 [Defined to enable large file support when an off_t is bigger than a long
1417 and long long is available and at least as big as an off_t. You may need
1418 to add some flags for configuration and compilation to enable this mode.
1419 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001420 AC_MSG_RESULT(yes)
1421else
1422 AC_MSG_RESULT(no)
1423fi
1424
Fred Drakea3f6e912000-06-29 20:44:47 +00001425# AC_CHECK_SIZEOF() doesn't include <time.h>.
1426AC_MSG_CHECKING(size of time_t)
1427AC_CACHE_VAL(ac_cv_sizeof_time_t,
1428[AC_TRY_RUN([#include <stdio.h>
1429#include <time.h>
1430main()
1431{
1432 FILE *f=fopen("conftestval", "w");
1433 if (!f) exit(1);
1434 fprintf(f, "%d\n", sizeof(time_t));
1435 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001436}],
1437ac_cv_sizeof_time_t=`cat conftestval`,
1438ac_cv_sizeof_time_t=0,
1439ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001440])
1441AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001442AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1443[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001444
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001445
Trent Mick635f6fb2000-08-23 21:33:05 +00001446# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001447ac_save_cc="$CC"
1448if test "$ac_cv_kpthread" = "yes"
1449then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001450elif test "$ac_cv_kthread" = "yes"
1451then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001452elif test "$ac_cv_pthread" = "yes"
1453then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001454fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001455AC_MSG_CHECKING(for pthread_t)
1456have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001457AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001458AC_MSG_RESULT($have_pthread_t)
1459if test "$have_pthread_t" = yes ; then
1460 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1461 AC_MSG_CHECKING(size of pthread_t)
1462 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1463 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001464#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001465 main()
1466 {
1467 FILE *f=fopen("conftestval", "w");
1468 if (!f) exit(1);
1469 fprintf(f, "%d\n", sizeof(pthread_t));
1470 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001471 }],
1472 ac_cv_sizeof_pthread_t=`cat conftestval`,
1473 ac_cv_sizeof_pthread_t=0,
1474 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001475 ])
1476 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001477 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1478 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001479fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001480CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001481
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001482AC_MSG_CHECKING(for --enable-toolbox-glue)
1483AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001484 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001485
1486if test -z "$enable_toolbox_glue"
1487then
1488 case $ac_sys_system/$ac_sys_release in
1489 Darwin/*)
1490 enable_toolbox_glue="yes";;
1491 *)
1492 enable_toolbox_glue="no";;
1493 esac
1494fi
1495case "$enable_toolbox_glue" in
1496yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001497 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001498 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001499 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1500 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001501 ;;
1502*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001503 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001504 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001505 ;;
1506esac
1507AC_MSG_RESULT($enable_toolbox_glue)
1508
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001509
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001510AC_SUBST(OTHER_LIBTOOL_OPT)
1511case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001512 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001513 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1514 ;;
1515 Darwin/*)
1516 OTHER_LIBTOOL_OPT=""
1517 ;;
1518esac
1519
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001520AC_SUBST(LIBTOOL_CRUFT)
1521case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001522 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001523 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1524 if test "${enable_universalsdk}"; then
1525 :
1526 else
1527 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1528 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001529 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001530 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001531 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001532 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1533 if test ${gcc_version} '<' 4.0
1534 then
1535 LIBTOOL_CRUFT="-lcc_dynamic"
1536 else
1537 LIBTOOL_CRUFT=""
1538 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001539 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001540 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001541 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001542esac
1543
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001544AC_MSG_CHECKING(for --enable-framework)
1545if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001546then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001547 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001548 # -F. is needed to allow linking to the framework while
1549 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001550 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1551 [Define if you want to produce an OpenStep/Rhapsody framework
1552 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001553 AC_MSG_RESULT(yes)
1554else
1555 AC_MSG_RESULT(no)
1556fi
1557
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001558AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001559case $ac_sys_system/$ac_sys_release in
1560 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001561 AC_DEFINE(WITH_DYLD, 1,
1562 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1563 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1564 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001565 AC_MSG_RESULT(always on for Darwin)
1566 ;;
1567 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001568 AC_MSG_RESULT(no)
1569 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001570esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001571
Guido van Rossumac405f61994-09-12 10:56:06 +00001572# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001573AC_SUBST(SO)
1574AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001575AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001576AC_SUBST(CCSHARED)
1577AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001578# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001579# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001580AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001581if test -z "$SO"
1582then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001583 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001584 hp*|HP*)
1585 case `uname -m` in
1586 ia64) SO=.so;;
1587 *) SO=.sl;;
1588 esac
1589 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001590 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001591 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001592 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001593else
1594 # this might also be a termcap variable, see #610332
1595 echo
1596 echo '====================================================================='
1597 echo '+ +'
1598 echo '+ WARNING: You have set SO in your environment. +'
1599 echo '+ Do you really mean to change the extension for shared libraries? +'
1600 echo '+ Continuing in 10 seconds to let you to ponder. +'
1601 echo '+ +'
1602 echo '====================================================================='
1603 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001604fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001605AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001606
Neal Norwitz58e28882006-05-19 07:00:58 +00001607AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001608# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001609# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001610# (Shared libraries in this instance are shared modules to be loaded into
1611# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001612AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001613if test -z "$LDSHARED"
1614then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001615 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001616 AIX*)
1617 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001618 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001619 ;;
1620 BeOS*)
1621 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001622 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001623 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001624 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001625 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001626 SunOS/5*)
1627 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001628 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001629 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001630 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001631 hp*|HP*)
1632 if test "$GCC" = "yes"
1633 then LDSHARED='$(CC) -shared'
1634 else LDSHARED='ld -b';
1635 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001636 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001637 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001638 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1639 if test "$enable_framework" ; then
1640 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001641 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1642 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001643 else
1644 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001645 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001646 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001647 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001648 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1649 if test "$enable_framework" ; then
1650 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001651 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1652 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001653 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001654 # No framework, use the Python app as bundle-loader
1655 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001656 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001657 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001658 Darwin/*)
1659 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1660 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001661
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001662 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001663 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001664 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001665 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001666 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001667 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1668 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001669 else
1670 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1671 if test "$enable_framework" ; then
1672 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001673 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1674 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001675 else
1676 # No framework, use the Python app as bundle-loader
1677 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1678 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1679 fi
1680 fi
1681 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001682 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001683 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001684 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001685 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001686 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001687 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001688 else
1689 LDSHARED="ld -Bshareable ${LDFLAGS}"
1690 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001691 OpenBSD*)
1692 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1693 then
1694 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1695 else
1696 case `uname -r` in
1697 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1698 LDSHARED="ld -Bshareable ${LDFLAGS}"
1699 ;;
1700 *)
1701 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1702 ;;
1703 esac
1704 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001705 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001706 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001707 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001708 then LDSHARED='$(CC) -shared'
1709 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001710 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001711 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001712 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001713 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001714 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001715 *) LDSHARED="ld";;
1716 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001717fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001718AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001719BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001720# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001721# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001722AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001723if test -z "$CCSHARED"
1724then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001725 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001726 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001727 then CCSHARED="-fPIC";
1728 elif test `uname -p` = sparc;
1729 then CCSHARED="-xcode=pic32";
1730 else CCSHARED="-Kpic";
1731 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001732 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001733 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001734 else CCSHARED="+z";
1735 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001736 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001737 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001738 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001739 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001740 if test "$GCC" = "yes"
1741 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001742 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001743 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001744 SCO_SV*)
1745 if test "$GCC" = "yes"
1746 then CCSHARED="-fPIC"
1747 else CCSHARED="-Kpic -belf"
1748 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001749 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001750 IRIX*/6*) case $CC in
1751 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001752 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001753 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001754 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001755 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001756fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001757AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001758# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001759# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001760AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001761if test -z "$LINKFORSHARED"
1762then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001763 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001764 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001765 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001766 LINKFORSHARED="-Wl,-E -Wl,+s";;
1767# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001768 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001769 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001770 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001771 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001772 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1773 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001774 # not used by the core itself but which needs to be in the core so
1775 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001776 # -prebind is no longer used, because it actually seems to give a
1777 # slowdown in stead of a speedup, maybe due to the large number of
1778 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001779
1780 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001781 if test "$enable_framework"
1782 then
Jack Jansenda49e192005-01-07 13:08:22 +00001783 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001784 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001785 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001786 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001787 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001788 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001789 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001790 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1791 then
1792 LINKFORSHARED="-Wl,--export-dynamic"
1793 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001794 SunOS/5*) case $CC in
1795 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001796 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001797 then
1798 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001799 fi;;
1800 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001801 CYGWIN*)
1802 if test $enable_shared = "no"
1803 then
1804 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1805 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001806 QNX*)
1807 # -Wl,-E causes the symbols to be added to the dynamic
1808 # symbol table so that they can be found when a module
1809 # is loaded. -N 2048K causes the stack size to be set
1810 # to 2048 kilobytes so that the stack doesn't overflow
1811 # when running test_compile.py.
1812 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001813 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001814fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001815AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001816
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001817
Neil Schemenauer61c51152001-01-26 16:18:16 +00001818AC_SUBST(CFLAGSFORSHARED)
1819AC_MSG_CHECKING(CFLAGSFORSHARED)
1820if test ! "$LIBRARY" = "$LDLIBRARY"
1821then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001822 case $ac_sys_system in
1823 CYGWIN*)
1824 # Cygwin needs CCSHARED when building extension DLLs
1825 # but not when building the interpreter DLL.
1826 CFLAGSFORSHARED='';;
1827 *)
1828 CFLAGSFORSHARED='$(CCSHARED)'
1829 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001830fi
1831AC_MSG_RESULT($CFLAGSFORSHARED)
1832
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001833# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1834# library (with --enable-shared).
1835# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001836# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1837# if it is not required, since it creates a dependency of the shared library
1838# to LIBS. This, in turn, means that applications linking the shared libpython
1839# don't need to link LIBS explicitly. The default should be only changed
1840# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001841AC_SUBST(SHLIBS)
1842AC_MSG_CHECKING(SHLIBS)
1843case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001844 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001845 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001846esac
1847AC_MSG_RESULT($SHLIBS)
1848
1849
Guido van Rossum627b2d71993-12-24 10:39:16 +00001850# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001851AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1852AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001853
Skip Montanaro4d756af2008-12-01 01:55:22 +00001854# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001855if test "$with_threads" = "yes" -o -z "$with_threads"; then
1856 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1857 # posix4 on Solaris 2.6
1858 # pthread (first!) on Linux
1859fi
1860
Martin v. Löwis19d17342003-06-14 21:03:05 +00001861# check if we need libintl for locale functions
1862AC_CHECK_LIB(intl, textdomain,
1863 AC_DEFINE(WITH_LIBINTL, 1,
1864 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001865
1866# checks for system dependent C++ extensions support
1867case "$ac_sys_system" in
1868 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1869 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1870 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001871 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1872 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1873 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001874 AC_MSG_RESULT(yes)],
1875 [AC_MSG_RESULT(no)]);;
1876 *) ;;
1877esac
1878
Guido van Rossum70c7f481998-03-26 18:44:10 +00001879# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001880# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001881AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001882AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001883
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001884case "$ac_sys_system" in
1885BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001886AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1887;;
1888esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001889
Guido van Rossumc5a39031996-07-31 17:35:03 +00001890AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001891AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001892 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1893[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001894AC_MSG_RESULT($withval)
1895LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001896],
1897[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001898
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001899# Check for use of the system libffi library
1900AC_MSG_CHECKING(for --with-system-ffi)
1901AC_ARG_WITH(system_ffi,
1902 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1903
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001904AC_MSG_RESULT($with_system_ffi)
1905
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001906# Determine if signalmodule should be used.
1907AC_SUBST(USE_SIGNAL_MODULE)
1908AC_SUBST(SIGNAL_OBJS)
1909AC_MSG_CHECKING(for --with-signal-module)
1910AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001911 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001912
1913if test -z "$with_signal_module"
1914then with_signal_module="yes"
1915fi
1916AC_MSG_RESULT($with_signal_module)
1917
1918if test "${with_signal_module}" = "yes"; then
1919 USE_SIGNAL_MODULE=""
1920 SIGNAL_OBJS=""
1921else
1922 USE_SIGNAL_MODULE="#"
1923 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1924fi
1925
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001926# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001927AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001928USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001929
Guido van Rossum54d93d41997-01-22 20:51:58 +00001930AC_MSG_CHECKING(for --with-dec-threads)
1931AC_SUBST(LDLAST)
1932AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001933 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1934[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001935AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001936LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001937if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001938 with_thread="$withval";
1939fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001940[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001941
Martin v. Löwis11437992002-04-12 09:54:03 +00001942# Templates for things AC_DEFINEd more than once.
1943# For a single AC_DEFINE, no template is needed.
1944AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1945AH_TEMPLATE(_REENTRANT,
1946 [Define to force use of thread-safe errno, h_errno, and other functions])
1947AH_TEMPLATE(WITH_THREAD,
1948 [Define if you want to compile in rudimentary thread support])
1949
Guido van Rossum54d93d41997-01-22 20:51:58 +00001950AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001951dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001952AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001953 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001954
Barry Warsawc0d24d82000-06-29 16:12:00 +00001955# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001956dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001957AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001958 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1959 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001960
1961if test -z "$with_threads"
1962then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001963fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001964AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001965
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001966AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001967if test "$with_threads" = "no"
1968then
1969 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001970elif test "$ac_cv_pthread_is_default" = yes
1971then
1972 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001973 # Defining _REENTRANT on system with POSIX threads should not hurt.
1974 AC_DEFINE(_REENTRANT)
1975 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001976 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001977elif test "$ac_cv_kpthread" = "yes"
1978then
1979 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001980 if test "$ac_cv_cxx_thread" = "yes"; then
1981 CXX="$CXX -Kpthread"
1982 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001983 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001984 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001985 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001986elif test "$ac_cv_kthread" = "yes"
1987then
1988 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001989 if test "$ac_cv_cxx_thread" = "yes"; then
1990 CXX="$CXX -Kthread"
1991 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001992 AC_DEFINE(WITH_THREAD)
1993 posix_threads=yes
1994 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001995elif test "$ac_cv_pthread" = "yes"
1996then
1997 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001998 if test "$ac_cv_cxx_thread" = "yes"; then
1999 CXX="$CXX -pthread"
2000 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002001 AC_DEFINE(WITH_THREAD)
2002 posix_threads=yes
2003 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002004else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002005 if test ! -z "$with_threads" -a -d "$with_threads"
2006 then LDFLAGS="$LDFLAGS -L$with_threads"
2007 fi
2008 if test ! -z "$withval" -a -d "$withval"
2009 then LDFLAGS="$LDFLAGS -L$withval"
2010 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002011
2012 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002013 # define _POSIX_THREADS in unistd.h. Some apparently don't
2014 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002015 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2016 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002017 [
2018#include <unistd.h>
2019#ifdef _POSIX_THREADS
2020yes
2021#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002022 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2023 AC_MSG_RESULT($unistd_defines_pthreads)
2024
Martin v. Löwis130fb172001-07-19 11:00:41 +00002025 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002026 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2027 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002028 AC_DEFINE(HURD_C_THREADS, 1,
2029 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002030 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002031 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002032 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2033 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002034 AC_DEFINE(MACH_C_THREADS, 1,
2035 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002036 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002037 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002038 AC_ARG_WITH([pth],
2039 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2040 [AC_MSG_RESULT($withval)
2041 AC_DEFINE([WITH_THREAD])
2042 AC_DEFINE([HAVE_PTH], 1,
2043 [Define if you have GNU PTH threads.])
2044 LIBS="-lpth $LIBS"
2045 THREADOBJ="Python/thread.o"],
2046 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002047
2048 # Just looking for pthread_create in libpthread is not enough:
2049 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2050 # So we really have to include pthread.h, and then link.
2051 _libs=$LIBS
2052 LIBS="$LIBS -lpthread"
2053 AC_MSG_CHECKING([for pthread_create in -lpthread])
2054 AC_TRY_LINK([#include <pthread.h>
2055
2056void * start_routine (void *arg) { exit (0); }], [
2057pthread_create (NULL, NULL, start_routine, NULL)], [
2058 AC_MSG_RESULT(yes)
2059 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002060 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002061 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002062 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002063 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002064 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002065 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002066 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2067 AC_DEFINE(ATHEOS_THREADS, 1,
2068 [Define this if you have AtheOS threads.])
2069 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002070 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002071 AC_DEFINE(BEOS_THREADS, 1,
2072 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002073 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002074 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002075 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002076 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002077 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002078 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002079 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002080 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002081 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002082 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002083 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002084 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002085 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002086 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002087 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002088 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002089 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002090 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002091 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002092
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002093 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2094 LIBS="$LIBS -lmpc"
2095 THREADOBJ="Python/thread.o"
2096 USE_THREAD_MODULE=""])
2097
2098 if test "$posix_threads" != "yes"; then
2099 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2100 LIBS="$LIBS -lthread"
2101 THREADOBJ="Python/thread.o"
2102 USE_THREAD_MODULE=""])
2103 fi
2104
2105 if test "$USE_THREAD_MODULE" != "#"
2106 then
2107 # If the above checks didn't disable threads, (at least) OSF1
2108 # needs this '-threads' argument during linking.
2109 case $ac_sys_system in
2110 OSF1) LDLAST=-threads;;
2111 esac
2112 fi
2113fi
2114
2115if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002116 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002117 AC_DEFINE(_POSIX_THREADS, 1,
2118 [Define if you have POSIX threads,
2119 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002120 fi
2121
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002122 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2123 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002124 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2125 Defined for Solaris 2.6 bug in pthread header.)
2126 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002127 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002128 Define if the Posix semaphores do not work on your system)
2129 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002130 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2131 Define if the Posix semaphores do not work on your system)
2132 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002133 esac
2134
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002135 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2136 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2137 [AC_TRY_RUN([#include <pthread.h>
2138 void *foo(void *parm) {
2139 return NULL;
2140 }
2141 main() {
2142 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002143 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002144 if (pthread_attr_init(&attr)) exit(-1);
2145 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002146 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002147 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002148 }],
2149 ac_cv_pthread_system_supported=yes,
2150 ac_cv_pthread_system_supported=no,
2151 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002152 ])
2153 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2154 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002155 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002156 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002157 AC_CHECK_FUNCS(pthread_sigmask,
2158 [case $ac_sys_system in
2159 CYGWIN*)
2160 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2161 [Define if pthread_sigmask() does not work on your system.])
2162 ;;
2163 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002164fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002165
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002166
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002167# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002168AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002169AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002170AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002171[ --enable-ipv6 Enable ipv6 (with ipv4) support
2172 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002173[ case "$enableval" in
2174 no)
2175 AC_MSG_RESULT(no)
2176 ipv6=no
2177 ;;
2178 *) AC_MSG_RESULT(yes)
2179 AC_DEFINE(ENABLE_IPV6)
2180 ipv6=yes
2181 ;;
2182 esac ],
2183
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002184[
2185dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002186 AC_TRY_RUN([ /* AF_INET6 available check */
2187#include <sys/types.h>
2188#include <sys/socket.h>
2189main()
2190{
2191 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2192 exit(1);
2193 else
2194 exit(0);
2195}
2196],
2197 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002198 ipv6=yes,
2199 AC_MSG_RESULT(no)
2200 ipv6=no,
2201 AC_MSG_RESULT(no)
2202 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002203)
2204
2205if test "$ipv6" = "yes"; then
2206 AC_MSG_CHECKING(if RFC2553 API is available)
2207 AC_TRY_COMPILE([#include <sys/types.h>
2208#include <netinet/in.h>],
2209 [struct sockaddr_in6 x;
2210x.sin6_scope_id;],
2211 AC_MSG_RESULT(yes)
2212 ipv6=yes,
2213 AC_MSG_RESULT(no, IPv6 disabled)
2214 ipv6=no)
2215fi
2216
2217if test "$ipv6" = "yes"; then
2218 AC_DEFINE(ENABLE_IPV6)
2219fi
2220])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002221
2222ipv6type=unknown
2223ipv6lib=none
2224ipv6trylibc=no
2225
2226if test "$ipv6" = "yes"; then
2227 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002228 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2229 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002230 case $i in
2231 inria)
2232 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002233 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002234#include <netinet/in.h>
2235#ifdef IPV6_INRIA_VERSION
2236yes
2237#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002238 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002239 ;;
2240 kame)
2241 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002242 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002243#include <netinet/in.h>
2244#ifdef __KAME__
2245yes
2246#endif],
2247 [ipv6type=$i;
2248 ipv6lib=inet6
2249 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002250 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002251 ;;
2252 linux-glibc)
2253 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002254 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002255#include <features.h>
2256#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2257yes
2258#endif],
2259 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002260 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002261 ;;
2262 linux-inet6)
2263 dnl http://www.v6.linux.or.jp/
2264 if test -d /usr/inet6; then
2265 ipv6type=$i
2266 ipv6lib=inet6
2267 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002268 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002269 fi
2270 ;;
2271 solaris)
2272 if test -f /etc/netconfig; then
2273 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2274 ipv6type=$i
2275 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002276 fi
2277 fi
2278 ;;
2279 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002280 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002281#include <sys/param.h>
2282#ifdef _TOSHIBA_INET6
2283yes
2284#endif],
2285 [ipv6type=$i;
2286 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002287 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002288 ;;
2289 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002290 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002291#include </usr/local/v6/include/sys/v6config.h>
2292#ifdef __V6D__
2293yes
2294#endif],
2295 [ipv6type=$i;
2296 ipv6lib=v6;
2297 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002298 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002299 ;;
2300 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002301 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002302#include <sys/param.h>
2303#ifdef _ZETA_MINAMI_INET6
2304yes
2305#endif],
2306 [ipv6type=$i;
2307 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002308 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002309 ;;
2310 esac
2311 if test "$ipv6type" != "unknown"; then
2312 break
2313 fi
2314 done
2315 AC_MSG_RESULT($ipv6type)
2316fi
2317
2318if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2319 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2320 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2321 echo "using lib$ipv6lib"
2322 else
2323 if test $ipv6trylibc = "yes"; then
2324 echo "using libc"
2325 else
2326 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2327 echo "You need to fetch lib$ipv6lib.a from appropriate"
2328 echo 'ipv6 kit and compile beforehand.'
2329 exit 1
2330 fi
2331 fi
2332fi
2333
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002334AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2335AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2336 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2337 AC_MSG_RESULT(yes),
2338 AC_MSG_RESULT(no)
2339)
2340
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002341# Check for --with-doc-strings
2342AC_MSG_CHECKING(for --with-doc-strings)
2343AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002344 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002345
2346if test -z "$with_doc_strings"
2347then with_doc_strings="yes"
2348fi
2349if test "$with_doc_strings" != "no"
2350then
2351 AC_DEFINE(WITH_DOC_STRINGS, 1,
2352 [Define if you want documentation strings in extension modules])
2353fi
2354AC_MSG_RESULT($with_doc_strings)
2355
Neil Schemenauera35c6882001-02-27 04:45:05 +00002356# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002357AC_MSG_CHECKING(for --with-tsc)
2358AC_ARG_WITH(tsc,
2359[ --with(out)-tsc enable/disable timestamp counter profile], [
2360if test "$withval" != no
2361then
2362 AC_DEFINE(WITH_TSC, 1,
2363 [Define to profile with the Pentium timestamp counter])
2364 AC_MSG_RESULT(yes)
2365else AC_MSG_RESULT(no)
2366fi],
2367[AC_MSG_RESULT(no)])
2368
2369# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002370AC_MSG_CHECKING(for --with-pymalloc)
2371AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002372 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002373
2374if test -z "$with_pymalloc"
2375then with_pymalloc="yes"
2376fi
2377if test "$with_pymalloc" != "no"
2378then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002379 AC_DEFINE(WITH_PYMALLOC, 1,
2380 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002381fi
2382AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002383
Barry Warsawef82cd72000-06-30 16:21:01 +00002384# Check for --with-wctype-functions
2385AC_MSG_CHECKING(for --with-wctype-functions)
2386AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002387 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2388[
Barry Warsawef82cd72000-06-30 16:21:01 +00002389if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390then
2391 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2392 [Define if you want wctype.h functions to be used instead of the
2393 one supplied by Python itself. (see Include/unicodectype.h).])
2394 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002395else AC_MSG_RESULT(no)
2396fi],
2397[AC_MSG_RESULT(no)])
2398
Guido van Rossum68242b51996-05-28 22:53:03 +00002399# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002400AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002401DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002402
Guido van Rossume97ee181999-12-20 21:27:22 +00002403# the dlopen() function means we might want to use dynload_shlib.o. some
2404# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002405AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002406
2407# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2408# loading of modules.
2409AC_SUBST(DYNLOADFILE)
2410AC_MSG_CHECKING(DYNLOADFILE)
2411if test -z "$DYNLOADFILE"
2412then
2413 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002414 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2415 if test "$ac_cv_func_dlopen" = yes
2416 then DYNLOADFILE="dynload_shlib.o"
2417 else DYNLOADFILE="dynload_aix.o"
2418 fi
2419 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002420 BeOS*) DYNLOADFILE="dynload_beos.o";;
2421 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002422 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2423 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002424 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002425 *)
2426 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2427 # out any dynamic loading
2428 if test "$ac_cv_func_dlopen" = yes
2429 then DYNLOADFILE="dynload_shlib.o"
2430 else DYNLOADFILE="dynload_stub.o"
2431 fi
2432 ;;
2433 esac
2434fi
2435AC_MSG_RESULT($DYNLOADFILE)
2436if test "$DYNLOADFILE" != "dynload_stub.o"
2437then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002438 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2439 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002440fi
2441
Jack Jansenc49e5b72001-06-19 15:00:23 +00002442# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2443
2444AC_SUBST(MACHDEP_OBJS)
2445AC_MSG_CHECKING(MACHDEP_OBJS)
2446if test -z "$MACHDEP_OBJS"
2447then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002448 MACHDEP_OBJS=$extra_machdep_objs
2449else
2450 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002451fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002452AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002453
Guido van Rossum627b2d71993-12-24 10:39:16 +00002454# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002455AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2456 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002457 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002458 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002459 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002460 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002461 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002462 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002463 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002464 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002465 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002466 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002467
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002468# For some functions, having a definition is not sufficient, since
2469# we want to take their address.
2470AC_MSG_CHECKING(for chroot)
2471AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2472 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2473 AC_MSG_RESULT(yes),
2474 AC_MSG_RESULT(no)
2475)
2476AC_MSG_CHECKING(for link)
2477AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2478 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2479 AC_MSG_RESULT(yes),
2480 AC_MSG_RESULT(no)
2481)
2482AC_MSG_CHECKING(for symlink)
2483AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2484 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2485 AC_MSG_RESULT(yes),
2486 AC_MSG_RESULT(no)
2487)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002488AC_MSG_CHECKING(for fchdir)
2489AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2490 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2491 AC_MSG_RESULT(yes),
2492 AC_MSG_RESULT(no)
2493)
2494AC_MSG_CHECKING(for fsync)
2495AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002496 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002497 AC_MSG_RESULT(yes),
2498 AC_MSG_RESULT(no)
2499)
2500AC_MSG_CHECKING(for fdatasync)
2501AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2502 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2503 AC_MSG_RESULT(yes),
2504 AC_MSG_RESULT(no)
2505)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002506AC_MSG_CHECKING(for epoll)
2507AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2508 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2509 AC_MSG_RESULT(yes),
2510 AC_MSG_RESULT(no)
2511)
2512AC_MSG_CHECKING(for kqueue)
2513AC_TRY_COMPILE([
2514#include <sys/types.h>
2515#include <sys/event.h>
2516 ], int x=kqueue(),
2517 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2518 AC_MSG_RESULT(yes),
2519 AC_MSG_RESULT(no)
2520)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002521# On some systems (eg. FreeBSD 5), we would find a definition of the
2522# functions ctermid_r, setgroups in the library, but no prototype
2523# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2524# address to avoid compiler warnings and potential miscompilations
2525# because of the missing prototypes.
2526
2527AC_MSG_CHECKING(for ctermid_r)
2528AC_TRY_COMPILE([
2529#include "confdefs.h"
2530#include <stdio.h>
2531], void* p = ctermid_r,
2532 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2533 AC_MSG_RESULT(yes),
2534 AC_MSG_RESULT(no)
2535)
2536
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002537AC_MSG_CHECKING(for flock)
2538AC_TRY_COMPILE([
2539#include "confdefs.h"
2540#include <sys/file.h>
2541], void* p = flock,
2542 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2543 AC_MSG_RESULT(yes),
2544 AC_MSG_RESULT(no)
2545)
2546
2547AC_MSG_CHECKING(for getpagesize)
2548AC_TRY_COMPILE([
2549#include "confdefs.h"
2550#include <unistd.h>
2551], void* p = getpagesize,
2552 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2553 AC_MSG_RESULT(yes),
2554 AC_MSG_RESULT(no)
2555)
2556
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002557dnl check for true
2558AC_CHECK_PROGS(TRUE, true, /bin/true)
2559
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002560dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2561dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002562AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002563 AC_CHECK_LIB(resolv, inet_aton)
2564)
2565
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002566# On Tru64, chflags seems to be present, but calling it will
2567# exit Python
2568AC_MSG_CHECKING(for chflags)
2569AC_TRY_RUN([
2570#include <sys/stat.h>
2571#include <unistd.h>
2572int main(int argc, char*argv[])
2573{
2574 if(chflags(argv[0], 0) != 0)
2575 return 1;
2576 return 0;
2577}
2578],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2579 AC_MSG_RESULT(yes),
2580 AC_MSG_RESULT(no)
2581)
2582
2583AC_MSG_CHECKING(for lchflags)
2584AC_TRY_RUN([
2585#include <sys/stat.h>
2586#include <unistd.h>
2587int main(int argc, char*argv[])
2588{
2589 if(lchflags(argv[0], 0) != 0)
2590 return 1;
2591 return 0;
2592}
2593],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2594 AC_MSG_RESULT(yes),
2595 AC_MSG_RESULT(no)
2596)
2597
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002598dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002599dnl
2600dnl On MacOSX the linker will search for dylibs on the entire linker path
2601dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2602dnl to revert to a more traditional unix behaviour and make it possible to
2603dnl override the system libz with a local static library of libz. Temporarily
2604dnl add that flag to our CFLAGS as well to ensure that we check the version
2605dnl of libz that will be used by setup.py.
2606dnl The -L/usr/local/lib is needed as wel to get the same compilation
2607dnl environment as setup.py (and leaving it out can cause configure to use the
2608dnl wrong version of the library)
2609case $ac_sys_system/$ac_sys_release in
2610Darwin/*)
2611 _CUR_CFLAGS="${CFLAGS}"
2612 _CUR_LDFLAGS="${LDFLAGS}"
2613 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2614 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2615 ;;
2616esac
2617
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002618AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2619
Ronald Oussorenf8752642006-07-06 10:13:35 +00002620case $ac_sys_system/$ac_sys_release in
2621Darwin/*)
2622 CFLAGS="${_CUR_CFLAGS}"
2623 LDFLAGS="${_CUR_LDFLAGS}"
2624 ;;
2625esac
2626
Martin v. Löwise9416172003-05-03 10:12:45 +00002627AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002628AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002629#include "confdefs.h"
2630#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002631], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002632 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2633 AC_MSG_RESULT(yes),
2634 AC_MSG_RESULT(no)
2635)
2636
2637AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002638AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002639#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002640#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002641#include <sys/socket.h>
2642#include <netinet/in.h>
2643#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002644], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002645 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2646 AC_MSG_RESULT(yes),
2647 AC_MSG_RESULT(no)
2648)
2649
2650AC_MSG_CHECKING(for inet_pton)
2651AC_TRY_COMPILE([
2652#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002653#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002654#include <sys/socket.h>
2655#include <netinet/in.h>
2656#include <arpa/inet.h>
2657], void* p = inet_pton,
2658 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2659 AC_MSG_RESULT(yes),
2660 AC_MSG_RESULT(no)
2661)
2662
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002663# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002664AC_MSG_CHECKING(for setgroups)
2665AC_TRY_COMPILE([
2666#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002667#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002668#ifdef HAVE_GRP_H
2669#include <grp.h>
2670#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002671],
2672void* p = setgroups,
2673 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2674 AC_MSG_RESULT(yes),
2675 AC_MSG_RESULT(no)
2676)
2677
Fred Drake8cef4cf2000-06-28 16:40:38 +00002678# check for openpty and forkpty
2679
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002680AC_CHECK_FUNCS(openpty,,
2681 AC_CHECK_LIB(util,openpty,
2682 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2683 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2684 )
2685)
2686AC_CHECK_FUNCS(forkpty,,
2687 AC_CHECK_LIB(util,forkpty,
2688 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2689 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2690 )
2691)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002692
Brett Cannonaa5778d2008-03-18 04:09:00 +00002693# Stuff for expat.
2694AC_CHECK_FUNCS(memmove)
2695
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002696# check for long file support functions
2697AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2698
Brett Cannonaa5778d2008-03-18 04:09:00 +00002699AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002700AC_CHECK_FUNCS(getpgrp,
2701 AC_TRY_COMPILE([#include <unistd.h>],
2702 [getpgrp(0);],
2703 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2704 [Define if getpgrp() must be called as getpgrp(0).])
2705 )
2706)
Jack Jansen150753c2003-03-29 22:07:47 +00002707AC_CHECK_FUNCS(setpgrp,
2708 AC_TRY_COMPILE([#include <unistd.h>],
2709 [setpgrp(0,0);],
2710 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2711 [Define if setpgrp() must be called as setpgrp(0, 0).])
2712 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002713)
2714AC_CHECK_FUNCS(gettimeofday,
2715 AC_TRY_COMPILE([#include <sys/time.h>],
2716 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2717 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2718 [Define if gettimeofday() does not have second (timezone) argument
2719 This is the case on Motorola V4 (R40V4.2)])
2720 )
2721)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002722
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002723AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002724AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002725#if defined(MAJOR_IN_MKDEV)
2726#include <sys/mkdev.h>
2727#elif defined(MAJOR_IN_SYSMACROS)
2728#include <sys/sysmacros.h>
2729#else
2730#include <sys/types.h>
2731#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002732],[
2733 makedev(major(0),minor(0));
2734],[
2735 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2736 [Define to 1 if you have the device macros.])
2737 AC_MSG_RESULT(yes)
2738],[
2739 AC_MSG_RESULT(no)
2740])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002741
2742# On OSF/1 V5.1, getaddrinfo is available, but a define
2743# for [no]getaddrinfo in netdb.h.
2744AC_MSG_CHECKING(for getaddrinfo)
2745AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002746#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002747#include <sys/socket.h>
2748#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002749#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002750],[
2751getaddrinfo(NULL, NULL, NULL, NULL);
2752], [
2753AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002754AC_MSG_CHECKING(getaddrinfo bug)
2755AC_TRY_RUN([
2756#include <sys/types.h>
2757#include <netdb.h>
2758#include <string.h>
2759#include <sys/socket.h>
2760#include <netinet/in.h>
2761
2762main()
2763{
2764 int passive, gaierr, inet4 = 0, inet6 = 0;
2765 struct addrinfo hints, *ai, *aitop;
2766 char straddr[INET6_ADDRSTRLEN], strport[16];
2767
2768 for (passive = 0; passive <= 1; passive++) {
2769 memset(&hints, 0, sizeof(hints));
2770 hints.ai_family = AF_UNSPEC;
2771 hints.ai_flags = passive ? AI_PASSIVE : 0;
2772 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002773 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002774 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2775 (void)gai_strerror(gaierr);
2776 goto bad;
2777 }
2778 for (ai = aitop; ai; ai = ai->ai_next) {
2779 if (ai->ai_addr == NULL ||
2780 ai->ai_addrlen == 0 ||
2781 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2782 straddr, sizeof(straddr), strport, sizeof(strport),
2783 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2784 goto bad;
2785 }
2786 switch (ai->ai_family) {
2787 case AF_INET:
2788 if (strcmp(strport, "54321") != 0) {
2789 goto bad;
2790 }
2791 if (passive) {
2792 if (strcmp(straddr, "0.0.0.0") != 0) {
2793 goto bad;
2794 }
2795 } else {
2796 if (strcmp(straddr, "127.0.0.1") != 0) {
2797 goto bad;
2798 }
2799 }
2800 inet4++;
2801 break;
2802 case AF_INET6:
2803 if (strcmp(strport, "54321") != 0) {
2804 goto bad;
2805 }
2806 if (passive) {
2807 if (strcmp(straddr, "::") != 0) {
2808 goto bad;
2809 }
2810 } else {
2811 if (strcmp(straddr, "::1") != 0) {
2812 goto bad;
2813 }
2814 }
2815 inet6++;
2816 break;
2817 case AF_UNSPEC:
2818 goto bad;
2819 break;
2820 default:
2821 /* another family support? */
2822 break;
2823 }
2824 }
2825 }
2826
2827 if (!(inet4 == 0 || inet4 == 2))
2828 goto bad;
2829 if (!(inet6 == 0 || inet6 == 2))
2830 goto bad;
2831
2832 if (aitop)
2833 freeaddrinfo(aitop);
2834 exit(0);
2835
2836 bad:
2837 if (aitop)
2838 freeaddrinfo(aitop);
2839 exit(1);
2840}
2841],
2842AC_MSG_RESULT(good)
2843buggygetaddrinfo=no,
2844AC_MSG_RESULT(buggy)
2845buggygetaddrinfo=yes,
2846AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002847buggygetaddrinfo=yes)], [
2848AC_MSG_RESULT(no)
2849buggygetaddrinfo=yes
2850])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002851
2852if test "$buggygetaddrinfo" = "yes"; then
2853 if test "$ipv6" = "yes"; then
2854 echo 'Fatal: You must get working getaddrinfo() function.'
2855 echo ' or you can specify "--disable-ipv6"'.
2856 exit 1
2857 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002858else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002859 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002860fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002861AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002862
Guido van Rossum627b2d71993-12-24 10:39:16 +00002863# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002864AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002865AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002866AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002867AC_CHECK_MEMBERS([struct stat.st_rdev])
2868AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002869AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002870AC_CHECK_MEMBERS([struct stat.st_gen])
2871AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002872AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002873
2874AC_MSG_CHECKING(for time.h that defines altzone)
2875AC_CACHE_VAL(ac_cv_header_time_altzone,
2876[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2877 ac_cv_header_time_altzone=yes,
2878 ac_cv_header_time_altzone=no)])
2879AC_MSG_RESULT($ac_cv_header_time_altzone)
2880if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002881 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002882fi
2883
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002884was_it_defined=no
2885AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002886AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002887#include <sys/types.h>
2888#include <sys/select.h>
2889#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002890], [;], [
2891 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2892 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2893 (which you can't on SCO ODT 3.0).])
2894 was_it_defined=yes
2895])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002896AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002897
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002898AC_MSG_CHECKING(for addrinfo)
2899AC_CACHE_VAL(ac_cv_struct_addrinfo,
2900AC_TRY_COMPILE([
2901# include <netdb.h>],
2902 [struct addrinfo a],
2903 ac_cv_struct_addrinfo=yes,
2904 ac_cv_struct_addrinfo=no))
2905AC_MSG_RESULT($ac_cv_struct_addrinfo)
2906if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002907 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002908fi
2909
2910AC_MSG_CHECKING(for sockaddr_storage)
2911AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2912AC_TRY_COMPILE([
2913# include <sys/types.h>
2914# include <sys/socket.h>],
2915 [struct sockaddr_storage s],
2916 ac_cv_struct_sockaddr_storage=yes,
2917 ac_cv_struct_sockaddr_storage=no))
2918AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2919if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002920 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002921fi
2922
Guido van Rossum627b2d71993-12-24 10:39:16 +00002923# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002924
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002926AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002927
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002928works=no
2929AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002930AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2931 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2932)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002933AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002934
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002935works=no
2936AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002937AC_TRY_COMPILE([], [signed char c;], works=yes,
2938 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2939)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002940AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002941
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002942have_prototypes=no
2943AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002944AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2945 AC_DEFINE(HAVE_PROTOTYPES, 1,
2946 [Define if your compiler supports function prototype])
2947 have_prototypes=yes
2948])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002949AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002950
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002951works=no
2952AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002953AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002954#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002955int foo(int x, ...) {
2956 va_list va;
2957 va_start(va, x);
2958 va_arg(va, int);
2959 va_arg(va, char *);
2960 va_arg(va, double);
2961 return 0;
2962}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963], [return foo(10, "", 3.14);], [
2964 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2965 [Define if your compiler supports variable length function prototypes
2966 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2967 works=yes
2968])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002969AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002970
Dave Cole331708b2004-08-09 04:51:41 +00002971# check for socketpair
2972AC_MSG_CHECKING(for socketpair)
2973AC_TRY_COMPILE([
2974#include <sys/types.h>
2975#include <sys/socket.h>
2976], void *x=socketpair,
2977 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2978 AC_MSG_RESULT(yes),
2979 AC_MSG_RESULT(no)
2980)
2981
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002982# check if sockaddr has sa_len member
2983AC_MSG_CHECKING(if sockaddr has sa_len member)
2984AC_TRY_COMPILE([#include <sys/types.h>
2985#include <sys/socket.h>],
2986[struct sockaddr x;
2987x.sa_len = 0;],
2988 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002989 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002990 AC_MSG_RESULT(no))
2991
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992va_list_is_array=no
2993AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002994AC_TRY_COMPILE([
2995#ifdef HAVE_STDARG_PROTOTYPES
2996#include <stdarg.h>
2997#else
2998#include <varargs.h>
2999#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003000], [va_list list1, list2; list1 = list2;], , [
3001 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3002 va_list_is_array=yes
3003])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003004AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003005
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003006# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003007AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3008 [Define this if you have some version of gethostbyname_r()])
3009
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003010AC_CHECK_FUNC(gethostbyname_r, [
3011 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3012 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3013 OLD_CFLAGS=$CFLAGS
3014 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3015 AC_TRY_COMPILE([
3016# include <netdb.h>
3017 ], [
3018 char *name;
3019 struct hostent *he, *res;
3020 char buffer[2048];
3021 int buflen = 2048;
3022 int h_errnop;
3023
3024 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3025 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003026 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003027 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3028 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003029 AC_MSG_RESULT(yes)
3030 ], [
3031 AC_MSG_RESULT(no)
3032 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3033 AC_TRY_COMPILE([
3034# include <netdb.h>
3035 ], [
3036 char *name;
3037 struct hostent *he;
3038 char buffer[2048];
3039 int buflen = 2048;
3040 int h_errnop;
3041
3042 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3043 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003044 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003045 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3046 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003047 AC_MSG_RESULT(yes)
3048 ], [
3049 AC_MSG_RESULT(no)
3050 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3051 AC_TRY_COMPILE([
3052# include <netdb.h>
3053 ], [
3054 char *name;
3055 struct hostent *he;
3056 struct hostent_data data;
3057
3058 (void) gethostbyname_r(name, he, &data);
3059 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003060 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003061 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3062 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003063 AC_MSG_RESULT(yes)
3064 ], [
3065 AC_MSG_RESULT(no)
3066 ])
3067 ])
3068 ])
3069 CFLAGS=$OLD_CFLAGS
3070], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003071 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003072])
3073AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3074AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3075AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003076AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003077AC_SUBST(HAVE_GETHOSTBYNAME)
3078
Guido van Rossum627b2d71993-12-24 10:39:16 +00003079# checks for system services
3080# (none yet)
3081
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003082# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003083AC_CHECK_FUNC(__fpu_control,
3084 [],
3085 [AC_CHECK_LIB(ieee, __fpu_control)
3086])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003087
Guido van Rossum93274221997-05-09 02:42:00 +00003088# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003089AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003090AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003091 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3092[
Guido van Rossum93274221997-05-09 02:42:00 +00003093if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003094then
3095 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3096 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3097 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003098else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003099fi],
3100[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003101
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003102# check for --with-libm=...
3103AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003104case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003105Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003106BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003107*) LIBM=-lm
3108esac
Guido van Rossum93274221997-05-09 02:42:00 +00003109AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003110AC_ARG_WITH(libm,
3111 AC_HELP_STRING(--with-libm=STRING, math library),
3112[
Guido van Rossum93274221997-05-09 02:42:00 +00003113if test "$withval" = no
3114then LIBM=
3115 AC_MSG_RESULT(force LIBM empty)
3116elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003117then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003118 AC_MSG_RESULT(set LIBM="$withval")
3119else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003120fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003121[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003122
3123# check for --with-libc=...
3124AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003125AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003126AC_ARG_WITH(libc,
3127 AC_HELP_STRING(--with-libc=STRING, C library),
3128[
Guido van Rossum93274221997-05-09 02:42:00 +00003129if test "$withval" = no
3130then LIBC=
3131 AC_MSG_RESULT(force LIBC empty)
3132elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003133then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003134 AC_MSG_RESULT(set LIBC="$withval")
3135else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003136fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003137[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003138
Christian Heimes0a8143f2007-12-18 23:22:54 +00003139# ************************************
3140# * Check for mathematical functions *
3141# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003142
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003143LIBS_SAVE=$LIBS
3144LIBS="$LIBS $LIBM"
3145
Mark Dickinson04b27232009-01-04 12:29:36 +00003146# Detect whether system arithmetic is subject to x87-style double
3147# rounding issues. The result of this test has little meaning on non
3148# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3149# mode is round-to-nearest and double rounding issues are present, and
3150# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3151AC_MSG_CHECKING(for x87-style double rounding)
3152AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3153AC_TRY_RUN([
3154#include <stdlib.h>
3155#include <math.h>
3156int main() {
3157 volatile double x, y, z;
3158 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3159 x = 0.99999999999999989; /* 1-2**-53 */
3160 y = 1./x;
3161 if (y != 1.)
3162 exit(0);
3163 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3164 x = 1e16;
3165 y = 2.99999;
3166 z = x + y;
3167 if (z != 1e16+4.)
3168 exit(0);
3169 /* both tests show evidence of double rounding */
3170 exit(1);
3171}
3172],
3173ac_cv_x87_double_rounding=no,
3174ac_cv_x87_double_rounding=yes,
3175ac_cv_x87_double_rounding=no)])
3176AC_MSG_RESULT($ac_cv_x87_double_rounding)
3177if test "$ac_cv_x87_double_rounding" = yes
3178then
3179 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3180 [Define if arithmetic is subject to x87-style double rounding issue])
3181fi
3182
3183
Mark Dickinson265d7382008-04-21 22:32:24 +00003184# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3185# -0. on some architectures.
3186AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3187AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3188AC_TRY_RUN([
3189#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003190#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003191int main() {
3192 /* return 0 if either negative zeros don't exist
3193 on this platform or if negative zeros exist
3194 and tanh(-0.) == -0. */
3195 if (atan2(0., -1.) == atan2(-0., -1.) ||
3196 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3197 else exit(1);
3198}
3199],
3200ac_cv_tanh_preserves_zero_sign=yes,
3201ac_cv_tanh_preserves_zero_sign=no,
3202ac_cv_tanh_preserves_zero_sign=no)])
3203AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3204if test "$ac_cv_tanh_preserves_zero_sign" = yes
3205then
3206 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3207 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3208fi
3209
Mark Dickinson1de33272009-01-04 20:19:41 +00003210AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
Mark Dickinsond181e3a2009-01-04 13:57:26 +00003211AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003212
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003213LIBS=$LIBS_SAVE
3214
Guido van Rossumef2255b2000-03-10 22:30:29 +00003215# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003216AC_CHECK_HEADER(wchar.h, [
3217 AC_DEFINE(HAVE_WCHAR_H, 1,
3218 [Define if the compiler provides a wchar.h header file.])
3219 wchar_h="yes"
3220],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003221wchar_h="no"
3222)
3223
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003224# determine wchar_t size
3225if test "$wchar_h" = yes
3226then
Guido van Rossum67b26592001-10-20 14:21:45 +00003227 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003228fi
3229
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003230AC_MSG_CHECKING(for UCS-4 tcl)
3231have_ucs4_tcl=no
3232AC_TRY_COMPILE([
3233#include <tcl.h>
3234#if TCL_UTF_MAX != 6
3235# error "NOT UCS4_TCL"
3236#endif], [], [
3237 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3238 have_ucs4_tcl=yes
3239])
3240AC_MSG_RESULT($have_ucs4_tcl)
3241
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003242# check whether wchar_t is signed or not
3243if test "$wchar_h" = yes
3244then
3245 # check whether wchar_t is signed or not
3246 AC_MSG_CHECKING(whether wchar_t is signed)
3247 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3248 AC_TRY_RUN([
3249 #include <wchar.h>
3250 int main()
3251 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003252 /* Success: exit code 0 */
3253 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003254 }
3255 ],
3256 ac_cv_wchar_t_signed=yes,
3257 ac_cv_wchar_t_signed=no,
3258 ac_cv_wchar_t_signed=yes)])
3259 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3260fi
3261
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003262AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003263dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003264AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003265 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3266 [],
3267 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003268
3269if test $enable_unicode = yes
3270then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003271 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003272 case "$have_ucs4_tcl" in
3273 yes) enable_unicode="ucs4"
3274 ;;
3275 *) enable_unicode="ucs2"
3276 ;;
3277 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003278fi
3279
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003280AH_TEMPLATE(Py_UNICODE_SIZE,
3281 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003282case "$enable_unicode" in
3283ucs2) unicode_size="2"
3284 AC_DEFINE(Py_UNICODE_SIZE,2)
3285 ;;
3286ucs4) unicode_size="4"
3287 AC_DEFINE(Py_UNICODE_SIZE,4)
3288 ;;
3289esac
3290
Martin v. Löwis11437992002-04-12 09:54:03 +00003291AH_TEMPLATE(PY_UNICODE_TYPE,
3292 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003293
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003294AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003295if test "$enable_unicode" = "no"
3296then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003297 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003298 AC_MSG_RESULT(not used)
3299else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003300 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003301 AC_DEFINE(Py_USING_UNICODE, 1,
3302 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003303
3304 # wchar_t is only usable if it maps to an unsigned type
3305 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003306 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003307 then
3308 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003309 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3310 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003311 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003312 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003313 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3314 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3315 then
3316 PY_UNICODE_TYPE="unsigned short"
3317 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3318 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3319 then
3320 PY_UNICODE_TYPE="unsigned long"
3321 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3322 else
3323 PY_UNICODE_TYPE="no type found"
3324 fi
3325 AC_MSG_RESULT($PY_UNICODE_TYPE)
3326fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003327
3328# check for endianness
3329AC_C_BIGENDIAN
3330
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003331# Check whether right shifting a negative integer extends the sign bit
3332# or fills with zeros (like the Cray J90, according to Tim Peters).
3333AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003334AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003335AC_TRY_RUN([
3336int main()
3337{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003338 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003339}
Guido van Rossum3065c942001-09-17 04:03:14 +00003340],
3341ac_cv_rshift_extends_sign=yes,
3342ac_cv_rshift_extends_sign=no,
3343ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003344AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3345if test "$ac_cv_rshift_extends_sign" = no
3346then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003347 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3348 [Define if i>>j for signed int i does not extend the sign bit
3349 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003350fi
3351
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003352# check for getc_unlocked and related locking functions
3353AC_MSG_CHECKING(for getc_unlocked() and friends)
3354AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3355AC_TRY_LINK([#include <stdio.h>],[
3356 FILE *f = fopen("/dev/null", "r");
3357 flockfile(f);
3358 getc_unlocked(f);
3359 funlockfile(f);
3360], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3361AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3362if test "$ac_cv_have_getc_unlocked" = yes
3363then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003364 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3365 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003366fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003367
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003368# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003369# save the value of LIBS so we don't actually link Python with readline
3370LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003371
3372# On some systems we need to link readline to a termcap compatible
3373# library. NOTE: Keep the precedence of listed libraries synchronised
3374# with setup.py.
3375py_cv_lib_readline=no
3376AC_MSG_CHECKING([how to link readline libs])
3377for py_libtermcap in "" ncursesw ncurses curses termcap; do
3378 if test -z "$py_libtermcap"; then
3379 READLINE_LIBS="-lreadline"
3380 else
3381 READLINE_LIBS="-lreadline -l$py_libtermcap"
3382 fi
3383 LIBS="$READLINE_LIBS $LIBS_no_readline"
3384 AC_LINK_IFELSE(
3385 [AC_LANG_CALL([],[readline])],
3386 [py_cv_lib_readline=yes])
3387 if test $py_cv_lib_readline = yes; then
3388 break
3389 fi
3390done
3391# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3392#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003393if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003394 AC_MSG_RESULT([none])
3395else
3396 AC_MSG_RESULT([$READLINE_LIBS])
3397 AC_DEFINE(HAVE_LIBREADLINE, 1,
3398 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003399fi
3400
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003401# check for readline 2.1
3402AC_CHECK_LIB(readline, rl_callback_handler_install,
3403 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003404 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003405
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003406# check for readline 2.2
3407AC_TRY_CPP([#include <readline/readline.h>],
3408have_readline=yes, have_readline=no)
3409if test $have_readline = yes
3410then
3411 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3412 [readline/readline.h],
3413 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3414 [Define if you have readline 2.2]), )
3415fi
3416
Martin v. Löwis0daad592001-09-30 21:09:59 +00003417# check for readline 4.0
3418AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003419 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003420 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003421
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003422# also in 4.0
3423AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3424 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003425 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003426
Guido van Rossum353ae582001-07-10 16:45:32 +00003427# check for readline 4.2
3428AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003429 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003430 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003431
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003432# also in readline 4.2
3433AC_TRY_CPP([#include <readline/readline.h>],
3434have_readline=yes, have_readline=no)
3435if test $have_readline = yes
3436then
3437 AC_EGREP_HEADER([extern int rl_catch_signals;],
3438 [readline/readline.h],
3439 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3440 [Define if you can turn off readline's signal handling.]), )
3441fi
3442
Martin v. Löwis82bca632006-02-10 20:49:30 +00003443# End of readline checks: restore LIBS
3444LIBS=$LIBS_no_readline
3445
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003446AC_MSG_CHECKING(for broken nice())
3447AC_CACHE_VAL(ac_cv_broken_nice, [
3448AC_TRY_RUN([
3449int main()
3450{
3451 int val1 = nice(1);
3452 if (val1 != -1 && val1 == nice(2))
3453 exit(0);
3454 exit(1);
3455}
Guido van Rossum3065c942001-09-17 04:03:14 +00003456],
3457ac_cv_broken_nice=yes,
3458ac_cv_broken_nice=no,
3459ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003460AC_MSG_RESULT($ac_cv_broken_nice)
3461if test "$ac_cv_broken_nice" = yes
3462then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003463 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3464 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003465fi
3466
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003467AC_MSG_CHECKING(for broken poll())
3468AC_TRY_RUN([
3469#include <poll.h>
3470
3471int main (void)
3472 {
3473 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3474
3475 close (42);
3476
3477 int poll_test = poll (&poll_struct, 1, 0);
3478
3479 if (poll_test < 0)
3480 {
3481 exit(0);
3482 }
3483 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3484 {
3485 exit(0);
3486 }
3487 else
3488 {
3489 exit(1);
3490 }
3491 }
3492],
3493ac_cv_broken_poll=yes,
3494ac_cv_broken_poll=no,
3495ac_cv_broken_poll=no)
3496AC_MSG_RESULT($ac_cv_broken_poll)
3497if test "$ac_cv_broken_poll" = yes
3498then
3499 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3500 [Define if poll() sets errno on invalid file descriptors.])
3501fi
3502
Brett Cannon43802422005-02-10 20:48:03 +00003503# Before we can test tzset, we need to check if struct tm has a tm_zone
3504# (which is not required by ISO C or UNIX spec) and/or if we support
3505# tzname[]
3506AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003507
Brett Cannon43802422005-02-10 20:48:03 +00003508# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003509AC_MSG_CHECKING(for working tzset())
3510AC_CACHE_VAL(ac_cv_working_tzset, [
3511AC_TRY_RUN([
3512#include <stdlib.h>
3513#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003514#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003515
3516#if HAVE_TZNAME
3517extern char *tzname[];
3518#endif
3519
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003520int main()
3521{
Brett Cannon18367812003-09-19 00:59:16 +00003522 /* Note that we need to ensure that not only does tzset(3)
3523 do 'something' with localtime, but it works as documented
3524 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003525 This includes making sure that tzname is set properly if
3526 tm->tm_zone does not exist since it is the alternative way
3527 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003528
3529 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003530 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003531 */
3532
Brett Cannon43802422005-02-10 20:48:03 +00003533 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003534 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3535
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003536 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003537 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003538 if (localtime(&groundhogday)->tm_hour != 0)
3539 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003540#if HAVE_TZNAME
3541 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3542 if (strcmp(tzname[0], "UTC") ||
3543 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3544 exit(1);
3545#endif
Brett Cannon18367812003-09-19 00:59:16 +00003546
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003547 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003548 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003549 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003550 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003551#if HAVE_TZNAME
3552 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3553 exit(1);
3554#endif
Brett Cannon18367812003-09-19 00:59:16 +00003555
3556 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3557 tzset();
3558 if (localtime(&groundhogday)->tm_hour != 11)
3559 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003560#if HAVE_TZNAME
3561 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3562 exit(1);
3563#endif
3564
3565#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003566 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3567 exit(1);
3568 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3569 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003570#endif
Brett Cannon18367812003-09-19 00:59:16 +00003571
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003572 exit(0);
3573}
3574],
3575ac_cv_working_tzset=yes,
3576ac_cv_working_tzset=no,
3577ac_cv_working_tzset=no)])
3578AC_MSG_RESULT($ac_cv_working_tzset)
3579if test "$ac_cv_working_tzset" = yes
3580then
3581 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3582 [Define if tzset() actually switches the local timezone in a meaningful way.])
3583fi
3584
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003585# Look for subsecond timestamps in struct stat
3586AC_MSG_CHECKING(for tv_nsec in struct stat)
3587AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3588AC_TRY_COMPILE([#include <sys/stat.h>], [
3589struct stat st;
3590st.st_mtim.tv_nsec = 1;
3591],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003592ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003593ac_cv_stat_tv_nsec=no,
3594ac_cv_stat_tv_nsec=no))
3595AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3596if test "$ac_cv_stat_tv_nsec" = yes
3597then
3598 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3599 [Define if you have struct stat.st_mtim.tv_nsec])
3600fi
3601
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003602# Look for BSD style subsecond timestamps in struct stat
3603AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3604AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3605AC_TRY_COMPILE([#include <sys/stat.h>], [
3606struct stat st;
3607st.st_mtimespec.tv_nsec = 1;
3608],
3609ac_cv_stat_tv_nsec2=yes,
3610ac_cv_stat_tv_nsec2=no,
3611ac_cv_stat_tv_nsec2=no))
3612AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3613if test "$ac_cv_stat_tv_nsec2" = yes
3614then
3615 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3616 [Define if you have struct stat.st_mtimensec])
3617fi
3618
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003619# On HP/UX 11.0, mvwdelch is a block with a return statement
3620AC_MSG_CHECKING(whether mvwdelch is an expression)
3621AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3622AC_TRY_COMPILE([#include <curses.h>], [
3623 int rtn;
3624 rtn = mvwdelch(0,0,0);
3625], ac_cv_mvwdelch_is_expression=yes,
3626 ac_cv_mvwdelch_is_expression=no,
3627 ac_cv_mvwdelch_is_expression=yes))
3628AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3629
3630if test "$ac_cv_mvwdelch_is_expression" = yes
3631then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003632 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3633 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003634fi
3635
3636AC_MSG_CHECKING(whether WINDOW has _flags)
3637AC_CACHE_VAL(ac_cv_window_has_flags,
3638AC_TRY_COMPILE([#include <curses.h>], [
3639 WINDOW *w;
3640 w->_flags = 0;
3641], ac_cv_window_has_flags=yes,
3642 ac_cv_window_has_flags=no,
3643 ac_cv_window_has_flags=no))
3644AC_MSG_RESULT($ac_cv_window_has_flags)
3645
3646
3647if test "$ac_cv_window_has_flags" = yes
3648then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003649 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3650 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003651fi
3652
Walter Dörwald4994d952006-06-19 08:07:50 +00003653AC_MSG_CHECKING(for is_term_resized)
3654AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3655 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3656 AC_MSG_RESULT(yes),
3657 AC_MSG_RESULT(no)
3658)
3659
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003660AC_MSG_CHECKING(for resize_term)
3661AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3662 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003663 AC_MSG_RESULT(yes),
3664 AC_MSG_RESULT(no)
3665)
3666
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003667AC_MSG_CHECKING(for resizeterm)
3668AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3669 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003670 AC_MSG_RESULT(yes),
3671 AC_MSG_RESULT(no)
3672)
3673
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003674AC_MSG_CHECKING(for /dev/ptmx)
3675
3676if test -r /dev/ptmx
3677then
3678 AC_MSG_RESULT(yes)
3679 AC_DEFINE(HAVE_DEV_PTMX, 1,
3680 [Define if we have /dev/ptmx.])
3681else
3682 AC_MSG_RESULT(no)
3683fi
3684
3685AC_MSG_CHECKING(for /dev/ptc)
3686
3687if test -r /dev/ptc
3688then
3689 AC_MSG_RESULT(yes)
3690 AC_DEFINE(HAVE_DEV_PTC, 1,
3691 [Define if we have /dev/ptc.])
3692else
3693 AC_MSG_RESULT(no)
3694fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003695
Brett Cannon09d12362006-05-11 05:11:33 +00003696AC_MSG_CHECKING(for %zd printf() format support)
3697AC_TRY_RUN([#include <stdio.h>
3698#include <stddef.h>
3699#include <string.h>
3700
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003701#ifdef HAVE_SYS_TYPES_H
3702#include <sys/types.h>
3703#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003704
3705#ifdef HAVE_SSIZE_T
3706typedef ssize_t Py_ssize_t;
3707#elif SIZEOF_VOID_P == SIZEOF_LONG
3708typedef long Py_ssize_t;
3709#else
3710typedef int Py_ssize_t;
3711#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003712
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003713int main()
3714{
3715 char buffer[256];
3716
Brett Cannon09d12362006-05-11 05:11:33 +00003717 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3718 return 1;
3719
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003720 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003721 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003722
3723 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3724 return 1;
3725
3726 if (strcmp(buffer, "-123"))
3727 return 1;
3728
Brett Cannon09d12362006-05-11 05:11:33 +00003729 return 0;
3730}],
3731[AC_MSG_RESULT(yes)
3732 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3733 AC_MSG_RESULT(no))
3734
Martin v. Löwis01c04012002-11-11 14:58:44 +00003735AC_CHECK_TYPE(socklen_t,,
3736 AC_DEFINE(socklen_t,int,
3737 Define to `int' if <sys/socket.h> does not define.),[
3738#ifdef HAVE_SYS_TYPES_H
3739#include <sys/types.h>
3740#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003741#ifdef HAVE_SYS_SOCKET_H
3742#include <sys/socket.h>
3743#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003744])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003745
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003746AC_SUBST(THREADHEADERS)
3747
3748for h in `(cd $srcdir;echo Python/thread_*.h)`
3749do
3750 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3751done
3752
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003753AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003754SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003755AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003756for dir in $SRCDIRS; do
3757 if test ! -d $dir; then
3758 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003759 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003760done
3761AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003762
Guido van Rossum627b2d71993-12-24 10:39:16 +00003763# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003764AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3765AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003766
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003767echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003768if test ! -f Modules/Setup
3769then
3770 cp $srcdir/Modules/Setup.dist Modules/Setup
3771fi
3772
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003773echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003774if test ! -f Modules/Setup.local
3775then
3776 echo "# Edit this file for local setup changes" >Modules/Setup.local
3777fi
3778
3779echo "creating Makefile"
3780$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3781 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003782 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003783
3784case $ac_sys_system in
3785BeOS)
3786 AC_MSG_WARN([
3787
3788 Support for BeOS is deprecated as of Python 2.6.
3789 See PEP 11 for the gory details.
3790 ])
3791 ;;
3792*) ;;
3793esac
3794
Neil Schemenauer66252162001-02-19 04:47:42 +00003795mv config.c Modules