blob: 7b823124de575a9796de437d7523934c0d54a4aa [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson98b1b022008-11-30 14:43:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwis174440b2008-10-03 08:59:41 +00007m4_define(PYTHON_VERSION, 2.7)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalotti130ae152009-07-18 00:31:06 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandl464432d2009-05-20 18:24:08 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Georg Brandlbcd64a32009-03-31 21:45:18 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Ronald Oussoren5640ce22008-06-05 12:58:24 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren988117f2006-04-29 11:31:35 +000089AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000090 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
95 ;;
96 esac
97 case $enableval in
98 no)
99 UNIVERSALSDK=
100 enable_universalsdk=
101 ;;
102 *)
103 UNIVERSALSDK=$enableval
104 ;;
105 esac
106],[
107 UNIVERSALSDK=
108 enable_universalsdk=
109])
110AC_SUBST(UNIVERSALSDK)
111
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000112ARCH_RUN_32BIT=
113AC_SUBST(ARCH_RUN_32BIT)
114
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000115UNIVERSAL_ARCHS="32-bit"
116AC_MSG_CHECKING(for --with-universal-archs)
117AC_ARG_WITH(universal-archs,
118 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
119[
120 AC_MSG_RESULT($withval)
121 UNIVERSAL_ARCHS="$withval"
122],
123[
124 AC_MSG_RESULT(32-bit)
125])
126
127
128
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000129AC_ARG_WITH(framework-name,
130 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
131 specify an alternate name of the framework built with --enable-framework),
132[
133 PYTHONFRAMEWORK=${withval}
134 PYTHONFRAMEWORKDIR=${withval}.framework
135 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
136 ],[
137 PYTHONFRAMEWORK=Python
138 PYTHONFRAMEWORKDIR=Python.framework
139 PYTHONFRAMEWORKIDENTIFIER=org.python.python
140])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000141dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000142AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000143 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
144[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 case $enableval in
146 yes)
147 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000148 esac
149 case $enableval in
150 no)
151 PYTHONFRAMEWORK=
152 PYTHONFRAMEWORKDIR=no-framework
153 PYTHONFRAMEWORKPREFIX=
154 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000155 FRAMEWORKINSTALLFIRST=
156 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000157 FRAMEWORKALTINSTALLFIRST=
158 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000159 if test "x${prefix}" = "xNONE"; then
160 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
161 else
162 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
163 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000165 ;;
166 *)
167 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000168 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000169 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000170 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
171 if test "$UNIVERSAL_ARCHS" = "all"
172 then
173 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000174 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000175 else
Ronald Oussorenbb8cb0e2009-03-30 17:53:39 +0000176 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000177 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
178 fi
179
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000180 if test "x${prefix}" = "xNONE" ; then
181 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
182 else
183 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
184 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000185 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000186
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000187 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000188 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000189 AC_CONFIG_FILES(Mac/Makefile)
190 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
191 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000192 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
193 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000195 ],[
196 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000197 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198 PYTHONFRAMEWORKPREFIX=
199 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000200 FRAMEWORKINSTALLFIRST=
201 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000202 FRAMEWORKALTINSTALLFIRST=
203 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000204 if test "x${prefix}" = "xNONE" ; then
205 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
206 else
207 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
208 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000210
211 if test "$UNIVERSAL_ARCHS" = "all"
212 then
213 FRAMEWORKINSTALLLAST=update4wayuniversal
214 FRAMEWORKALTINSTALLLAST=update4wayuniversal
215 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000216])
217AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000218AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000219AC_SUBST(PYTHONFRAMEWORKDIR)
220AC_SUBST(PYTHONFRAMEWORKPREFIX)
221AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000222AC_SUBST(FRAMEWORKINSTALLFIRST)
223AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000224AC_SUBST(FRAMEWORKALTINSTALLFIRST)
225AC_SUBST(FRAMEWORKALTINSTALLLAST)
226AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000227
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000228##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000229## AC_HELP_STRING(--with-dyld,
230## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000231##
Guido van Rossumb418f891996-07-30 18:06:02 +0000232# Set name for machine-dependent library files
233AC_SUBST(MACHDEP)
234AC_MSG_CHECKING(MACHDEP)
235if test -z "$MACHDEP"
236then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000237 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000238 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000239 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000240 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000241 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000242 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000243 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_md_system=`echo $ac_sys_system |
245 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
246 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000247 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000248 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000249
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000250 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000251 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000252 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000253 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000254 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000255 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000256 esac
257fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000258
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000259# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
260# disable features if it is defined, without any means to access these
261# features as extensions. For these systems, we skip the definition of
262# _XOPEN_SOURCE. Before adding a system to the list to gain access to
263# some feature, make sure there is no alternative way to access this
264# feature. Also, when using wildcards, make sure you have verified the
265# need for not defining _XOPEN_SOURCE on all systems matching the
266# wildcard, and that the wildcard does not include future systems
267# (which may remove their limitations).
268dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
269case $ac_sys_system/$ac_sys_release in
270 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
271 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000272 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000273 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000274 define_xopen_source=no
275 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
276 # also defined. This can be overridden by defining _BSD_SOURCE
277 # As this has a different meaning on Linux, only define it on OpenBSD
278 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
279 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000280 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
281 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
282 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000283 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000284 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000285 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
286 # of union __?sigval. Reported by Stuart Bishop.
287 SunOS/5.6)
288 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000289 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
290 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000291 # Reconfirmed for 7.1.4 by Martin v. Loewis.
292 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000293 define_xopen_source=no;;
294 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000295 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000296 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000297 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000298 # On FreeBSD 4, the math functions C89 does not cover are never defined
299 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
300 FreeBSD/4.*)
301 define_xopen_source=no;;
302 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
303 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
304 # identifies itself as Darwin/7.*
305 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
306 # disables platform specific features beyond repair.
307 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
308 # has no effect, don't bother defining them
309 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000310 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000311 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
312 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
313 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000314 AIX/4)
315 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000316 AIX/5)
317 if test `uname -r` -eq 1; then
318 define_xopen_source=no
319 fi
320 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000321 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
322 # defining NI_NUMERICHOST.
323 QNX/6.3.2)
324 define_xopen_source=no
325 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000326
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000327esac
328
329if test $define_xopen_source = yes
330then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000331 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
332 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000333 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
334 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000335 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000336 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000337 AC_DEFINE(_XOPEN_SOURCE, 500,
338 Define to the level of X/Open that your system supports)
339 ;;
340 *)
341 AC_DEFINE(_XOPEN_SOURCE, 600,
342 Define to the level of X/Open that your system supports)
343 ;;
344 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000345
346 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
347 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
348 # several APIs are not declared. Since this is also needed in some
349 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000350 # except for Solaris 10, where it must not be defined,
351 # as it implies XPG4.2
352 case $ac_sys_system/$ac_sys_release in
353 SunOS/5.10)
354 ;;
355 *)
356 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
357 Define to activate Unix95-and-earlier features)
358 ;;
359 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000360
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000361 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
362
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000363fi
364
Guido van Rossum91922671997-10-09 20:24:13 +0000365#
366# SGI compilers allow the specification of the both the ABI and the
367# ISA on the command line. Depending on the values of these switches,
368# different and often incompatable code will be generated.
369#
370# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
371# thus supply support for various ABI/ISA combinations. The MACHDEP
372# variable is also adjusted.
373#
374AC_SUBST(SGI_ABI)
375if test ! -z "$SGI_ABI"
376then
377 CC="cc $SGI_ABI"
378 LDFLAGS="$SGI_ABI $LDFLAGS"
379 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
380fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000381AC_MSG_RESULT($MACHDEP)
382
Jack Jansen83f898c2002-12-30 22:23:40 +0000383# And add extra plat-mac for darwin
384AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000385AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000386AC_MSG_CHECKING(EXTRAPLATDIR)
387if test -z "$EXTRAPLATDIR"
388then
389 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000390 darwin)
391 EXTRAPLATDIR="\$(PLATMACDIRS)"
392 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
393 ;;
394 *)
395 EXTRAPLATDIR=""
396 EXTRAMACHDEPPATH=""
397 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000398 esac
399fi
400AC_MSG_RESULT($EXTRAPLATDIR)
401
Jack Jansen6b08a402004-06-03 12:41:45 +0000402# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
403# it may influence the way we can build extensions, so distutils
404# needs to check it
405AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000406AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000407CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000408EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000409
Mark Dickinson65134662008-04-25 16:11:04 +0000410AC_MSG_CHECKING(machine type as reported by uname -m)
411ac_sys_machine=`uname -m`
412AC_MSG_RESULT($ac_sys_machine)
413
Guido van Rossum627b2d71993-12-24 10:39:16 +0000414# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000415
416# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
417# for debug/optimization stuff. BASECFLAGS is for flags that are required
418# just to get things to compile and link. Users are free to override OPT
419# when running configure or make. The build should not break if they do.
420# BASECFLAGS should generally not be messed with, however.
421
422# XXX shouldn't some/most/all of this code be merged with the stuff later
423# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000425AC_ARG_WITH(gcc,
426 AC_HELP_STRING(--without-gcc,never use gcc),
427[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000428 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000429 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000430 without_gcc=yes;;
431 yes) CC=gcc
432 without_gcc=no;;
433 *) CC=$withval
434 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000435 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000436 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000437 AIX*) CC=cc_r
438 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000439 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000440 case $BE_HOST_CPU in
441 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000442 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000443 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000444 BASECFLAGS="$BASECFLAGS -export pragma"
445 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000446 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000447 ;;
448 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000449 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000450 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000451 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000452 ;;
453 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000454 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000455 ;;
456 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000457 AR="\$(srcdir)/Modules/ar_beos"
458 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000459 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000460 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000461 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000462AC_MSG_RESULT($without_gcc)
463
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000464# If the user switches compilers, we can't believe the cache
465if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
466then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000467 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
468(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000469fi
470
Guido van Rossum627b2d71993-12-24 10:39:16 +0000471AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000472
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000473AC_SUBST(CXX)
474AC_SUBST(MAINCC)
475AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
476AC_ARG_WITH(cxx_main,
477 AC_HELP_STRING([--with-cxx-main=<compiler>],
478 [compile main() and link python executable with C++ compiler]),
479[
480
481 case $withval in
482 no) with_cxx_main=no
483 MAINCC='$(CC)';;
484 yes) with_cxx_main=yes
485 MAINCC='$(CXX)';;
486 *) with_cxx_main=yes
487 MAINCC=$withval
488 if test -z "$CXX"
489 then
490 CXX=$withval
491 fi;;
492 esac], [
493 with_cxx_main=no
494 MAINCC='$(CC)'
495])
496AC_MSG_RESULT($with_cxx_main)
497
498preset_cxx="$CXX"
499if test -z "$CXX"
500then
501 case "$CC" in
502 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
503 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
504 esac
505 if test "$CXX" = "notfound"
506 then
507 CXX=""
508 fi
509fi
510if test -z "$CXX"
511then
512 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
513 if test "$CXX" = "notfound"
514 then
515 CXX=""
516 fi
517fi
518if test "$preset_cxx" != "$CXX"
519then
520 AC_MSG_WARN([
521
522 By default, distutils will build C++ extension modules with "$CXX".
523 If this is not intended, then set CXX on the configure command line.
524 ])
525fi
526
527
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000528# checks for UNIX variants that set C preprocessor variables
529AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000530
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000531# Check for unsupported systems
532case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000533atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000534 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
535 echo See README for details.
536 exit 1;;
537esac
538
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000539AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000540AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000541AC_ARG_WITH(suffix,
542 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
543[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000544 case $withval in
545 no) EXEEXT=;;
546 yes) EXEEXT=.exe;;
547 *) EXEEXT=$withval;;
548 esac])
549AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000550
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000551# Test whether we're running on a non-case-sensitive system, in which
552# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000553AC_SUBST(BUILDEXEEXT)
554AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000555if test ! -d CaseSensitiveTestDir; then
556mkdir CaseSensitiveTestDir
557fi
558
559if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000560then
Jack Jansen1999ef42001-12-06 21:47:20 +0000561 AC_MSG_RESULT(yes)
562 BUILDEXEEXT=.exe
563else
564 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000565 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000566fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000567rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000568
Guido van Rossumdd997f71998-10-07 19:58:26 +0000569case $MACHDEP in
570bsdos*)
571 case $CC in
572 gcc) CC="$CC -D_HAVE_BSDI";;
573 esac;;
574esac
575
Guido van Rossum84561611997-08-21 00:08:11 +0000576case $ac_sys_system in
577hp*|HP*)
578 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000579 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000580 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000581SunOS*)
582 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000583 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000584 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000585esac
586
Martin v. Löwise8964d42001-03-06 12:09:07 +0000587
Neil Schemenauer61c51152001-01-26 16:18:16 +0000588AC_SUBST(LIBRARY)
589AC_MSG_CHECKING(LIBRARY)
590if test -z "$LIBRARY"
591then
592 LIBRARY='libpython$(VERSION).a'
593fi
594AC_MSG_RESULT($LIBRARY)
595
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000596# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000597# name of the library into which to insert object files). BLDLIBRARY is also
598# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
599# is blank as the main program is not linked directly against LDLIBRARY.
600# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
601# systems without shared libraries, LDLIBRARY is the same as LIBRARY
602# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
603# DLLLIBRARY is the shared (i.e., DLL) library.
604#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605# RUNSHARED is used to run shared python without installed libraries
606#
607# INSTSONAME is the name of the shared library that will be use to install
608# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000609AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000610AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000611AC_SUBST(BLDLIBRARY)
612AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000613AC_SUBST(INSTSONAME)
614AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000615LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000616BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000617INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000618DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000619LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000620RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000621
Guido van Rossumfb842551997-08-06 23:42:07 +0000622# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000623# If CXX is set, and if it is needed to link a main function that was
624# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
625# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000626# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000627# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000628AC_SUBST(LINKCC)
629AC_MSG_CHECKING(LINKCC)
630if test -z "$LINKCC"
631then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000632 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000633 case $ac_sys_system in
634 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000635 exp_extra="\"\""
636 if test $ac_sys_release -ge 5 -o \
637 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
638 exp_extra="."
639 fi
640 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000641 QNX*)
642 # qcc must be used because the other compilers do not
643 # support -N.
644 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000645 esac
646fi
647AC_MSG_RESULT($LINKCC)
648
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000649# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
650# make sure we default having it set to "no": this is used by
651# distutils.unixccompiler to know if it should add --enable-new-dtags
652# to linker command lines, and failing to detect GNU ld simply results
653# in the same bahaviour as before.
654AC_SUBST(GNULD)
655AC_MSG_CHECKING(for GNU ld)
656ac_prog=ld
657if test "$GCC" = yes; then
658 ac_prog=`$CC -print-prog-name=ld`
659fi
660case `"$ac_prog" -V 2>&1 < /dev/null` in
661 *GNU*)
662 GNULD=yes;;
663 *)
664 GNULD=no;;
665esac
666AC_MSG_RESULT($GNULD)
667
Martin v. Löwis1142de32002-03-29 16:28:31 +0000668AC_MSG_CHECKING(for --enable-shared)
669AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000670 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000671
Martin v. Löwis1142de32002-03-29 16:28:31 +0000672if test -z "$enable_shared"
673then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000674 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000675 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000676 enable_shared="yes";;
677 *)
678 enable_shared="no";;
679 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000680fi
681AC_MSG_RESULT($enable_shared)
682
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000683AC_MSG_CHECKING(for --enable-profiling)
684AC_ARG_ENABLE(profiling,
685 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
686[ac_save_cc="$CC"
687 CC="$CC -pg"
688 AC_TRY_RUN([int main() { return 0; }],
689 ac_enable_profiling="yes",
690 ac_enable_profiling="no",
691 ac_enable_profiling="no")
692 CC="$ac_save_cc"])
693AC_MSG_RESULT($ac_enable_profiling)
694
695case "$ac_enable_profiling" in
696 "yes")
697 BASECFLAGS="-pg $BASECFLAGS"
698 LDFLAGS="-pg $LDFLAGS"
699 ;;
700esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000701
702AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000703
Guido van Rossumb8552162001-09-05 14:58:11 +0000704# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
705# library that we build, but we do not want to link against it (we
706# will find it with a -framework option). For this reason there is an
707# extra variable BLDLIBRARY against which Python and the extension
708# modules are linked, BLDLIBRARY. This is normally the same as
709# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000710if test "$enable_framework"
711then
712 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000713 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000714 BLDLIBRARY=''
715else
716 BLDLIBRARY='$(LDLIBRARY)'
717fi
718
Martin v. Löwis1142de32002-03-29 16:28:31 +0000719# Other platforms follow
720if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000721 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000722 case $ac_sys_system in
723 BeOS*)
724 LDLIBRARY='libpython$(VERSION).so'
725 ;;
726 CYGWIN*)
727 LDLIBRARY='libpython$(VERSION).dll.a'
728 DLLLIBRARY='libpython$(VERSION).dll'
729 ;;
730 SunOS*)
731 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000732 BLDLIBRARY='-Wl,-R,$(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öwis2389c412003-10-31 15:42:07 +0000734 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000736 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000737 LDLIBRARY='libpython$(VERSION).so'
738 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000739 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000740 case $ac_sys_system in
741 FreeBSD*)
742 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
743 ;;
744 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000745 INSTSONAME="$LDLIBRARY".$SOVERSION
746 ;;
747 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000748 case `uname -m` in
749 ia64)
750 LDLIBRARY='libpython$(VERSION).so'
751 ;;
752 *)
753 LDLIBRARY='libpython$(VERSION).sl'
754 ;;
755 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000756 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000757 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000758 ;;
759 OSF*)
760 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000761 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000762 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000763 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000764 atheos*)
765 LDLIBRARY='libpython$(VERSION).so'
766 BLDLIBRARY='-L. -lpython$(VERSION)'
767 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
768 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000769 Darwin*)
770 LDLIBRARY='libpython$(VERSION).dylib'
771 BLDLIBRARY='-L. -lpython$(VERSION)'
772 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
773 ;;
774
Martin v. Löwis1142de32002-03-29 16:28:31 +0000775 esac
Jason Tishler30765592003-09-04 11:04:06 +0000776else # shared is disabled
777 case $ac_sys_system in
778 CYGWIN*)
779 BLDLIBRARY='$(LIBRARY)'
780 LDLIBRARY='libpython$(VERSION).dll.a'
781 ;;
782 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000783fi
784
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000785AC_MSG_RESULT($LDLIBRARY)
786
Guido van Rossum627b2d71993-12-24 10:39:16 +0000787AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000788AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000789AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000790
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000791# tweak ARFLAGS only if the user didn't set it on the command line
792AC_SUBST(ARFLAGS)
793if test -z "$ARFLAGS"
794then
795 ARFLAGS="rc"
796fi
797
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000798AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000799AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000800if test $SVNVERSION = found
801then
802 SVNVERSION="svnversion \$(srcdir)"
803else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000804 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000805fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000806
Neil Schemenauera42c8272001-03-31 00:01:55 +0000807case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000808bsdos*|hp*|HP*)
809 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000810 if test -z "$INSTALL"
811 then
812 INSTALL="${srcdir}/install-sh -c"
813 fi
814esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000815AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000816
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000817# Not every filesystem supports hard links
818AC_SUBST(LN)
819if test -z "$LN" ; then
820 case $ac_sys_system in
821 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000822 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000823 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000824 *) LN=ln;;
825 esac
826fi
827
Fred Drake9f715822001-07-11 06:27:00 +0000828# Check for --with-pydebug
829AC_MSG_CHECKING(for --with-pydebug)
830AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000831 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
832[
Fred Drake9f715822001-07-11 06:27:00 +0000833if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000834then
835 AC_DEFINE(Py_DEBUG, 1,
836 [Define if you want to build an interpreter with many run-time checks.])
837 AC_MSG_RESULT(yes);
838 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000839else AC_MSG_RESULT(no); Py_DEBUG='false'
840fi],
841[AC_MSG_RESULT(no)])
842
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
844# merged with this chunk of code?
845
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000846# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847# ------------------------
848# (The following bit of code is complicated enough - please keep things
849# indented properly. Just pretend you're editing Python code. ;-)
850
851# There are two parallel sets of case statements below, one that checks to
852# see if OPT was set and one that does BASECFLAGS setting based upon
853# compiler and platform. BASECFLAGS tweaks need to be made even if the
854# user set OPT.
855
856# tweak OPT based on compiler and platform, only if the user didn't set
857# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000858AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000859if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000860then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861 case $GCC in
862 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000863 if test "$CC" != 'g++' ; then
864 STRICT_PROTO="-Wstrict-prototypes"
865 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000866 # For gcc 4.x we need to use -fwrapv so lets check if its supported
867 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
868 WRAP="-fwrapv"
869 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000871 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000872 if test "$Py_DEBUG" = 'true' ; then
873 # Optimization messes up debuggers, so turn it off for
874 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000875 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000876 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000877 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000878 fi
879 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000880 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000881 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000882 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000883 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000884 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000885 SCO_SV*) OPT="$OPT -m486 -DSCO5"
886 ;;
887 esac
Fred Drake9f715822001-07-11 06:27:00 +0000888 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000889
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000890 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000891 OPT="-O"
892 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000893 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000894fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000895
Skip Montanarodecc6a42003-01-01 20:07:49 +0000896AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000897
898# The -arch flags for universal builds on OSX
899UNIVERSAL_ARCH_FLAGS=
900AC_SUBST(UNIVERSAL_ARCH_FLAGS)
901
Skip Montanarodecc6a42003-01-01 20:07:49 +0000902# tweak BASECFLAGS based on compiler and platform
903case $GCC in
904yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000905 # Python violates C99 rules, by casting between incompatible
906 # pointer types. GCC may generate bad code as a result of that,
907 # so use -fno-strict-aliasing if supported.
908 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
909 ac_save_cc="$CC"
910 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000911 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000912 AC_TRY_RUN([int main() { return 0; }],
913 ac_cv_no_strict_aliasing_ok=yes,
914 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000915 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000916 CC="$ac_save_cc"
917 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
918 if test $ac_cv_no_strict_aliasing_ok = yes
919 then
920 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
921 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000922
923 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
924 # support. Without this, treatment of subnormals doesn't follow
925 # the standard.
926 case $ac_sys_machine in
927 alpha*)
928 BASECFLAGS="$BASECFLAGS -mieee"
929 ;;
930 esac
931
Skip Montanarodecc6a42003-01-01 20:07:49 +0000932 case $ac_sys_system in
933 SCO_SV*)
934 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
935 ;;
936 # is there any other compiler on Darwin besides gcc?
937 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000938 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
939 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000940
941
Ronald Oussoren988117f2006-04-29 11:31:35 +0000942 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000943 UNIVERSAL_ARCH_FLAGS=""
944 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
945 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000946 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000947
948 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
949 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
950
951 elif test "$UNIVERSAL_ARCHS" = "all" ; then
952 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000953 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000954
955 else
956 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
957
958 fi
959
960
961 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000962 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000963 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
964 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
965 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000966 fi
967
Benjamin Peterson4347c442008-07-17 15:59:24 +0000968 # Calculate the right deployment target for this build.
969 #
970 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
971 if test ${cur_target} '>' 10.2; then
972 cur_target=10.3
973 fi
974 if test "${UNIVERSAL_ARCHS}" = "all"; then
975 # Ensure that the default platform for a 4-way
976 # universal build is OSX 10.5, that's the first
977 # OS release where 4-way builds make sense.
978 cur_target='10.5'
979 fi
980 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
981
982 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
983 # environment with a value that is the same as what we'll use
984 # in the Makefile to ensure that we'll get the same compiler
985 # environment during configure and build time.
986 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
987 export MACOSX_DEPLOYMENT_TARGET
988 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
989
Skip Montanarodecc6a42003-01-01 20:07:49 +0000990 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000991 OSF*)
992 BASECFLAGS="$BASECFLAGS -mieee"
993 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000994 esac
995 ;;
996
997*)
998 case $ac_sys_system in
999 OpenUNIX*|UnixWare*)
1000 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1001 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001002 OSF*)
1003 BASECFLAGS="$BASECFLAGS -ieee -std"
1004 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001005 SCO_SV*)
1006 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1007 ;;
1008 esac
1009 ;;
1010esac
1011
Fred Drakee1ceaa02001-12-04 20:55:47 +00001012if test "$Py_DEBUG" = 'true'; then
1013 :
1014else
1015 OPT="-DNDEBUG $OPT"
1016fi
1017
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001018if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001019then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001020 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001021fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001022
Neal Norwitz020c46a2006-01-07 21:39:28 +00001023# disable check for icc since it seems to pass, but generates a warning
1024if test "$CC" = icc
1025then
1026 ac_cv_opt_olimit_ok=no
1027fi
1028
Guido van Rossum91922671997-10-09 20:24:13 +00001029AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1030AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1031[ac_save_cc="$CC"
1032CC="$CC -OPT:Olimit=0"
1033AC_TRY_RUN([int main() { return 0; }],
1034 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001035 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001036 ac_cv_opt_olimit_ok=no)
1037CC="$ac_save_cc"])
1038AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001039if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001040 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001041 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1042 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1043 # environment?
1044 Darwin*)
1045 ;;
1046 *)
1047 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1048 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001049 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001050else
1051 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1052 AC_CACHE_VAL(ac_cv_olimit_ok,
1053 [ac_save_cc="$CC"
1054 CC="$CC -Olimit 1500"
1055 AC_TRY_RUN([int main() { return 0; }],
1056 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001057 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001058 ac_cv_olimit_ok=no)
1059 CC="$ac_save_cc"])
1060 AC_MSG_RESULT($ac_cv_olimit_ok)
1061 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001062 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001063 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001064fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001065
Martin v. Löwisaac13162006-10-19 10:58:46 +00001066# Check whether GCC supports PyArg_ParseTuple format
1067if test "$GCC" = "yes"
1068then
1069 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1070 save_CFLAGS=$CFLAGS
1071 CFLAGS="$CFLAGS -Werror"
1072 AC_TRY_COMPILE([
1073 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1074 ],,
1075 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1076 AC_MSG_RESULT(yes),
1077 AC_MSG_RESULT(no)
1078 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001079 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001080fi
1081
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001082# On some compilers, pthreads are available without further options
1083# (e.g. MacOS X). On some of these systems, the compiler will not
1084# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1085# So we have to see first whether pthreads are available without
1086# options before we can check whether -Kpthread improves anything.
1087AC_MSG_CHECKING(whether pthreads are available without options)
1088AC_CACHE_VAL(ac_cv_pthread_is_default,
1089[AC_TRY_RUN([
1090#include <pthread.h>
1091
1092void* routine(void* p){return NULL;}
1093
1094int main(){
1095 pthread_t p;
1096 if(pthread_create(&p,NULL,routine,NULL)!=0)
1097 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001098 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001099 return 0;
1100}
1101],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001102[
1103 ac_cv_pthread_is_default=yes
1104 ac_cv_kthread=no
1105 ac_cv_pthread=no
1106],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001107 ac_cv_pthread_is_default=no,
1108 ac_cv_pthread_is_default=no)
1109])
1110AC_MSG_RESULT($ac_cv_pthread_is_default)
1111
1112
1113if test $ac_cv_pthread_is_default = yes
1114then
1115 ac_cv_kpthread=no
1116else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001117# -Kpthread, if available, provides the right #defines
1118# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001119# Some compilers won't report that they do not support -Kpthread,
1120# so we need to run a program to see whether it really made the
1121# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001122AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1123AC_CACHE_VAL(ac_cv_kpthread,
1124[ac_save_cc="$CC"
1125CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001126AC_TRY_RUN([
1127#include <pthread.h>
1128
1129void* routine(void* p){return NULL;}
1130
1131int main(){
1132 pthread_t p;
1133 if(pthread_create(&p,NULL,routine,NULL)!=0)
1134 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001135 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001136 return 0;
1137}
1138],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001139 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001140 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001141 ac_cv_kpthread=no)
1142CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001143AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001144fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001145
Skip Montanarod8d39a02003-07-10 20:44:10 +00001146if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001147then
1148# -Kthread, if available, provides the right #defines
1149# and linker options to make pthread_create available
1150# Some compilers won't report that they do not support -Kthread,
1151# so we need to run a program to see whether it really made the
1152# function available.
1153AC_MSG_CHECKING(whether $CC accepts -Kthread)
1154AC_CACHE_VAL(ac_cv_kthread,
1155[ac_save_cc="$CC"
1156CC="$CC -Kthread"
1157AC_TRY_RUN([
1158#include <pthread.h>
1159
1160void* routine(void* p){return NULL;}
1161
1162int main(){
1163 pthread_t p;
1164 if(pthread_create(&p,NULL,routine,NULL)!=0)
1165 return 1;
1166 (void)pthread_detach(p);
1167 return 0;
1168}
1169],
1170 ac_cv_kthread=yes,
1171 ac_cv_kthread=no,
1172 ac_cv_kthread=no)
1173CC="$ac_save_cc"])
1174AC_MSG_RESULT($ac_cv_kthread)
1175fi
1176
Skip Montanarod8d39a02003-07-10 20:44:10 +00001177if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001178then
1179# -pthread, if available, provides the right #defines
1180# and linker options to make pthread_create available
1181# Some compilers won't report that they do not support -pthread,
1182# so we need to run a program to see whether it really made the
1183# function available.
1184AC_MSG_CHECKING(whether $CC accepts -pthread)
1185AC_CACHE_VAL(ac_cv_thread,
1186[ac_save_cc="$CC"
1187CC="$CC -pthread"
1188AC_TRY_RUN([
1189#include <pthread.h>
1190
1191void* routine(void* p){return NULL;}
1192
1193int main(){
1194 pthread_t p;
1195 if(pthread_create(&p,NULL,routine,NULL)!=0)
1196 return 1;
1197 (void)pthread_detach(p);
1198 return 0;
1199}
1200],
1201 ac_cv_pthread=yes,
1202 ac_cv_pthread=no,
1203 ac_cv_pthread=no)
1204CC="$ac_save_cc"])
1205AC_MSG_RESULT($ac_cv_pthread)
1206fi
1207
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001208# If we have set a CC compiler flag for thread support then
1209# check if it works for CXX, too.
1210ac_cv_cxx_thread=no
1211if test ! -z "$CXX"
1212then
1213AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1214ac_save_cxx="$CXX"
1215
1216if test "$ac_cv_kpthread" = "yes"
1217then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001218 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001219 ac_cv_cxx_thread=yes
1220elif test "$ac_cv_kthread" = "yes"
1221then
1222 CXX="$CXX -Kthread"
1223 ac_cv_cxx_thread=yes
1224elif test "$ac_cv_pthread" = "yes"
1225then
1226 CXX="$CXX -pthread"
1227 ac_cv_cxx_thread=yes
1228fi
1229
1230if test $ac_cv_cxx_thread = yes
1231then
1232 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1233 $CXX -c conftest.$ac_ext 2>&5
1234 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1235 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1236 then
1237 ac_cv_cxx_thread=yes
1238 else
1239 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001240 fi
1241 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001242fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001243AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001244fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001245CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001246
Fred Drakece81d592000-07-09 14:39:29 +00001247dnl # check for ANSI or K&R ("traditional") preprocessor
1248dnl AC_MSG_CHECKING(for C preprocessor type)
1249dnl AC_TRY_COMPILE([
1250dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1251dnl int foo;
1252dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1253dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1254dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001255
Guido van Rossum627b2d71993-12-24 10:39:16 +00001256# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001257AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001258AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1259fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001260ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001261shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001262unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001263sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1264sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001265sys/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 +00001266sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001267sys/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 +00001268sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001269bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001270AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001271AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001272
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001273# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001274AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001275#ifdef HAVE_CURSES_H
1276#include <curses.h>
1277#endif
1278])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001279
Martin v. Löwis11017b12006-01-14 18:12:57 +00001280# On Linux, netlink.h requires asm/types.h
1281AC_CHECK_HEADERS(linux/netlink.h,,,[
1282#ifdef HAVE_ASM_TYPES_H
1283#include <asm/types.h>
1284#endif
1285#ifdef HAVE_SYS_SOCKET_H
1286#include <sys/socket.h>
1287#endif
1288])
1289
Guido van Rossum627b2d71993-12-24 10:39:16 +00001290# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001291was_it_defined=no
1292AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001293AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1294 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1295])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001296AC_MSG_RESULT($was_it_defined)
1297
Neal Norwitz11690112002-07-30 01:08:28 +00001298# Check whether using makedev requires defining _OSF_SOURCE
1299AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001300AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001301 [ makedev(0, 0) ],
1302 ac_cv_has_makedev=yes,
1303 ac_cv_has_makedev=no)
1304if test "$ac_cv_has_makedev" = "no"; then
1305 # we didn't link, try if _OSF_SOURCE will allow us to link
1306 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001307#define _OSF_SOURCE 1
1308#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001309 ],
1310 [ makedev(0, 0) ],
1311 ac_cv_has_makedev=yes,
1312 ac_cv_has_makedev=no)
1313 if test "$ac_cv_has_makedev" = "yes"; then
1314 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1315 fi
1316fi
1317AC_MSG_RESULT($ac_cv_has_makedev)
1318if test "$ac_cv_has_makedev" = "yes"; then
1319 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1320fi
1321
Martin v. Löwis399a6892002-10-04 10:22:02 +00001322# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1323# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1324# defined, but the compiler does not support pragma redefine_extname,
1325# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1326# structures (such as rlimit64) without declaring them. As a
1327# work-around, disable LFS on such configurations
1328
1329use_lfs=yes
1330AC_MSG_CHECKING(Solaris LFS bug)
1331AC_TRY_COMPILE([
1332#define _LARGEFILE_SOURCE 1
1333#define _FILE_OFFSET_BITS 64
1334#include <sys/resource.h>
1335],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1336AC_MSG_RESULT($sol_lfs_bug)
1337if test "$sol_lfs_bug" = "yes"; then
1338 use_lfs=no
1339fi
1340
1341if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001342# Two defines needed to enable largefile support on various platforms
1343# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001344AC_DEFINE(_LARGEFILE_SOURCE, 1,
1345[This must be defined on some systems to enable large file support.])
1346AC_DEFINE(_FILE_OFFSET_BITS, 64,
1347[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001348fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001349
Guido van Rossum300fda71996-08-19 21:58:16 +00001350# Add some code to confdefs.h so that the test for off_t works on SCO
1351cat >> confdefs.h <<\EOF
1352#if defined(SCO_DS)
1353#undef _OFF_T
1354#endif
1355EOF
1356
Guido van Rossumef2255b2000-03-10 22:30:29 +00001357# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001358AC_TYPE_MODE_T
1359AC_TYPE_OFF_T
1360AC_TYPE_PID_T
1361AC_TYPE_SIGNAL
1362AC_TYPE_SIZE_T
1363AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001364AC_TYPE_UINT32_T
1365AC_TYPE_UINT64_T
1366AC_TYPE_INT32_T
1367AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001368AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001369 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001370
Guido van Rossumef2255b2000-03-10 22:30:29 +00001371# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001372# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001373AC_CHECK_SIZEOF(int, 4)
1374AC_CHECK_SIZEOF(long, 4)
1375AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001376AC_CHECK_SIZEOF(short, 2)
1377AC_CHECK_SIZEOF(float, 4)
1378AC_CHECK_SIZEOF(double, 8)
1379AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001380AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001381AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001382
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001383AC_MSG_CHECKING(for long long support)
1384have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001385AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1386 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1387 have_long_long=yes
1388])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001389AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001390if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001391AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001392fi
1393
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001394AC_MSG_CHECKING(for long double support)
1395have_long_double=no
1396AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1397 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1398 have_long_double=yes
1399])
1400AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001401if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001402AC_CHECK_SIZEOF(long double, 12)
1403fi
1404
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001405AC_MSG_CHECKING(for _Bool support)
1406have_c99_bool=no
1407AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1408 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1409 have_c99_bool=yes
1410])
1411AC_MSG_RESULT($have_c99_bool)
1412if test "$have_c99_bool" = yes ; then
1413AC_CHECK_SIZEOF(_Bool, 1)
1414fi
1415
Martin v. Löwisebe26702006-10-02 14:55:51 +00001416AC_CHECK_TYPES(uintptr_t,
1417 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001418 [], [#ifdef HAVE_STDINT_H
1419 #include <stdint.h>
1420 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001421
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001422AC_CHECK_SIZEOF(off_t, [], [
1423#ifdef HAVE_SYS_TYPES_H
1424#include <sys/types.h>
1425#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001426])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001427
1428AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001429if test "$have_long_long" = yes -a \
1430 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1431 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001432 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1433 [Defined to enable large file support when an off_t is bigger than a long
1434 and long long is available and at least as big as an off_t. You may need
1435 to add some flags for configuration and compilation to enable this mode.
1436 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001437 AC_MSG_RESULT(yes)
1438else
1439 AC_MSG_RESULT(no)
1440fi
1441
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001442AC_CHECK_SIZEOF(time_t, [], [
1443#ifdef HAVE_SYS_TYPES_H
1444#include <sys/types.h>
1445#endif
1446#ifdef HAVE_TIME_H
1447#include <time.h>
1448#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001449])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001450
Trent Mick635f6fb2000-08-23 21:33:05 +00001451# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001452ac_save_cc="$CC"
1453if test "$ac_cv_kpthread" = "yes"
1454then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001455elif test "$ac_cv_kthread" = "yes"
1456then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001457elif test "$ac_cv_pthread" = "yes"
1458then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001459fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001460AC_MSG_CHECKING(for pthread_t)
1461have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001462AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001463AC_MSG_RESULT($have_pthread_t)
1464if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001465 AC_CHECK_SIZEOF(pthread_t, [], [
1466#ifdef HAVE_PTHREAD_H
1467#include <pthread.h>
1468#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001469 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001470fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001471CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001472
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001473AC_MSG_CHECKING(for --enable-toolbox-glue)
1474AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001475 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001476
1477if test -z "$enable_toolbox_glue"
1478then
1479 case $ac_sys_system/$ac_sys_release in
1480 Darwin/*)
1481 enable_toolbox_glue="yes";;
1482 *)
1483 enable_toolbox_glue="no";;
1484 esac
1485fi
1486case "$enable_toolbox_glue" in
1487yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001488 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001489 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001490 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1491 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001492 ;;
1493*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001494 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001495 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001496 ;;
1497esac
1498AC_MSG_RESULT($enable_toolbox_glue)
1499
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001500
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001501AC_SUBST(OTHER_LIBTOOL_OPT)
1502case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001503 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001504 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1505 ;;
1506 Darwin/*)
1507 OTHER_LIBTOOL_OPT=""
1508 ;;
1509esac
1510
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001511AC_SUBST(LIBTOOL_CRUFT)
1512case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001513 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001514 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1515 if test "${enable_universalsdk}"; then
1516 :
1517 else
1518 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1519 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001520 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001521 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001522 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001523 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1524 if test ${gcc_version} '<' 4.0
1525 then
1526 LIBTOOL_CRUFT="-lcc_dynamic"
1527 else
1528 LIBTOOL_CRUFT=""
1529 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001530 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001531 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001532 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001533esac
1534
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001535AC_MSG_CHECKING(for --enable-framework)
1536if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001537then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001538 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001539 # -F. is needed to allow linking to the framework while
1540 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001541 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1542 [Define if you want to produce an OpenStep/Rhapsody framework
1543 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001544 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001545 if test $enable_shared = "yes"
1546 then
1547 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1548 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001549else
1550 AC_MSG_RESULT(no)
1551fi
1552
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001554case $ac_sys_system/$ac_sys_release in
1555 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001556 AC_DEFINE(WITH_DYLD, 1,
1557 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1558 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1559 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001560 AC_MSG_RESULT(always on for Darwin)
1561 ;;
1562 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001563 AC_MSG_RESULT(no)
1564 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001565esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001566
Guido van Rossumac405f61994-09-12 10:56:06 +00001567# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001568AC_SUBST(SO)
1569AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001570AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001571AC_SUBST(CCSHARED)
1572AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001573# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001574# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001575AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001576if test -z "$SO"
1577then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001578 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001579 hp*|HP*)
1580 case `uname -m` in
1581 ia64) SO=.so;;
1582 *) SO=.sl;;
1583 esac
1584 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001585 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001586 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001587 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001588else
1589 # this might also be a termcap variable, see #610332
1590 echo
1591 echo '====================================================================='
1592 echo '+ +'
1593 echo '+ WARNING: You have set SO in your environment. +'
1594 echo '+ Do you really mean to change the extension for shared libraries? +'
1595 echo '+ Continuing in 10 seconds to let you to ponder. +'
1596 echo '+ +'
1597 echo '====================================================================='
1598 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001599fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001600AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001601
Neal Norwitz58e28882006-05-19 07:00:58 +00001602AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001603# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001604# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001605# (Shared libraries in this instance are shared modules to be loaded into
1606# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001607AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001608if test -z "$LDSHARED"
1609then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001610 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001611 AIX*)
1612 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001613 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001614 ;;
1615 BeOS*)
1616 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001617 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001618 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001619 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001620 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001621 SunOS/5*)
1622 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001623 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001624 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001625 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001626 hp*|HP*)
1627 if test "$GCC" = "yes"
1628 then LDSHARED='$(CC) -shared'
1629 else LDSHARED='ld -b';
1630 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001631 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001632 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001633 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1634 if test "$enable_framework" ; then
1635 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001636 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1637 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001638 else
1639 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001640 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001641 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001642 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001643 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1644 if test "$enable_framework" ; then
1645 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001646 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1647 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001648 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001649 # No framework, use the Python app as bundle-loader
1650 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001651 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001652 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001653 Darwin/*)
1654 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1655 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001656
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001657 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001658 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001659 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001660 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001661 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001662 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1663 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001664 else
1665 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1666 if test "$enable_framework" ; then
1667 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001668 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1669 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001670 else
1671 # No framework, use the Python app as bundle-loader
1672 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1673 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1674 fi
1675 fi
1676 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001677 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001678 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001679 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001680 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001681 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001682 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001683 else
1684 LDSHARED="ld -Bshareable ${LDFLAGS}"
1685 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001686 OpenBSD*)
1687 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1688 then
1689 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1690 else
1691 case `uname -r` in
1692 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1693 LDSHARED="ld -Bshareable ${LDFLAGS}"
1694 ;;
1695 *)
1696 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1697 ;;
1698 esac
1699 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001700 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001701 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001702 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001703 then LDSHARED='$(CC) -shared'
1704 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001705 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001706 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001707 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001708 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001709 *) LDSHARED="ld";;
1710 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001711fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001712AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001713BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001714# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001715# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001716AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001717if test -z "$CCSHARED"
1718then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001719 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001720 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001721 then CCSHARED="-fPIC";
1722 elif test `uname -p` = sparc;
1723 then CCSHARED="-xcode=pic32";
1724 else CCSHARED="-Kpic";
1725 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001726 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001727 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001728 else CCSHARED="+z";
1729 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001730 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001731 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001732 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001733 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001734 if test "$GCC" = "yes"
1735 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001736 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001737 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001738 SCO_SV*)
1739 if test "$GCC" = "yes"
1740 then CCSHARED="-fPIC"
1741 else CCSHARED="-Kpic -belf"
1742 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001743 IRIX*/6*) case $CC in
1744 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001745 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001746 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001747 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001748 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001749fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001750AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001751# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001752# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001753AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001754if test -z "$LINKFORSHARED"
1755then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001756 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001757 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001758 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001759 LINKFORSHARED="-Wl,-E -Wl,+s";;
1760# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001761 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001762 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001763 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001764 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001765 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1766 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001767 # not used by the core itself but which needs to be in the core so
1768 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001769 # -prebind is no longer used, because it actually seems to give a
1770 # slowdown in stead of a speedup, maybe due to the large number of
1771 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001772
1773 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001774 if test "$enable_framework"
1775 then
Jack Jansenda49e192005-01-07 13:08:22 +00001776 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001777 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001778 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001779 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001780 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001781 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001782 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001783 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1784 then
1785 LINKFORSHARED="-Wl,--export-dynamic"
1786 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001787 SunOS/5*) case $CC in
1788 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001789 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001790 then
1791 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001792 fi;;
1793 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001794 CYGWIN*)
1795 if test $enable_shared = "no"
1796 then
1797 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1798 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001799 QNX*)
1800 # -Wl,-E causes the symbols to be added to the dynamic
1801 # symbol table so that they can be found when a module
1802 # is loaded. -N 2048K causes the stack size to be set
1803 # to 2048 kilobytes so that the stack doesn't overflow
1804 # when running test_compile.py.
1805 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001806 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001807fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001808AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001809
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001810
Neil Schemenauer61c51152001-01-26 16:18:16 +00001811AC_SUBST(CFLAGSFORSHARED)
1812AC_MSG_CHECKING(CFLAGSFORSHARED)
1813if test ! "$LIBRARY" = "$LDLIBRARY"
1814then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001815 case $ac_sys_system in
1816 CYGWIN*)
1817 # Cygwin needs CCSHARED when building extension DLLs
1818 # but not when building the interpreter DLL.
1819 CFLAGSFORSHARED='';;
1820 *)
1821 CFLAGSFORSHARED='$(CCSHARED)'
1822 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001823fi
1824AC_MSG_RESULT($CFLAGSFORSHARED)
1825
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001826# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1827# library (with --enable-shared).
1828# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001829# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1830# if it is not required, since it creates a dependency of the shared library
1831# to LIBS. This, in turn, means that applications linking the shared libpython
1832# don't need to link LIBS explicitly. The default should be only changed
1833# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001834AC_SUBST(SHLIBS)
1835AC_MSG_CHECKING(SHLIBS)
1836case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001837 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001838 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001839esac
1840AC_MSG_RESULT($SHLIBS)
1841
1842
Guido van Rossum627b2d71993-12-24 10:39:16 +00001843# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001844AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1845AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001846
Skip Montanaro4d756af2008-12-01 01:55:22 +00001847# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001848if test "$with_threads" = "yes" -o -z "$with_threads"; then
1849 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1850 # posix4 on Solaris 2.6
1851 # pthread (first!) on Linux
1852fi
1853
Martin v. Löwis19d17342003-06-14 21:03:05 +00001854# check if we need libintl for locale functions
1855AC_CHECK_LIB(intl, textdomain,
1856 AC_DEFINE(WITH_LIBINTL, 1,
1857 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001858
1859# checks for system dependent C++ extensions support
1860case "$ac_sys_system" in
1861 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1862 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1863 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001864 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1865 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1866 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001867 AC_MSG_RESULT(yes)],
1868 [AC_MSG_RESULT(no)]);;
1869 *) ;;
1870esac
1871
Guido van Rossum70c7f481998-03-26 18:44:10 +00001872# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001873# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001874AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001875AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001876
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001877case "$ac_sys_system" in
1878BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001879AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1880;;
1881esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001882
Guido van Rossumc5a39031996-07-31 17:35:03 +00001883AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001884AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001885 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1886[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001887AC_MSG_RESULT($withval)
1888LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001889],
1890[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001891
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001892# Check for use of the system libffi library
1893AC_MSG_CHECKING(for --with-system-ffi)
1894AC_ARG_WITH(system_ffi,
1895 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1896
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001897AC_MSG_RESULT($with_system_ffi)
1898
Matthias Klose10cbe482009-04-29 17:18:19 +00001899# Check for --with-dbmliborder
1900AC_MSG_CHECKING(for --with-dbmliborder)
1901AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00001902 AC_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
Matthias Klose10cbe482009-04-29 17:18:19 +00001903[
1904if test x$with_dbmliborder = xyes
1905then
1906AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1907else
1908 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1909 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1910 then
1911 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1912 fi
1913 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00001914fi])
1915AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00001916
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001917# Determine if signalmodule should be used.
1918AC_SUBST(USE_SIGNAL_MODULE)
1919AC_SUBST(SIGNAL_OBJS)
1920AC_MSG_CHECKING(for --with-signal-module)
1921AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001922 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001923
1924if test -z "$with_signal_module"
1925then with_signal_module="yes"
1926fi
1927AC_MSG_RESULT($with_signal_module)
1928
1929if test "${with_signal_module}" = "yes"; then
1930 USE_SIGNAL_MODULE=""
1931 SIGNAL_OBJS=""
1932else
1933 USE_SIGNAL_MODULE="#"
1934 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1935fi
1936
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001937# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001938AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001939USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001940
Guido van Rossum54d93d41997-01-22 20:51:58 +00001941AC_MSG_CHECKING(for --with-dec-threads)
1942AC_SUBST(LDLAST)
1943AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001944 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1945[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001946AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001947LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001948if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001949 with_thread="$withval";
1950fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001951[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001952
Martin v. Löwis11437992002-04-12 09:54:03 +00001953# Templates for things AC_DEFINEd more than once.
1954# For a single AC_DEFINE, no template is needed.
1955AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1956AH_TEMPLATE(_REENTRANT,
1957 [Define to force use of thread-safe errno, h_errno, and other functions])
1958AH_TEMPLATE(WITH_THREAD,
1959 [Define if you want to compile in rudimentary thread support])
1960
Guido van Rossum54d93d41997-01-22 20:51:58 +00001961AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001962dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001963AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001965
Barry Warsawc0d24d82000-06-29 16:12:00 +00001966# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001967dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001968AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001969 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1970 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001971
1972if test -z "$with_threads"
1973then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001974fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001975AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001976
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001977AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001978if test "$with_threads" = "no"
1979then
1980 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001981elif test "$ac_cv_pthread_is_default" = yes
1982then
1983 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001984 # Defining _REENTRANT on system with POSIX threads should not hurt.
1985 AC_DEFINE(_REENTRANT)
1986 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001987 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001988elif test "$ac_cv_kpthread" = "yes"
1989then
1990 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001991 if test "$ac_cv_cxx_thread" = "yes"; then
1992 CXX="$CXX -Kpthread"
1993 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001994 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001995 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001996 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001997elif test "$ac_cv_kthread" = "yes"
1998then
1999 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002000 if test "$ac_cv_cxx_thread" = "yes"; then
2001 CXX="$CXX -Kthread"
2002 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002003 AC_DEFINE(WITH_THREAD)
2004 posix_threads=yes
2005 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002006elif test "$ac_cv_pthread" = "yes"
2007then
2008 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002009 if test "$ac_cv_cxx_thread" = "yes"; then
2010 CXX="$CXX -pthread"
2011 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002012 AC_DEFINE(WITH_THREAD)
2013 posix_threads=yes
2014 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002015else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002016 if test ! -z "$with_threads" -a -d "$with_threads"
2017 then LDFLAGS="$LDFLAGS -L$with_threads"
2018 fi
2019 if test ! -z "$withval" -a -d "$withval"
2020 then LDFLAGS="$LDFLAGS -L$withval"
2021 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002022
2023 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002024 # define _POSIX_THREADS in unistd.h. Some apparently don't
2025 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002026 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2027 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002028 [
2029#include <unistd.h>
2030#ifdef _POSIX_THREADS
2031yes
2032#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002033 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2034 AC_MSG_RESULT($unistd_defines_pthreads)
2035
Martin v. Löwis130fb172001-07-19 11:00:41 +00002036 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002037 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2038 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002039 AC_DEFINE(HURD_C_THREADS, 1,
2040 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002041 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002042 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002043 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2044 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002045 AC_DEFINE(MACH_C_THREADS, 1,
2046 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002047 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002048 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002049 AC_ARG_WITH([pth],
2050 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2051 [AC_MSG_RESULT($withval)
2052 AC_DEFINE([WITH_THREAD])
2053 AC_DEFINE([HAVE_PTH], 1,
2054 [Define if you have GNU PTH threads.])
2055 LIBS="-lpth $LIBS"
2056 THREADOBJ="Python/thread.o"],
2057 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002058
2059 # Just looking for pthread_create in libpthread is not enough:
2060 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2061 # So we really have to include pthread.h, and then link.
2062 _libs=$LIBS
2063 LIBS="$LIBS -lpthread"
2064 AC_MSG_CHECKING([for pthread_create in -lpthread])
2065 AC_TRY_LINK([#include <pthread.h>
2066
2067void * start_routine (void *arg) { exit (0); }], [
2068pthread_create (NULL, NULL, start_routine, NULL)], [
2069 AC_MSG_RESULT(yes)
2070 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002071 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002072 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002073 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002074 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002075 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002076 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002077 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2078 AC_DEFINE(ATHEOS_THREADS, 1,
2079 [Define this if you have AtheOS threads.])
2080 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002081 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002082 AC_DEFINE(BEOS_THREADS, 1,
2083 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002084 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002085 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002086 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002087 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002088 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002089 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002090 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002091 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002092 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002093 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002094 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002095 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002096 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002097 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002098 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002099 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002100 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002101 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002102 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002103
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002104 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2105 LIBS="$LIBS -lmpc"
2106 THREADOBJ="Python/thread.o"
2107 USE_THREAD_MODULE=""])
2108
2109 if test "$posix_threads" != "yes"; then
2110 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2111 LIBS="$LIBS -lthread"
2112 THREADOBJ="Python/thread.o"
2113 USE_THREAD_MODULE=""])
2114 fi
2115
2116 if test "$USE_THREAD_MODULE" != "#"
2117 then
2118 # If the above checks didn't disable threads, (at least) OSF1
2119 # needs this '-threads' argument during linking.
2120 case $ac_sys_system in
2121 OSF1) LDLAST=-threads;;
2122 esac
2123 fi
2124fi
2125
2126if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002127 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002128 AC_DEFINE(_POSIX_THREADS, 1,
2129 [Define if you have POSIX threads,
2130 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002131 fi
2132
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002133 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2134 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002135 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2136 Defined for Solaris 2.6 bug in pthread header.)
2137 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002138 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002139 Define if the Posix semaphores do not work on your system)
2140 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002141 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2142 Define if the Posix semaphores do not work on your system)
2143 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002144 esac
2145
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002146 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2147 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2148 [AC_TRY_RUN([#include <pthread.h>
2149 void *foo(void *parm) {
2150 return NULL;
2151 }
2152 main() {
2153 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002154 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002155 if (pthread_attr_init(&attr)) exit(-1);
2156 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002157 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002158 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002159 }],
2160 ac_cv_pthread_system_supported=yes,
2161 ac_cv_pthread_system_supported=no,
2162 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002163 ])
2164 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2165 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002166 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002167 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002168 AC_CHECK_FUNCS(pthread_sigmask,
2169 [case $ac_sys_system in
2170 CYGWIN*)
2171 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2172 [Define if pthread_sigmask() does not work on your system.])
2173 ;;
2174 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002175fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002176
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002177
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002178# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002179AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002180AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002181AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002182[ --enable-ipv6 Enable ipv6 (with ipv4) support
2183 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002184[ case "$enableval" in
2185 no)
2186 AC_MSG_RESULT(no)
2187 ipv6=no
2188 ;;
2189 *) AC_MSG_RESULT(yes)
2190 AC_DEFINE(ENABLE_IPV6)
2191 ipv6=yes
2192 ;;
2193 esac ],
2194
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002195[
2196dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002197 AC_TRY_RUN([ /* AF_INET6 available check */
2198#include <sys/types.h>
2199#include <sys/socket.h>
2200main()
2201{
2202 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2203 exit(1);
2204 else
2205 exit(0);
2206}
2207],
2208 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002209 ipv6=yes,
2210 AC_MSG_RESULT(no)
2211 ipv6=no,
2212 AC_MSG_RESULT(no)
2213 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002214)
2215
2216if test "$ipv6" = "yes"; then
2217 AC_MSG_CHECKING(if RFC2553 API is available)
2218 AC_TRY_COMPILE([#include <sys/types.h>
2219#include <netinet/in.h>],
2220 [struct sockaddr_in6 x;
2221x.sin6_scope_id;],
2222 AC_MSG_RESULT(yes)
2223 ipv6=yes,
2224 AC_MSG_RESULT(no, IPv6 disabled)
2225 ipv6=no)
2226fi
2227
2228if test "$ipv6" = "yes"; then
2229 AC_DEFINE(ENABLE_IPV6)
2230fi
2231])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002232
2233ipv6type=unknown
2234ipv6lib=none
2235ipv6trylibc=no
2236
2237if test "$ipv6" = "yes"; then
2238 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002239 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2240 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002241 case $i in
2242 inria)
2243 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002244 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245#include <netinet/in.h>
2246#ifdef IPV6_INRIA_VERSION
2247yes
2248#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002249 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002250 ;;
2251 kame)
2252 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002253 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002254#include <netinet/in.h>
2255#ifdef __KAME__
2256yes
2257#endif],
2258 [ipv6type=$i;
2259 ipv6lib=inet6
2260 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002261 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002262 ;;
2263 linux-glibc)
2264 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002265 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002266#include <features.h>
2267#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2268yes
2269#endif],
2270 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002271 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002272 ;;
2273 linux-inet6)
2274 dnl http://www.v6.linux.or.jp/
2275 if test -d /usr/inet6; then
2276 ipv6type=$i
2277 ipv6lib=inet6
2278 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002279 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002280 fi
2281 ;;
2282 solaris)
2283 if test -f /etc/netconfig; then
2284 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2285 ipv6type=$i
2286 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002287 fi
2288 fi
2289 ;;
2290 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002291 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002292#include <sys/param.h>
2293#ifdef _TOSHIBA_INET6
2294yes
2295#endif],
2296 [ipv6type=$i;
2297 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002298 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002299 ;;
2300 v6d)
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 </usr/local/v6/include/sys/v6config.h>
2303#ifdef __V6D__
2304yes
2305#endif],
2306 [ipv6type=$i;
2307 ipv6lib=v6;
2308 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002309 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002310 ;;
2311 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002312 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313#include <sys/param.h>
2314#ifdef _ZETA_MINAMI_INET6
2315yes
2316#endif],
2317 [ipv6type=$i;
2318 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002319 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002320 ;;
2321 esac
2322 if test "$ipv6type" != "unknown"; then
2323 break
2324 fi
2325 done
2326 AC_MSG_RESULT($ipv6type)
2327fi
2328
2329if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2330 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2331 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2332 echo "using lib$ipv6lib"
2333 else
2334 if test $ipv6trylibc = "yes"; then
2335 echo "using libc"
2336 else
2337 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2338 echo "You need to fetch lib$ipv6lib.a from appropriate"
2339 echo 'ipv6 kit and compile beforehand.'
2340 exit 1
2341 fi
2342 fi
2343fi
2344
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002345AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2346AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2347 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2348 AC_MSG_RESULT(yes),
2349 AC_MSG_RESULT(no)
2350)
2351
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002352# Check for --with-doc-strings
2353AC_MSG_CHECKING(for --with-doc-strings)
2354AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002355 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002356
2357if test -z "$with_doc_strings"
2358then with_doc_strings="yes"
2359fi
2360if test "$with_doc_strings" != "no"
2361then
2362 AC_DEFINE(WITH_DOC_STRINGS, 1,
2363 [Define if you want documentation strings in extension modules])
2364fi
2365AC_MSG_RESULT($with_doc_strings)
2366
Neil Schemenauera35c6882001-02-27 04:45:05 +00002367# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002368AC_MSG_CHECKING(for --with-tsc)
2369AC_ARG_WITH(tsc,
2370[ --with(out)-tsc enable/disable timestamp counter profile], [
2371if test "$withval" != no
2372then
2373 AC_DEFINE(WITH_TSC, 1,
2374 [Define to profile with the Pentium timestamp counter])
2375 AC_MSG_RESULT(yes)
2376else AC_MSG_RESULT(no)
2377fi],
2378[AC_MSG_RESULT(no)])
2379
2380# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002381AC_MSG_CHECKING(for --with-pymalloc)
2382AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002383 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002384
2385if test -z "$with_pymalloc"
2386then with_pymalloc="yes"
2387fi
2388if test "$with_pymalloc" != "no"
2389then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390 AC_DEFINE(WITH_PYMALLOC, 1,
2391 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002392fi
2393AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002394
Barry Warsawef82cd72000-06-30 16:21:01 +00002395# Check for --with-wctype-functions
2396AC_MSG_CHECKING(for --with-wctype-functions)
2397AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002398 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2399[
Barry Warsawef82cd72000-06-30 16:21:01 +00002400if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002401then
2402 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2403 [Define if you want wctype.h functions to be used instead of the
2404 one supplied by Python itself. (see Include/unicodectype.h).])
2405 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002406else AC_MSG_RESULT(no)
2407fi],
2408[AC_MSG_RESULT(no)])
2409
Guido van Rossum68242b51996-05-28 22:53:03 +00002410# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002411AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002412DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002413
Guido van Rossume97ee181999-12-20 21:27:22 +00002414# the dlopen() function means we might want to use dynload_shlib.o. some
2415# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002416AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002417
2418# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2419# loading of modules.
2420AC_SUBST(DYNLOADFILE)
2421AC_MSG_CHECKING(DYNLOADFILE)
2422if test -z "$DYNLOADFILE"
2423then
2424 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002425 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2426 if test "$ac_cv_func_dlopen" = yes
2427 then DYNLOADFILE="dynload_shlib.o"
2428 else DYNLOADFILE="dynload_aix.o"
2429 fi
2430 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002431 BeOS*) DYNLOADFILE="dynload_beos.o";;
2432 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002433 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2434 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002435 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002436 *)
2437 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2438 # out any dynamic loading
2439 if test "$ac_cv_func_dlopen" = yes
2440 then DYNLOADFILE="dynload_shlib.o"
2441 else DYNLOADFILE="dynload_stub.o"
2442 fi
2443 ;;
2444 esac
2445fi
2446AC_MSG_RESULT($DYNLOADFILE)
2447if test "$DYNLOADFILE" != "dynload_stub.o"
2448then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002449 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2450 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002451fi
2452
Jack Jansenc49e5b72001-06-19 15:00:23 +00002453# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2454
2455AC_SUBST(MACHDEP_OBJS)
2456AC_MSG_CHECKING(MACHDEP_OBJS)
2457if test -z "$MACHDEP_OBJS"
2458then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002459 MACHDEP_OBJS=$extra_machdep_objs
2460else
2461 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002462fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002463AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002464
Guido van Rossum627b2d71993-12-24 10:39:16 +00002465# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002466AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2467 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002468 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002469 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002470 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002471 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002472 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002473 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2474 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002475 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002476 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002477 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002478 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002479
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002480# For some functions, having a definition is not sufficient, since
2481# we want to take their address.
2482AC_MSG_CHECKING(for chroot)
2483AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2484 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2485 AC_MSG_RESULT(yes),
2486 AC_MSG_RESULT(no)
2487)
2488AC_MSG_CHECKING(for link)
2489AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2490 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2491 AC_MSG_RESULT(yes),
2492 AC_MSG_RESULT(no)
2493)
2494AC_MSG_CHECKING(for symlink)
2495AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2496 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2497 AC_MSG_RESULT(yes),
2498 AC_MSG_RESULT(no)
2499)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002500AC_MSG_CHECKING(for fchdir)
2501AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2502 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2503 AC_MSG_RESULT(yes),
2504 AC_MSG_RESULT(no)
2505)
2506AC_MSG_CHECKING(for fsync)
2507AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002508 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002509 AC_MSG_RESULT(yes),
2510 AC_MSG_RESULT(no)
2511)
2512AC_MSG_CHECKING(for fdatasync)
2513AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2514 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2515 AC_MSG_RESULT(yes),
2516 AC_MSG_RESULT(no)
2517)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002518AC_MSG_CHECKING(for epoll)
2519AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2520 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2521 AC_MSG_RESULT(yes),
2522 AC_MSG_RESULT(no)
2523)
2524AC_MSG_CHECKING(for kqueue)
2525AC_TRY_COMPILE([
2526#include <sys/types.h>
2527#include <sys/event.h>
2528 ], int x=kqueue(),
2529 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2530 AC_MSG_RESULT(yes),
2531 AC_MSG_RESULT(no)
2532)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002533# On some systems (eg. FreeBSD 5), we would find a definition of the
2534# functions ctermid_r, setgroups in the library, but no prototype
2535# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2536# address to avoid compiler warnings and potential miscompilations
2537# because of the missing prototypes.
2538
2539AC_MSG_CHECKING(for ctermid_r)
2540AC_TRY_COMPILE([
2541#include "confdefs.h"
2542#include <stdio.h>
2543], void* p = ctermid_r,
2544 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2545 AC_MSG_RESULT(yes),
2546 AC_MSG_RESULT(no)
2547)
2548
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002549AC_MSG_CHECKING(for flock)
2550AC_TRY_COMPILE([
2551#include "confdefs.h"
2552#include <sys/file.h>
2553], void* p = flock,
2554 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2555 AC_MSG_RESULT(yes),
2556 AC_MSG_RESULT(no)
2557)
2558
2559AC_MSG_CHECKING(for getpagesize)
2560AC_TRY_COMPILE([
2561#include "confdefs.h"
2562#include <unistd.h>
2563], void* p = getpagesize,
2564 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2565 AC_MSG_RESULT(yes),
2566 AC_MSG_RESULT(no)
2567)
2568
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002569dnl check for true
2570AC_CHECK_PROGS(TRUE, true, /bin/true)
2571
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002572dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2573dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002574AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002575 AC_CHECK_LIB(resolv, inet_aton)
2576)
2577
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002578# On Tru64, chflags seems to be present, but calling it will
2579# exit Python
2580AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002581AC_CACHE_VAL(ac_cv_have_chflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002582AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002583#include <sys/stat.h>
2584#include <unistd.h>
2585int main(int argc, char*argv[])
2586{
2587 if(chflags(argv[0], 0) != 0)
2588 return 1;
2589 return 0;
2590}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002591]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002592 ac_cv_have_chflags=no,
2593 ac_cv_have_chflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002594)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002595AC_MSG_RESULT($ac_cv_have_chflags)
2596if test $ac_cv_have_chflags = yes
2597then
2598 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2599fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002600
2601AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002602AC_CACHE_VAL(ac_cv_have_lchflags,
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002603AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002604#include <sys/stat.h>
2605#include <unistd.h>
2606int main(int argc, char*argv[])
2607{
2608 if(lchflags(argv[0], 0) != 0)
2609 return 1;
2610 return 0;
2611}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002612]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002613 ac_cv_have_lchflags=no,
2614 ac_cv_have_lchflags=no)
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002615)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002616AC_MSG_RESULT($ac_cv_have_lchflags)
2617if test $ac_cv_have_lchflags = yes
2618then
2619 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2620fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002621
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002622dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002623dnl
2624dnl On MacOSX the linker will search for dylibs on the entire linker path
2625dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2626dnl to revert to a more traditional unix behaviour and make it possible to
2627dnl override the system libz with a local static library of libz. Temporarily
2628dnl add that flag to our CFLAGS as well to ensure that we check the version
2629dnl of libz that will be used by setup.py.
2630dnl The -L/usr/local/lib is needed as wel to get the same compilation
2631dnl environment as setup.py (and leaving it out can cause configure to use the
2632dnl wrong version of the library)
2633case $ac_sys_system/$ac_sys_release in
2634Darwin/*)
2635 _CUR_CFLAGS="${CFLAGS}"
2636 _CUR_LDFLAGS="${LDFLAGS}"
2637 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2638 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2639 ;;
2640esac
2641
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002642AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2643
Ronald Oussorenf8752642006-07-06 10:13:35 +00002644case $ac_sys_system/$ac_sys_release in
2645Darwin/*)
2646 CFLAGS="${_CUR_CFLAGS}"
2647 LDFLAGS="${_CUR_LDFLAGS}"
2648 ;;
2649esac
2650
Martin v. Löwise9416172003-05-03 10:12:45 +00002651AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002652AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002653#include "confdefs.h"
2654#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002655], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002656 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2657 AC_MSG_RESULT(yes),
2658 AC_MSG_RESULT(no)
2659)
2660
2661AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002662AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002663#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002664#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002665#include <sys/socket.h>
2666#include <netinet/in.h>
2667#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002668], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002669 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2670 AC_MSG_RESULT(yes),
2671 AC_MSG_RESULT(no)
2672)
2673
2674AC_MSG_CHECKING(for inet_pton)
2675AC_TRY_COMPILE([
2676#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002677#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002678#include <sys/socket.h>
2679#include <netinet/in.h>
2680#include <arpa/inet.h>
2681], void* p = inet_pton,
2682 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2683 AC_MSG_RESULT(yes),
2684 AC_MSG_RESULT(no)
2685)
2686
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002687# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002688AC_MSG_CHECKING(for setgroups)
2689AC_TRY_COMPILE([
2690#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002691#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002692#ifdef HAVE_GRP_H
2693#include <grp.h>
2694#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002695],
2696void* p = setgroups,
2697 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2698 AC_MSG_RESULT(yes),
2699 AC_MSG_RESULT(no)
2700)
2701
Fred Drake8cef4cf2000-06-28 16:40:38 +00002702# check for openpty and forkpty
2703
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002704AC_CHECK_FUNCS(openpty,,
2705 AC_CHECK_LIB(util,openpty,
2706 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2707 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2708 )
2709)
2710AC_CHECK_FUNCS(forkpty,,
2711 AC_CHECK_LIB(util,forkpty,
2712 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2713 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2714 )
2715)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002716
Brett Cannonaa5778d2008-03-18 04:09:00 +00002717# Stuff for expat.
2718AC_CHECK_FUNCS(memmove)
2719
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002720# check for long file support functions
2721AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2722
Brett Cannonaa5778d2008-03-18 04:09:00 +00002723AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002724AC_CHECK_FUNCS(getpgrp,
2725 AC_TRY_COMPILE([#include <unistd.h>],
2726 [getpgrp(0);],
2727 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2728 [Define if getpgrp() must be called as getpgrp(0).])
2729 )
2730)
Jack Jansen150753c2003-03-29 22:07:47 +00002731AC_CHECK_FUNCS(setpgrp,
2732 AC_TRY_COMPILE([#include <unistd.h>],
2733 [setpgrp(0,0);],
2734 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2735 [Define if setpgrp() must be called as setpgrp(0, 0).])
2736 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002737)
2738AC_CHECK_FUNCS(gettimeofday,
2739 AC_TRY_COMPILE([#include <sys/time.h>],
2740 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2741 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2742 [Define if gettimeofday() does not have second (timezone) argument
2743 This is the case on Motorola V4 (R40V4.2)])
2744 )
2745)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002746
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002747AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002748AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002749#if defined(MAJOR_IN_MKDEV)
2750#include <sys/mkdev.h>
2751#elif defined(MAJOR_IN_SYSMACROS)
2752#include <sys/sysmacros.h>
2753#else
2754#include <sys/types.h>
2755#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002756],[
2757 makedev(major(0),minor(0));
2758],[
2759 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2760 [Define to 1 if you have the device macros.])
2761 AC_MSG_RESULT(yes)
2762],[
2763 AC_MSG_RESULT(no)
2764])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002765
2766# On OSF/1 V5.1, getaddrinfo is available, but a define
2767# for [no]getaddrinfo in netdb.h.
2768AC_MSG_CHECKING(for getaddrinfo)
2769AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002770#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002771#include <sys/socket.h>
2772#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002773#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002774], [getaddrinfo(NULL, NULL, NULL, NULL);],
2775have_getaddrinfo=yes,
2776have_getaddrinfo=no)
2777AC_MSG_RESULT($have_getaddrinfo)
2778if test $have_getaddrinfo = yes
2779then
2780 AC_MSG_CHECKING(getaddrinfo bug)
2781 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2782 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002783#include <sys/types.h>
2784#include <netdb.h>
2785#include <string.h>
2786#include <sys/socket.h>
2787#include <netinet/in.h>
2788
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002789int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002790{
2791 int passive, gaierr, inet4 = 0, inet6 = 0;
2792 struct addrinfo hints, *ai, *aitop;
2793 char straddr[INET6_ADDRSTRLEN], strport[16];
2794
2795 for (passive = 0; passive <= 1; passive++) {
2796 memset(&hints, 0, sizeof(hints));
2797 hints.ai_family = AF_UNSPEC;
2798 hints.ai_flags = passive ? AI_PASSIVE : 0;
2799 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002800 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002801 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2802 (void)gai_strerror(gaierr);
2803 goto bad;
2804 }
2805 for (ai = aitop; ai; ai = ai->ai_next) {
2806 if (ai->ai_addr == NULL ||
2807 ai->ai_addrlen == 0 ||
2808 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2809 straddr, sizeof(straddr), strport, sizeof(strport),
2810 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2811 goto bad;
2812 }
2813 switch (ai->ai_family) {
2814 case AF_INET:
2815 if (strcmp(strport, "54321") != 0) {
2816 goto bad;
2817 }
2818 if (passive) {
2819 if (strcmp(straddr, "0.0.0.0") != 0) {
2820 goto bad;
2821 }
2822 } else {
2823 if (strcmp(straddr, "127.0.0.1") != 0) {
2824 goto bad;
2825 }
2826 }
2827 inet4++;
2828 break;
2829 case AF_INET6:
2830 if (strcmp(strport, "54321") != 0) {
2831 goto bad;
2832 }
2833 if (passive) {
2834 if (strcmp(straddr, "::") != 0) {
2835 goto bad;
2836 }
2837 } else {
2838 if (strcmp(straddr, "::1") != 0) {
2839 goto bad;
2840 }
2841 }
2842 inet6++;
2843 break;
2844 case AF_UNSPEC:
2845 goto bad;
2846 break;
2847 default:
2848 /* another family support? */
2849 break;
2850 }
2851 }
2852 }
2853
2854 if (!(inet4 == 0 || inet4 == 2))
2855 goto bad;
2856 if (!(inet6 == 0 || inet6 == 2))
2857 goto bad;
2858
2859 if (aitop)
2860 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002861 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002862
2863 bad:
2864 if (aitop)
2865 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002866 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002867}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002868]], ac_cv_buggy_getaddrinfo=no,
2869 ac_cv_buggy_getaddrinfo=yes,
2870 ac_cv_buggy_getaddrinfo=yes))
2871fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002872
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002873if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2874then
2875 if test $ipv6 = yes
2876 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002877 echo 'Fatal: You must get working getaddrinfo() function.'
2878 echo ' or you can specify "--disable-ipv6"'.
2879 exit 1
2880 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002881else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002882 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002883fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002884AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002885
Guido van Rossum627b2d71993-12-24 10:39:16 +00002886# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002887AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002888AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002889AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002890AC_CHECK_MEMBERS([struct stat.st_rdev])
2891AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002892AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002893AC_CHECK_MEMBERS([struct stat.st_gen])
2894AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002895AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002896
2897AC_MSG_CHECKING(for time.h that defines altzone)
2898AC_CACHE_VAL(ac_cv_header_time_altzone,
2899[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2900 ac_cv_header_time_altzone=yes,
2901 ac_cv_header_time_altzone=no)])
2902AC_MSG_RESULT($ac_cv_header_time_altzone)
2903if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002904 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002905fi
2906
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002907was_it_defined=no
2908AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002909AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002910#include <sys/types.h>
2911#include <sys/select.h>
2912#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002913], [;], [
2914 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2915 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2916 (which you can't on SCO ODT 3.0).])
2917 was_it_defined=yes
2918])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002919AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002920
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002921AC_MSG_CHECKING(for addrinfo)
2922AC_CACHE_VAL(ac_cv_struct_addrinfo,
2923AC_TRY_COMPILE([
2924# include <netdb.h>],
2925 [struct addrinfo a],
2926 ac_cv_struct_addrinfo=yes,
2927 ac_cv_struct_addrinfo=no))
2928AC_MSG_RESULT($ac_cv_struct_addrinfo)
2929if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002930 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002931fi
2932
2933AC_MSG_CHECKING(for sockaddr_storage)
2934AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2935AC_TRY_COMPILE([
2936# include <sys/types.h>
2937# include <sys/socket.h>],
2938 [struct sockaddr_storage s],
2939 ac_cv_struct_sockaddr_storage=yes,
2940 ac_cv_struct_sockaddr_storage=no))
2941AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2942if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002943 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002944fi
2945
Guido van Rossum627b2d71993-12-24 10:39:16 +00002946# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002947
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002948AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002949AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002950
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002951works=no
2952AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002953AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2954 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2955)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002956AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002957
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002958works=no
2959AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002960AC_TRY_COMPILE([], [signed char c;], works=yes,
2961 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2962)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002963AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002964
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002965have_prototypes=no
2966AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002967AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2968 AC_DEFINE(HAVE_PROTOTYPES, 1,
2969 [Define if your compiler supports function prototype])
2970 have_prototypes=yes
2971])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002972AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002973
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002974works=no
2975AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002976AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002977#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002978int foo(int x, ...) {
2979 va_list va;
2980 va_start(va, x);
2981 va_arg(va, int);
2982 va_arg(va, char *);
2983 va_arg(va, double);
2984 return 0;
2985}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002986], [return foo(10, "", 3.14);], [
2987 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2988 [Define if your compiler supports variable length function prototypes
2989 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2990 works=yes
2991])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002993
Dave Cole331708b2004-08-09 04:51:41 +00002994# check for socketpair
2995AC_MSG_CHECKING(for socketpair)
2996AC_TRY_COMPILE([
2997#include <sys/types.h>
2998#include <sys/socket.h>
2999], void *x=socketpair,
3000 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3001 AC_MSG_RESULT(yes),
3002 AC_MSG_RESULT(no)
3003)
3004
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003005# check if sockaddr has sa_len member
3006AC_MSG_CHECKING(if sockaddr has sa_len member)
3007AC_TRY_COMPILE([#include <sys/types.h>
3008#include <sys/socket.h>],
3009[struct sockaddr x;
3010x.sa_len = 0;],
3011 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003012 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003013 AC_MSG_RESULT(no))
3014
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003015va_list_is_array=no
3016AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003017AC_TRY_COMPILE([
3018#ifdef HAVE_STDARG_PROTOTYPES
3019#include <stdarg.h>
3020#else
3021#include <varargs.h>
3022#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003023], [va_list list1, list2; list1 = list2;], , [
3024 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3025 va_list_is_array=yes
3026])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003027AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003028
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003029# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003030AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3031 [Define this if you have some version of gethostbyname_r()])
3032
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003033AC_CHECK_FUNC(gethostbyname_r, [
3034 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3035 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3036 OLD_CFLAGS=$CFLAGS
3037 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3038 AC_TRY_COMPILE([
3039# include <netdb.h>
3040 ], [
3041 char *name;
3042 struct hostent *he, *res;
3043 char buffer[2048];
3044 int buflen = 2048;
3045 int h_errnop;
3046
3047 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3048 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003049 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003050 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3051 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003052 AC_MSG_RESULT(yes)
3053 ], [
3054 AC_MSG_RESULT(no)
3055 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3056 AC_TRY_COMPILE([
3057# include <netdb.h>
3058 ], [
3059 char *name;
3060 struct hostent *he;
3061 char buffer[2048];
3062 int buflen = 2048;
3063 int h_errnop;
3064
3065 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3066 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003067 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003068 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3069 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003070 AC_MSG_RESULT(yes)
3071 ], [
3072 AC_MSG_RESULT(no)
3073 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3074 AC_TRY_COMPILE([
3075# include <netdb.h>
3076 ], [
3077 char *name;
3078 struct hostent *he;
3079 struct hostent_data data;
3080
3081 (void) gethostbyname_r(name, he, &data);
3082 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003083 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003084 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3085 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003086 AC_MSG_RESULT(yes)
3087 ], [
3088 AC_MSG_RESULT(no)
3089 ])
3090 ])
3091 ])
3092 CFLAGS=$OLD_CFLAGS
3093], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003094 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003095])
3096AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3097AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3098AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003099AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003100AC_SUBST(HAVE_GETHOSTBYNAME)
3101
Guido van Rossum627b2d71993-12-24 10:39:16 +00003102# checks for system services
3103# (none yet)
3104
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003105# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003106AC_CHECK_FUNC(__fpu_control,
3107 [],
3108 [AC_CHECK_LIB(ieee, __fpu_control)
3109])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003110
Guido van Rossum93274221997-05-09 02:42:00 +00003111# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003112AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003113AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003114 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3115[
Guido van Rossum93274221997-05-09 02:42:00 +00003116if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003117then
3118 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3119 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3120 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003121else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003122fi],
3123[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003124
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003125# check for --with-libm=...
3126AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003127case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003128Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003129BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003130*) LIBM=-lm
3131esac
Guido van Rossum93274221997-05-09 02:42:00 +00003132AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003133AC_ARG_WITH(libm,
3134 AC_HELP_STRING(--with-libm=STRING, math library),
3135[
Guido van Rossum93274221997-05-09 02:42:00 +00003136if test "$withval" = no
3137then LIBM=
3138 AC_MSG_RESULT(force LIBM empty)
3139elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003140then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003141 AC_MSG_RESULT(set LIBM="$withval")
3142else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003143fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003144[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003145
3146# check for --with-libc=...
3147AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003148AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003149AC_ARG_WITH(libc,
3150 AC_HELP_STRING(--with-libc=STRING, C library),
3151[
Guido van Rossum93274221997-05-09 02:42:00 +00003152if test "$withval" = no
3153then LIBC=
3154 AC_MSG_RESULT(force LIBC empty)
3155elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003156then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003157 AC_MSG_RESULT(set LIBC="$withval")
3158else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003159fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003160[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003161
Christian Heimes0a8143f2007-12-18 23:22:54 +00003162# ************************************
3163# * Check for mathematical functions *
3164# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003165
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003166LIBS_SAVE=$LIBS
3167LIBS="$LIBS $LIBM"
3168
Mark Dickinson04b27232009-01-04 12:29:36 +00003169# Detect whether system arithmetic is subject to x87-style double
3170# rounding issues. The result of this test has little meaning on non
3171# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3172# mode is round-to-nearest and double rounding issues are present, and
3173# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3174AC_MSG_CHECKING(for x87-style double rounding)
3175AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3176AC_TRY_RUN([
3177#include <stdlib.h>
3178#include <math.h>
3179int main() {
3180 volatile double x, y, z;
3181 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3182 x = 0.99999999999999989; /* 1-2**-53 */
3183 y = 1./x;
3184 if (y != 1.)
3185 exit(0);
3186 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3187 x = 1e16;
3188 y = 2.99999;
3189 z = x + y;
3190 if (z != 1e16+4.)
3191 exit(0);
3192 /* both tests show evidence of double rounding */
3193 exit(1);
3194}
3195],
3196ac_cv_x87_double_rounding=no,
3197ac_cv_x87_double_rounding=yes,
3198ac_cv_x87_double_rounding=no)])
3199AC_MSG_RESULT($ac_cv_x87_double_rounding)
3200if test "$ac_cv_x87_double_rounding" = yes
3201then
3202 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3203 [Define if arithmetic is subject to x87-style double rounding issue])
3204fi
3205
Jesse Noller355b1262009-04-02 00:03:28 +00003206# Multiprocessing check for broken sem_getvalue
3207AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003208AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003209AC_TRY_RUN([
3210#include <unistd.h>
3211#include <fcntl.h>
3212#include <stdio.h>
3213#include <semaphore.h>
3214#include <sys/stat.h>
3215
3216int main(void){
3217 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3218 int count;
3219 int res;
3220 if(a==SEM_FAILED){
3221 perror("sem_open");
3222 return 1;
3223
3224 }
3225 res = sem_getvalue(a, &count);
3226 sem_close(a);
3227 return res==-1 ? 1 : 0;
3228}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003229], ac_cv_broken_sem_getvalue=no,
3230 ac_cv_broken_sem_getvalue=yes,
3231 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003232)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003233AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3234if test $ac_cv_broken_sem_getvalue = yes
3235then
3236 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3237 [define to 1 if your sem_getvalue is broken.])
3238fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003239
Mark Dickinson265d7382008-04-21 22:32:24 +00003240# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3241# -0. on some architectures.
3242AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3243AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3244AC_TRY_RUN([
3245#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003246#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003247int main() {
3248 /* return 0 if either negative zeros don't exist
3249 on this platform or if negative zeros exist
3250 and tanh(-0.) == -0. */
3251 if (atan2(0., -1.) == atan2(-0., -1.) ||
3252 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3253 else exit(1);
3254}
3255],
3256ac_cv_tanh_preserves_zero_sign=yes,
3257ac_cv_tanh_preserves_zero_sign=no,
3258ac_cv_tanh_preserves_zero_sign=no)])
3259AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3260if test "$ac_cv_tanh_preserves_zero_sign" = yes
3261then
3262 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3263 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3264fi
3265
Mark Dickinson65898e02009-09-05 10:27:00 +00003266AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3267AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinsond181e3a2009-01-04 13:57:26 +00003268AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003269
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003270LIBS=$LIBS_SAVE
3271
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003272# determine what size digit to use for Python's longs
3273AC_MSG_CHECKING([digit size for Python's longs])
3274AC_ARG_ENABLE(big-digits,
3275AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3276[case $enable_big_digits in
3277yes)
3278 enable_big_digits=30 ;;
3279no)
3280 enable_big_digits=15 ;;
3281[15|30])
3282 ;;
3283*)
3284 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3285esac
3286AC_MSG_RESULT($enable_big_digits)
3287AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3288],
3289[AC_MSG_RESULT(no value specified)])
3290
Guido van Rossumef2255b2000-03-10 22:30:29 +00003291# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003292AC_CHECK_HEADER(wchar.h, [
3293 AC_DEFINE(HAVE_WCHAR_H, 1,
3294 [Define if the compiler provides a wchar.h header file.])
3295 wchar_h="yes"
3296],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003297wchar_h="no"
3298)
3299
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003300# determine wchar_t size
3301if test "$wchar_h" = yes
3302then
Guido van Rossum67b26592001-10-20 14:21:45 +00003303 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003304fi
3305
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003306AC_MSG_CHECKING(for UCS-4 tcl)
3307have_ucs4_tcl=no
3308AC_TRY_COMPILE([
3309#include <tcl.h>
3310#if TCL_UTF_MAX != 6
3311# error "NOT UCS4_TCL"
3312#endif], [], [
3313 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3314 have_ucs4_tcl=yes
3315])
3316AC_MSG_RESULT($have_ucs4_tcl)
3317
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003318# check whether wchar_t is signed or not
3319if test "$wchar_h" = yes
3320then
3321 # check whether wchar_t is signed or not
3322 AC_MSG_CHECKING(whether wchar_t is signed)
3323 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3324 AC_TRY_RUN([
3325 #include <wchar.h>
3326 int main()
3327 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003328 /* Success: exit code 0 */
3329 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003330 }
3331 ],
3332 ac_cv_wchar_t_signed=yes,
3333 ac_cv_wchar_t_signed=no,
3334 ac_cv_wchar_t_signed=yes)])
3335 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3336fi
3337
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003338AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003339dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003340AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003341 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3342 [],
3343 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003344
3345if test $enable_unicode = yes
3346then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003347 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003348 case "$have_ucs4_tcl" in
3349 yes) enable_unicode="ucs4"
3350 ;;
3351 *) enable_unicode="ucs2"
3352 ;;
3353 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003354fi
3355
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003356AH_TEMPLATE(Py_UNICODE_SIZE,
3357 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003358case "$enable_unicode" in
3359ucs2) unicode_size="2"
3360 AC_DEFINE(Py_UNICODE_SIZE,2)
3361 ;;
3362ucs4) unicode_size="4"
3363 AC_DEFINE(Py_UNICODE_SIZE,4)
3364 ;;
3365esac
3366
Martin v. Löwis11437992002-04-12 09:54:03 +00003367AH_TEMPLATE(PY_UNICODE_TYPE,
3368 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003369
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003370AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003371if test "$enable_unicode" = "no"
3372then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003373 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003374 AC_MSG_RESULT(not used)
3375else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003376 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003377 AC_DEFINE(Py_USING_UNICODE, 1,
3378 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003379
3380 # wchar_t is only usable if it maps to an unsigned type
3381 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003382 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003383 then
3384 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003385 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3386 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003387 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003388 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003389 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3390 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3391 then
3392 PY_UNICODE_TYPE="unsigned short"
3393 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3394 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3395 then
3396 PY_UNICODE_TYPE="unsigned long"
3397 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3398 else
3399 PY_UNICODE_TYPE="no type found"
3400 fi
3401 AC_MSG_RESULT($PY_UNICODE_TYPE)
3402fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003403
3404# check for endianness
3405AC_C_BIGENDIAN
3406
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003407# Check whether right shifting a negative integer extends the sign bit
3408# or fills with zeros (like the Cray J90, according to Tim Peters).
3409AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003410AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003411AC_TRY_RUN([
3412int main()
3413{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003414 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003415}
Guido van Rossum3065c942001-09-17 04:03:14 +00003416],
3417ac_cv_rshift_extends_sign=yes,
3418ac_cv_rshift_extends_sign=no,
3419ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003420AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3421if test "$ac_cv_rshift_extends_sign" = no
3422then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003423 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3424 [Define if i>>j for signed int i does not extend the sign bit
3425 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003426fi
3427
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003428# check for getc_unlocked and related locking functions
3429AC_MSG_CHECKING(for getc_unlocked() and friends)
3430AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3431AC_TRY_LINK([#include <stdio.h>],[
3432 FILE *f = fopen("/dev/null", "r");
3433 flockfile(f);
3434 getc_unlocked(f);
3435 funlockfile(f);
3436], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3437AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3438if test "$ac_cv_have_getc_unlocked" = yes
3439then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003440 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3441 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003442fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003443
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003444# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003445# save the value of LIBS so we don't actually link Python with readline
3446LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003447
3448# On some systems we need to link readline to a termcap compatible
3449# library. NOTE: Keep the precedence of listed libraries synchronised
3450# with setup.py.
3451py_cv_lib_readline=no
3452AC_MSG_CHECKING([how to link readline libs])
3453for py_libtermcap in "" ncursesw ncurses curses termcap; do
3454 if test -z "$py_libtermcap"; then
3455 READLINE_LIBS="-lreadline"
3456 else
3457 READLINE_LIBS="-lreadline -l$py_libtermcap"
3458 fi
3459 LIBS="$READLINE_LIBS $LIBS_no_readline"
3460 AC_LINK_IFELSE(
3461 [AC_LANG_CALL([],[readline])],
3462 [py_cv_lib_readline=yes])
3463 if test $py_cv_lib_readline = yes; then
3464 break
3465 fi
3466done
3467# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3468#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003469if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003470 AC_MSG_RESULT([none])
3471else
3472 AC_MSG_RESULT([$READLINE_LIBS])
3473 AC_DEFINE(HAVE_LIBREADLINE, 1,
3474 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003475fi
3476
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003477# check for readline 2.1
3478AC_CHECK_LIB(readline, rl_callback_handler_install,
3479 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003480 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003481
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003482# check for readline 2.2
3483AC_TRY_CPP([#include <readline/readline.h>],
3484have_readline=yes, have_readline=no)
3485if test $have_readline = yes
3486then
3487 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3488 [readline/readline.h],
3489 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3490 [Define if you have readline 2.2]), )
3491fi
3492
Martin v. Löwis0daad592001-09-30 21:09:59 +00003493# check for readline 4.0
3494AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003495 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003496 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003497
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003498# also in 4.0
3499AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3500 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003501 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003502
Guido van Rossum353ae582001-07-10 16:45:32 +00003503# check for readline 4.2
3504AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003505 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003506 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003507
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003508# also in readline 4.2
3509AC_TRY_CPP([#include <readline/readline.h>],
3510have_readline=yes, have_readline=no)
3511if test $have_readline = yes
3512then
3513 AC_EGREP_HEADER([extern int rl_catch_signals;],
3514 [readline/readline.h],
3515 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3516 [Define if you can turn off readline's signal handling.]), )
3517fi
3518
Martin v. Löwis82bca632006-02-10 20:49:30 +00003519# End of readline checks: restore LIBS
3520LIBS=$LIBS_no_readline
3521
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003522AC_MSG_CHECKING(for broken nice())
3523AC_CACHE_VAL(ac_cv_broken_nice, [
3524AC_TRY_RUN([
3525int main()
3526{
3527 int val1 = nice(1);
3528 if (val1 != -1 && val1 == nice(2))
3529 exit(0);
3530 exit(1);
3531}
Guido van Rossum3065c942001-09-17 04:03:14 +00003532],
3533ac_cv_broken_nice=yes,
3534ac_cv_broken_nice=no,
3535ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003536AC_MSG_RESULT($ac_cv_broken_nice)
3537if test "$ac_cv_broken_nice" = yes
3538then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003539 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3540 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003541fi
3542
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003543AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003544AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003545AC_TRY_RUN([
3546#include <poll.h>
3547
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003548int main()
3549{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003550 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003551 int poll_test;
3552
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003553 close (42);
3554
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003555 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003556 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003557 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003558 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003559 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003560 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003561 return 1;
3562}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003563],
3564ac_cv_broken_poll=yes,
3565ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003566ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003567AC_MSG_RESULT($ac_cv_broken_poll)
3568if test "$ac_cv_broken_poll" = yes
3569then
3570 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3571 [Define if poll() sets errno on invalid file descriptors.])
3572fi
3573
Brett Cannon43802422005-02-10 20:48:03 +00003574# Before we can test tzset, we need to check if struct tm has a tm_zone
3575# (which is not required by ISO C or UNIX spec) and/or if we support
3576# tzname[]
3577AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003578
Brett Cannon43802422005-02-10 20:48:03 +00003579# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003580AC_MSG_CHECKING(for working tzset())
3581AC_CACHE_VAL(ac_cv_working_tzset, [
3582AC_TRY_RUN([
3583#include <stdlib.h>
3584#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003585#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003586
3587#if HAVE_TZNAME
3588extern char *tzname[];
3589#endif
3590
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003591int main()
3592{
Brett Cannon18367812003-09-19 00:59:16 +00003593 /* Note that we need to ensure that not only does tzset(3)
3594 do 'something' with localtime, but it works as documented
3595 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003596 This includes making sure that tzname is set properly if
3597 tm->tm_zone does not exist since it is the alternative way
3598 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003599
3600 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003601 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003602 */
3603
Brett Cannon43802422005-02-10 20:48:03 +00003604 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003605 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3606
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003607 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003608 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003609 if (localtime(&groundhogday)->tm_hour != 0)
3610 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003611#if HAVE_TZNAME
3612 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3613 if (strcmp(tzname[0], "UTC") ||
3614 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3615 exit(1);
3616#endif
Brett Cannon18367812003-09-19 00:59:16 +00003617
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003618 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003619 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003620 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003621 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003622#if HAVE_TZNAME
3623 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3624 exit(1);
3625#endif
Brett Cannon18367812003-09-19 00:59:16 +00003626
3627 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3628 tzset();
3629 if (localtime(&groundhogday)->tm_hour != 11)
3630 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003631#if HAVE_TZNAME
3632 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3633 exit(1);
3634#endif
3635
3636#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003637 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3638 exit(1);
3639 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3640 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003641#endif
Brett Cannon18367812003-09-19 00:59:16 +00003642
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003643 exit(0);
3644}
3645],
3646ac_cv_working_tzset=yes,
3647ac_cv_working_tzset=no,
3648ac_cv_working_tzset=no)])
3649AC_MSG_RESULT($ac_cv_working_tzset)
3650if test "$ac_cv_working_tzset" = yes
3651then
3652 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3653 [Define if tzset() actually switches the local timezone in a meaningful way.])
3654fi
3655
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003656# Look for subsecond timestamps in struct stat
3657AC_MSG_CHECKING(for tv_nsec in struct stat)
3658AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3659AC_TRY_COMPILE([#include <sys/stat.h>], [
3660struct stat st;
3661st.st_mtim.tv_nsec = 1;
3662],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003663ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003664ac_cv_stat_tv_nsec=no,
3665ac_cv_stat_tv_nsec=no))
3666AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3667if test "$ac_cv_stat_tv_nsec" = yes
3668then
3669 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3670 [Define if you have struct stat.st_mtim.tv_nsec])
3671fi
3672
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003673# Look for BSD style subsecond timestamps in struct stat
3674AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3675AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3676AC_TRY_COMPILE([#include <sys/stat.h>], [
3677struct stat st;
3678st.st_mtimespec.tv_nsec = 1;
3679],
3680ac_cv_stat_tv_nsec2=yes,
3681ac_cv_stat_tv_nsec2=no,
3682ac_cv_stat_tv_nsec2=no))
3683AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3684if test "$ac_cv_stat_tv_nsec2" = yes
3685then
3686 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3687 [Define if you have struct stat.st_mtimensec])
3688fi
3689
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003690# On HP/UX 11.0, mvwdelch is a block with a return statement
3691AC_MSG_CHECKING(whether mvwdelch is an expression)
3692AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3693AC_TRY_COMPILE([#include <curses.h>], [
3694 int rtn;
3695 rtn = mvwdelch(0,0,0);
3696], ac_cv_mvwdelch_is_expression=yes,
3697 ac_cv_mvwdelch_is_expression=no,
3698 ac_cv_mvwdelch_is_expression=yes))
3699AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3700
3701if test "$ac_cv_mvwdelch_is_expression" = yes
3702then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003703 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3704 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003705fi
3706
3707AC_MSG_CHECKING(whether WINDOW has _flags)
3708AC_CACHE_VAL(ac_cv_window_has_flags,
3709AC_TRY_COMPILE([#include <curses.h>], [
3710 WINDOW *w;
3711 w->_flags = 0;
3712], ac_cv_window_has_flags=yes,
3713 ac_cv_window_has_flags=no,
3714 ac_cv_window_has_flags=no))
3715AC_MSG_RESULT($ac_cv_window_has_flags)
3716
3717
3718if test "$ac_cv_window_has_flags" = yes
3719then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003720 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3721 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003722fi
3723
Walter Dörwald4994d952006-06-19 08:07:50 +00003724AC_MSG_CHECKING(for is_term_resized)
3725AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3726 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3727 AC_MSG_RESULT(yes),
3728 AC_MSG_RESULT(no)
3729)
3730
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003731AC_MSG_CHECKING(for resize_term)
3732AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3733 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003734 AC_MSG_RESULT(yes),
3735 AC_MSG_RESULT(no)
3736)
3737
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003738AC_MSG_CHECKING(for resizeterm)
3739AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3740 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003741 AC_MSG_RESULT(yes),
3742 AC_MSG_RESULT(no)
3743)
3744
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003745AC_MSG_CHECKING(for /dev/ptmx)
3746
3747if test -r /dev/ptmx
3748then
3749 AC_MSG_RESULT(yes)
3750 AC_DEFINE(HAVE_DEV_PTMX, 1,
3751 [Define if we have /dev/ptmx.])
3752else
3753 AC_MSG_RESULT(no)
3754fi
3755
3756AC_MSG_CHECKING(for /dev/ptc)
3757
3758if test -r /dev/ptc
3759then
3760 AC_MSG_RESULT(yes)
3761 AC_DEFINE(HAVE_DEV_PTC, 1,
3762 [Define if we have /dev/ptc.])
3763else
3764 AC_MSG_RESULT(no)
3765fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003766
Brett Cannon09d12362006-05-11 05:11:33 +00003767AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003768AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003769AC_TRY_RUN([[
3770#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00003771#include <stddef.h>
3772#include <string.h>
3773
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003774#ifdef HAVE_SYS_TYPES_H
3775#include <sys/types.h>
3776#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003777
3778#ifdef HAVE_SSIZE_T
3779typedef ssize_t Py_ssize_t;
3780#elif SIZEOF_VOID_P == SIZEOF_LONG
3781typedef long Py_ssize_t;
3782#else
3783typedef int Py_ssize_t;
3784#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003785
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003786int main()
3787{
3788 char buffer[256];
3789
Brett Cannon09d12362006-05-11 05:11:33 +00003790 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3791 return 1;
3792
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003793 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003794 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003795
3796 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3797 return 1;
3798
3799 if (strcmp(buffer, "-123"))
3800 return 1;
3801
Brett Cannon09d12362006-05-11 05:11:33 +00003802 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003803}
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00003804]], ac_cv_have_size_t_format=yes,
3805 ac_cv_have_size_t_format=no,
3806 ac_cv_have_size_t_format=no)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003807)
3808AC_MSG_RESULT($ac_cv_have_size_t_format)
3809if test $ac_cv_have_size_t_format = yes
3810then
3811 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3812 [Define to printf format modifier for Py_ssize_t])
3813fi
Brett Cannon09d12362006-05-11 05:11:33 +00003814
Martin v. Löwis01c04012002-11-11 14:58:44 +00003815AC_CHECK_TYPE(socklen_t,,
3816 AC_DEFINE(socklen_t,int,
3817 Define to `int' if <sys/socket.h> does not define.),[
3818#ifdef HAVE_SYS_TYPES_H
3819#include <sys/types.h>
3820#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003821#ifdef HAVE_SYS_SOCKET_H
3822#include <sys/socket.h>
3823#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003824])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003825
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003826AC_SUBST(THREADHEADERS)
3827
3828for h in `(cd $srcdir;echo Python/thread_*.h)`
3829do
3830 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3831done
3832
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003833AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003834SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003835AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003836for dir in $SRCDIRS; do
3837 if test ! -d $dir; then
3838 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003839 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003840done
3841AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003842
Guido van Rossum627b2d71993-12-24 10:39:16 +00003843# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00003844AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003845AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003846
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003847echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003848if test ! -f Modules/Setup
3849then
3850 cp $srcdir/Modules/Setup.dist Modules/Setup
3851fi
3852
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003853echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003854if test ! -f Modules/Setup.local
3855then
3856 echo "# Edit this file for local setup changes" >Modules/Setup.local
3857fi
3858
3859echo "creating Makefile"
3860$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3861 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003862 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003863
3864case $ac_sys_system in
3865BeOS)
3866 AC_MSG_WARN([
3867
3868 Support for BeOS is deprecated as of Python 2.6.
3869 See PEP 11 for the gory details.
3870 ])
3871 ;;
3872*) ;;
3873esac
3874
Neil Schemenauer66252162001-02-19 04:47:42 +00003875mv config.c Modules