blob: 392ac0d44db998b691fdf43ccf841fd5bac44bbf [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46: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)
Christian Heimes70e5cab2008-12-03 18:18:23 +00007m4_define(PYTHON_VERSION, 3.1)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +000010AC_PREREQ(2.61)
Georg Brandle2e15612009-05-20 18:25:10 +000011AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Benjamin Petersond23f8222009-04-05 19:13:16 +000015dnl Ensure that if prefix is specified, it does not end in a slash. If
16dnl it does, we get path names containing '//' which is both ugly and
17dnl can cause trouble.
18
19dnl Last slash shouldn't be stripped if prefix=/
20if test "$prefix" != "/"; then
21 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
22fi
23
Martin v. Löwis8316feb2003-06-14 07:48:07 +000024dnl This is for stuff that absolutely must end up in pyconfig.h.
25dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026AH_TOP([
27#ifndef Py_PYCONFIG_H
28#define Py_PYCONFIG_H
29])
Martin v. Löwis11437992002-04-12 09:54:03 +000030AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000031/* Define the macros needed if on a UnixWare 7.x system. */
32#if defined(__USLC__) && defined(__SCO_VERSION__)
33#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
34#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000035
36#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000037])
38
Martin v. Löwis8316feb2003-06-14 07:48:07 +000039# We don't use PACKAGE_ variables, and they cause conflicts
40# with other autoconf-based packages that include Python.h
41grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
42rm confdefs.h
43mv confdefs.h.new confdefs.h
44
Guido van Rossum642b6781997-07-19 19:35:41 +000045AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000046VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000047
Martin v. Löwis1142de32002-03-29 16:28:31 +000048AC_SUBST(SOVERSION)
49SOVERSION=1.0
50
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000051# The later defininition of _XOPEN_SOURCE disables certain features
52# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
53AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
54
Martin v. Löwisbcd93962003-05-03 10:32:18 +000055# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
56# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
57# them.
58AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
59
Andrew MacIntyreabccf412003-07-02 13:53:25 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
62# them.
63AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
64
Martin v. Löwisd6320502004-08-12 13:45:08 +000065# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
66# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
67AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
68
Georg Brandlfcaf9102008-07-16 02:17:56 +000069# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
70# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
71# them.
72AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
73
74
Martin v. Löwise981a4e2002-11-11 13:26:51 +000075define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000076
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000077# Arguments passed to configure.
78AC_SUBST(CONFIG_ARGS)
79CONFIG_ARGS="$ac_configure_args"
80
Thomas Wouters477c8d52006-05-27 19:21:47 +000081AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000082 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000083[
84 case $enableval in
85 yes)
86 enableval=/Developer/SDKs/MacOSX10.4u.sdk
87 ;;
88 esac
89 case $enableval in
90 no)
91 UNIVERSALSDK=
92 enable_universalsdk=
93 ;;
94 *)
95 UNIVERSALSDK=$enableval
96 ;;
97 esac
98],[
99 UNIVERSALSDK=
100 enable_universalsdk=
101])
102AC_SUBST(UNIVERSALSDK)
103
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000104AC_SUBST(ARCH_RUN_32BIT)
105
Georg Brandlfcaf9102008-07-16 02:17:56 +0000106UNIVERSAL_ARCHS="32-bit"
107AC_MSG_CHECKING(for --with-universal-archs)
108AC_ARG_WITH(universal-archs,
Ronald Oussoren856624d2009-09-08 07:13:53 +0000109 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000110[
111 AC_MSG_RESULT($withval)
112 UNIVERSAL_ARCHS="$withval"
113],
114[
115 AC_MSG_RESULT(32-bit)
116])
117
118
119
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000120AC_ARG_WITH(framework-name,
121 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
122 specify an alternate name of the framework built with --enable-framework),
123[
124 PYTHONFRAMEWORK=${withval}
125 PYTHONFRAMEWORKDIR=${withval}.framework
126 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
127 ],[
128 PYTHONFRAMEWORK=Python
129 PYTHONFRAMEWORKDIR=Python.framework
130 PYTHONFRAMEWORKIDENTIFIER=org.python.python
131])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000132dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000133AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000134 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
135[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 case $enableval in
137 yes)
138 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000139 esac
140 case $enableval in
141 no)
142 PYTHONFRAMEWORK=
143 PYTHONFRAMEWORKDIR=no-framework
144 PYTHONFRAMEWORKPREFIX=
145 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000146 FRAMEWORKINSTALLFIRST=
147 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000148 FRAMEWORKALTINSTALLFIRST=
149 FRAMEWORKALTINSTALLLAST=
150 if test "x${prefix}" = "xNONE"; then
151 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
152 else
153 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
154 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000155 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000156 ;;
157 *)
158 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000159 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000160 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000161 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Georg Brandlfcaf9102008-07-16 02:17:56 +0000162 if test "$UNIVERSAL_ARCHS" = "all"
163 then
164 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorene3918352009-03-30 18:00:28 +0000165 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000166 else
Ronald Oussorene3918352009-03-30 18:00:28 +0000167 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000168 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
169 fi
170
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000171 if test "x${prefix}" = "xNONE" ; then
172 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
173 else
174 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
175 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000176 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000177
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000178 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000179 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000180 AC_CONFIG_FILES(Mac/Makefile)
181 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000182 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
183 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000184 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000185 ],[
186 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000187 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000188 PYTHONFRAMEWORKPREFIX=
189 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000190 FRAMEWORKINSTALLFIRST=
191 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000192 FRAMEWORKALTINSTALLFIRST=
193 FRAMEWORKALTINSTALLLAST=
194 if test "x${prefix}" = "xNONE" ; then
195 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
196 else
197 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
198 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000199 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000200
201 if test "$UNIVERSAL_ARCHS" = "all"
202 then
203 FRAMEWORKINSTALLLAST=update4wayuniversal
204 FRAMEWORKALTINSTALLLAST=update4wayuniversal
205 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000206])
207AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000208AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209AC_SUBST(PYTHONFRAMEWORKDIR)
210AC_SUBST(PYTHONFRAMEWORKPREFIX)
211AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000212AC_SUBST(FRAMEWORKINSTALLFIRST)
213AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000214AC_SUBST(FRAMEWORKALTINSTALLFIRST)
215AC_SUBST(FRAMEWORKALTINSTALLLAST)
216AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000217
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000219## AC_HELP_STRING(--with-dyld,
220## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000221##
Guido van Rossumb418f891996-07-30 18:06:02 +0000222# Set name for machine-dependent library files
223AC_SUBST(MACHDEP)
224AC_MSG_CHECKING(MACHDEP)
225if test -z "$MACHDEP"
226then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000227 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000228 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
229 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000230 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000231 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000232 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000233 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000234 ac_md_system=`echo $ac_sys_system |
235 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
236 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000237 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000238 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000239
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000240 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000241 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000242 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000243 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000244 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000245 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000246 esac
247fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000248
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000249# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
250# disable features if it is defined, without any means to access these
251# features as extensions. For these systems, we skip the definition of
252# _XOPEN_SOURCE. Before adding a system to the list to gain access to
253# some feature, make sure there is no alternative way to access this
254# feature. Also, when using wildcards, make sure you have verified the
255# need for not defining _XOPEN_SOURCE on all systems matching the
256# wildcard, and that the wildcard does not include future systems
257# (which may remove their limitations).
258dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
259case $ac_sys_system/$ac_sys_release in
260 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
261 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000262 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000263 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000264 define_xopen_source=no
265 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
266 # also defined. This can be overridden by defining _BSD_SOURCE
267 # As this has a different meaning on Linux, only define it on OpenBSD
268 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
269 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000270 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
271 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
272 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000273 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000274 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000275 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
276 # of union __?sigval. Reported by Stuart Bishop.
277 SunOS/5.6)
278 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000279 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
280 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000281 # Reconfirmed for 7.1.4 by Martin v. Loewis.
282 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000283 define_xopen_source=no;;
284 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000285 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000286 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000287 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000288 # On FreeBSD 4, the math functions C89 does not cover are never defined
289 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
290 FreeBSD/4.*)
291 define_xopen_source=no;;
292 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
293 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
294 # identifies itself as Darwin/7.*
295 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
296 # disables platform specific features beyond repair.
297 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
298 # has no effect, don't bother defining them
299 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000300 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000301 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
302 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
303 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000304 AIX/4)
305 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000306 AIX/5)
307 if test `uname -r` -eq 1; then
308 define_xopen_source=no
309 fi
310 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000311 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
312 # defining NI_NUMERICHOST.
313 QNX/6.3.2)
314 define_xopen_source=no
315 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000316
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000317esac
318
319if test $define_xopen_source = yes
320then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000321 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
322 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000323 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
324 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000325 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000326 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000327 AC_DEFINE(_XOPEN_SOURCE, 500,
328 Define to the level of X/Open that your system supports)
329 ;;
330 *)
331 AC_DEFINE(_XOPEN_SOURCE, 600,
332 Define to the level of X/Open that your system supports)
333 ;;
334 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000335
336 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
337 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
338 # several APIs are not declared. Since this is also needed in some
339 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000340 # except for Solaris 10, where it must not be defined,
341 # as it implies XPG4.2
342 case $ac_sys_system/$ac_sys_release in
343 SunOS/5.10)
344 ;;
345 *)
346 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
347 Define to activate Unix95-and-earlier features)
348 ;;
349 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000350
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000351 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
352
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000353fi
354
Guido van Rossum91922671997-10-09 20:24:13 +0000355#
356# SGI compilers allow the specification of the both the ABI and the
357# ISA on the command line. Depending on the values of these switches,
358# different and often incompatable code will be generated.
359#
360# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
361# thus supply support for various ABI/ISA combinations. The MACHDEP
362# variable is also adjusted.
363#
364AC_SUBST(SGI_ABI)
365if test ! -z "$SGI_ABI"
366then
367 CC="cc $SGI_ABI"
368 LDFLAGS="$SGI_ABI $LDFLAGS"
369 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
370fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000371AC_MSG_RESULT($MACHDEP)
372
Jack Jansen6b08a402004-06-03 12:41:45 +0000373# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
374# it may influence the way we can build extensions, so distutils
375# needs to check it
376AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000377AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000378CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000379EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000380
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000381AC_MSG_CHECKING(machine type as reported by uname -m)
382ac_sys_machine=`uname -m`
383AC_MSG_RESULT($ac_sys_machine)
384
Guido van Rossum627b2d71993-12-24 10:39:16 +0000385# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000386
387# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
388# for debug/optimization stuff. BASECFLAGS is for flags that are required
389# just to get things to compile and link. Users are free to override OPT
390# when running configure or make. The build should not break if they do.
391# BASECFLAGS should generally not be messed with, however.
392
393# XXX shouldn't some/most/all of this code be merged with the stuff later
394# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000395AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000396AC_ARG_WITH(gcc,
397 AC_HELP_STRING(--without-gcc,never use gcc),
398[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000399 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000400 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000401 without_gcc=yes;;
402 yes) CC=gcc
403 without_gcc=no;;
404 *) CC=$withval
405 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000406 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000407 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000408 AIX*) CC=cc_r
409 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000410 Monterey*)
411 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000412 without_gcc=;;
413 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000414 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000415AC_MSG_RESULT($without_gcc)
416
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000417# If the user switches compilers, we can't believe the cache
418if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
419then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000420 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
421(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000422fi
423
Guido van Rossum627b2d71993-12-24 10:39:16 +0000424AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000425
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000426AC_SUBST(CXX)
427AC_SUBST(MAINCC)
428AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
429AC_ARG_WITH(cxx_main,
430 AC_HELP_STRING([--with-cxx-main=<compiler>],
431 [compile main() and link python executable with C++ compiler]),
432[
433
434 case $withval in
435 no) with_cxx_main=no
436 MAINCC='$(CC)';;
437 yes) with_cxx_main=yes
438 MAINCC='$(CXX)';;
439 *) with_cxx_main=yes
440 MAINCC=$withval
441 if test -z "$CXX"
442 then
443 CXX=$withval
444 fi;;
445 esac], [
446 with_cxx_main=no
447 MAINCC='$(CC)'
448])
449AC_MSG_RESULT($with_cxx_main)
450
451preset_cxx="$CXX"
452if test -z "$CXX"
453then
454 case "$CC" in
455 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
456 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
457 esac
458 if test "$CXX" = "notfound"
459 then
460 CXX=""
461 fi
462fi
463if test -z "$CXX"
464then
465 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
466 if test "$CXX" = "notfound"
467 then
468 CXX=""
469 fi
470fi
471if test "$preset_cxx" != "$CXX"
472then
473 AC_MSG_WARN([
474
475 By default, distutils will build C++ extension modules with "$CXX".
476 If this is not intended, then set CXX on the configure command line.
477 ])
478fi
479
480
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000481# checks for UNIX variants that set C preprocessor variables
482AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000483
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000484# Check for unsupported systems
485case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000486atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000487 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
488 echo See README for details.
489 exit 1;;
490esac
491
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000492AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000493AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000494AC_ARG_WITH(suffix,
495 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
496[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000497 case $withval in
498 no) EXEEXT=;;
499 yes) EXEEXT=.exe;;
500 *) EXEEXT=$withval;;
501 esac])
502AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000503
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000504# Test whether we're running on a non-case-sensitive system, in which
505# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000506AC_SUBST(BUILDEXEEXT)
507AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000508if test ! -d CaseSensitiveTestDir; then
509mkdir CaseSensitiveTestDir
510fi
511
512if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000513then
Jack Jansen1999ef42001-12-06 21:47:20 +0000514 AC_MSG_RESULT(yes)
515 BUILDEXEEXT=.exe
516else
517 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000518 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000519fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000520rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000521
Guido van Rossumdd997f71998-10-07 19:58:26 +0000522case $MACHDEP in
523bsdos*)
524 case $CC in
525 gcc) CC="$CC -D_HAVE_BSDI";;
526 esac;;
527esac
528
Guido van Rossum84561611997-08-21 00:08:11 +0000529case $ac_sys_system in
530hp*|HP*)
531 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000532 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000533 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000534Monterey*)
535 case $CC in
536 cc) CC="$CC -Wl,-Bexport";;
537 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000538SunOS*)
539 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000540 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000541 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000542esac
543
Martin v. Löwise8964d42001-03-06 12:09:07 +0000544
Neil Schemenauer61c51152001-01-26 16:18:16 +0000545AC_SUBST(LIBRARY)
546AC_MSG_CHECKING(LIBRARY)
547if test -z "$LIBRARY"
548then
549 LIBRARY='libpython$(VERSION).a'
550fi
551AC_MSG_RESULT($LIBRARY)
552
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000553# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000554# name of the library into which to insert object files). BLDLIBRARY is also
555# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
556# is blank as the main program is not linked directly against LDLIBRARY.
557# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
558# systems without shared libraries, LDLIBRARY is the same as LIBRARY
559# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
560# DLLLIBRARY is the shared (i.e., DLL) library.
561#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000562# RUNSHARED is used to run shared python without installed libraries
563#
564# INSTSONAME is the name of the shared library that will be use to install
565# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000566AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000567AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000568AC_SUBST(BLDLIBRARY)
569AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000570AC_SUBST(INSTSONAME)
571AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000572LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000573BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000574INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000575DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000576LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000577RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000578
Guido van Rossumfb842551997-08-06 23:42:07 +0000579# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000580# If CXX is set, and if it is needed to link a main function that was
581# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
582# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000583# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000584# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000585AC_SUBST(LINKCC)
586AC_MSG_CHECKING(LINKCC)
587if test -z "$LINKCC"
588then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000589 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000590 case $ac_sys_system in
591 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000592 exp_extra="\"\""
593 if test $ac_sys_release -ge 5 -o \
594 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
595 exp_extra="."
596 fi
597 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000598 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000599 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000600 QNX*)
601 # qcc must be used because the other compilers do not
602 # support -N.
603 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000604 esac
605fi
606AC_MSG_RESULT($LINKCC)
607
Tarek Ziadébe720e02009-05-09 11:55:12 +0000608# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
609# make sure we default having it set to "no": this is used by
610# distutils.unixccompiler to know if it should add --enable-new-dtags
611# to linker command lines, and failing to detect GNU ld simply results
612# in the same bahaviour as before.
613AC_SUBST(GNULD)
614AC_MSG_CHECKING(for GNU ld)
615ac_prog=ld
616if test "$GCC" = yes; then
617 ac_prog=`$CC -print-prog-name=ld`
618fi
619case `"$ac_prog" -V 2>&1 < /dev/null` in
620 *GNU*)
621 GNULD=yes;;
622 *)
623 GNULD=no;;
624esac
625AC_MSG_RESULT($GNULD)
626
Martin v. Löwis1142de32002-03-29 16:28:31 +0000627AC_MSG_CHECKING(for --enable-shared)
628AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000629 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000630
Martin v. Löwis1142de32002-03-29 16:28:31 +0000631if test -z "$enable_shared"
632then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000633 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000634 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000635 enable_shared="yes";;
636 *)
637 enable_shared="no";;
638 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000639fi
640AC_MSG_RESULT($enable_shared)
641
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000642AC_MSG_CHECKING(for --enable-profiling)
643AC_ARG_ENABLE(profiling,
644 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
645[ac_save_cc="$CC"
646 CC="$CC -pg"
647 AC_TRY_RUN([int main() { return 0; }],
648 ac_enable_profiling="yes",
649 ac_enable_profiling="no",
650 ac_enable_profiling="no")
651 CC="$ac_save_cc"])
652AC_MSG_RESULT($ac_enable_profiling)
653
654case "$ac_enable_profiling" in
655 "yes")
656 BASECFLAGS="-pg $BASECFLAGS"
657 LDFLAGS="-pg $LDFLAGS"
658 ;;
659esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000660
661AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000662
Guido van Rossumb8552162001-09-05 14:58:11 +0000663# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
664# library that we build, but we do not want to link against it (we
665# will find it with a -framework option). For this reason there is an
666# extra variable BLDLIBRARY against which Python and the extension
667# modules are linked, BLDLIBRARY. This is normally the same as
668# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000669if test "$enable_framework"
670then
671 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000672 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000673 BLDLIBRARY=''
674else
675 BLDLIBRARY='$(LDLIBRARY)'
676fi
677
Martin v. Löwis1142de32002-03-29 16:28:31 +0000678# Other platforms follow
679if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000680 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682 CYGWIN*)
683 LDLIBRARY='libpython$(VERSION).dll.a'
684 DLLLIBRARY='libpython$(VERSION).dll'
685 ;;
686 SunOS*)
687 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000688 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000689 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000690 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000691 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000692 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000693 LDLIBRARY='libpython$(VERSION).so'
694 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000695 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000696 case $ac_sys_system in
697 FreeBSD*)
698 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
699 ;;
700 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000701 INSTSONAME="$LDLIBRARY".$SOVERSION
702 ;;
703 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000704 case `uname -m` in
705 ia64)
706 LDLIBRARY='libpython$(VERSION).so'
707 ;;
708 *)
709 LDLIBRARY='libpython$(VERSION).sl'
710 ;;
711 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000712 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000713 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000714 ;;
715 OSF*)
716 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000717 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000718 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000719 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000720 atheos*)
721 LDLIBRARY='libpython$(VERSION).so'
722 BLDLIBRARY='-L. -lpython$(VERSION)'
723 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
724 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000725 Darwin*)
726 LDLIBRARY='libpython$(VERSION).dylib'
727 BLDLIBRARY='-L. -lpython$(VERSION)'
728 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
729 ;;
730
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 esac
Jason Tishler30765592003-09-04 11:04:06 +0000732else # shared is disabled
733 case $ac_sys_system in
734 CYGWIN*)
735 BLDLIBRARY='$(LIBRARY)'
736 LDLIBRARY='libpython$(VERSION).dll.a'
737 ;;
738 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000739fi
740
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000741AC_MSG_RESULT($LDLIBRARY)
742
Guido van Rossum627b2d71993-12-24 10:39:16 +0000743AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000744AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000745AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000746
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000747# tweak ARFLAGS only if the user didn't set it on the command line
748AC_SUBST(ARFLAGS)
749if test -z "$ARFLAGS"
750then
751 ARFLAGS="rc"
752fi
753
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000754AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000755AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000756if test $SVNVERSION = found
757then
758 SVNVERSION="svnversion \$(srcdir)"
759else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000760 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000761fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000762
Neil Schemenauera42c8272001-03-31 00:01:55 +0000763case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000764bsdos*|hp*|HP*)
765 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000766 if test -z "$INSTALL"
767 then
768 INSTALL="${srcdir}/install-sh -c"
769 fi
770esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000771AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000772
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000773# Not every filesystem supports hard links
774AC_SUBST(LN)
775if test -z "$LN" ; then
776 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000777 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000778 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000779 *) LN=ln;;
780 esac
781fi
782
Fred Drake9f715822001-07-11 06:27:00 +0000783# Check for --with-pydebug
784AC_MSG_CHECKING(for --with-pydebug)
785AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000786 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
787[
Fred Drake9f715822001-07-11 06:27:00 +0000788if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000789then
790 AC_DEFINE(Py_DEBUG, 1,
791 [Define if you want to build an interpreter with many run-time checks.])
792 AC_MSG_RESULT(yes);
793 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000794else AC_MSG_RESULT(no); Py_DEBUG='false'
795fi],
796[AC_MSG_RESULT(no)])
797
Skip Montanarodecc6a42003-01-01 20:07:49 +0000798# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
799# merged with this chunk of code?
800
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000801# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802# ------------------------
803# (The following bit of code is complicated enough - please keep things
804# indented properly. Just pretend you're editing Python code. ;-)
805
806# There are two parallel sets of case statements below, one that checks to
807# see if OPT was set and one that does BASECFLAGS setting based upon
808# compiler and platform. BASECFLAGS tweaks need to be made even if the
809# user set OPT.
810
811# tweak OPT based on compiler and platform, only if the user didn't set
812# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000813AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000814if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000815then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000816 case $GCC in
817 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000818 if test "$CC" != 'g++' ; then
819 STRICT_PROTO="-Wstrict-prototypes"
820 fi
Christian Heimes38053212007-12-14 01:24:44 +0000821 # For gcc 4.x we need to use -fwrapv so lets check if its supported
822 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
823 WRAP="-fwrapv"
824 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000826 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000827 if test "$Py_DEBUG" = 'true' ; then
828 # Optimization messes up debuggers, so turn it off for
829 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000830 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000831 else
Christian Heimes38053212007-12-14 01:24:44 +0000832 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000833 fi
834 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000835 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000836 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000837 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000838 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000839 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000840 SCO_SV*) OPT="$OPT -m486 -DSCO5"
841 ;;
842 esac
Fred Drake9f715822001-07-11 06:27:00 +0000843 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 OPT="-O"
847 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000848 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849
850 # The current (beta) Monterey compiler dies with optimizations
851 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000852 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853 Monterey*)
854 OPT=""
855 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000856 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000859
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000861
862# The -arch flags for universal builds on OSX
863UNIVERSAL_ARCH_FLAGS=
864AC_SUBST(UNIVERSAL_ARCH_FLAGS)
865
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866# tweak BASECFLAGS based on compiler and platform
867case $GCC in
868yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000869 # Python violates C99 rules, by casting between incompatible
870 # pointer types. GCC may generate bad code as a result of that,
871 # so use -fno-strict-aliasing if supported.
872 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
873 ac_save_cc="$CC"
874 CC="$CC -fno-strict-aliasing"
875 AC_TRY_RUN([int main() { return 0; }],
876 ac_cv_no_strict_aliasing_ok=yes,
877 ac_cv_no_strict_aliasing_ok=no,
878 ac_cv_no_strict_aliasing_ok=no)
879 CC="$ac_save_cc"
880 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
881 if test $ac_cv_no_strict_aliasing_ok = yes
882 then
883 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
884 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000885
886 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
887 # support. Without this, treatment of subnormals doesn't follow
888 # the standard.
889 case $ac_sys_machine in
890 alpha*)
891 BASECFLAGS="$BASECFLAGS -mieee"
892 ;;
893 esac
894
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895 case $ac_sys_system in
896 SCO_SV*)
897 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
898 ;;
899 # is there any other compiler on Darwin besides gcc?
900 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000901 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
902 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000903
904
Thomas Wouters477c8d52006-05-27 19:21:47 +0000905 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000906 UNIVERSAL_ARCH_FLAGS=""
907 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
908 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000909 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000910
911 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
912 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussorend45ff2c2009-09-06 11:11:04 +0000913 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000914
915 elif test "$UNIVERSAL_ARCHS" = "all" ; then
916 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000917 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000918
Ronald Oussoren856624d2009-09-08 07:13:53 +0000919 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
920 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
921 ARCH_RUN_32BIT="arch -i386"
922
923 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
924 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
925 ARCH_RUN_32BIT="arch -i386 -ppc"
926
Georg Brandlfcaf9102008-07-16 02:17:56 +0000927 else
928 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
929
930 fi
931
932
933 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000934 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000935 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
936 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
937 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000938 fi
939
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000940 # Calculate the right deployment target for this build.
941 #
942 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
943 if test ${cur_target} '>' 10.2; then
944 cur_target=10.3
Ronald Oussorend45ff2c2009-09-06 11:11:04 +0000945 if test ${enable_universalsdk}; then
946 if test "${UNIVERSAL_ARCHS}" = "all"; then
947 # Ensure that the default platform for a
948 # 4-way universal build is OSX 10.5,
949 # that's the first OS release where
950 # 4-way builds make sense.
951 cur_target='10.5'
Ronald Oussoren856624d2009-09-08 07:13:53 +0000952
953 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
954 cur_target='10.5'
955
956 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
957 cur_target='10.5'
958
959 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
960 cur_target='10.5'
Ronald Oussorend45ff2c2009-09-06 11:11:04 +0000961 fi
962 else
963 if test `arch` = "i386"; then
964 # On Intel macs default to a deployment
965 # target of 10.4, that's the first OSX
966 # release with Intel support.
967 cur_target="10.4"
968 fi
969 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000970 fi
971 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
972
973 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
974 # environment with a value that is the same as what we'll use
975 # in the Makefile to ensure that we'll get the same compiler
976 # environment during configure and build time.
977 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
978 export MACOSX_DEPLOYMENT_TARGET
979 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
980
Skip Montanarodecc6a42003-01-01 20:07:49 +0000981 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000982 OSF*)
983 BASECFLAGS="$BASECFLAGS -mieee"
984 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000985 esac
986 ;;
987
988*)
989 case $ac_sys_system in
990 OpenUNIX*|UnixWare*)
991 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
992 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000993 OSF*)
994 BASECFLAGS="$BASECFLAGS -ieee -std"
995 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000996 SCO_SV*)
997 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
998 ;;
999 esac
1000 ;;
1001esac
1002
Fred Drakee1ceaa02001-12-04 20:55:47 +00001003if test "$Py_DEBUG" = 'true'; then
1004 :
1005else
1006 OPT="-DNDEBUG $OPT"
1007fi
1008
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001009if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001010then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001011 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001012fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001013
Neal Norwitz020c46a2006-01-07 21:39:28 +00001014# disable check for icc since it seems to pass, but generates a warning
1015if test "$CC" = icc
1016then
1017 ac_cv_opt_olimit_ok=no
1018fi
1019
Guido van Rossum91922671997-10-09 20:24:13 +00001020AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1021AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1022[ac_save_cc="$CC"
1023CC="$CC -OPT:Olimit=0"
1024AC_TRY_RUN([int main() { return 0; }],
1025 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001026 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001027 ac_cv_opt_olimit_ok=no)
1028CC="$ac_save_cc"])
1029AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001030if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001031 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001032 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1033 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1034 # environment?
1035 Darwin*)
1036 ;;
1037 *)
1038 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1039 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001040 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001041else
1042 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1043 AC_CACHE_VAL(ac_cv_olimit_ok,
1044 [ac_save_cc="$CC"
1045 CC="$CC -Olimit 1500"
1046 AC_TRY_RUN([int main() { return 0; }],
1047 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001048 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001049 ac_cv_olimit_ok=no)
1050 CC="$ac_save_cc"])
1051 AC_MSG_RESULT($ac_cv_olimit_ok)
1052 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001053 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001054 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001055fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001056
Thomas Wouters89f507f2006-12-13 04:49:30 +00001057# Check whether GCC supports PyArg_ParseTuple format
1058if test "$GCC" = "yes"
1059then
1060 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1061 save_CFLAGS=$CFLAGS
1062 CFLAGS="$CFLAGS -Werror"
1063 AC_TRY_COMPILE([
1064 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1065 ],,
1066 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1067 AC_MSG_RESULT(yes),
1068 AC_MSG_RESULT(no)
1069 )
1070 CFLAGS=$save_CFLAGS
1071fi
1072
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001073# On some compilers, pthreads are available without further options
1074# (e.g. MacOS X). On some of these systems, the compiler will not
1075# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1076# So we have to see first whether pthreads are available without
1077# options before we can check whether -Kpthread improves anything.
1078AC_MSG_CHECKING(whether pthreads are available without options)
1079AC_CACHE_VAL(ac_cv_pthread_is_default,
1080[AC_TRY_RUN([
1081#include <pthread.h>
1082
1083void* routine(void* p){return NULL;}
1084
1085int main(){
1086 pthread_t p;
1087 if(pthread_create(&p,NULL,routine,NULL)!=0)
1088 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001089 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001090 return 0;
1091}
1092],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001093[
1094 ac_cv_pthread_is_default=yes
1095 ac_cv_kthread=no
1096 ac_cv_pthread=no
1097],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001098 ac_cv_pthread_is_default=no,
1099 ac_cv_pthread_is_default=no)
1100])
1101AC_MSG_RESULT($ac_cv_pthread_is_default)
1102
1103
1104if test $ac_cv_pthread_is_default = yes
1105then
1106 ac_cv_kpthread=no
1107else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001108# -Kpthread, if available, provides the right #defines
1109# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001110# Some compilers won't report that they do not support -Kpthread,
1111# so we need to run a program to see whether it really made the
1112# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001113AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1114AC_CACHE_VAL(ac_cv_kpthread,
1115[ac_save_cc="$CC"
1116CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001117AC_TRY_RUN([
1118#include <pthread.h>
1119
1120void* routine(void* p){return NULL;}
1121
1122int main(){
1123 pthread_t p;
1124 if(pthread_create(&p,NULL,routine,NULL)!=0)
1125 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001126 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001127 return 0;
1128}
1129],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001130 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001131 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001132 ac_cv_kpthread=no)
1133CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001134AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001135fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001136
Skip Montanarod8d39a02003-07-10 20:44:10 +00001137if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001138then
1139# -Kthread, if available, provides the right #defines
1140# and linker options to make pthread_create available
1141# Some compilers won't report that they do not support -Kthread,
1142# so we need to run a program to see whether it really made the
1143# function available.
1144AC_MSG_CHECKING(whether $CC accepts -Kthread)
1145AC_CACHE_VAL(ac_cv_kthread,
1146[ac_save_cc="$CC"
1147CC="$CC -Kthread"
1148AC_TRY_RUN([
1149#include <pthread.h>
1150
1151void* routine(void* p){return NULL;}
1152
1153int main(){
1154 pthread_t p;
1155 if(pthread_create(&p,NULL,routine,NULL)!=0)
1156 return 1;
1157 (void)pthread_detach(p);
1158 return 0;
1159}
1160],
1161 ac_cv_kthread=yes,
1162 ac_cv_kthread=no,
1163 ac_cv_kthread=no)
1164CC="$ac_save_cc"])
1165AC_MSG_RESULT($ac_cv_kthread)
1166fi
1167
Skip Montanarod8d39a02003-07-10 20:44:10 +00001168if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001169then
1170# -pthread, if available, provides the right #defines
1171# and linker options to make pthread_create available
1172# Some compilers won't report that they do not support -pthread,
1173# so we need to run a program to see whether it really made the
1174# function available.
1175AC_MSG_CHECKING(whether $CC accepts -pthread)
1176AC_CACHE_VAL(ac_cv_thread,
1177[ac_save_cc="$CC"
1178CC="$CC -pthread"
1179AC_TRY_RUN([
1180#include <pthread.h>
1181
1182void* routine(void* p){return NULL;}
1183
1184int main(){
1185 pthread_t p;
1186 if(pthread_create(&p,NULL,routine,NULL)!=0)
1187 return 1;
1188 (void)pthread_detach(p);
1189 return 0;
1190}
1191],
1192 ac_cv_pthread=yes,
1193 ac_cv_pthread=no,
1194 ac_cv_pthread=no)
1195CC="$ac_save_cc"])
1196AC_MSG_RESULT($ac_cv_pthread)
1197fi
1198
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001199# If we have set a CC compiler flag for thread support then
1200# check if it works for CXX, too.
1201ac_cv_cxx_thread=no
1202if test ! -z "$CXX"
1203then
1204AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1205ac_save_cxx="$CXX"
1206
1207if test "$ac_cv_kpthread" = "yes"
1208then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001209 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001210 ac_cv_cxx_thread=yes
1211elif test "$ac_cv_kthread" = "yes"
1212then
1213 CXX="$CXX -Kthread"
1214 ac_cv_cxx_thread=yes
1215elif test "$ac_cv_pthread" = "yes"
1216then
1217 CXX="$CXX -pthread"
1218 ac_cv_cxx_thread=yes
1219fi
1220
1221if test $ac_cv_cxx_thread = yes
1222then
1223 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1224 $CXX -c conftest.$ac_ext 2>&5
1225 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1226 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1227 then
1228 ac_cv_cxx_thread=yes
1229 else
1230 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001231 fi
1232 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001233fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001234AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001235fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001236CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001237
Fred Drakece81d592000-07-09 14:39:29 +00001238dnl # check for ANSI or K&R ("traditional") preprocessor
1239dnl AC_MSG_CHECKING(for C preprocessor type)
1240dnl AC_TRY_COMPILE([
1241dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1242dnl int foo;
1243dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1244dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1245dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001246
Guido van Rossum627b2d71993-12-24 10:39:16 +00001247# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001248AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001249AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1250fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001251ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001252shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001253unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001254sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1255sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001256sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001257sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001258sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001259sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001260bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001261AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001262AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001263
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001264# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001265AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001266#ifdef HAVE_CURSES_H
1267#include <curses.h>
1268#endif
1269])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001270
Martin v. Löwis11017b12006-01-14 18:12:57 +00001271# On Linux, netlink.h requires asm/types.h
1272AC_CHECK_HEADERS(linux/netlink.h,,,[
1273#ifdef HAVE_ASM_TYPES_H
1274#include <asm/types.h>
1275#endif
1276#ifdef HAVE_SYS_SOCKET_H
1277#include <sys/socket.h>
1278#endif
1279])
1280
Guido van Rossum627b2d71993-12-24 10:39:16 +00001281# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001282was_it_defined=no
1283AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001284AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1285 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1286])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001287AC_MSG_RESULT($was_it_defined)
1288
Neal Norwitz11690112002-07-30 01:08:28 +00001289# Check whether using makedev requires defining _OSF_SOURCE
1290AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001291AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001292 [ makedev(0, 0) ],
1293 ac_cv_has_makedev=yes,
1294 ac_cv_has_makedev=no)
1295if test "$ac_cv_has_makedev" = "no"; then
1296 # we didn't link, try if _OSF_SOURCE will allow us to link
1297 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001298#define _OSF_SOURCE 1
1299#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001300 ],
1301 [ makedev(0, 0) ],
1302 ac_cv_has_makedev=yes,
1303 ac_cv_has_makedev=no)
1304 if test "$ac_cv_has_makedev" = "yes"; then
1305 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1306 fi
1307fi
1308AC_MSG_RESULT($ac_cv_has_makedev)
1309if test "$ac_cv_has_makedev" = "yes"; then
1310 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1311fi
1312
Martin v. Löwis399a6892002-10-04 10:22:02 +00001313# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1314# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1315# defined, but the compiler does not support pragma redefine_extname,
1316# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1317# structures (such as rlimit64) without declaring them. As a
1318# work-around, disable LFS on such configurations
1319
1320use_lfs=yes
1321AC_MSG_CHECKING(Solaris LFS bug)
1322AC_TRY_COMPILE([
1323#define _LARGEFILE_SOURCE 1
1324#define _FILE_OFFSET_BITS 64
1325#include <sys/resource.h>
1326],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1327AC_MSG_RESULT($sol_lfs_bug)
1328if test "$sol_lfs_bug" = "yes"; then
1329 use_lfs=no
1330fi
1331
1332if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001333# Two defines needed to enable largefile support on various platforms
1334# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001335AC_DEFINE(_LARGEFILE_SOURCE, 1,
1336[This must be defined on some systems to enable large file support.])
1337AC_DEFINE(_FILE_OFFSET_BITS, 64,
1338[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001339fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001340
Guido van Rossum300fda71996-08-19 21:58:16 +00001341# Add some code to confdefs.h so that the test for off_t works on SCO
1342cat >> confdefs.h <<\EOF
1343#if defined(SCO_DS)
1344#undef _OFF_T
1345#endif
1346EOF
1347
Guido van Rossumef2255b2000-03-10 22:30:29 +00001348# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001349AC_TYPE_MODE_T
1350AC_TYPE_OFF_T
1351AC_TYPE_PID_T
1352AC_TYPE_SIGNAL
1353AC_TYPE_SIZE_T
1354AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001355AC_TYPE_UINT32_T
1356AC_TYPE_UINT64_T
1357AC_TYPE_INT32_T
1358AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001359AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001360 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001361
Guido van Rossumef2255b2000-03-10 22:30:29 +00001362# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001363# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001364AC_CHECK_SIZEOF(int, 4)
1365AC_CHECK_SIZEOF(long, 4)
1366AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001367AC_CHECK_SIZEOF(short, 2)
1368AC_CHECK_SIZEOF(float, 4)
1369AC_CHECK_SIZEOF(double, 8)
1370AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001371AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001372AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001373
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001374AC_MSG_CHECKING(for long long support)
1375have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001376AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1377 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1378 have_long_long=yes
1379])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001380AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001381if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001382AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001383fi
1384
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001385AC_MSG_CHECKING(for long double support)
1386have_long_double=no
1387AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1388 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1389 have_long_double=yes
1390])
1391AC_MSG_RESULT($have_long_double)
1392if test "$have_long_double" = yes ; then
1393AC_CHECK_SIZEOF(long double, 16)
1394fi
1395
1396
Thomas Woutersb2137042007-02-01 18:02:27 +00001397AC_MSG_CHECKING(for _Bool support)
1398have_c99_bool=no
1399AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1400 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1401 have_c99_bool=yes
1402])
1403AC_MSG_RESULT($have_c99_bool)
1404if test "$have_c99_bool" = yes ; then
1405AC_CHECK_SIZEOF(_Bool, 1)
1406fi
1407
Thomas Wouters89f507f2006-12-13 04:49:30 +00001408AC_CHECK_TYPES(uintptr_t,
1409 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1410 [], [#ifdef HAVE_STDINT_H
1411 #include <stdint.h>
1412 #endif])
1413
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001414
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001415# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1416AC_MSG_CHECKING(size of off_t)
1417AC_CACHE_VAL(ac_cv_sizeof_off_t,
1418[AC_TRY_RUN([#include <stdio.h>
1419#include <sys/types.h>
1420main()
1421{
1422 FILE *f=fopen("conftestval", "w");
1423 if (!f) exit(1);
1424 fprintf(f, "%d\n", sizeof(off_t));
1425 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001426}],
1427ac_cv_sizeof_off_t=`cat conftestval`,
1428ac_cv_sizeof_off_t=0,
1429ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001430])
1431AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001432AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1433[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001434
1435AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001436if test "$have_long_long" = yes -a \
1437 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1438 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001439 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1440 [Defined to enable large file support when an off_t is bigger than a long
1441 and long long is available and at least as big as an off_t. You may need
1442 to add some flags for configuration and compilation to enable this mode.
1443 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001444 AC_MSG_RESULT(yes)
1445else
1446 AC_MSG_RESULT(no)
1447fi
1448
Fred Drakea3f6e912000-06-29 20:44:47 +00001449# AC_CHECK_SIZEOF() doesn't include <time.h>.
1450AC_MSG_CHECKING(size of time_t)
1451AC_CACHE_VAL(ac_cv_sizeof_time_t,
1452[AC_TRY_RUN([#include <stdio.h>
1453#include <time.h>
1454main()
1455{
1456 FILE *f=fopen("conftestval", "w");
1457 if (!f) exit(1);
1458 fprintf(f, "%d\n", sizeof(time_t));
1459 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001460}],
1461ac_cv_sizeof_time_t=`cat conftestval`,
1462ac_cv_sizeof_time_t=0,
1463ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001464])
1465AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001466AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1467[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001468
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001469
Trent Mick635f6fb2000-08-23 21:33:05 +00001470# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001471ac_save_cc="$CC"
1472if test "$ac_cv_kpthread" = "yes"
1473then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001474elif test "$ac_cv_kthread" = "yes"
1475then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001476elif test "$ac_cv_pthread" = "yes"
1477then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001478fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001479AC_MSG_CHECKING(for pthread_t)
1480have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001481AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001482AC_MSG_RESULT($have_pthread_t)
1483if test "$have_pthread_t" = yes ; then
1484 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1485 AC_MSG_CHECKING(size of pthread_t)
1486 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1487 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001488#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001489 main()
1490 {
1491 FILE *f=fopen("conftestval", "w");
1492 if (!f) exit(1);
1493 fprintf(f, "%d\n", sizeof(pthread_t));
1494 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001495 }],
1496 ac_cv_sizeof_pthread_t=`cat conftestval`,
1497 ac_cv_sizeof_pthread_t=0,
1498 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001499 ])
1500 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001501 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1502 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001503fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001504CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001505
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001506
Georg Brandl93de2162008-07-16 02:21:06 +00001507
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001508AC_SUBST(OTHER_LIBTOOL_OPT)
1509case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001510 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001511 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1512 ;;
1513 Darwin/*)
1514 OTHER_LIBTOOL_OPT=""
1515 ;;
1516esac
1517
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001518
1519ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001520AC_SUBST(LIBTOOL_CRUFT)
1521case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001522 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001523 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1524 if test "${enable_universalsdk}"; then
1525 :
1526 else
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001527 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001528 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001529 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001530 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001531 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001532 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1533 if test ${gcc_version} '<' 4.0
1534 then
1535 LIBTOOL_CRUFT="-lcc_dynamic"
1536 else
1537 LIBTOOL_CRUFT=""
1538 fi
Ronald Oussoren856624d2009-09-08 07:13:53 +00001539 AC_TRY_RUN([
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001540 #include <unistd.h>
1541 int main(int argc, char*argv[])
1542 {
1543 if (sizeof(long) == 4) {
1544 return 0;
1545 } else {
1546 return 1;
1547 }
Ronald Oussoren856624d2009-09-08 07:13:53 +00001548 }
1549 ], ac_osx_32bit=yes,
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001550 ac_osx_32bit=no,
Ronald Oussoren856624d2009-09-08 07:13:53 +00001551 ac_osx_32bit=yes)
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001552
1553 if test "${ac_osx_32bit}" = "yes"; then
1554 case `arch` in
1555 i386)
1556 MACOSX_DEFAULT_ARCH="i386"
1557 ;;
1558 ppc)
1559 MACOSX_DEFAULT_ARCH="ppc"
1560 ;;
1561 *)
1562 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1563 ;;
1564 esac
1565 else
1566 case `arch` in
1567 i386)
1568 MACOSX_DEFAULT_ARCH="x86_64"
1569 ;;
1570 ppc)
1571 MACOSX_DEFAULT_ARCH="ppc64"
1572 ;;
1573 *)
1574 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1575 ;;
1576 esac
1577
1578 #ARCH_RUN_32BIT="true"
1579 fi
1580
1581 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001582 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001583 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584esac
1585
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586AC_MSG_CHECKING(for --enable-framework)
1587if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001588then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001589 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001590 # -F. is needed to allow linking to the framework while
1591 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001592 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1593 [Define if you want to produce an OpenStep/Rhapsody framework
1594 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001595 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001596 if test $enable_shared = "yes"
1597 then
1598 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1599 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001600else
1601 AC_MSG_RESULT(no)
1602fi
1603
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001604AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001605case $ac_sys_system/$ac_sys_release in
1606 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001607 AC_DEFINE(WITH_DYLD, 1,
1608 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1609 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1610 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001611 AC_MSG_RESULT(always on for Darwin)
1612 ;;
1613 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001614 AC_MSG_RESULT(no)
1615 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001616esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001617
Guido van Rossumac405f61994-09-12 10:56:06 +00001618# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001619AC_SUBST(SO)
1620AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001621AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001622AC_SUBST(CCSHARED)
1623AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001624# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001625# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001626AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001627if test -z "$SO"
1628then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001629 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001630 hp*|HP*)
1631 case `uname -m` in
1632 ia64) SO=.so;;
1633 *) SO=.sl;;
1634 esac
1635 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001636 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001637 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001638 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001639else
1640 # this might also be a termcap variable, see #610332
1641 echo
1642 echo '====================================================================='
1643 echo '+ +'
1644 echo '+ WARNING: You have set SO in your environment. +'
1645 echo '+ Do you really mean to change the extension for shared libraries? +'
1646 echo '+ Continuing in 10 seconds to let you to ponder. +'
1647 echo '+ +'
1648 echo '====================================================================='
1649 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001650fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001651AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001652
Thomas Wouters477c8d52006-05-27 19:21:47 +00001653AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001654# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001655# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001656# (Shared libraries in this instance are shared modules to be loaded into
1657# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001658AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001659if test -z "$LDSHARED"
1660then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001661 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001662 AIX*)
1663 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001664 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001665 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001666 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001667 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001668 SunOS/5*)
1669 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001670 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001671 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001672 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001673 hp*|HP*)
1674 if test "$GCC" = "yes"
1675 then LDSHARED='$(CC) -shared'
1676 else LDSHARED='ld -b';
1677 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001678 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001679 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001680 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1681 if test "$enable_framework" ; then
1682 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001683 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1684 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001685 else
1686 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001687 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001688 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001689 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001690 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1691 if test "$enable_framework" ; then
1692 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001693 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1694 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001695 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001696 # No framework, use the Python app as bundle-loader
1697 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001698 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001699 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001700 Darwin/*)
1701 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1702 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001703
Georg Brandlfcaf9102008-07-16 02:17:56 +00001704 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001705 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001706 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001707 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001708 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001709 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1710 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001711 else
1712 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1713 if test "$enable_framework" ; then
1714 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001715 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1716 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001717 else
1718 # No framework, use the Python app as bundle-loader
1719 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1720 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1721 fi
1722 fi
1723 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001724 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001725 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001726 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001727 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001728 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001729 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001730 else
1731 LDSHARED="ld -Bshareable ${LDFLAGS}"
1732 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001733 OpenBSD*)
1734 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1735 then
1736 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1737 else
1738 case `uname -r` in
1739 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1740 LDSHARED="ld -Bshareable ${LDFLAGS}"
1741 ;;
1742 *)
1743 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1744 ;;
1745 esac
1746 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001747 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001748 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001749 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001750 then LDSHARED='$(CC) -shared'
1751 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001752 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001753 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001754 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001755 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001756 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001757 *) LDSHARED="ld";;
1758 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001759fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001760AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001761BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001762# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001763# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001764AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001765if test -z "$CCSHARED"
1766then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001767 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001768 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001769 then CCSHARED="-fPIC";
1770 elif test `uname -p` = sparc;
1771 then CCSHARED="-xcode=pic32";
1772 else CCSHARED="-Kpic";
1773 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001774 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001775 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001776 else CCSHARED="+z";
1777 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001778 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001779 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001780 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001781 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001782 if test "$GCC" = "yes"
1783 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001784 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001785 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001786 SCO_SV*)
1787 if test "$GCC" = "yes"
1788 then CCSHARED="-fPIC"
1789 else CCSHARED="-Kpic -belf"
1790 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001791 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001792 IRIX*/6*) case $CC in
1793 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001794 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001795 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001796 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001797 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001798fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001799AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001800# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001801# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001802AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001803if test -z "$LINKFORSHARED"
1804then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001805 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001806 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001807 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001808 LINKFORSHARED="-Wl,-E -Wl,+s";;
1809# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001810 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001811 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001812 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001813 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001814 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001815 if test "$enable_framework"
1816 then
Jack Jansenda49e192005-01-07 13:08:22 +00001817 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001818 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001819 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001820 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001821 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001822 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001823 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001824 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1825 then
1826 LINKFORSHARED="-Wl,--export-dynamic"
1827 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001828 SunOS/5*) case $CC in
1829 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001830 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001831 then
1832 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001833 fi;;
1834 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001835 CYGWIN*)
1836 if test $enable_shared = "no"
1837 then
1838 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1839 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001840 QNX*)
1841 # -Wl,-E causes the symbols to be added to the dynamic
1842 # symbol table so that they can be found when a module
1843 # is loaded. -N 2048K causes the stack size to be set
1844 # to 2048 kilobytes so that the stack doesn't overflow
1845 # when running test_compile.py.
1846 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001847 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001848fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001849AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001850
Georg Brandl93de2162008-07-16 02:21:06 +00001851
Neil Schemenauer61c51152001-01-26 16:18:16 +00001852AC_SUBST(CFLAGSFORSHARED)
1853AC_MSG_CHECKING(CFLAGSFORSHARED)
1854if test ! "$LIBRARY" = "$LDLIBRARY"
1855then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001856 case $ac_sys_system in
1857 CYGWIN*)
1858 # Cygwin needs CCSHARED when building extension DLLs
1859 # but not when building the interpreter DLL.
1860 CFLAGSFORSHARED='';;
1861 *)
1862 CFLAGSFORSHARED='$(CCSHARED)'
1863 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001864fi
1865AC_MSG_RESULT($CFLAGSFORSHARED)
1866
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001867# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1868# library (with --enable-shared).
1869# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001870# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1871# if it is not required, since it creates a dependency of the shared library
1872# to LIBS. This, in turn, means that applications linking the shared libpython
1873# don't need to link LIBS explicitly. The default should be only changed
1874# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001875AC_SUBST(SHLIBS)
1876AC_MSG_CHECKING(SHLIBS)
1877case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001878 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001879 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001880esac
1881AC_MSG_RESULT($SHLIBS)
1882
1883
Guido van Rossum627b2d71993-12-24 10:39:16 +00001884# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001885AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1886AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001887
Georg Brandleee31162008-12-07 15:15:22 +00001888# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001889if test "$with_threads" = "yes" -o -z "$with_threads"; then
1890 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1891 # posix4 on Solaris 2.6
1892 # pthread (first!) on Linux
1893fi
1894
Martin v. Löwis19d17342003-06-14 21:03:05 +00001895# check if we need libintl for locale functions
1896AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001897 [AC_DEFINE(WITH_LIBINTL, 1,
1898 [Define to 1 if libintl is needed for locale functions.])
1899 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001900
1901# checks for system dependent C++ extensions support
1902case "$ac_sys_system" in
1903 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1904 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1905 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001906 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1907 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1908 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001909 AC_MSG_RESULT(yes)],
1910 [AC_MSG_RESULT(no)]);;
1911 *) ;;
1912esac
1913
Guido van Rossum70c7f481998-03-26 18:44:10 +00001914# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001915AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001916AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001917
Guido van Rossumc5a39031996-07-31 17:35:03 +00001918AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001919AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001920 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1921[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001922AC_MSG_RESULT($withval)
1923LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001924],
1925[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001926
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001927# Check for use of the system libffi library
1928AC_MSG_CHECKING(for --with-system-ffi)
1929AC_ARG_WITH(system_ffi,
1930 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1931
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001932AC_MSG_RESULT($with_system_ffi)
1933
Matthias Klose55708cc2009-04-30 08:06:49 +00001934# Check for --with-dbmliborder
1935AC_MSG_CHECKING(for --with-dbmliborder)
1936AC_ARG_WITH(dbmliborder,
1937 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'.]),
1938[
1939if test x$with_dbmliborder = xyes
1940then
1941AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1942else
1943 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1944 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1945 then
1946 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1947 fi
1948 done
1949fi])
1950AC_MSG_RESULT($with_dbmliborder)
1951
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001952# Determine if signalmodule should be used.
1953AC_SUBST(USE_SIGNAL_MODULE)
1954AC_SUBST(SIGNAL_OBJS)
1955AC_MSG_CHECKING(for --with-signal-module)
1956AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001957 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001958
1959if test -z "$with_signal_module"
1960then with_signal_module="yes"
1961fi
1962AC_MSG_RESULT($with_signal_module)
1963
1964if test "${with_signal_module}" = "yes"; then
1965 USE_SIGNAL_MODULE=""
1966 SIGNAL_OBJS=""
1967else
1968 USE_SIGNAL_MODULE="#"
1969 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1970fi
1971
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001972# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001973AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001974USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001975
Guido van Rossum54d93d41997-01-22 20:51:58 +00001976AC_MSG_CHECKING(for --with-dec-threads)
1977AC_SUBST(LDLAST)
1978AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001979 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1980[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001981AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001982LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001983if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001984 with_thread="$withval";
1985fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001986[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001987
Martin v. Löwis11437992002-04-12 09:54:03 +00001988# Templates for things AC_DEFINEd more than once.
1989# For a single AC_DEFINE, no template is needed.
1990AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1991AH_TEMPLATE(_REENTRANT,
1992 [Define to force use of thread-safe errno, h_errno, and other functions])
1993AH_TEMPLATE(WITH_THREAD,
1994 [Define if you want to compile in rudimentary thread support])
1995
Guido van Rossum54d93d41997-01-22 20:51:58 +00001996AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001997dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001998AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001999 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002000
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002001# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002002dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002003AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002004 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2005 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002006
2007if test -z "$with_threads"
2008then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002009fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002010AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002011
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002012AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002013if test "$with_threads" = "no"
2014then
2015 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002016elif test "$ac_cv_pthread_is_default" = yes
2017then
2018 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002019 # Defining _REENTRANT on system with POSIX threads should not hurt.
2020 AC_DEFINE(_REENTRANT)
2021 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002022 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002023elif test "$ac_cv_kpthread" = "yes"
2024then
2025 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002026 if test "$ac_cv_cxx_thread" = "yes"; then
2027 CXX="$CXX -Kpthread"
2028 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002029 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002030 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002031 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002032elif test "$ac_cv_kthread" = "yes"
2033then
2034 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002035 if test "$ac_cv_cxx_thread" = "yes"; then
2036 CXX="$CXX -Kthread"
2037 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002038 AC_DEFINE(WITH_THREAD)
2039 posix_threads=yes
2040 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002041elif test "$ac_cv_pthread" = "yes"
2042then
2043 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002044 if test "$ac_cv_cxx_thread" = "yes"; then
2045 CXX="$CXX -pthread"
2046 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002047 AC_DEFINE(WITH_THREAD)
2048 posix_threads=yes
2049 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002050else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002051 if test ! -z "$with_threads" -a -d "$with_threads"
2052 then LDFLAGS="$LDFLAGS -L$with_threads"
2053 fi
2054 if test ! -z "$withval" -a -d "$withval"
2055 then LDFLAGS="$LDFLAGS -L$withval"
2056 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002057
2058 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002059 # define _POSIX_THREADS in unistd.h. Some apparently don't
2060 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002061 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2062 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002063 [
2064#include <unistd.h>
2065#ifdef _POSIX_THREADS
2066yes
2067#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002068 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2069 AC_MSG_RESULT($unistd_defines_pthreads)
2070
Martin v. Löwis130fb172001-07-19 11:00:41 +00002071 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002072 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2073 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002074 AC_DEFINE(HURD_C_THREADS, 1,
2075 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002076 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002077 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002078 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2079 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002080 AC_DEFINE(MACH_C_THREADS, 1,
2081 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002082 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002083 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002084 AC_ARG_WITH([pth],
2085 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2086 [AC_MSG_RESULT($withval)
2087 AC_DEFINE([WITH_THREAD])
2088 AC_DEFINE([HAVE_PTH], 1,
2089 [Define if you have GNU PTH threads.])
2090 LIBS="-lpth $LIBS"
2091 THREADOBJ="Python/thread.o"],
2092 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002093
2094 # Just looking for pthread_create in libpthread is not enough:
2095 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2096 # So we really have to include pthread.h, and then link.
2097 _libs=$LIBS
2098 LIBS="$LIBS -lpthread"
2099 AC_MSG_CHECKING([for pthread_create in -lpthread])
2100 AC_TRY_LINK([#include <pthread.h>
2101
2102void * start_routine (void *arg) { exit (0); }], [
2103pthread_create (NULL, NULL, start_routine, NULL)], [
2104 AC_MSG_RESULT(yes)
2105 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002106 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002107 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002108 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002109 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002110 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002111 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002112 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2113 AC_DEFINE(ATHEOS_THREADS, 1,
2114 [Define this if you have AtheOS threads.])
2115 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002116 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002117 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002118 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002119 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002121 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002122 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002123 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002124 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002125 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002126 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002127 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002128 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002129 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002130 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002131 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002132 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002133 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002134
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002135 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2136 LIBS="$LIBS -lmpc"
2137 THREADOBJ="Python/thread.o"
2138 USE_THREAD_MODULE=""])
2139
2140 if test "$posix_threads" != "yes"; then
2141 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2142 LIBS="$LIBS -lthread"
2143 THREADOBJ="Python/thread.o"
2144 USE_THREAD_MODULE=""])
2145 fi
2146
2147 if test "$USE_THREAD_MODULE" != "#"
2148 then
2149 # If the above checks didn't disable threads, (at least) OSF1
2150 # needs this '-threads' argument during linking.
2151 case $ac_sys_system in
2152 OSF1) LDLAST=-threads;;
2153 esac
2154 fi
2155fi
2156
2157if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002158 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002159 AC_DEFINE(_POSIX_THREADS, 1,
2160 [Define if you have POSIX threads,
2161 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002162 fi
2163
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002164 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2165 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002166 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2167 Defined for Solaris 2.6 bug in pthread header.)
2168 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002169 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002170 Define if the Posix semaphores do not work on your system)
2171 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002172 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2173 Define if the Posix semaphores do not work on your system)
2174 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002175 esac
2176
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002177 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2178 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2179 [AC_TRY_RUN([#include <pthread.h>
2180 void *foo(void *parm) {
2181 return NULL;
2182 }
2183 main() {
2184 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002185 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002186 if (pthread_attr_init(&attr)) exit(-1);
2187 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002188 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002189 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002190 }],
2191 ac_cv_pthread_system_supported=yes,
2192 ac_cv_pthread_system_supported=no,
2193 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002194 ])
2195 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2196 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002197 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002198 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002199 AC_CHECK_FUNCS(pthread_sigmask,
2200 [case $ac_sys_system in
2201 CYGWIN*)
2202 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2203 [Define if pthread_sigmask() does not work on your system.])
2204 ;;
2205 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002206fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002207
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002208
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002209# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002210AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002211AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002212AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002213[ --enable-ipv6 Enable ipv6 (with ipv4) support
2214 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002215[ case "$enableval" in
2216 no)
2217 AC_MSG_RESULT(no)
2218 ipv6=no
2219 ;;
2220 *) AC_MSG_RESULT(yes)
2221 AC_DEFINE(ENABLE_IPV6)
2222 ipv6=yes
2223 ;;
2224 esac ],
2225
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002226[
2227dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002228 AC_TRY_RUN([ /* AF_INET6 available check */
2229#include <sys/types.h>
2230#include <sys/socket.h>
2231main()
2232{
2233 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2234 exit(1);
2235 else
2236 exit(0);
2237}
2238],
2239 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002240 ipv6=yes,
2241 AC_MSG_RESULT(no)
2242 ipv6=no,
2243 AC_MSG_RESULT(no)
2244 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002245)
2246
2247if test "$ipv6" = "yes"; then
2248 AC_MSG_CHECKING(if RFC2553 API is available)
2249 AC_TRY_COMPILE([#include <sys/types.h>
2250#include <netinet/in.h>],
2251 [struct sockaddr_in6 x;
2252x.sin6_scope_id;],
2253 AC_MSG_RESULT(yes)
2254 ipv6=yes,
2255 AC_MSG_RESULT(no, IPv6 disabled)
2256 ipv6=no)
2257fi
2258
2259if test "$ipv6" = "yes"; then
2260 AC_DEFINE(ENABLE_IPV6)
2261fi
2262])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263
2264ipv6type=unknown
2265ipv6lib=none
2266ipv6trylibc=no
2267
2268if test "$ipv6" = "yes"; then
2269 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002270 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2271 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002272 case $i in
2273 inria)
2274 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002275 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002276#include <netinet/in.h>
2277#ifdef IPV6_INRIA_VERSION
2278yes
2279#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002280 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002281 ;;
2282 kame)
2283 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002284 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285#include <netinet/in.h>
2286#ifdef __KAME__
2287yes
2288#endif],
2289 [ipv6type=$i;
2290 ipv6lib=inet6
2291 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002292 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293 ;;
2294 linux-glibc)
2295 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002296 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002297#include <features.h>
2298#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2299yes
2300#endif],
2301 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002302 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303 ;;
2304 linux-inet6)
2305 dnl http://www.v6.linux.or.jp/
2306 if test -d /usr/inet6; then
2307 ipv6type=$i
2308 ipv6lib=inet6
2309 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002310 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311 fi
2312 ;;
2313 solaris)
2314 if test -f /etc/netconfig; then
2315 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2316 ipv6type=$i
2317 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318 fi
2319 fi
2320 ;;
2321 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002322 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323#include <sys/param.h>
2324#ifdef _TOSHIBA_INET6
2325yes
2326#endif],
2327 [ipv6type=$i;
2328 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002329 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002330 ;;
2331 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002332 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333#include </usr/local/v6/include/sys/v6config.h>
2334#ifdef __V6D__
2335yes
2336#endif],
2337 [ipv6type=$i;
2338 ipv6lib=v6;
2339 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002340 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002341 ;;
2342 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002343 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344#include <sys/param.h>
2345#ifdef _ZETA_MINAMI_INET6
2346yes
2347#endif],
2348 [ipv6type=$i;
2349 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002350 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351 ;;
2352 esac
2353 if test "$ipv6type" != "unknown"; then
2354 break
2355 fi
2356 done
2357 AC_MSG_RESULT($ipv6type)
2358fi
2359
2360if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2361 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2362 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2363 echo "using lib$ipv6lib"
2364 else
2365 if test $ipv6trylibc = "yes"; then
2366 echo "using libc"
2367 else
2368 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2369 echo "You need to fetch lib$ipv6lib.a from appropriate"
2370 echo 'ipv6 kit and compile beforehand.'
2371 exit 1
2372 fi
2373 fi
2374fi
2375
Georg Brandl93de2162008-07-16 02:21:06 +00002376AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2377AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2378 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2379 AC_MSG_RESULT(yes),
2380 AC_MSG_RESULT(no)
2381)
2382
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002383# Check for --with-doc-strings
2384AC_MSG_CHECKING(for --with-doc-strings)
2385AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002386 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002387
2388if test -z "$with_doc_strings"
2389then with_doc_strings="yes"
2390fi
2391if test "$with_doc_strings" != "no"
2392then
2393 AC_DEFINE(WITH_DOC_STRINGS, 1,
2394 [Define if you want documentation strings in extension modules])
2395fi
2396AC_MSG_RESULT($with_doc_strings)
2397
Neil Schemenauera35c6882001-02-27 04:45:05 +00002398# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002399AC_MSG_CHECKING(for --with-tsc)
2400AC_ARG_WITH(tsc,
2401[ --with(out)-tsc enable/disable timestamp counter profile], [
2402if test "$withval" != no
2403then
2404 AC_DEFINE(WITH_TSC, 1,
2405 [Define to profile with the Pentium timestamp counter])
2406 AC_MSG_RESULT(yes)
2407else AC_MSG_RESULT(no)
2408fi],
2409[AC_MSG_RESULT(no)])
2410
2411# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002412AC_MSG_CHECKING(for --with-pymalloc)
2413AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002414 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002415
2416if test -z "$with_pymalloc"
2417then with_pymalloc="yes"
2418fi
2419if test "$with_pymalloc" != "no"
2420then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002421 AC_DEFINE(WITH_PYMALLOC, 1,
2422 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002423fi
2424AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002425
Barry Warsawef82cd72000-06-30 16:21:01 +00002426# Check for --with-wctype-functions
2427AC_MSG_CHECKING(for --with-wctype-functions)
2428AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002429 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2430[
Barry Warsawef82cd72000-06-30 16:21:01 +00002431if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002432then
2433 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2434 [Define if you want wctype.h functions to be used instead of the
2435 one supplied by Python itself. (see Include/unicodectype.h).])
2436 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002437else AC_MSG_RESULT(no)
2438fi],
2439[AC_MSG_RESULT(no)])
2440
Guido van Rossum68242b51996-05-28 22:53:03 +00002441# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002442AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002443DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002444
Guido van Rossume97ee181999-12-20 21:27:22 +00002445# the dlopen() function means we might want to use dynload_shlib.o. some
2446# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002447AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002448
2449# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2450# loading of modules.
2451AC_SUBST(DYNLOADFILE)
2452AC_MSG_CHECKING(DYNLOADFILE)
2453if test -z "$DYNLOADFILE"
2454then
2455 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002456 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2457 if test "$ac_cv_func_dlopen" = yes
2458 then DYNLOADFILE="dynload_shlib.o"
2459 else DYNLOADFILE="dynload_aix.o"
2460 fi
2461 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002462 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002463 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2464 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002465 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002466 *)
2467 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2468 # out any dynamic loading
2469 if test "$ac_cv_func_dlopen" = yes
2470 then DYNLOADFILE="dynload_shlib.o"
2471 else DYNLOADFILE="dynload_stub.o"
2472 fi
2473 ;;
2474 esac
2475fi
2476AC_MSG_RESULT($DYNLOADFILE)
2477if test "$DYNLOADFILE" != "dynload_stub.o"
2478then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002479 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2480 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002481fi
2482
Jack Jansenc49e5b72001-06-19 15:00:23 +00002483# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2484
2485AC_SUBST(MACHDEP_OBJS)
2486AC_MSG_CHECKING(MACHDEP_OBJS)
2487if test -z "$MACHDEP_OBJS"
2488then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002489 MACHDEP_OBJS=$extra_machdep_objs
2490else
2491 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002492fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002493AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002494
Guido van Rossum627b2d71993-12-24 10:39:16 +00002495# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002496AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2497 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002498 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002499 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002500 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002501 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002502 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002503 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2504 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002505 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002506 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002507 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002508 truncate uname unsetenv utimes waitpid wait3 wait4 \
2509 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002510
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002511# For some functions, having a definition is not sufficient, since
2512# we want to take their address.
2513AC_MSG_CHECKING(for chroot)
2514AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2515 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2516 AC_MSG_RESULT(yes),
2517 AC_MSG_RESULT(no)
2518)
2519AC_MSG_CHECKING(for link)
2520AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2521 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2522 AC_MSG_RESULT(yes),
2523 AC_MSG_RESULT(no)
2524)
2525AC_MSG_CHECKING(for symlink)
2526AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2527 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002531AC_MSG_CHECKING(for fchdir)
2532AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2533 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2534 AC_MSG_RESULT(yes),
2535 AC_MSG_RESULT(no)
2536)
2537AC_MSG_CHECKING(for fsync)
2538AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002539 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002540 AC_MSG_RESULT(yes),
2541 AC_MSG_RESULT(no)
2542)
2543AC_MSG_CHECKING(for fdatasync)
2544AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2545 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2546 AC_MSG_RESULT(yes),
2547 AC_MSG_RESULT(no)
2548)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002549AC_MSG_CHECKING(for epoll)
2550AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2551 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2552 AC_MSG_RESULT(yes),
2553 AC_MSG_RESULT(no)
2554)
2555AC_MSG_CHECKING(for kqueue)
2556AC_TRY_COMPILE([
2557#include <sys/types.h>
2558#include <sys/event.h>
2559 ], int x=kqueue(),
2560 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2561 AC_MSG_RESULT(yes),
2562 AC_MSG_RESULT(no)
2563)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002564# On some systems (eg. FreeBSD 5), we would find a definition of the
2565# functions ctermid_r, setgroups in the library, but no prototype
2566# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2567# address to avoid compiler warnings and potential miscompilations
2568# because of the missing prototypes.
2569
2570AC_MSG_CHECKING(for ctermid_r)
2571AC_TRY_COMPILE([
2572#include "confdefs.h"
2573#include <stdio.h>
2574], void* p = ctermid_r,
2575 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2576 AC_MSG_RESULT(yes),
2577 AC_MSG_RESULT(no)
2578)
2579
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002580AC_MSG_CHECKING(for flock)
2581AC_TRY_COMPILE([
2582#include "confdefs.h"
2583#include <sys/file.h>
2584], void* p = flock,
2585 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2586 AC_MSG_RESULT(yes),
2587 AC_MSG_RESULT(no)
2588)
2589
2590AC_MSG_CHECKING(for getpagesize)
2591AC_TRY_COMPILE([
2592#include "confdefs.h"
2593#include <unistd.h>
2594], void* p = getpagesize,
2595 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2596 AC_MSG_RESULT(yes),
2597 AC_MSG_RESULT(no)
2598)
2599
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002600dnl check for true
2601AC_CHECK_PROGS(TRUE, true, /bin/true)
2602
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002603dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2604dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002605AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002606 AC_CHECK_LIB(resolv, inet_aton)
2607)
2608
Christian Heimesd0764e22007-12-04 15:00:33 +00002609# On Tru64, chflags seems to be present, but calling it will
2610# exit Python
2611AC_MSG_CHECKING(for chflags)
2612AC_TRY_RUN([
2613#include <sys/stat.h>
2614#include <unistd.h>
2615int main(int argc, char*argv[])
2616{
2617 if(chflags(argv[0], 0) != 0)
2618 return 1;
2619 return 0;
2620}
2621],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2622 AC_MSG_RESULT(yes),
2623 AC_MSG_RESULT(no)
2624)
2625
2626AC_MSG_CHECKING(for lchflags)
2627AC_TRY_RUN([
2628#include <sys/stat.h>
2629#include <unistd.h>
2630int main(int argc, char*argv[])
2631{
2632 if(lchflags(argv[0], 0) != 0)
2633 return 1;
2634 return 0;
2635}
2636],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2637 AC_MSG_RESULT(yes),
2638 AC_MSG_RESULT(no)
2639)
2640
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002641dnl Check if system zlib has *Copy() functions
2642dnl
2643dnl On MacOSX the linker will search for dylibs on the entire linker path
2644dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2645dnl to revert to a more traditional unix behaviour and make it possible to
2646dnl override the system libz with a local static library of libz. Temporarily
2647dnl add that flag to our CFLAGS as well to ensure that we check the version
2648dnl of libz that will be used by setup.py.
2649dnl The -L/usr/local/lib is needed as wel to get the same compilation
2650dnl environment as setup.py (and leaving it out can cause configure to use the
2651dnl wrong version of the library)
2652case $ac_sys_system/$ac_sys_release in
2653Darwin/*)
2654 _CUR_CFLAGS="${CFLAGS}"
2655 _CUR_LDFLAGS="${LDFLAGS}"
2656 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2657 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2658 ;;
2659esac
2660
2661AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2662
2663case $ac_sys_system/$ac_sys_release in
2664Darwin/*)
2665 CFLAGS="${_CUR_CFLAGS}"
2666 LDFLAGS="${_CUR_LDFLAGS}"
2667 ;;
2668esac
2669
Martin v. Löwise9416172003-05-03 10:12:45 +00002670AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002671AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002672#include "confdefs.h"
2673#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002674], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002675 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2676 AC_MSG_RESULT(yes),
2677 AC_MSG_RESULT(no)
2678)
2679
2680AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002681AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002682#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002683#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002684#include <sys/socket.h>
2685#include <netinet/in.h>
2686#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002687], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002688 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2689 AC_MSG_RESULT(yes),
2690 AC_MSG_RESULT(no)
2691)
2692
2693AC_MSG_CHECKING(for inet_pton)
2694AC_TRY_COMPILE([
2695#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002696#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002697#include <sys/socket.h>
2698#include <netinet/in.h>
2699#include <arpa/inet.h>
2700], void* p = inet_pton,
2701 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2702 AC_MSG_RESULT(yes),
2703 AC_MSG_RESULT(no)
2704)
2705
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002706# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002707AC_MSG_CHECKING(for setgroups)
2708AC_TRY_COMPILE([
2709#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002710#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002711#ifdef HAVE_GRP_H
2712#include <grp.h>
2713#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002714],
2715void* p = setgroups,
2716 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2717 AC_MSG_RESULT(yes),
2718 AC_MSG_RESULT(no)
2719)
2720
Fred Drake8cef4cf2000-06-28 16:40:38 +00002721# check for openpty and forkpty
2722
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002723AC_CHECK_FUNCS(openpty,,
2724 AC_CHECK_LIB(util,openpty,
2725 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2726 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2727 )
2728)
2729AC_CHECK_FUNCS(forkpty,,
2730 AC_CHECK_LIB(util,forkpty,
2731 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2732 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2733 )
2734)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002735
Christian Heimesb186d002008-03-18 15:15:01 +00002736# Stuff for expat.
2737AC_CHECK_FUNCS(memmove)
2738
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002739# check for long file support functions
2740AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2741
Christian Heimesb186d002008-03-18 15:15:01 +00002742AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002743AC_CHECK_FUNCS(getpgrp,
2744 AC_TRY_COMPILE([#include <unistd.h>],
2745 [getpgrp(0);],
2746 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2747 [Define if getpgrp() must be called as getpgrp(0).])
2748 )
2749)
Jack Jansen150753c2003-03-29 22:07:47 +00002750AC_CHECK_FUNCS(setpgrp,
2751 AC_TRY_COMPILE([#include <unistd.h>],
2752 [setpgrp(0,0);],
2753 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2754 [Define if setpgrp() must be called as setpgrp(0, 0).])
2755 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002756)
2757AC_CHECK_FUNCS(gettimeofday,
2758 AC_TRY_COMPILE([#include <sys/time.h>],
2759 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2760 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2761 [Define if gettimeofday() does not have second (timezone) argument
2762 This is the case on Motorola V4 (R40V4.2)])
2763 )
2764)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002765
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002766AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002767AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002768#if defined(MAJOR_IN_MKDEV)
2769#include <sys/mkdev.h>
2770#elif defined(MAJOR_IN_SYSMACROS)
2771#include <sys/sysmacros.h>
2772#else
2773#include <sys/types.h>
2774#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002775],[
2776 makedev(major(0),minor(0));
2777],[
2778 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2779 [Define to 1 if you have the device macros.])
2780 AC_MSG_RESULT(yes)
2781],[
2782 AC_MSG_RESULT(no)
2783])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002784
2785# On OSF/1 V5.1, getaddrinfo is available, but a define
2786# for [no]getaddrinfo in netdb.h.
2787AC_MSG_CHECKING(for getaddrinfo)
2788AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002789#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002790#include <sys/socket.h>
2791#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002792#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002793],[
2794getaddrinfo(NULL, NULL, NULL, NULL);
2795], [
2796AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002797AC_MSG_CHECKING(getaddrinfo bug)
2798AC_TRY_RUN([
2799#include <sys/types.h>
2800#include <netdb.h>
2801#include <string.h>
2802#include <sys/socket.h>
2803#include <netinet/in.h>
2804
2805main()
2806{
2807 int passive, gaierr, inet4 = 0, inet6 = 0;
2808 struct addrinfo hints, *ai, *aitop;
2809 char straddr[INET6_ADDRSTRLEN], strport[16];
2810
2811 for (passive = 0; passive <= 1; passive++) {
2812 memset(&hints, 0, sizeof(hints));
2813 hints.ai_family = AF_UNSPEC;
2814 hints.ai_flags = passive ? AI_PASSIVE : 0;
2815 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002816 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002817 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2818 (void)gai_strerror(gaierr);
2819 goto bad;
2820 }
2821 for (ai = aitop; ai; ai = ai->ai_next) {
2822 if (ai->ai_addr == NULL ||
2823 ai->ai_addrlen == 0 ||
2824 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2825 straddr, sizeof(straddr), strport, sizeof(strport),
2826 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2827 goto bad;
2828 }
2829 switch (ai->ai_family) {
2830 case AF_INET:
2831 if (strcmp(strport, "54321") != 0) {
2832 goto bad;
2833 }
2834 if (passive) {
2835 if (strcmp(straddr, "0.0.0.0") != 0) {
2836 goto bad;
2837 }
2838 } else {
2839 if (strcmp(straddr, "127.0.0.1") != 0) {
2840 goto bad;
2841 }
2842 }
2843 inet4++;
2844 break;
2845 case AF_INET6:
2846 if (strcmp(strport, "54321") != 0) {
2847 goto bad;
2848 }
2849 if (passive) {
2850 if (strcmp(straddr, "::") != 0) {
2851 goto bad;
2852 }
2853 } else {
2854 if (strcmp(straddr, "::1") != 0) {
2855 goto bad;
2856 }
2857 }
2858 inet6++;
2859 break;
2860 case AF_UNSPEC:
2861 goto bad;
2862 break;
2863 default:
2864 /* another family support? */
2865 break;
2866 }
2867 }
2868 }
2869
2870 if (!(inet4 == 0 || inet4 == 2))
2871 goto bad;
2872 if (!(inet6 == 0 || inet6 == 2))
2873 goto bad;
2874
2875 if (aitop)
2876 freeaddrinfo(aitop);
2877 exit(0);
2878
2879 bad:
2880 if (aitop)
2881 freeaddrinfo(aitop);
2882 exit(1);
2883}
2884],
2885AC_MSG_RESULT(good)
2886buggygetaddrinfo=no,
2887AC_MSG_RESULT(buggy)
2888buggygetaddrinfo=yes,
2889AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002890buggygetaddrinfo=yes)], [
2891AC_MSG_RESULT(no)
2892buggygetaddrinfo=yes
2893])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002894
2895if test "$buggygetaddrinfo" = "yes"; then
2896 if test "$ipv6" = "yes"; then
2897 echo 'Fatal: You must get working getaddrinfo() function.'
2898 echo ' or you can specify "--disable-ipv6"'.
2899 exit 1
2900 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002901else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002903fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002904AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002905
Guido van Rossum627b2d71993-12-24 10:39:16 +00002906# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002907AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002908AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002909AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002910AC_CHECK_MEMBERS([struct stat.st_rdev])
2911AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002912AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002913AC_CHECK_MEMBERS([struct stat.st_gen])
2914AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002915AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002916
2917AC_MSG_CHECKING(for time.h that defines altzone)
2918AC_CACHE_VAL(ac_cv_header_time_altzone,
2919[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2920 ac_cv_header_time_altzone=yes,
2921 ac_cv_header_time_altzone=no)])
2922AC_MSG_RESULT($ac_cv_header_time_altzone)
2923if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002924 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925fi
2926
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002927was_it_defined=no
2928AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002929AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002930#include <sys/types.h>
2931#include <sys/select.h>
2932#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002933], [;], [
2934 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2935 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2936 (which you can't on SCO ODT 3.0).])
2937 was_it_defined=yes
2938])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002939AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002940
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002941AC_MSG_CHECKING(for addrinfo)
2942AC_CACHE_VAL(ac_cv_struct_addrinfo,
2943AC_TRY_COMPILE([
2944# include <netdb.h>],
2945 [struct addrinfo a],
2946 ac_cv_struct_addrinfo=yes,
2947 ac_cv_struct_addrinfo=no))
2948AC_MSG_RESULT($ac_cv_struct_addrinfo)
2949if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002950 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002951fi
2952
2953AC_MSG_CHECKING(for sockaddr_storage)
2954AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2955AC_TRY_COMPILE([
2956# include <sys/types.h>
2957# include <sys/socket.h>],
2958 [struct sockaddr_storage s],
2959 ac_cv_struct_sockaddr_storage=yes,
2960 ac_cv_struct_sockaddr_storage=no))
2961AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2962if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002964fi
2965
Guido van Rossum627b2d71993-12-24 10:39:16 +00002966# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002967
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002968AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002969AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002970
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002971works=no
2972AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002973AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2974 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2975)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002976AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002977
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002978works=no
2979AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002980AC_TRY_COMPILE([], [signed char c;], works=yes,
2981 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2982)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002983AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002984
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002985have_prototypes=no
2986AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2988 AC_DEFINE(HAVE_PROTOTYPES, 1,
2989 [Define if your compiler supports function prototype])
2990 have_prototypes=yes
2991])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002993
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994works=no
2995AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002996AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002997#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002998int foo(int x, ...) {
2999 va_list va;
3000 va_start(va, x);
3001 va_arg(va, int);
3002 va_arg(va, char *);
3003 va_arg(va, double);
3004 return 0;
3005}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003006], [return foo(10, "", 3.14);], [
3007 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3008 [Define if your compiler supports variable length function prototypes
3009 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3010 works=yes
3011])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003012AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003013
Dave Cole331708b2004-08-09 04:51:41 +00003014# check for socketpair
3015AC_MSG_CHECKING(for socketpair)
3016AC_TRY_COMPILE([
3017#include <sys/types.h>
3018#include <sys/socket.h>
3019], void *x=socketpair,
3020 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3021 AC_MSG_RESULT(yes),
3022 AC_MSG_RESULT(no)
3023)
3024
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003025# check if sockaddr has sa_len member
3026AC_MSG_CHECKING(if sockaddr has sa_len member)
3027AC_TRY_COMPILE([#include <sys/types.h>
3028#include <sys/socket.h>],
3029[struct sockaddr x;
3030x.sa_len = 0;],
3031 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003032 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003033 AC_MSG_RESULT(no))
3034
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003035va_list_is_array=no
3036AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003037AC_TRY_COMPILE([
3038#ifdef HAVE_STDARG_PROTOTYPES
3039#include <stdarg.h>
3040#else
3041#include <varargs.h>
3042#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043], [va_list list1, list2; list1 = list2;], , [
3044 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3045 va_list_is_array=yes
3046])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003047AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003048
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003049# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003050AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3051 [Define this if you have some version of gethostbyname_r()])
3052
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003053AC_CHECK_FUNC(gethostbyname_r, [
3054 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3055 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3056 OLD_CFLAGS=$CFLAGS
3057 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3058 AC_TRY_COMPILE([
3059# include <netdb.h>
3060 ], [
3061 char *name;
3062 struct hostent *he, *res;
3063 char buffer[2048];
3064 int buflen = 2048;
3065 int h_errnop;
3066
3067 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3068 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003069 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003070 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3071 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003072 AC_MSG_RESULT(yes)
3073 ], [
3074 AC_MSG_RESULT(no)
3075 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3076 AC_TRY_COMPILE([
3077# include <netdb.h>
3078 ], [
3079 char *name;
3080 struct hostent *he;
3081 char buffer[2048];
3082 int buflen = 2048;
3083 int h_errnop;
3084
3085 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3086 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003087 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003088 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3089 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003090 AC_MSG_RESULT(yes)
3091 ], [
3092 AC_MSG_RESULT(no)
3093 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3094 AC_TRY_COMPILE([
3095# include <netdb.h>
3096 ], [
3097 char *name;
3098 struct hostent *he;
3099 struct hostent_data data;
3100
3101 (void) gethostbyname_r(name, he, &data);
3102 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003103 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003104 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3105 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003106 AC_MSG_RESULT(yes)
3107 ], [
3108 AC_MSG_RESULT(no)
3109 ])
3110 ])
3111 ])
3112 CFLAGS=$OLD_CFLAGS
3113], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003114 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003115])
3116AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3117AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3118AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003119AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003120AC_SUBST(HAVE_GETHOSTBYNAME)
3121
Guido van Rossum627b2d71993-12-24 10:39:16 +00003122# checks for system services
3123# (none yet)
3124
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003125# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003126AC_CHECK_FUNC(__fpu_control,
3127 [],
3128 [AC_CHECK_LIB(ieee, __fpu_control)
3129])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003130
Guido van Rossum93274221997-05-09 02:42:00 +00003131# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003132AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003133AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003134 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3135[
Guido van Rossum93274221997-05-09 02:42:00 +00003136if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003137then
3138 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3139 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3140 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003141else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003142fi],
3143[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003144
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003145# check for --with-libm=...
3146AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003147case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003148Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003149*) LIBM=-lm
3150esac
Guido van Rossum93274221997-05-09 02:42:00 +00003151AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003152AC_ARG_WITH(libm,
3153 AC_HELP_STRING(--with-libm=STRING, math library),
3154[
Guido van Rossum93274221997-05-09 02:42:00 +00003155if test "$withval" = no
3156then LIBM=
3157 AC_MSG_RESULT(force LIBM empty)
3158elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003159then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003160 AC_MSG_RESULT(set LIBM="$withval")
3161else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003162fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003163[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003164
3165# check for --with-libc=...
3166AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003167AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003168AC_ARG_WITH(libc,
3169 AC_HELP_STRING(--with-libc=STRING, C library),
3170[
Guido van Rossum93274221997-05-09 02:42:00 +00003171if test "$withval" = no
3172then LIBC=
3173 AC_MSG_RESULT(force LIBC empty)
3174elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003175then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003176 AC_MSG_RESULT(set LIBC="$withval")
3177else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003178fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003179[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003180
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003181# **************************************************
3182# * Check for various properties of floating point *
3183# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003184
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003185AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3186AC_CACHE_VAL(ac_cv_little_endian_double, [
3187AC_TRY_RUN([
3188#include <string.h>
3189int main() {
3190 double x = 9006104071832581.0;
3191 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3192 return 0;
3193 else
3194 return 1;
3195}
3196],
3197ac_cv_little_endian_double=yes,
3198ac_cv_little_endian_double=no,
3199ac_cv_little_endian_double=no)])
3200AC_MSG_RESULT($ac_cv_little_endian_double)
3201if test "$ac_cv_little_endian_double" = yes
3202then
3203 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3204 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3205 with the least significant byte first])
3206fi
3207
3208AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3209AC_CACHE_VAL(ac_cv_big_endian_double, [
3210AC_TRY_RUN([
3211#include <string.h>
3212int main() {
3213 double x = 9006104071832581.0;
3214 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3215 return 0;
3216 else
3217 return 1;
3218}
3219],
3220ac_cv_big_endian_double=yes,
3221ac_cv_big_endian_double=no,
3222ac_cv_big_endian_double=no)])
3223AC_MSG_RESULT($ac_cv_big_endian_double)
3224if test "$ac_cv_big_endian_double" = yes
3225then
3226 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3227 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3228 with the most significant byte first])
3229fi
3230
3231# Some ARM platforms use a mixed-endian representation for doubles.
3232# While Python doesn't currently have full support for these platforms
3233# (see e.g., issue 1762561), we can at least make sure that float <-> string
3234# conversions work.
3235AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3236AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3237AC_TRY_RUN([
3238#include <string.h>
3239int main() {
3240 double x = 9006104071832581.0;
3241 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3242 return 0;
3243 else
3244 return 1;
3245}
3246],
3247ac_cv_mixed_endian_double=yes,
3248ac_cv_mixed_endian_double=no,
3249ac_cv_mixed_endian_double=no)])
3250AC_MSG_RESULT($ac_cv_mixed_endian_double)
3251if test "$ac_cv_mixed_endian_double" = yes
3252then
3253 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3254 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3255 in ARM mixed-endian order (byte order 45670123)])
3256fi
3257
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003258# The short float repr introduced in Python 3.1 requires the
3259# correctly-rounded string <-> double conversion functions from
3260# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3261# rounding; this is a problem on x86, where the x87 FPU has a default
3262# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3263# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003264if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3265then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003266 # Check that it's okay to use gcc inline assembler to get and set
3267 # x87 control word. It should be, but you never know...
3268 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3269 AC_TRY_COMPILE([], [
3270 unsigned short cw;
3271 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3272 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3273 ],
3274 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3275 AC_MSG_RESULT($have_gcc_asm_for_x87)
3276 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003277 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003278 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3279 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003280 fi
3281fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003282
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003283# Detect whether system arithmetic is subject to x87-style double
3284# rounding issues. The result of this test has little meaning on non
3285# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3286# mode is round-to-nearest and double rounding issues are present, and
3287# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3288AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003289# $BASECFLAGS may affect the result
3290ac_save_cc="$CC"
3291CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003292AC_TRY_RUN([
3293#include <stdlib.h>
3294#include <math.h>
3295int main() {
3296 volatile double x, y, z;
3297 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3298 x = 0.99999999999999989; /* 1-2**-53 */
3299 y = 1./x;
3300 if (y != 1.)
3301 exit(0);
3302 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3303 x = 1e16;
3304 y = 2.99999;
3305 z = x + y;
3306 if (z != 1e16+4.)
3307 exit(0);
3308 /* both tests show evidence of double rounding */
3309 exit(1);
3310}
3311],
3312ac_cv_x87_double_rounding=no,
3313ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003314ac_cv_x87_double_rounding=no)
3315CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003316AC_MSG_RESULT($ac_cv_x87_double_rounding)
3317if test "$ac_cv_x87_double_rounding" = yes
3318then
3319 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3320 [Define if arithmetic is subject to x87-style double rounding issue])
3321fi
3322
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003323# ************************************
3324# * Check for mathematical functions *
3325# ************************************
3326
3327LIBS_SAVE=$LIBS
3328LIBS="$LIBS $LIBM"
3329
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003330# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3331# -0. on some architectures.
3332AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3333AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3334AC_TRY_RUN([
3335#include <math.h>
3336#include <stdlib.h>
3337int main() {
3338 /* return 0 if either negative zeros don't exist
3339 on this platform or if negative zeros exist
3340 and tanh(-0.) == -0. */
3341 if (atan2(0., -1.) == atan2(-0., -1.) ||
3342 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3343 else exit(1);
3344}
3345],
3346ac_cv_tanh_preserves_zero_sign=yes,
3347ac_cv_tanh_preserves_zero_sign=no,
3348ac_cv_tanh_preserves_zero_sign=no)])
3349AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3350if test "$ac_cv_tanh_preserves_zero_sign" = yes
3351then
3352 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3353 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3354fi
3355
Mark Dickinsonf2537862009-04-18 13:58:18 +00003356AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003357AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003358
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003359LIBS=$LIBS_SAVE
3360
Mark Dickinson10683072009-04-18 21:18:19 +00003361# Multiprocessing check for broken sem_getvalue
3362AC_MSG_CHECKING(for broken sem_getvalue)
3363AC_TRY_RUN([
3364#include <unistd.h>
3365#include <fcntl.h>
3366#include <stdio.h>
3367#include <semaphore.h>
3368#include <sys/stat.h>
3369
3370int main(void){
3371 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3372 int count;
3373 int res;
3374 if(a==SEM_FAILED){
3375 perror("sem_open");
3376 return 1;
3377
3378 }
3379 res = sem_getvalue(a, &count);
3380 sem_close(a);
3381 return res==-1 ? 1 : 0;
3382}
3383]
3384,AC_MSG_RESULT(no),
3385 AC_MSG_RESULT(yes)
3386 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1, define to 1 if your sem_getvalue is broken.)
3387)
3388
Mark Dickinsonbd792642009-03-18 20:06:12 +00003389# determine what size digit to use for Python's longs
3390AC_MSG_CHECKING([digit size for Python's longs])
3391AC_ARG_ENABLE(big-digits,
3392AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3393[case $enable_big_digits in
3394yes)
3395 enable_big_digits=30 ;;
3396no)
3397 enable_big_digits=15 ;;
3398[15|30])
3399 ;;
3400*)
3401 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3402esac
3403AC_MSG_RESULT($enable_big_digits)
3404AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3405],
3406[AC_MSG_RESULT(no value specified)])
3407
Guido van Rossumef2255b2000-03-10 22:30:29 +00003408# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003409AC_CHECK_HEADER(wchar.h, [
3410 AC_DEFINE(HAVE_WCHAR_H, 1,
3411 [Define if the compiler provides a wchar.h header file.])
3412 wchar_h="yes"
3413],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003414wchar_h="no"
3415)
3416
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003417# determine wchar_t size
3418if test "$wchar_h" = yes
3419then
Guido van Rossum67b26592001-10-20 14:21:45 +00003420 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003421fi
3422
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003423AC_MSG_CHECKING(for UCS-4 tcl)
3424have_ucs4_tcl=no
3425AC_TRY_COMPILE([
3426#include <tcl.h>
3427#if TCL_UTF_MAX != 6
3428# error "NOT UCS4_TCL"
3429#endif], [], [
3430 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3431 have_ucs4_tcl=yes
3432])
3433AC_MSG_RESULT($have_ucs4_tcl)
3434
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003435# check whether wchar_t is signed or not
3436if test "$wchar_h" = yes
3437then
3438 # check whether wchar_t is signed or not
3439 AC_MSG_CHECKING(whether wchar_t is signed)
3440 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3441 AC_TRY_RUN([
3442 #include <wchar.h>
3443 int main()
3444 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003445 /* Success: exit code 0 */
3446 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003447 }
3448 ],
3449 ac_cv_wchar_t_signed=yes,
3450 ac_cv_wchar_t_signed=no,
3451 ac_cv_wchar_t_signed=yes)])
3452 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3453fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003454
Georg Brandl52d168a2008-01-07 18:10:24 +00003455AC_MSG_CHECKING(what type to use for str)
3456AC_ARG_WITH(wide-unicode,
3457 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3458[
3459if test "$withval" != no
3460then unicode_size="4"
3461else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003462fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003463],
3464[
3465case "$have_ucs4_tcl" in
3466 yes) unicode_size="4" ;;
3467 *) unicode_size="2" ;;
3468esac
3469])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003470
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003471AH_TEMPLATE(Py_UNICODE_SIZE,
3472 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003473case "$unicode_size" in
3474 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3475 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003476esac
3477
Martin v. Löwis11437992002-04-12 09:54:03 +00003478AH_TEMPLATE(PY_UNICODE_TYPE,
3479 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003480
Georg Brandl52d168a2008-01-07 18:10:24 +00003481# wchar_t is only usable if it maps to an unsigned type
3482if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003483 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003484then
3485 PY_UNICODE_TYPE="wchar_t"
3486 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3487 [Define if you have a useable wchar_t type defined in wchar.h; useable
3488 means wchar_t must be an unsigned type with at least 16 bits. (see
3489 Include/unicodeobject.h).])
3490 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3491elif test "$ac_cv_sizeof_short" = "$unicode_size"
3492then
3493 PY_UNICODE_TYPE="unsigned short"
3494 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3495elif test "$ac_cv_sizeof_long" = "$unicode_size"
3496then
3497 PY_UNICODE_TYPE="unsigned long"
3498 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3499else
3500 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003501fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003502AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003503
3504# check for endianness
3505AC_C_BIGENDIAN
3506
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003507# Check whether right shifting a negative integer extends the sign bit
3508# or fills with zeros (like the Cray J90, according to Tim Peters).
3509AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003510AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003511AC_TRY_RUN([
3512int main()
3513{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003514 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003515}
Guido van Rossum3065c942001-09-17 04:03:14 +00003516],
3517ac_cv_rshift_extends_sign=yes,
3518ac_cv_rshift_extends_sign=no,
3519ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003520AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3521if test "$ac_cv_rshift_extends_sign" = no
3522then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003523 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3524 [Define if i>>j for signed int i does not extend the sign bit
3525 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003526fi
3527
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003528# check for getc_unlocked and related locking functions
3529AC_MSG_CHECKING(for getc_unlocked() and friends)
3530AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3531AC_TRY_LINK([#include <stdio.h>],[
3532 FILE *f = fopen("/dev/null", "r");
3533 flockfile(f);
3534 getc_unlocked(f);
3535 funlockfile(f);
3536], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3537AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3538if test "$ac_cv_have_getc_unlocked" = yes
3539then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003540 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3541 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003542fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003543
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003544# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003545# save the value of LIBS so we don't actually link Python with readline
3546LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003547
3548# On some systems we need to link readline to a termcap compatible
3549# library. NOTE: Keep the precedence of listed libraries synchronised
3550# with setup.py.
3551py_cv_lib_readline=no
3552AC_MSG_CHECKING([how to link readline libs])
3553for py_libtermcap in "" ncursesw ncurses curses termcap; do
3554 if test -z "$py_libtermcap"; then
3555 READLINE_LIBS="-lreadline"
3556 else
3557 READLINE_LIBS="-lreadline -l$py_libtermcap"
3558 fi
3559 LIBS="$READLINE_LIBS $LIBS_no_readline"
3560 AC_LINK_IFELSE(
3561 [AC_LANG_CALL([],[readline])],
3562 [py_cv_lib_readline=yes])
3563 if test $py_cv_lib_readline = yes; then
3564 break
3565 fi
3566done
3567# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3568#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003569if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003570 AC_MSG_RESULT([none])
3571else
3572 AC_MSG_RESULT([$READLINE_LIBS])
3573 AC_DEFINE(HAVE_LIBREADLINE, 1,
3574 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003575fi
3576
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003577# check for readline 2.1
3578AC_CHECK_LIB(readline, rl_callback_handler_install,
3579 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003580 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003581
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003582# check for readline 2.2
3583AC_TRY_CPP([#include <readline/readline.h>],
3584have_readline=yes, have_readline=no)
3585if test $have_readline = yes
3586then
3587 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3588 [readline/readline.h],
3589 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3590 [Define if you have readline 2.2]), )
3591fi
3592
Martin v. Löwis0daad592001-09-30 21:09:59 +00003593# check for readline 4.0
3594AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003595 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003596 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003597
Thomas Wouters89d996e2007-09-08 17:39:28 +00003598# also in 4.0
3599AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3600 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003601 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003602
Guido van Rossum353ae582001-07-10 16:45:32 +00003603# check for readline 4.2
3604AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003605 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003606 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003607
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003608# also in readline 4.2
3609AC_TRY_CPP([#include <readline/readline.h>],
3610have_readline=yes, have_readline=no)
3611if test $have_readline = yes
3612then
3613 AC_EGREP_HEADER([extern int rl_catch_signals;],
3614 [readline/readline.h],
3615 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3616 [Define if you can turn off readline's signal handling.]), )
3617fi
3618
Martin v. Löwis82bca632006-02-10 20:49:30 +00003619# End of readline checks: restore LIBS
3620LIBS=$LIBS_no_readline
3621
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003622AC_MSG_CHECKING(for broken nice())
3623AC_CACHE_VAL(ac_cv_broken_nice, [
3624AC_TRY_RUN([
3625int main()
3626{
3627 int val1 = nice(1);
3628 if (val1 != -1 && val1 == nice(2))
3629 exit(0);
3630 exit(1);
3631}
Guido van Rossum3065c942001-09-17 04:03:14 +00003632],
3633ac_cv_broken_nice=yes,
3634ac_cv_broken_nice=no,
3635ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003636AC_MSG_RESULT($ac_cv_broken_nice)
3637if test "$ac_cv_broken_nice" = yes
3638then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003639 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3640 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003641fi
3642
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003643AC_MSG_CHECKING(for broken poll())
3644AC_TRY_RUN([
3645#include <poll.h>
3646
3647int main (void)
3648 {
3649 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3650
3651 close (42);
3652
3653 int poll_test = poll (&poll_struct, 1, 0);
3654
3655 if (poll_test < 0)
3656 {
3657 exit(0);
3658 }
3659 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3660 {
3661 exit(0);
3662 }
3663 else
3664 {
3665 exit(1);
3666 }
3667 }
3668],
3669ac_cv_broken_poll=yes,
3670ac_cv_broken_poll=no,
3671ac_cv_broken_poll=no)
3672AC_MSG_RESULT($ac_cv_broken_poll)
3673if test "$ac_cv_broken_poll" = yes
3674then
3675 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3676 [Define if poll() sets errno on invalid file descriptors.])
3677fi
3678
Brett Cannon43802422005-02-10 20:48:03 +00003679# Before we can test tzset, we need to check if struct tm has a tm_zone
3680# (which is not required by ISO C or UNIX spec) and/or if we support
3681# tzname[]
3682AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003683
Brett Cannon43802422005-02-10 20:48:03 +00003684# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003685AC_MSG_CHECKING(for working tzset())
3686AC_CACHE_VAL(ac_cv_working_tzset, [
3687AC_TRY_RUN([
3688#include <stdlib.h>
3689#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003690#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003691
3692#if HAVE_TZNAME
3693extern char *tzname[];
3694#endif
3695
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003696int main()
3697{
Brett Cannon18367812003-09-19 00:59:16 +00003698 /* Note that we need to ensure that not only does tzset(3)
3699 do 'something' with localtime, but it works as documented
3700 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003701 This includes making sure that tzname is set properly if
3702 tm->tm_zone does not exist since it is the alternative way
3703 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003704
3705 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003706 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003707 */
3708
Brett Cannon43802422005-02-10 20:48:03 +00003709 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003710 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3711
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003712 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003713 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003714 if (localtime(&groundhogday)->tm_hour != 0)
3715 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003716#if HAVE_TZNAME
3717 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3718 if (strcmp(tzname[0], "UTC") ||
3719 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3720 exit(1);
3721#endif
Brett Cannon18367812003-09-19 00:59:16 +00003722
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003723 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003724 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003725 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003726 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003727#if HAVE_TZNAME
3728 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3729 exit(1);
3730#endif
Brett Cannon18367812003-09-19 00:59:16 +00003731
3732 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3733 tzset();
3734 if (localtime(&groundhogday)->tm_hour != 11)
3735 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003736#if HAVE_TZNAME
3737 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3738 exit(1);
3739#endif
3740
3741#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003742 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3743 exit(1);
3744 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3745 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003746#endif
Brett Cannon18367812003-09-19 00:59:16 +00003747
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003748 exit(0);
3749}
3750],
3751ac_cv_working_tzset=yes,
3752ac_cv_working_tzset=no,
3753ac_cv_working_tzset=no)])
3754AC_MSG_RESULT($ac_cv_working_tzset)
3755if test "$ac_cv_working_tzset" = yes
3756then
3757 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3758 [Define if tzset() actually switches the local timezone in a meaningful way.])
3759fi
3760
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003761# Look for subsecond timestamps in struct stat
3762AC_MSG_CHECKING(for tv_nsec in struct stat)
3763AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3764AC_TRY_COMPILE([#include <sys/stat.h>], [
3765struct stat st;
3766st.st_mtim.tv_nsec = 1;
3767],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003768ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003769ac_cv_stat_tv_nsec=no,
3770ac_cv_stat_tv_nsec=no))
3771AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3772if test "$ac_cv_stat_tv_nsec" = yes
3773then
3774 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3775 [Define if you have struct stat.st_mtim.tv_nsec])
3776fi
3777
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003778# Look for BSD style subsecond timestamps in struct stat
3779AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3780AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3781AC_TRY_COMPILE([#include <sys/stat.h>], [
3782struct stat st;
3783st.st_mtimespec.tv_nsec = 1;
3784],
3785ac_cv_stat_tv_nsec2=yes,
3786ac_cv_stat_tv_nsec2=no,
3787ac_cv_stat_tv_nsec2=no))
3788AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3789if test "$ac_cv_stat_tv_nsec2" = yes
3790then
3791 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3792 [Define if you have struct stat.st_mtimensec])
3793fi
3794
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003795# On HP/UX 11.0, mvwdelch is a block with a return statement
3796AC_MSG_CHECKING(whether mvwdelch is an expression)
3797AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3798AC_TRY_COMPILE([#include <curses.h>], [
3799 int rtn;
3800 rtn = mvwdelch(0,0,0);
3801], ac_cv_mvwdelch_is_expression=yes,
3802 ac_cv_mvwdelch_is_expression=no,
3803 ac_cv_mvwdelch_is_expression=yes))
3804AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3805
3806if test "$ac_cv_mvwdelch_is_expression" = yes
3807then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003808 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3809 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003810fi
3811
3812AC_MSG_CHECKING(whether WINDOW has _flags)
3813AC_CACHE_VAL(ac_cv_window_has_flags,
3814AC_TRY_COMPILE([#include <curses.h>], [
3815 WINDOW *w;
3816 w->_flags = 0;
3817], ac_cv_window_has_flags=yes,
3818 ac_cv_window_has_flags=no,
3819 ac_cv_window_has_flags=no))
3820AC_MSG_RESULT($ac_cv_window_has_flags)
3821
3822
3823if test "$ac_cv_window_has_flags" = yes
3824then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003825 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3826 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003827fi
3828
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003829AC_MSG_CHECKING(for is_term_resized)
3830AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3831 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3832 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003833 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003834)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003835
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003836AC_MSG_CHECKING(for resize_term)
3837AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3838 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3839 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003840 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003841)
3842
3843AC_MSG_CHECKING(for resizeterm)
3844AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3845 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3846 AC_MSG_RESULT(yes),
3847 AC_MSG_RESULT(no)
3848)
3849
Thomas Wouters89f507f2006-12-13 04:49:30 +00003850AC_MSG_CHECKING(for /dev/ptmx)
3851
3852if test -r /dev/ptmx
3853then
3854 AC_MSG_RESULT(yes)
3855 AC_DEFINE(HAVE_DEV_PTMX, 1,
3856 [Define if we have /dev/ptmx.])
3857else
3858 AC_MSG_RESULT(no)
3859fi
3860
3861AC_MSG_CHECKING(for /dev/ptc)
3862
3863if test -r /dev/ptc
3864then
3865 AC_MSG_RESULT(yes)
3866 AC_DEFINE(HAVE_DEV_PTC, 1,
3867 [Define if we have /dev/ptc.])
3868else
3869 AC_MSG_RESULT(no)
3870fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003871
Thomas Wouters477c8d52006-05-27 19:21:47 +00003872AC_MSG_CHECKING(for %zd printf() format support)
3873AC_TRY_RUN([#include <stdio.h>
3874#include <stddef.h>
3875#include <string.h>
3876
Christian Heimes2c181612007-12-17 20:04:13 +00003877#ifdef HAVE_SYS_TYPES_H
3878#include <sys/types.h>
3879#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003880
3881#ifdef HAVE_SSIZE_T
3882typedef ssize_t Py_ssize_t;
3883#elif SIZEOF_VOID_P == SIZEOF_LONG
3884typedef long Py_ssize_t;
3885#else
3886typedef int Py_ssize_t;
3887#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003888
Christian Heimes2c181612007-12-17 20:04:13 +00003889int main()
3890{
3891 char buffer[256];
3892
Thomas Wouters477c8d52006-05-27 19:21:47 +00003893 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3894 return 1;
3895
Thomas Wouters89f507f2006-12-13 04:49:30 +00003896 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003897 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003898
3899 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3900 return 1;
3901
3902 if (strcmp(buffer, "-123"))
3903 return 1;
3904
Thomas Wouters477c8d52006-05-27 19:21:47 +00003905 return 0;
3906}],
3907[AC_MSG_RESULT(yes)
3908 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3909 AC_MSG_RESULT(no))
3910
Martin v. Löwis01c04012002-11-11 14:58:44 +00003911AC_CHECK_TYPE(socklen_t,,
3912 AC_DEFINE(socklen_t,int,
3913 Define to `int' if <sys/socket.h> does not define.),[
3914#ifdef HAVE_SYS_TYPES_H
3915#include <sys/types.h>
3916#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003917#ifdef HAVE_SYS_SOCKET_H
3918#include <sys/socket.h>
3919#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003920])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003921
Antoine Pitroufff95302008-09-03 18:58:51 +00003922AC_MSG_CHECKING(for broken mbstowcs)
3923AC_TRY_RUN([
3924#include<stdlib.h>
3925int main() {
3926 size_t len = -1;
3927 const char *str = "text";
3928 len = mbstowcs(NULL, str, 0);
3929 return (len != 4);
3930}
3931],
3932ac_cv_broken_mbstowcs=no,
3933ac_cv_broken_mbstowcs=yes,
3934ac_cv_broken_mbstowcs=no)
3935AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3936if test "$ac_cv_broken_mbstowcs" = yes
3937then
3938 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3939 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3940 wide chars that would be converted.])
3941fi
3942
Antoine Pitroub52ec782009-01-25 16:34:23 +00003943# Check for --with-computed-gotos
3944AC_MSG_CHECKING(for --with-computed-gotos)
3945AC_ARG_WITH(computed-gotos,
3946 AC_HELP_STRING(--with-computed-gotos,
3947 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3948[
3949if test "$withval" != no
3950then
3951 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3952 [Define if you want to use computed gotos in ceval.c.])
3953 AC_MSG_RESULT(yes)
3954else AC_MSG_RESULT(no)
3955fi],
3956[AC_MSG_RESULT(no)])
3957
3958
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003959AC_SUBST(THREADHEADERS)
3960
3961for h in `(cd $srcdir;echo Python/thread_*.h)`
3962do
3963 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3964done
3965
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003966AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003967SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003968AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003969for dir in $SRCDIRS; do
3970 if test ! -d $dir; then
3971 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003972 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003973done
3974AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003975
Guido van Rossum627b2d71993-12-24 10:39:16 +00003976# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003977AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003978AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003979
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003980echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003981if test ! -f Modules/Setup
3982then
3983 cp $srcdir/Modules/Setup.dist Modules/Setup
3984fi
3985
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003986echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003987if test ! -f Modules/Setup.local
3988then
3989 echo "# Edit this file for local setup changes" >Modules/Setup.local
3990fi
3991
3992echo "creating Makefile"
3993$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3994 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003995 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003996mv config.c Modules