blob: b7b6a986ebe881d0916058fb111c223ed41c9e52 [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,
109 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
110[
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
919 else
920 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
921
922 fi
923
924
925 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000926 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000927 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
928 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
929 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000930 fi
931
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000932 # Calculate the right deployment target for this build.
933 #
934 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
935 if test ${cur_target} '>' 10.2; then
936 cur_target=10.3
Ronald Oussorend45ff2c2009-09-06 11:11:04 +0000937 if test ${enable_universalsdk}; then
938 if test "${UNIVERSAL_ARCHS}" = "all"; then
939 # Ensure that the default platform for a
940 # 4-way universal build is OSX 10.5,
941 # that's the first OS release where
942 # 4-way builds make sense.
943 cur_target='10.5'
944 fi
945 else
946 if test `arch` = "i386"; then
947 # On Intel macs default to a deployment
948 # target of 10.4, that's the first OSX
949 # release with Intel support.
950 cur_target="10.4"
951 fi
952 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000953 fi
954 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
955
956 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
957 # environment with a value that is the same as what we'll use
958 # in the Makefile to ensure that we'll get the same compiler
959 # environment during configure and build time.
960 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
961 export MACOSX_DEPLOYMENT_TARGET
962 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
963
Skip Montanarodecc6a42003-01-01 20:07:49 +0000964 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000965 OSF*)
966 BASECFLAGS="$BASECFLAGS -mieee"
967 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000968 esac
969 ;;
970
971*)
972 case $ac_sys_system in
973 OpenUNIX*|UnixWare*)
974 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
975 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000976 OSF*)
977 BASECFLAGS="$BASECFLAGS -ieee -std"
978 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000979 SCO_SV*)
980 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
981 ;;
982 esac
983 ;;
984esac
985
Fred Drakee1ceaa02001-12-04 20:55:47 +0000986if test "$Py_DEBUG" = 'true'; then
987 :
988else
989 OPT="-DNDEBUG $OPT"
990fi
991
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000992if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000993then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000994 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000995fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000996
Neal Norwitz020c46a2006-01-07 21:39:28 +0000997# disable check for icc since it seems to pass, but generates a warning
998if test "$CC" = icc
999then
1000 ac_cv_opt_olimit_ok=no
1001fi
1002
Guido van Rossum91922671997-10-09 20:24:13 +00001003AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1004AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1005[ac_save_cc="$CC"
1006CC="$CC -OPT:Olimit=0"
1007AC_TRY_RUN([int main() { return 0; }],
1008 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001009 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001010 ac_cv_opt_olimit_ok=no)
1011CC="$ac_save_cc"])
1012AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001013if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001014 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001015 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1016 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1017 # environment?
1018 Darwin*)
1019 ;;
1020 *)
1021 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1022 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001023 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001024else
1025 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1026 AC_CACHE_VAL(ac_cv_olimit_ok,
1027 [ac_save_cc="$CC"
1028 CC="$CC -Olimit 1500"
1029 AC_TRY_RUN([int main() { return 0; }],
1030 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001031 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001032 ac_cv_olimit_ok=no)
1033 CC="$ac_save_cc"])
1034 AC_MSG_RESULT($ac_cv_olimit_ok)
1035 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001036 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001037 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001038fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001039
Thomas Wouters89f507f2006-12-13 04:49:30 +00001040# Check whether GCC supports PyArg_ParseTuple format
1041if test "$GCC" = "yes"
1042then
1043 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1044 save_CFLAGS=$CFLAGS
1045 CFLAGS="$CFLAGS -Werror"
1046 AC_TRY_COMPILE([
1047 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1048 ],,
1049 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1050 AC_MSG_RESULT(yes),
1051 AC_MSG_RESULT(no)
1052 )
1053 CFLAGS=$save_CFLAGS
1054fi
1055
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001056# On some compilers, pthreads are available without further options
1057# (e.g. MacOS X). On some of these systems, the compiler will not
1058# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1059# So we have to see first whether pthreads are available without
1060# options before we can check whether -Kpthread improves anything.
1061AC_MSG_CHECKING(whether pthreads are available without options)
1062AC_CACHE_VAL(ac_cv_pthread_is_default,
1063[AC_TRY_RUN([
1064#include <pthread.h>
1065
1066void* routine(void* p){return NULL;}
1067
1068int main(){
1069 pthread_t p;
1070 if(pthread_create(&p,NULL,routine,NULL)!=0)
1071 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001072 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001073 return 0;
1074}
1075],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001076[
1077 ac_cv_pthread_is_default=yes
1078 ac_cv_kthread=no
1079 ac_cv_pthread=no
1080],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001081 ac_cv_pthread_is_default=no,
1082 ac_cv_pthread_is_default=no)
1083])
1084AC_MSG_RESULT($ac_cv_pthread_is_default)
1085
1086
1087if test $ac_cv_pthread_is_default = yes
1088then
1089 ac_cv_kpthread=no
1090else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001091# -Kpthread, if available, provides the right #defines
1092# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001093# Some compilers won't report that they do not support -Kpthread,
1094# so we need to run a program to see whether it really made the
1095# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001096AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1097AC_CACHE_VAL(ac_cv_kpthread,
1098[ac_save_cc="$CC"
1099CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001100AC_TRY_RUN([
1101#include <pthread.h>
1102
1103void* routine(void* p){return NULL;}
1104
1105int main(){
1106 pthread_t p;
1107 if(pthread_create(&p,NULL,routine,NULL)!=0)
1108 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001109 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001110 return 0;
1111}
1112],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001113 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001114 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001115 ac_cv_kpthread=no)
1116CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001117AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001118fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001119
Skip Montanarod8d39a02003-07-10 20:44:10 +00001120if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001121then
1122# -Kthread, if available, provides the right #defines
1123# and linker options to make pthread_create available
1124# Some compilers won't report that they do not support -Kthread,
1125# so we need to run a program to see whether it really made the
1126# function available.
1127AC_MSG_CHECKING(whether $CC accepts -Kthread)
1128AC_CACHE_VAL(ac_cv_kthread,
1129[ac_save_cc="$CC"
1130CC="$CC -Kthread"
1131AC_TRY_RUN([
1132#include <pthread.h>
1133
1134void* routine(void* p){return NULL;}
1135
1136int main(){
1137 pthread_t p;
1138 if(pthread_create(&p,NULL,routine,NULL)!=0)
1139 return 1;
1140 (void)pthread_detach(p);
1141 return 0;
1142}
1143],
1144 ac_cv_kthread=yes,
1145 ac_cv_kthread=no,
1146 ac_cv_kthread=no)
1147CC="$ac_save_cc"])
1148AC_MSG_RESULT($ac_cv_kthread)
1149fi
1150
Skip Montanarod8d39a02003-07-10 20:44:10 +00001151if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001152then
1153# -pthread, if available, provides the right #defines
1154# and linker options to make pthread_create available
1155# Some compilers won't report that they do not support -pthread,
1156# so we need to run a program to see whether it really made the
1157# function available.
1158AC_MSG_CHECKING(whether $CC accepts -pthread)
1159AC_CACHE_VAL(ac_cv_thread,
1160[ac_save_cc="$CC"
1161CC="$CC -pthread"
1162AC_TRY_RUN([
1163#include <pthread.h>
1164
1165void* routine(void* p){return NULL;}
1166
1167int main(){
1168 pthread_t p;
1169 if(pthread_create(&p,NULL,routine,NULL)!=0)
1170 return 1;
1171 (void)pthread_detach(p);
1172 return 0;
1173}
1174],
1175 ac_cv_pthread=yes,
1176 ac_cv_pthread=no,
1177 ac_cv_pthread=no)
1178CC="$ac_save_cc"])
1179AC_MSG_RESULT($ac_cv_pthread)
1180fi
1181
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001182# If we have set a CC compiler flag for thread support then
1183# check if it works for CXX, too.
1184ac_cv_cxx_thread=no
1185if test ! -z "$CXX"
1186then
1187AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1188ac_save_cxx="$CXX"
1189
1190if test "$ac_cv_kpthread" = "yes"
1191then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001192 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001193 ac_cv_cxx_thread=yes
1194elif test "$ac_cv_kthread" = "yes"
1195then
1196 CXX="$CXX -Kthread"
1197 ac_cv_cxx_thread=yes
1198elif test "$ac_cv_pthread" = "yes"
1199then
1200 CXX="$CXX -pthread"
1201 ac_cv_cxx_thread=yes
1202fi
1203
1204if test $ac_cv_cxx_thread = yes
1205then
1206 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1207 $CXX -c conftest.$ac_ext 2>&5
1208 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1209 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1210 then
1211 ac_cv_cxx_thread=yes
1212 else
1213 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001214 fi
1215 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001216fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001217AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001218fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001219CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001220
Fred Drakece81d592000-07-09 14:39:29 +00001221dnl # check for ANSI or K&R ("traditional") preprocessor
1222dnl AC_MSG_CHECKING(for C preprocessor type)
1223dnl AC_TRY_COMPILE([
1224dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1225dnl int foo;
1226dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1227dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1228dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001229
Guido van Rossum627b2d71993-12-24 10:39:16 +00001230# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001231AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001232AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1233fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001234ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001235shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001236unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001237sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1238sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001239sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001240sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001241sys/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 +00001242sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001243bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001244AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001245AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001246
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001247# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001248AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001249#ifdef HAVE_CURSES_H
1250#include <curses.h>
1251#endif
1252])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001253
Martin v. Löwis11017b12006-01-14 18:12:57 +00001254# On Linux, netlink.h requires asm/types.h
1255AC_CHECK_HEADERS(linux/netlink.h,,,[
1256#ifdef HAVE_ASM_TYPES_H
1257#include <asm/types.h>
1258#endif
1259#ifdef HAVE_SYS_SOCKET_H
1260#include <sys/socket.h>
1261#endif
1262])
1263
Guido van Rossum627b2d71993-12-24 10:39:16 +00001264# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001265was_it_defined=no
1266AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001267AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1268 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1269])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001270AC_MSG_RESULT($was_it_defined)
1271
Neal Norwitz11690112002-07-30 01:08:28 +00001272# Check whether using makedev requires defining _OSF_SOURCE
1273AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001274AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001275 [ makedev(0, 0) ],
1276 ac_cv_has_makedev=yes,
1277 ac_cv_has_makedev=no)
1278if test "$ac_cv_has_makedev" = "no"; then
1279 # we didn't link, try if _OSF_SOURCE will allow us to link
1280 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001281#define _OSF_SOURCE 1
1282#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001283 ],
1284 [ makedev(0, 0) ],
1285 ac_cv_has_makedev=yes,
1286 ac_cv_has_makedev=no)
1287 if test "$ac_cv_has_makedev" = "yes"; then
1288 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1289 fi
1290fi
1291AC_MSG_RESULT($ac_cv_has_makedev)
1292if test "$ac_cv_has_makedev" = "yes"; then
1293 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1294fi
1295
Martin v. Löwis399a6892002-10-04 10:22:02 +00001296# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1297# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1298# defined, but the compiler does not support pragma redefine_extname,
1299# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1300# structures (such as rlimit64) without declaring them. As a
1301# work-around, disable LFS on such configurations
1302
1303use_lfs=yes
1304AC_MSG_CHECKING(Solaris LFS bug)
1305AC_TRY_COMPILE([
1306#define _LARGEFILE_SOURCE 1
1307#define _FILE_OFFSET_BITS 64
1308#include <sys/resource.h>
1309],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1310AC_MSG_RESULT($sol_lfs_bug)
1311if test "$sol_lfs_bug" = "yes"; then
1312 use_lfs=no
1313fi
1314
1315if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001316# Two defines needed to enable largefile support on various platforms
1317# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001318AC_DEFINE(_LARGEFILE_SOURCE, 1,
1319[This must be defined on some systems to enable large file support.])
1320AC_DEFINE(_FILE_OFFSET_BITS, 64,
1321[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001322fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001323
Guido van Rossum300fda71996-08-19 21:58:16 +00001324# Add some code to confdefs.h so that the test for off_t works on SCO
1325cat >> confdefs.h <<\EOF
1326#if defined(SCO_DS)
1327#undef _OFF_T
1328#endif
1329EOF
1330
Guido van Rossumef2255b2000-03-10 22:30:29 +00001331# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001332AC_TYPE_MODE_T
1333AC_TYPE_OFF_T
1334AC_TYPE_PID_T
1335AC_TYPE_SIGNAL
1336AC_TYPE_SIZE_T
1337AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001338AC_TYPE_UINT32_T
1339AC_TYPE_UINT64_T
1340AC_TYPE_INT32_T
1341AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001342AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001343 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001344
Guido van Rossumef2255b2000-03-10 22:30:29 +00001345# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001346# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001347AC_CHECK_SIZEOF(int, 4)
1348AC_CHECK_SIZEOF(long, 4)
1349AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001350AC_CHECK_SIZEOF(short, 2)
1351AC_CHECK_SIZEOF(float, 4)
1352AC_CHECK_SIZEOF(double, 8)
1353AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001354AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001355AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001356
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001357AC_MSG_CHECKING(for long long support)
1358have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001359AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1360 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1361 have_long_long=yes
1362])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001363AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001364if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001365AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001366fi
1367
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001368AC_MSG_CHECKING(for long double support)
1369have_long_double=no
1370AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1371 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1372 have_long_double=yes
1373])
1374AC_MSG_RESULT($have_long_double)
1375if test "$have_long_double" = yes ; then
1376AC_CHECK_SIZEOF(long double, 16)
1377fi
1378
1379
Thomas Woutersb2137042007-02-01 18:02:27 +00001380AC_MSG_CHECKING(for _Bool support)
1381have_c99_bool=no
1382AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1383 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1384 have_c99_bool=yes
1385])
1386AC_MSG_RESULT($have_c99_bool)
1387if test "$have_c99_bool" = yes ; then
1388AC_CHECK_SIZEOF(_Bool, 1)
1389fi
1390
Thomas Wouters89f507f2006-12-13 04:49:30 +00001391AC_CHECK_TYPES(uintptr_t,
1392 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1393 [], [#ifdef HAVE_STDINT_H
1394 #include <stdint.h>
1395 #endif])
1396
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001397
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001398# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1399AC_MSG_CHECKING(size of off_t)
1400AC_CACHE_VAL(ac_cv_sizeof_off_t,
1401[AC_TRY_RUN([#include <stdio.h>
1402#include <sys/types.h>
1403main()
1404{
1405 FILE *f=fopen("conftestval", "w");
1406 if (!f) exit(1);
1407 fprintf(f, "%d\n", sizeof(off_t));
1408 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001409}],
1410ac_cv_sizeof_off_t=`cat conftestval`,
1411ac_cv_sizeof_off_t=0,
1412ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001413])
1414AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001415AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1416[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001417
1418AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001419if test "$have_long_long" = yes -a \
1420 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1421 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001422 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1423 [Defined to enable large file support when an off_t is bigger than a long
1424 and long long is available and at least as big as an off_t. You may need
1425 to add some flags for configuration and compilation to enable this mode.
1426 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001427 AC_MSG_RESULT(yes)
1428else
1429 AC_MSG_RESULT(no)
1430fi
1431
Fred Drakea3f6e912000-06-29 20:44:47 +00001432# AC_CHECK_SIZEOF() doesn't include <time.h>.
1433AC_MSG_CHECKING(size of time_t)
1434AC_CACHE_VAL(ac_cv_sizeof_time_t,
1435[AC_TRY_RUN([#include <stdio.h>
1436#include <time.h>
1437main()
1438{
1439 FILE *f=fopen("conftestval", "w");
1440 if (!f) exit(1);
1441 fprintf(f, "%d\n", sizeof(time_t));
1442 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001443}],
1444ac_cv_sizeof_time_t=`cat conftestval`,
1445ac_cv_sizeof_time_t=0,
1446ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001447])
1448AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001449AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1450[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001451
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001452
Trent Mick635f6fb2000-08-23 21:33:05 +00001453# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001454ac_save_cc="$CC"
1455if test "$ac_cv_kpthread" = "yes"
1456then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001457elif test "$ac_cv_kthread" = "yes"
1458then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001459elif test "$ac_cv_pthread" = "yes"
1460then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001461fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001462AC_MSG_CHECKING(for pthread_t)
1463have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001464AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001465AC_MSG_RESULT($have_pthread_t)
1466if test "$have_pthread_t" = yes ; then
1467 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1468 AC_MSG_CHECKING(size of pthread_t)
1469 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1470 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001471#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001472 main()
1473 {
1474 FILE *f=fopen("conftestval", "w");
1475 if (!f) exit(1);
1476 fprintf(f, "%d\n", sizeof(pthread_t));
1477 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001478 }],
1479 ac_cv_sizeof_pthread_t=`cat conftestval`,
1480 ac_cv_sizeof_pthread_t=0,
1481 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001482 ])
1483 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001484 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1485 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001486fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001487CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001488
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001489
Georg Brandl93de2162008-07-16 02:21:06 +00001490
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001491AC_SUBST(OTHER_LIBTOOL_OPT)
1492case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001493 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001494 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1495 ;;
1496 Darwin/*)
1497 OTHER_LIBTOOL_OPT=""
1498 ;;
1499esac
1500
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001501
1502ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001503AC_SUBST(LIBTOOL_CRUFT)
1504case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001505 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001506 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1507 if test "${enable_universalsdk}"; then
1508 :
1509 else
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001510 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001511 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001512 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001513 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001514 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001515 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1516 if test ${gcc_version} '<' 4.0
1517 then
1518 LIBTOOL_CRUFT="-lcc_dynamic"
1519 else
1520 LIBTOOL_CRUFT=""
1521 fi
Ronald Oussorend45ff2c2009-09-06 11:11:04 +00001522 AC_TRY_RUN([[
1523 #include <unistd.h>
1524 int main(int argc, char*argv[])
1525 {
1526 if (sizeof(long) == 4) {
1527 return 0;
1528 } else {
1529 return 1;
1530 }
1531 ]], ac_osx_32bit=yes,
1532 ac_osx_32bit=no,
1533 ac_osx_32bit=no)
1534
1535 if test "${ac_osx_32bit}" = "yes"; then
1536 case `arch` in
1537 i386)
1538 MACOSX_DEFAULT_ARCH="i386"
1539 ;;
1540 ppc)
1541 MACOSX_DEFAULT_ARCH="ppc"
1542 ;;
1543 *)
1544 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1545 ;;
1546 esac
1547 else
1548 case `arch` in
1549 i386)
1550 MACOSX_DEFAULT_ARCH="x86_64"
1551 ;;
1552 ppc)
1553 MACOSX_DEFAULT_ARCH="ppc64"
1554 ;;
1555 *)
1556 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1557 ;;
1558 esac
1559
1560 #ARCH_RUN_32BIT="true"
1561 fi
1562
1563 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001564 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001565 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001566esac
1567
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001568AC_MSG_CHECKING(for --enable-framework)
1569if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001570then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001571 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001572 # -F. is needed to allow linking to the framework while
1573 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001574 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1575 [Define if you want to produce an OpenStep/Rhapsody framework
1576 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001577 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001578 if test $enable_shared = "yes"
1579 then
1580 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1581 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001582else
1583 AC_MSG_RESULT(no)
1584fi
1585
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001587case $ac_sys_system/$ac_sys_release in
1588 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001589 AC_DEFINE(WITH_DYLD, 1,
1590 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1591 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1592 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001593 AC_MSG_RESULT(always on for Darwin)
1594 ;;
1595 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001596 AC_MSG_RESULT(no)
1597 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001598esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001599
Guido van Rossumac405f61994-09-12 10:56:06 +00001600# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001601AC_SUBST(SO)
1602AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001603AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001604AC_SUBST(CCSHARED)
1605AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001606# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001607# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001608AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001609if test -z "$SO"
1610then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001611 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001612 hp*|HP*)
1613 case `uname -m` in
1614 ia64) SO=.so;;
1615 *) SO=.sl;;
1616 esac
1617 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001618 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001619 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001620 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001621else
1622 # this might also be a termcap variable, see #610332
1623 echo
1624 echo '====================================================================='
1625 echo '+ +'
1626 echo '+ WARNING: You have set SO in your environment. +'
1627 echo '+ Do you really mean to change the extension for shared libraries? +'
1628 echo '+ Continuing in 10 seconds to let you to ponder. +'
1629 echo '+ +'
1630 echo '====================================================================='
1631 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001632fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001633AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001634
Thomas Wouters477c8d52006-05-27 19:21:47 +00001635AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001636# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001637# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001638# (Shared libraries in this instance are shared modules to be loaded into
1639# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001640AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001641if test -z "$LDSHARED"
1642then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001643 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001644 AIX*)
1645 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001646 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001647 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001648 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001649 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001650 SunOS/5*)
1651 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001652 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001653 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001654 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001655 hp*|HP*)
1656 if test "$GCC" = "yes"
1657 then LDSHARED='$(CC) -shared'
1658 else LDSHARED='ld -b';
1659 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001660 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001661 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001662 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1663 if test "$enable_framework" ; then
1664 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001665 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1666 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001667 else
1668 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001669 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001670 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001671 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001672 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1673 if test "$enable_framework" ; then
1674 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001675 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1676 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001677 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001678 # No framework, use the Python app as bundle-loader
1679 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001680 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001681 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001682 Darwin/*)
1683 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1684 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001685
Georg Brandlfcaf9102008-07-16 02:17:56 +00001686 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001687 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001688 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001689 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001690 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001691 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1692 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001693 else
1694 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1695 if test "$enable_framework" ; then
1696 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001697 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1698 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001699 else
1700 # No framework, use the Python app as bundle-loader
1701 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1702 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1703 fi
1704 fi
1705 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001706 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001707 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001708 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001709 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001710 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001711 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001712 else
1713 LDSHARED="ld -Bshareable ${LDFLAGS}"
1714 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001715 OpenBSD*)
1716 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1717 then
1718 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1719 else
1720 case `uname -r` in
1721 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1722 LDSHARED="ld -Bshareable ${LDFLAGS}"
1723 ;;
1724 *)
1725 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1726 ;;
1727 esac
1728 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001729 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001730 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001731 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001732 then LDSHARED='$(CC) -shared'
1733 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001734 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001735 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001736 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001737 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001738 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001739 *) LDSHARED="ld";;
1740 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001741fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001742AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001743BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001744# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001745# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001746AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001747if test -z "$CCSHARED"
1748then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001749 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001750 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001751 then CCSHARED="-fPIC";
1752 elif test `uname -p` = sparc;
1753 then CCSHARED="-xcode=pic32";
1754 else CCSHARED="-Kpic";
1755 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001756 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001757 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001758 else CCSHARED="+z";
1759 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001760 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001761 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001762 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001763 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001764 if test "$GCC" = "yes"
1765 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001766 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001767 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001768 SCO_SV*)
1769 if test "$GCC" = "yes"
1770 then CCSHARED="-fPIC"
1771 else CCSHARED="-Kpic -belf"
1772 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001773 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001774 IRIX*/6*) case $CC in
1775 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001776 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001777 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001778 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001779 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001780fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001781AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001782# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001783# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001784AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001785if test -z "$LINKFORSHARED"
1786then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001787 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001788 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001789 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001790 LINKFORSHARED="-Wl,-E -Wl,+s";;
1791# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001792 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001793 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001794 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001795 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001796 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001797 if test "$enable_framework"
1798 then
Jack Jansenda49e192005-01-07 13:08:22 +00001799 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001800 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001801 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001802 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001803 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001804 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001805 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001806 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1807 then
1808 LINKFORSHARED="-Wl,--export-dynamic"
1809 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001810 SunOS/5*) case $CC in
1811 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001812 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001813 then
1814 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001815 fi;;
1816 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001817 CYGWIN*)
1818 if test $enable_shared = "no"
1819 then
1820 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1821 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001822 QNX*)
1823 # -Wl,-E causes the symbols to be added to the dynamic
1824 # symbol table so that they can be found when a module
1825 # is loaded. -N 2048K causes the stack size to be set
1826 # to 2048 kilobytes so that the stack doesn't overflow
1827 # when running test_compile.py.
1828 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001829 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001830fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001831AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001832
Georg Brandl93de2162008-07-16 02:21:06 +00001833
Neil Schemenauer61c51152001-01-26 16:18:16 +00001834AC_SUBST(CFLAGSFORSHARED)
1835AC_MSG_CHECKING(CFLAGSFORSHARED)
1836if test ! "$LIBRARY" = "$LDLIBRARY"
1837then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001838 case $ac_sys_system in
1839 CYGWIN*)
1840 # Cygwin needs CCSHARED when building extension DLLs
1841 # but not when building the interpreter DLL.
1842 CFLAGSFORSHARED='';;
1843 *)
1844 CFLAGSFORSHARED='$(CCSHARED)'
1845 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001846fi
1847AC_MSG_RESULT($CFLAGSFORSHARED)
1848
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001849# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1850# library (with --enable-shared).
1851# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001852# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1853# if it is not required, since it creates a dependency of the shared library
1854# to LIBS. This, in turn, means that applications linking the shared libpython
1855# don't need to link LIBS explicitly. The default should be only changed
1856# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001857AC_SUBST(SHLIBS)
1858AC_MSG_CHECKING(SHLIBS)
1859case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001860 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001861 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001862esac
1863AC_MSG_RESULT($SHLIBS)
1864
1865
Guido van Rossum627b2d71993-12-24 10:39:16 +00001866# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001867AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1868AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001869
Georg Brandleee31162008-12-07 15:15:22 +00001870# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001871if test "$with_threads" = "yes" -o -z "$with_threads"; then
1872 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1873 # posix4 on Solaris 2.6
1874 # pthread (first!) on Linux
1875fi
1876
Martin v. Löwis19d17342003-06-14 21:03:05 +00001877# check if we need libintl for locale functions
1878AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001879 [AC_DEFINE(WITH_LIBINTL, 1,
1880 [Define to 1 if libintl is needed for locale functions.])
1881 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001882
1883# checks for system dependent C++ extensions support
1884case "$ac_sys_system" in
1885 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1886 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1887 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001888 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1889 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1890 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001891 AC_MSG_RESULT(yes)],
1892 [AC_MSG_RESULT(no)]);;
1893 *) ;;
1894esac
1895
Guido van Rossum70c7f481998-03-26 18:44:10 +00001896# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001897AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001898AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001899
Guido van Rossumc5a39031996-07-31 17:35:03 +00001900AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001901AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001902 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1903[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001904AC_MSG_RESULT($withval)
1905LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001906],
1907[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001908
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001909# Check for use of the system libffi library
1910AC_MSG_CHECKING(for --with-system-ffi)
1911AC_ARG_WITH(system_ffi,
1912 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1913
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001914AC_MSG_RESULT($with_system_ffi)
1915
Matthias Klose55708cc2009-04-30 08:06:49 +00001916# Check for --with-dbmliborder
1917AC_MSG_CHECKING(for --with-dbmliborder)
1918AC_ARG_WITH(dbmliborder,
1919 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'.]),
1920[
1921if test x$with_dbmliborder = xyes
1922then
1923AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1924else
1925 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1926 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1927 then
1928 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1929 fi
1930 done
1931fi])
1932AC_MSG_RESULT($with_dbmliborder)
1933
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001934# Determine if signalmodule should be used.
1935AC_SUBST(USE_SIGNAL_MODULE)
1936AC_SUBST(SIGNAL_OBJS)
1937AC_MSG_CHECKING(for --with-signal-module)
1938AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001939 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001940
1941if test -z "$with_signal_module"
1942then with_signal_module="yes"
1943fi
1944AC_MSG_RESULT($with_signal_module)
1945
1946if test "${with_signal_module}" = "yes"; then
1947 USE_SIGNAL_MODULE=""
1948 SIGNAL_OBJS=""
1949else
1950 USE_SIGNAL_MODULE="#"
1951 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1952fi
1953
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001954# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001955AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001956USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001957
Guido van Rossum54d93d41997-01-22 20:51:58 +00001958AC_MSG_CHECKING(for --with-dec-threads)
1959AC_SUBST(LDLAST)
1960AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001961 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1962[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001963AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001964LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001965if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001966 with_thread="$withval";
1967fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001968[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001969
Martin v. Löwis11437992002-04-12 09:54:03 +00001970# Templates for things AC_DEFINEd more than once.
1971# For a single AC_DEFINE, no template is needed.
1972AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1973AH_TEMPLATE(_REENTRANT,
1974 [Define to force use of thread-safe errno, h_errno, and other functions])
1975AH_TEMPLATE(WITH_THREAD,
1976 [Define if you want to compile in rudimentary thread support])
1977
Guido van Rossum54d93d41997-01-22 20:51:58 +00001978AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001979dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001980AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001981 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001982
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001983# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001984dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001985AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001986 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1987 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001988
1989if test -z "$with_threads"
1990then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001991fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001992AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001993
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001994AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001995if test "$with_threads" = "no"
1996then
1997 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001998elif test "$ac_cv_pthread_is_default" = yes
1999then
2000 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002001 # Defining _REENTRANT on system with POSIX threads should not hurt.
2002 AC_DEFINE(_REENTRANT)
2003 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002004 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002005elif test "$ac_cv_kpthread" = "yes"
2006then
2007 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002008 if test "$ac_cv_cxx_thread" = "yes"; then
2009 CXX="$CXX -Kpthread"
2010 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002011 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002012 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002013 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002014elif test "$ac_cv_kthread" = "yes"
2015then
2016 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002017 if test "$ac_cv_cxx_thread" = "yes"; then
2018 CXX="$CXX -Kthread"
2019 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002020 AC_DEFINE(WITH_THREAD)
2021 posix_threads=yes
2022 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002023elif test "$ac_cv_pthread" = "yes"
2024then
2025 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002026 if test "$ac_cv_cxx_thread" = "yes"; then
2027 CXX="$CXX -pthread"
2028 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002029 AC_DEFINE(WITH_THREAD)
2030 posix_threads=yes
2031 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002032else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002033 if test ! -z "$with_threads" -a -d "$with_threads"
2034 then LDFLAGS="$LDFLAGS -L$with_threads"
2035 fi
2036 if test ! -z "$withval" -a -d "$withval"
2037 then LDFLAGS="$LDFLAGS -L$withval"
2038 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002039
2040 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002041 # define _POSIX_THREADS in unistd.h. Some apparently don't
2042 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002043 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2044 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002045 [
2046#include <unistd.h>
2047#ifdef _POSIX_THREADS
2048yes
2049#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002050 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2051 AC_MSG_RESULT($unistd_defines_pthreads)
2052
Martin v. Löwis130fb172001-07-19 11:00:41 +00002053 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002054 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2055 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002056 AC_DEFINE(HURD_C_THREADS, 1,
2057 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002058 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002059 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002060 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2061 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002062 AC_DEFINE(MACH_C_THREADS, 1,
2063 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002064 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002065 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002066 AC_ARG_WITH([pth],
2067 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2068 [AC_MSG_RESULT($withval)
2069 AC_DEFINE([WITH_THREAD])
2070 AC_DEFINE([HAVE_PTH], 1,
2071 [Define if you have GNU PTH threads.])
2072 LIBS="-lpth $LIBS"
2073 THREADOBJ="Python/thread.o"],
2074 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002075
2076 # Just looking for pthread_create in libpthread is not enough:
2077 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2078 # So we really have to include pthread.h, and then link.
2079 _libs=$LIBS
2080 LIBS="$LIBS -lpthread"
2081 AC_MSG_CHECKING([for pthread_create in -lpthread])
2082 AC_TRY_LINK([#include <pthread.h>
2083
2084void * start_routine (void *arg) { exit (0); }], [
2085pthread_create (NULL, NULL, start_routine, NULL)], [
2086 AC_MSG_RESULT(yes)
2087 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002088 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002089 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002090 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002091 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002092 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002093 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002094 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2095 AC_DEFINE(ATHEOS_THREADS, 1,
2096 [Define this if you have AtheOS threads.])
2097 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002098 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002099 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002100 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002101 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002102 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002103 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002104 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002105 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002106 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002107 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002108 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002109 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002110 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002111 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002112 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002113 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002114 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002115 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002116
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002117 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2118 LIBS="$LIBS -lmpc"
2119 THREADOBJ="Python/thread.o"
2120 USE_THREAD_MODULE=""])
2121
2122 if test "$posix_threads" != "yes"; then
2123 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2124 LIBS="$LIBS -lthread"
2125 THREADOBJ="Python/thread.o"
2126 USE_THREAD_MODULE=""])
2127 fi
2128
2129 if test "$USE_THREAD_MODULE" != "#"
2130 then
2131 # If the above checks didn't disable threads, (at least) OSF1
2132 # needs this '-threads' argument during linking.
2133 case $ac_sys_system in
2134 OSF1) LDLAST=-threads;;
2135 esac
2136 fi
2137fi
2138
2139if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002140 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002141 AC_DEFINE(_POSIX_THREADS, 1,
2142 [Define if you have POSIX threads,
2143 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002144 fi
2145
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002146 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2147 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002148 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2149 Defined for Solaris 2.6 bug in pthread header.)
2150 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002151 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002152 Define if the Posix semaphores do not work on your system)
2153 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002154 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2155 Define if the Posix semaphores do not work on your system)
2156 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002157 esac
2158
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002159 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2160 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2161 [AC_TRY_RUN([#include <pthread.h>
2162 void *foo(void *parm) {
2163 return NULL;
2164 }
2165 main() {
2166 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002167 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002168 if (pthread_attr_init(&attr)) exit(-1);
2169 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002170 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002171 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002172 }],
2173 ac_cv_pthread_system_supported=yes,
2174 ac_cv_pthread_system_supported=no,
2175 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002176 ])
2177 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2178 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002179 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002180 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002181 AC_CHECK_FUNCS(pthread_sigmask,
2182 [case $ac_sys_system in
2183 CYGWIN*)
2184 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2185 [Define if pthread_sigmask() does not work on your system.])
2186 ;;
2187 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002188fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002189
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002190
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002191# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002192AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002193AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002194AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002195[ --enable-ipv6 Enable ipv6 (with ipv4) support
2196 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002197[ case "$enableval" in
2198 no)
2199 AC_MSG_RESULT(no)
2200 ipv6=no
2201 ;;
2202 *) AC_MSG_RESULT(yes)
2203 AC_DEFINE(ENABLE_IPV6)
2204 ipv6=yes
2205 ;;
2206 esac ],
2207
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002208[
2209dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002210 AC_TRY_RUN([ /* AF_INET6 available check */
2211#include <sys/types.h>
2212#include <sys/socket.h>
2213main()
2214{
2215 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2216 exit(1);
2217 else
2218 exit(0);
2219}
2220],
2221 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002222 ipv6=yes,
2223 AC_MSG_RESULT(no)
2224 ipv6=no,
2225 AC_MSG_RESULT(no)
2226 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002227)
2228
2229if test "$ipv6" = "yes"; then
2230 AC_MSG_CHECKING(if RFC2553 API is available)
2231 AC_TRY_COMPILE([#include <sys/types.h>
2232#include <netinet/in.h>],
2233 [struct sockaddr_in6 x;
2234x.sin6_scope_id;],
2235 AC_MSG_RESULT(yes)
2236 ipv6=yes,
2237 AC_MSG_RESULT(no, IPv6 disabled)
2238 ipv6=no)
2239fi
2240
2241if test "$ipv6" = "yes"; then
2242 AC_DEFINE(ENABLE_IPV6)
2243fi
2244])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245
2246ipv6type=unknown
2247ipv6lib=none
2248ipv6trylibc=no
2249
2250if test "$ipv6" = "yes"; then
2251 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002252 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2253 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002254 case $i in
2255 inria)
2256 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002257 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002258#include <netinet/in.h>
2259#ifdef IPV6_INRIA_VERSION
2260yes
2261#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002262 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263 ;;
2264 kame)
2265 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002266 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002267#include <netinet/in.h>
2268#ifdef __KAME__
2269yes
2270#endif],
2271 [ipv6type=$i;
2272 ipv6lib=inet6
2273 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002274 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002275 ;;
2276 linux-glibc)
2277 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002278 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002279#include <features.h>
2280#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2281yes
2282#endif],
2283 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002284 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285 ;;
2286 linux-inet6)
2287 dnl http://www.v6.linux.or.jp/
2288 if test -d /usr/inet6; then
2289 ipv6type=$i
2290 ipv6lib=inet6
2291 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002292 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293 fi
2294 ;;
2295 solaris)
2296 if test -f /etc/netconfig; then
2297 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2298 ipv6type=$i
2299 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002300 fi
2301 fi
2302 ;;
2303 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002304 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002305#include <sys/param.h>
2306#ifdef _TOSHIBA_INET6
2307yes
2308#endif],
2309 [ipv6type=$i;
2310 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002311 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002312 ;;
2313 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002314 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002315#include </usr/local/v6/include/sys/v6config.h>
2316#ifdef __V6D__
2317yes
2318#endif],
2319 [ipv6type=$i;
2320 ipv6lib=v6;
2321 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002322 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323 ;;
2324 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002325 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326#include <sys/param.h>
2327#ifdef _ZETA_MINAMI_INET6
2328yes
2329#endif],
2330 [ipv6type=$i;
2331 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002332 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333 ;;
2334 esac
2335 if test "$ipv6type" != "unknown"; then
2336 break
2337 fi
2338 done
2339 AC_MSG_RESULT($ipv6type)
2340fi
2341
2342if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2343 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2344 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2345 echo "using lib$ipv6lib"
2346 else
2347 if test $ipv6trylibc = "yes"; then
2348 echo "using libc"
2349 else
2350 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2351 echo "You need to fetch lib$ipv6lib.a from appropriate"
2352 echo 'ipv6 kit and compile beforehand.'
2353 exit 1
2354 fi
2355 fi
2356fi
2357
Georg Brandl93de2162008-07-16 02:21:06 +00002358AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2359AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2360 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2361 AC_MSG_RESULT(yes),
2362 AC_MSG_RESULT(no)
2363)
2364
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002365# Check for --with-doc-strings
2366AC_MSG_CHECKING(for --with-doc-strings)
2367AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002368 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002369
2370if test -z "$with_doc_strings"
2371then with_doc_strings="yes"
2372fi
2373if test "$with_doc_strings" != "no"
2374then
2375 AC_DEFINE(WITH_DOC_STRINGS, 1,
2376 [Define if you want documentation strings in extension modules])
2377fi
2378AC_MSG_RESULT($with_doc_strings)
2379
Neil Schemenauera35c6882001-02-27 04:45:05 +00002380# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002381AC_MSG_CHECKING(for --with-tsc)
2382AC_ARG_WITH(tsc,
2383[ --with(out)-tsc enable/disable timestamp counter profile], [
2384if test "$withval" != no
2385then
2386 AC_DEFINE(WITH_TSC, 1,
2387 [Define to profile with the Pentium timestamp counter])
2388 AC_MSG_RESULT(yes)
2389else AC_MSG_RESULT(no)
2390fi],
2391[AC_MSG_RESULT(no)])
2392
2393# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002394AC_MSG_CHECKING(for --with-pymalloc)
2395AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002396 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002397
2398if test -z "$with_pymalloc"
2399then with_pymalloc="yes"
2400fi
2401if test "$with_pymalloc" != "no"
2402then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002403 AC_DEFINE(WITH_PYMALLOC, 1,
2404 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002405fi
2406AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002407
Barry Warsawef82cd72000-06-30 16:21:01 +00002408# Check for --with-wctype-functions
2409AC_MSG_CHECKING(for --with-wctype-functions)
2410AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002411 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2412[
Barry Warsawef82cd72000-06-30 16:21:01 +00002413if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002414then
2415 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2416 [Define if you want wctype.h functions to be used instead of the
2417 one supplied by Python itself. (see Include/unicodectype.h).])
2418 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002419else AC_MSG_RESULT(no)
2420fi],
2421[AC_MSG_RESULT(no)])
2422
Guido van Rossum68242b51996-05-28 22:53:03 +00002423# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002424AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002425DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002426
Guido van Rossume97ee181999-12-20 21:27:22 +00002427# the dlopen() function means we might want to use dynload_shlib.o. some
2428# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002429AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002430
2431# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2432# loading of modules.
2433AC_SUBST(DYNLOADFILE)
2434AC_MSG_CHECKING(DYNLOADFILE)
2435if test -z "$DYNLOADFILE"
2436then
2437 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002438 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2439 if test "$ac_cv_func_dlopen" = yes
2440 then DYNLOADFILE="dynload_shlib.o"
2441 else DYNLOADFILE="dynload_aix.o"
2442 fi
2443 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002444 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002445 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2446 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002447 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002448 *)
2449 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2450 # out any dynamic loading
2451 if test "$ac_cv_func_dlopen" = yes
2452 then DYNLOADFILE="dynload_shlib.o"
2453 else DYNLOADFILE="dynload_stub.o"
2454 fi
2455 ;;
2456 esac
2457fi
2458AC_MSG_RESULT($DYNLOADFILE)
2459if test "$DYNLOADFILE" != "dynload_stub.o"
2460then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002461 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2462 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002463fi
2464
Jack Jansenc49e5b72001-06-19 15:00:23 +00002465# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2466
2467AC_SUBST(MACHDEP_OBJS)
2468AC_MSG_CHECKING(MACHDEP_OBJS)
2469if test -z "$MACHDEP_OBJS"
2470then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002471 MACHDEP_OBJS=$extra_machdep_objs
2472else
2473 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002474fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002475AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002476
Guido van Rossum627b2d71993-12-24 10:39:16 +00002477# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002478AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2479 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002480 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002481 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002482 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002483 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002484 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002485 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2486 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002487 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002488 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002489 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002490 truncate uname unsetenv utimes waitpid wait3 wait4 \
2491 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002492
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002493# For some functions, having a definition is not sufficient, since
2494# we want to take their address.
2495AC_MSG_CHECKING(for chroot)
2496AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2497 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2498 AC_MSG_RESULT(yes),
2499 AC_MSG_RESULT(no)
2500)
2501AC_MSG_CHECKING(for link)
2502AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2503 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2504 AC_MSG_RESULT(yes),
2505 AC_MSG_RESULT(no)
2506)
2507AC_MSG_CHECKING(for symlink)
2508AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2509 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2510 AC_MSG_RESULT(yes),
2511 AC_MSG_RESULT(no)
2512)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002513AC_MSG_CHECKING(for fchdir)
2514AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2515 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2516 AC_MSG_RESULT(yes),
2517 AC_MSG_RESULT(no)
2518)
2519AC_MSG_CHECKING(for fsync)
2520AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002521 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002522 AC_MSG_RESULT(yes),
2523 AC_MSG_RESULT(no)
2524)
2525AC_MSG_CHECKING(for fdatasync)
2526AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2527 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002531AC_MSG_CHECKING(for epoll)
2532AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2533 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2534 AC_MSG_RESULT(yes),
2535 AC_MSG_RESULT(no)
2536)
2537AC_MSG_CHECKING(for kqueue)
2538AC_TRY_COMPILE([
2539#include <sys/types.h>
2540#include <sys/event.h>
2541 ], int x=kqueue(),
2542 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2543 AC_MSG_RESULT(yes),
2544 AC_MSG_RESULT(no)
2545)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002546# On some systems (eg. FreeBSD 5), we would find a definition of the
2547# functions ctermid_r, setgroups in the library, but no prototype
2548# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2549# address to avoid compiler warnings and potential miscompilations
2550# because of the missing prototypes.
2551
2552AC_MSG_CHECKING(for ctermid_r)
2553AC_TRY_COMPILE([
2554#include "confdefs.h"
2555#include <stdio.h>
2556], void* p = ctermid_r,
2557 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2558 AC_MSG_RESULT(yes),
2559 AC_MSG_RESULT(no)
2560)
2561
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002562AC_MSG_CHECKING(for flock)
2563AC_TRY_COMPILE([
2564#include "confdefs.h"
2565#include <sys/file.h>
2566], void* p = flock,
2567 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2568 AC_MSG_RESULT(yes),
2569 AC_MSG_RESULT(no)
2570)
2571
2572AC_MSG_CHECKING(for getpagesize)
2573AC_TRY_COMPILE([
2574#include "confdefs.h"
2575#include <unistd.h>
2576], void* p = getpagesize,
2577 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2578 AC_MSG_RESULT(yes),
2579 AC_MSG_RESULT(no)
2580)
2581
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002582dnl check for true
2583AC_CHECK_PROGS(TRUE, true, /bin/true)
2584
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002585dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2586dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002587AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002588 AC_CHECK_LIB(resolv, inet_aton)
2589)
2590
Christian Heimesd0764e22007-12-04 15:00:33 +00002591# On Tru64, chflags seems to be present, but calling it will
2592# exit Python
2593AC_MSG_CHECKING(for chflags)
2594AC_TRY_RUN([
2595#include <sys/stat.h>
2596#include <unistd.h>
2597int main(int argc, char*argv[])
2598{
2599 if(chflags(argv[0], 0) != 0)
2600 return 1;
2601 return 0;
2602}
2603],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2604 AC_MSG_RESULT(yes),
2605 AC_MSG_RESULT(no)
2606)
2607
2608AC_MSG_CHECKING(for lchflags)
2609AC_TRY_RUN([
2610#include <sys/stat.h>
2611#include <unistd.h>
2612int main(int argc, char*argv[])
2613{
2614 if(lchflags(argv[0], 0) != 0)
2615 return 1;
2616 return 0;
2617}
2618],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2619 AC_MSG_RESULT(yes),
2620 AC_MSG_RESULT(no)
2621)
2622
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002623dnl Check if system zlib has *Copy() functions
2624dnl
2625dnl On MacOSX the linker will search for dylibs on the entire linker path
2626dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2627dnl to revert to a more traditional unix behaviour and make it possible to
2628dnl override the system libz with a local static library of libz. Temporarily
2629dnl add that flag to our CFLAGS as well to ensure that we check the version
2630dnl of libz that will be used by setup.py.
2631dnl The -L/usr/local/lib is needed as wel to get the same compilation
2632dnl environment as setup.py (and leaving it out can cause configure to use the
2633dnl wrong version of the library)
2634case $ac_sys_system/$ac_sys_release in
2635Darwin/*)
2636 _CUR_CFLAGS="${CFLAGS}"
2637 _CUR_LDFLAGS="${LDFLAGS}"
2638 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2639 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2640 ;;
2641esac
2642
2643AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2644
2645case $ac_sys_system/$ac_sys_release in
2646Darwin/*)
2647 CFLAGS="${_CUR_CFLAGS}"
2648 LDFLAGS="${_CUR_LDFLAGS}"
2649 ;;
2650esac
2651
Martin v. Löwise9416172003-05-03 10:12:45 +00002652AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002653AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002654#include "confdefs.h"
2655#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002656], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002657 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2658 AC_MSG_RESULT(yes),
2659 AC_MSG_RESULT(no)
2660)
2661
2662AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002663AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002664#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002665#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002666#include <sys/socket.h>
2667#include <netinet/in.h>
2668#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002669], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002670 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2671 AC_MSG_RESULT(yes),
2672 AC_MSG_RESULT(no)
2673)
2674
2675AC_MSG_CHECKING(for inet_pton)
2676AC_TRY_COMPILE([
2677#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002678#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002679#include <sys/socket.h>
2680#include <netinet/in.h>
2681#include <arpa/inet.h>
2682], void* p = inet_pton,
2683 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2684 AC_MSG_RESULT(yes),
2685 AC_MSG_RESULT(no)
2686)
2687
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002688# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002689AC_MSG_CHECKING(for setgroups)
2690AC_TRY_COMPILE([
2691#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002692#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002693#ifdef HAVE_GRP_H
2694#include <grp.h>
2695#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002696],
2697void* p = setgroups,
2698 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2699 AC_MSG_RESULT(yes),
2700 AC_MSG_RESULT(no)
2701)
2702
Fred Drake8cef4cf2000-06-28 16:40:38 +00002703# check for openpty and forkpty
2704
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002705AC_CHECK_FUNCS(openpty,,
2706 AC_CHECK_LIB(util,openpty,
2707 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2708 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2709 )
2710)
2711AC_CHECK_FUNCS(forkpty,,
2712 AC_CHECK_LIB(util,forkpty,
2713 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2714 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2715 )
2716)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002717
Christian Heimesb186d002008-03-18 15:15:01 +00002718# Stuff for expat.
2719AC_CHECK_FUNCS(memmove)
2720
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002721# check for long file support functions
2722AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2723
Christian Heimesb186d002008-03-18 15:15:01 +00002724AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002725AC_CHECK_FUNCS(getpgrp,
2726 AC_TRY_COMPILE([#include <unistd.h>],
2727 [getpgrp(0);],
2728 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2729 [Define if getpgrp() must be called as getpgrp(0).])
2730 )
2731)
Jack Jansen150753c2003-03-29 22:07:47 +00002732AC_CHECK_FUNCS(setpgrp,
2733 AC_TRY_COMPILE([#include <unistd.h>],
2734 [setpgrp(0,0);],
2735 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2736 [Define if setpgrp() must be called as setpgrp(0, 0).])
2737 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002738)
2739AC_CHECK_FUNCS(gettimeofday,
2740 AC_TRY_COMPILE([#include <sys/time.h>],
2741 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2742 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2743 [Define if gettimeofday() does not have second (timezone) argument
2744 This is the case on Motorola V4 (R40V4.2)])
2745 )
2746)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002747
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002748AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002749AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002750#if defined(MAJOR_IN_MKDEV)
2751#include <sys/mkdev.h>
2752#elif defined(MAJOR_IN_SYSMACROS)
2753#include <sys/sysmacros.h>
2754#else
2755#include <sys/types.h>
2756#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002757],[
2758 makedev(major(0),minor(0));
2759],[
2760 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2761 [Define to 1 if you have the device macros.])
2762 AC_MSG_RESULT(yes)
2763],[
2764 AC_MSG_RESULT(no)
2765])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002766
2767# On OSF/1 V5.1, getaddrinfo is available, but a define
2768# for [no]getaddrinfo in netdb.h.
2769AC_MSG_CHECKING(for getaddrinfo)
2770AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002771#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002772#include <sys/socket.h>
2773#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002774#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002775],[
2776getaddrinfo(NULL, NULL, NULL, NULL);
2777], [
2778AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002779AC_MSG_CHECKING(getaddrinfo bug)
2780AC_TRY_RUN([
2781#include <sys/types.h>
2782#include <netdb.h>
2783#include <string.h>
2784#include <sys/socket.h>
2785#include <netinet/in.h>
2786
2787main()
2788{
2789 int passive, gaierr, inet4 = 0, inet6 = 0;
2790 struct addrinfo hints, *ai, *aitop;
2791 char straddr[INET6_ADDRSTRLEN], strport[16];
2792
2793 for (passive = 0; passive <= 1; passive++) {
2794 memset(&hints, 0, sizeof(hints));
2795 hints.ai_family = AF_UNSPEC;
2796 hints.ai_flags = passive ? AI_PASSIVE : 0;
2797 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002798 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002799 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2800 (void)gai_strerror(gaierr);
2801 goto bad;
2802 }
2803 for (ai = aitop; ai; ai = ai->ai_next) {
2804 if (ai->ai_addr == NULL ||
2805 ai->ai_addrlen == 0 ||
2806 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2807 straddr, sizeof(straddr), strport, sizeof(strport),
2808 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2809 goto bad;
2810 }
2811 switch (ai->ai_family) {
2812 case AF_INET:
2813 if (strcmp(strport, "54321") != 0) {
2814 goto bad;
2815 }
2816 if (passive) {
2817 if (strcmp(straddr, "0.0.0.0") != 0) {
2818 goto bad;
2819 }
2820 } else {
2821 if (strcmp(straddr, "127.0.0.1") != 0) {
2822 goto bad;
2823 }
2824 }
2825 inet4++;
2826 break;
2827 case AF_INET6:
2828 if (strcmp(strport, "54321") != 0) {
2829 goto bad;
2830 }
2831 if (passive) {
2832 if (strcmp(straddr, "::") != 0) {
2833 goto bad;
2834 }
2835 } else {
2836 if (strcmp(straddr, "::1") != 0) {
2837 goto bad;
2838 }
2839 }
2840 inet6++;
2841 break;
2842 case AF_UNSPEC:
2843 goto bad;
2844 break;
2845 default:
2846 /* another family support? */
2847 break;
2848 }
2849 }
2850 }
2851
2852 if (!(inet4 == 0 || inet4 == 2))
2853 goto bad;
2854 if (!(inet6 == 0 || inet6 == 2))
2855 goto bad;
2856
2857 if (aitop)
2858 freeaddrinfo(aitop);
2859 exit(0);
2860
2861 bad:
2862 if (aitop)
2863 freeaddrinfo(aitop);
2864 exit(1);
2865}
2866],
2867AC_MSG_RESULT(good)
2868buggygetaddrinfo=no,
2869AC_MSG_RESULT(buggy)
2870buggygetaddrinfo=yes,
2871AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002872buggygetaddrinfo=yes)], [
2873AC_MSG_RESULT(no)
2874buggygetaddrinfo=yes
2875])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002876
2877if test "$buggygetaddrinfo" = "yes"; then
2878 if test "$ipv6" = "yes"; then
2879 echo 'Fatal: You must get working getaddrinfo() function.'
2880 echo ' or you can specify "--disable-ipv6"'.
2881 exit 1
2882 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002883else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002884 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002885fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002886AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002887
Guido van Rossum627b2d71993-12-24 10:39:16 +00002888# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002889AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002890AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002891AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002892AC_CHECK_MEMBERS([struct stat.st_rdev])
2893AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002894AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002895AC_CHECK_MEMBERS([struct stat.st_gen])
2896AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002897AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002898
2899AC_MSG_CHECKING(for time.h that defines altzone)
2900AC_CACHE_VAL(ac_cv_header_time_altzone,
2901[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2902 ac_cv_header_time_altzone=yes,
2903 ac_cv_header_time_altzone=no)])
2904AC_MSG_RESULT($ac_cv_header_time_altzone)
2905if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002906 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002907fi
2908
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002909was_it_defined=no
2910AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002911AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002912#include <sys/types.h>
2913#include <sys/select.h>
2914#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002915], [;], [
2916 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2917 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2918 (which you can't on SCO ODT 3.0).])
2919 was_it_defined=yes
2920])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002921AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002922
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002923AC_MSG_CHECKING(for addrinfo)
2924AC_CACHE_VAL(ac_cv_struct_addrinfo,
2925AC_TRY_COMPILE([
2926# include <netdb.h>],
2927 [struct addrinfo a],
2928 ac_cv_struct_addrinfo=yes,
2929 ac_cv_struct_addrinfo=no))
2930AC_MSG_RESULT($ac_cv_struct_addrinfo)
2931if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002932 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002933fi
2934
2935AC_MSG_CHECKING(for sockaddr_storage)
2936AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2937AC_TRY_COMPILE([
2938# include <sys/types.h>
2939# include <sys/socket.h>],
2940 [struct sockaddr_storage s],
2941 ac_cv_struct_sockaddr_storage=yes,
2942 ac_cv_struct_sockaddr_storage=no))
2943AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2944if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002945 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002946fi
2947
Guido van Rossum627b2d71993-12-24 10:39:16 +00002948# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002949
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002950AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002951AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002952
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002953works=no
2954AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002955AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2956 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2957)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002958AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002959
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002960works=no
2961AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002962AC_TRY_COMPILE([], [signed char c;], works=yes,
2963 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2964)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002965AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002966
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002967have_prototypes=no
2968AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002969AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2970 AC_DEFINE(HAVE_PROTOTYPES, 1,
2971 [Define if your compiler supports function prototype])
2972 have_prototypes=yes
2973])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002974AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002975
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002976works=no
2977AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002978AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002979#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002980int foo(int x, ...) {
2981 va_list va;
2982 va_start(va, x);
2983 va_arg(va, int);
2984 va_arg(va, char *);
2985 va_arg(va, double);
2986 return 0;
2987}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002988], [return foo(10, "", 3.14);], [
2989 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2990 [Define if your compiler supports variable length function prototypes
2991 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2992 works=yes
2993])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002995
Dave Cole331708b2004-08-09 04:51:41 +00002996# check for socketpair
2997AC_MSG_CHECKING(for socketpair)
2998AC_TRY_COMPILE([
2999#include <sys/types.h>
3000#include <sys/socket.h>
3001], void *x=socketpair,
3002 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3003 AC_MSG_RESULT(yes),
3004 AC_MSG_RESULT(no)
3005)
3006
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003007# check if sockaddr has sa_len member
3008AC_MSG_CHECKING(if sockaddr has sa_len member)
3009AC_TRY_COMPILE([#include <sys/types.h>
3010#include <sys/socket.h>],
3011[struct sockaddr x;
3012x.sa_len = 0;],
3013 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003015 AC_MSG_RESULT(no))
3016
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003017va_list_is_array=no
3018AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003019AC_TRY_COMPILE([
3020#ifdef HAVE_STDARG_PROTOTYPES
3021#include <stdarg.h>
3022#else
3023#include <varargs.h>
3024#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003025], [va_list list1, list2; list1 = list2;], , [
3026 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3027 va_list_is_array=yes
3028])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003029AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003030
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003031# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003032AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3033 [Define this if you have some version of gethostbyname_r()])
3034
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003035AC_CHECK_FUNC(gethostbyname_r, [
3036 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3037 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3038 OLD_CFLAGS=$CFLAGS
3039 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3040 AC_TRY_COMPILE([
3041# include <netdb.h>
3042 ], [
3043 char *name;
3044 struct hostent *he, *res;
3045 char buffer[2048];
3046 int buflen = 2048;
3047 int h_errnop;
3048
3049 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3050 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003051 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003052 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3053 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003054 AC_MSG_RESULT(yes)
3055 ], [
3056 AC_MSG_RESULT(no)
3057 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3058 AC_TRY_COMPILE([
3059# include <netdb.h>
3060 ], [
3061 char *name;
3062 struct hostent *he;
3063 char buffer[2048];
3064 int buflen = 2048;
3065 int h_errnop;
3066
3067 (void) gethostbyname_r(name, he, buffer, buflen, &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_5_ARG, 1,
3071 [Define this if you have the 5-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 3 args])
3076 AC_TRY_COMPILE([
3077# include <netdb.h>
3078 ], [
3079 char *name;
3080 struct hostent *he;
3081 struct hostent_data data;
3082
3083 (void) gethostbyname_r(name, he, &data);
3084 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003085 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003086 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3087 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003088 AC_MSG_RESULT(yes)
3089 ], [
3090 AC_MSG_RESULT(no)
3091 ])
3092 ])
3093 ])
3094 CFLAGS=$OLD_CFLAGS
3095], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003096 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003097])
3098AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3099AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3100AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003101AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003102AC_SUBST(HAVE_GETHOSTBYNAME)
3103
Guido van Rossum627b2d71993-12-24 10:39:16 +00003104# checks for system services
3105# (none yet)
3106
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003107# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003108AC_CHECK_FUNC(__fpu_control,
3109 [],
3110 [AC_CHECK_LIB(ieee, __fpu_control)
3111])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003112
Guido van Rossum93274221997-05-09 02:42:00 +00003113# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003114AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003115AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003116 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3117[
Guido van Rossum93274221997-05-09 02:42:00 +00003118if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003119then
3120 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3121 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3122 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003123else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003124fi],
3125[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003126
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003127# check for --with-libm=...
3128AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003129case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003130Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003131*) LIBM=-lm
3132esac
Guido van Rossum93274221997-05-09 02:42:00 +00003133AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003134AC_ARG_WITH(libm,
3135 AC_HELP_STRING(--with-libm=STRING, math library),
3136[
Guido van Rossum93274221997-05-09 02:42:00 +00003137if test "$withval" = no
3138then LIBM=
3139 AC_MSG_RESULT(force LIBM empty)
3140elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003141then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003142 AC_MSG_RESULT(set LIBM="$withval")
3143else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003144fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003145[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003146
3147# check for --with-libc=...
3148AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003149AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003150AC_ARG_WITH(libc,
3151 AC_HELP_STRING(--with-libc=STRING, C library),
3152[
Guido van Rossum93274221997-05-09 02:42:00 +00003153if test "$withval" = no
3154then LIBC=
3155 AC_MSG_RESULT(force LIBC empty)
3156elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003157then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003158 AC_MSG_RESULT(set LIBC="$withval")
3159else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003160fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003161[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003162
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003163# **************************************************
3164# * Check for various properties of floating point *
3165# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003166
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003167AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3168AC_CACHE_VAL(ac_cv_little_endian_double, [
3169AC_TRY_RUN([
3170#include <string.h>
3171int main() {
3172 double x = 9006104071832581.0;
3173 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3174 return 0;
3175 else
3176 return 1;
3177}
3178],
3179ac_cv_little_endian_double=yes,
3180ac_cv_little_endian_double=no,
3181ac_cv_little_endian_double=no)])
3182AC_MSG_RESULT($ac_cv_little_endian_double)
3183if test "$ac_cv_little_endian_double" = yes
3184then
3185 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3186 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3187 with the least significant byte first])
3188fi
3189
3190AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3191AC_CACHE_VAL(ac_cv_big_endian_double, [
3192AC_TRY_RUN([
3193#include <string.h>
3194int main() {
3195 double x = 9006104071832581.0;
3196 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3197 return 0;
3198 else
3199 return 1;
3200}
3201],
3202ac_cv_big_endian_double=yes,
3203ac_cv_big_endian_double=no,
3204ac_cv_big_endian_double=no)])
3205AC_MSG_RESULT($ac_cv_big_endian_double)
3206if test "$ac_cv_big_endian_double" = yes
3207then
3208 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3209 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3210 with the most significant byte first])
3211fi
3212
3213# Some ARM platforms use a mixed-endian representation for doubles.
3214# While Python doesn't currently have full support for these platforms
3215# (see e.g., issue 1762561), we can at least make sure that float <-> string
3216# conversions work.
3217AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3218AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3219AC_TRY_RUN([
3220#include <string.h>
3221int main() {
3222 double x = 9006104071832581.0;
3223 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3224 return 0;
3225 else
3226 return 1;
3227}
3228],
3229ac_cv_mixed_endian_double=yes,
3230ac_cv_mixed_endian_double=no,
3231ac_cv_mixed_endian_double=no)])
3232AC_MSG_RESULT($ac_cv_mixed_endian_double)
3233if test "$ac_cv_mixed_endian_double" = yes
3234then
3235 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3236 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3237 in ARM mixed-endian order (byte order 45670123)])
3238fi
3239
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003240# The short float repr introduced in Python 3.1 requires the
3241# correctly-rounded string <-> double conversion functions from
3242# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3243# rounding; this is a problem on x86, where the x87 FPU has a default
3244# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3245# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003246if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3247then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003248 # Check that it's okay to use gcc inline assembler to get and set
3249 # x87 control word. It should be, but you never know...
3250 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3251 AC_TRY_COMPILE([], [
3252 unsigned short cw;
3253 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3254 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3255 ],
3256 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3257 AC_MSG_RESULT($have_gcc_asm_for_x87)
3258 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003259 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003260 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3261 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003262 fi
3263fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003264
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003265# Detect whether system arithmetic is subject to x87-style double
3266# rounding issues. The result of this test has little meaning on non
3267# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3268# mode is round-to-nearest and double rounding issues are present, and
3269# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3270AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003271# $BASECFLAGS may affect the result
3272ac_save_cc="$CC"
3273CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003274AC_TRY_RUN([
3275#include <stdlib.h>
3276#include <math.h>
3277int main() {
3278 volatile double x, y, z;
3279 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3280 x = 0.99999999999999989; /* 1-2**-53 */
3281 y = 1./x;
3282 if (y != 1.)
3283 exit(0);
3284 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3285 x = 1e16;
3286 y = 2.99999;
3287 z = x + y;
3288 if (z != 1e16+4.)
3289 exit(0);
3290 /* both tests show evidence of double rounding */
3291 exit(1);
3292}
3293],
3294ac_cv_x87_double_rounding=no,
3295ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003296ac_cv_x87_double_rounding=no)
3297CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003298AC_MSG_RESULT($ac_cv_x87_double_rounding)
3299if test "$ac_cv_x87_double_rounding" = yes
3300then
3301 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3302 [Define if arithmetic is subject to x87-style double rounding issue])
3303fi
3304
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003305# ************************************
3306# * Check for mathematical functions *
3307# ************************************
3308
3309LIBS_SAVE=$LIBS
3310LIBS="$LIBS $LIBM"
3311
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003312# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3313# -0. on some architectures.
3314AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3315AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3316AC_TRY_RUN([
3317#include <math.h>
3318#include <stdlib.h>
3319int main() {
3320 /* return 0 if either negative zeros don't exist
3321 on this platform or if negative zeros exist
3322 and tanh(-0.) == -0. */
3323 if (atan2(0., -1.) == atan2(-0., -1.) ||
3324 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3325 else exit(1);
3326}
3327],
3328ac_cv_tanh_preserves_zero_sign=yes,
3329ac_cv_tanh_preserves_zero_sign=no,
3330ac_cv_tanh_preserves_zero_sign=no)])
3331AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3332if test "$ac_cv_tanh_preserves_zero_sign" = yes
3333then
3334 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3335 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3336fi
3337
Mark Dickinsonf2537862009-04-18 13:58:18 +00003338AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003339AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003340
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003341LIBS=$LIBS_SAVE
3342
Mark Dickinson10683072009-04-18 21:18:19 +00003343# Multiprocessing check for broken sem_getvalue
3344AC_MSG_CHECKING(for broken sem_getvalue)
3345AC_TRY_RUN([
3346#include <unistd.h>
3347#include <fcntl.h>
3348#include <stdio.h>
3349#include <semaphore.h>
3350#include <sys/stat.h>
3351
3352int main(void){
3353 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3354 int count;
3355 int res;
3356 if(a==SEM_FAILED){
3357 perror("sem_open");
3358 return 1;
3359
3360 }
3361 res = sem_getvalue(a, &count);
3362 sem_close(a);
3363 return res==-1 ? 1 : 0;
3364}
3365]
3366,AC_MSG_RESULT(no),
3367 AC_MSG_RESULT(yes)
3368 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1, define to 1 if your sem_getvalue is broken.)
3369)
3370
Mark Dickinsonbd792642009-03-18 20:06:12 +00003371# determine what size digit to use for Python's longs
3372AC_MSG_CHECKING([digit size for Python's longs])
3373AC_ARG_ENABLE(big-digits,
3374AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3375[case $enable_big_digits in
3376yes)
3377 enable_big_digits=30 ;;
3378no)
3379 enable_big_digits=15 ;;
3380[15|30])
3381 ;;
3382*)
3383 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3384esac
3385AC_MSG_RESULT($enable_big_digits)
3386AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3387],
3388[AC_MSG_RESULT(no value specified)])
3389
Guido van Rossumef2255b2000-03-10 22:30:29 +00003390# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003391AC_CHECK_HEADER(wchar.h, [
3392 AC_DEFINE(HAVE_WCHAR_H, 1,
3393 [Define if the compiler provides a wchar.h header file.])
3394 wchar_h="yes"
3395],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003396wchar_h="no"
3397)
3398
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003399# determine wchar_t size
3400if test "$wchar_h" = yes
3401then
Guido van Rossum67b26592001-10-20 14:21:45 +00003402 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003403fi
3404
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003405AC_MSG_CHECKING(for UCS-4 tcl)
3406have_ucs4_tcl=no
3407AC_TRY_COMPILE([
3408#include <tcl.h>
3409#if TCL_UTF_MAX != 6
3410# error "NOT UCS4_TCL"
3411#endif], [], [
3412 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3413 have_ucs4_tcl=yes
3414])
3415AC_MSG_RESULT($have_ucs4_tcl)
3416
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003417# check whether wchar_t is signed or not
3418if test "$wchar_h" = yes
3419then
3420 # check whether wchar_t is signed or not
3421 AC_MSG_CHECKING(whether wchar_t is signed)
3422 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3423 AC_TRY_RUN([
3424 #include <wchar.h>
3425 int main()
3426 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003427 /* Success: exit code 0 */
3428 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003429 }
3430 ],
3431 ac_cv_wchar_t_signed=yes,
3432 ac_cv_wchar_t_signed=no,
3433 ac_cv_wchar_t_signed=yes)])
3434 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3435fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003436
Georg Brandl52d168a2008-01-07 18:10:24 +00003437AC_MSG_CHECKING(what type to use for str)
3438AC_ARG_WITH(wide-unicode,
3439 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3440[
3441if test "$withval" != no
3442then unicode_size="4"
3443else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003444fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003445],
3446[
3447case "$have_ucs4_tcl" in
3448 yes) unicode_size="4" ;;
3449 *) unicode_size="2" ;;
3450esac
3451])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003452
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003453AH_TEMPLATE(Py_UNICODE_SIZE,
3454 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003455case "$unicode_size" in
3456 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3457 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003458esac
3459
Martin v. Löwis11437992002-04-12 09:54:03 +00003460AH_TEMPLATE(PY_UNICODE_TYPE,
3461 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003462
Georg Brandl52d168a2008-01-07 18:10:24 +00003463# wchar_t is only usable if it maps to an unsigned type
3464if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003465 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003466then
3467 PY_UNICODE_TYPE="wchar_t"
3468 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3469 [Define if you have a useable wchar_t type defined in wchar.h; useable
3470 means wchar_t must be an unsigned type with at least 16 bits. (see
3471 Include/unicodeobject.h).])
3472 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3473elif test "$ac_cv_sizeof_short" = "$unicode_size"
3474then
3475 PY_UNICODE_TYPE="unsigned short"
3476 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3477elif test "$ac_cv_sizeof_long" = "$unicode_size"
3478then
3479 PY_UNICODE_TYPE="unsigned long"
3480 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3481else
3482 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003483fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003484AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003485
3486# check for endianness
3487AC_C_BIGENDIAN
3488
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003489# Check whether right shifting a negative integer extends the sign bit
3490# or fills with zeros (like the Cray J90, according to Tim Peters).
3491AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003492AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003493AC_TRY_RUN([
3494int main()
3495{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003496 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003497}
Guido van Rossum3065c942001-09-17 04:03:14 +00003498],
3499ac_cv_rshift_extends_sign=yes,
3500ac_cv_rshift_extends_sign=no,
3501ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003502AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3503if test "$ac_cv_rshift_extends_sign" = no
3504then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003505 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3506 [Define if i>>j for signed int i does not extend the sign bit
3507 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003508fi
3509
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003510# check for getc_unlocked and related locking functions
3511AC_MSG_CHECKING(for getc_unlocked() and friends)
3512AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3513AC_TRY_LINK([#include <stdio.h>],[
3514 FILE *f = fopen("/dev/null", "r");
3515 flockfile(f);
3516 getc_unlocked(f);
3517 funlockfile(f);
3518], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3519AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3520if test "$ac_cv_have_getc_unlocked" = yes
3521then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003522 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3523 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003524fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003525
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003526# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003527# save the value of LIBS so we don't actually link Python with readline
3528LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003529
3530# On some systems we need to link readline to a termcap compatible
3531# library. NOTE: Keep the precedence of listed libraries synchronised
3532# with setup.py.
3533py_cv_lib_readline=no
3534AC_MSG_CHECKING([how to link readline libs])
3535for py_libtermcap in "" ncursesw ncurses curses termcap; do
3536 if test -z "$py_libtermcap"; then
3537 READLINE_LIBS="-lreadline"
3538 else
3539 READLINE_LIBS="-lreadline -l$py_libtermcap"
3540 fi
3541 LIBS="$READLINE_LIBS $LIBS_no_readline"
3542 AC_LINK_IFELSE(
3543 [AC_LANG_CALL([],[readline])],
3544 [py_cv_lib_readline=yes])
3545 if test $py_cv_lib_readline = yes; then
3546 break
3547 fi
3548done
3549# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3550#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003551if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003552 AC_MSG_RESULT([none])
3553else
3554 AC_MSG_RESULT([$READLINE_LIBS])
3555 AC_DEFINE(HAVE_LIBREADLINE, 1,
3556 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003557fi
3558
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003559# check for readline 2.1
3560AC_CHECK_LIB(readline, rl_callback_handler_install,
3561 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003562 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003563
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003564# check for readline 2.2
3565AC_TRY_CPP([#include <readline/readline.h>],
3566have_readline=yes, have_readline=no)
3567if test $have_readline = yes
3568then
3569 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3570 [readline/readline.h],
3571 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3572 [Define if you have readline 2.2]), )
3573fi
3574
Martin v. Löwis0daad592001-09-30 21:09:59 +00003575# check for readline 4.0
3576AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003577 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003578 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003579
Thomas Wouters89d996e2007-09-08 17:39:28 +00003580# also in 4.0
3581AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3582 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003583 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003584
Guido van Rossum353ae582001-07-10 16:45:32 +00003585# check for readline 4.2
3586AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003587 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003588 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003589
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003590# also in readline 4.2
3591AC_TRY_CPP([#include <readline/readline.h>],
3592have_readline=yes, have_readline=no)
3593if test $have_readline = yes
3594then
3595 AC_EGREP_HEADER([extern int rl_catch_signals;],
3596 [readline/readline.h],
3597 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3598 [Define if you can turn off readline's signal handling.]), )
3599fi
3600
Martin v. Löwis82bca632006-02-10 20:49:30 +00003601# End of readline checks: restore LIBS
3602LIBS=$LIBS_no_readline
3603
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003604AC_MSG_CHECKING(for broken nice())
3605AC_CACHE_VAL(ac_cv_broken_nice, [
3606AC_TRY_RUN([
3607int main()
3608{
3609 int val1 = nice(1);
3610 if (val1 != -1 && val1 == nice(2))
3611 exit(0);
3612 exit(1);
3613}
Guido van Rossum3065c942001-09-17 04:03:14 +00003614],
3615ac_cv_broken_nice=yes,
3616ac_cv_broken_nice=no,
3617ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003618AC_MSG_RESULT($ac_cv_broken_nice)
3619if test "$ac_cv_broken_nice" = yes
3620then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003621 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3622 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003623fi
3624
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003625AC_MSG_CHECKING(for broken poll())
3626AC_TRY_RUN([
3627#include <poll.h>
3628
3629int main (void)
3630 {
3631 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3632
3633 close (42);
3634
3635 int poll_test = poll (&poll_struct, 1, 0);
3636
3637 if (poll_test < 0)
3638 {
3639 exit(0);
3640 }
3641 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3642 {
3643 exit(0);
3644 }
3645 else
3646 {
3647 exit(1);
3648 }
3649 }
3650],
3651ac_cv_broken_poll=yes,
3652ac_cv_broken_poll=no,
3653ac_cv_broken_poll=no)
3654AC_MSG_RESULT($ac_cv_broken_poll)
3655if test "$ac_cv_broken_poll" = yes
3656then
3657 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3658 [Define if poll() sets errno on invalid file descriptors.])
3659fi
3660
Brett Cannon43802422005-02-10 20:48:03 +00003661# Before we can test tzset, we need to check if struct tm has a tm_zone
3662# (which is not required by ISO C or UNIX spec) and/or if we support
3663# tzname[]
3664AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003665
Brett Cannon43802422005-02-10 20:48:03 +00003666# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003667AC_MSG_CHECKING(for working tzset())
3668AC_CACHE_VAL(ac_cv_working_tzset, [
3669AC_TRY_RUN([
3670#include <stdlib.h>
3671#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003672#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003673
3674#if HAVE_TZNAME
3675extern char *tzname[];
3676#endif
3677
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003678int main()
3679{
Brett Cannon18367812003-09-19 00:59:16 +00003680 /* Note that we need to ensure that not only does tzset(3)
3681 do 'something' with localtime, but it works as documented
3682 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003683 This includes making sure that tzname is set properly if
3684 tm->tm_zone does not exist since it is the alternative way
3685 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003686
3687 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003688 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003689 */
3690
Brett Cannon43802422005-02-10 20:48:03 +00003691 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003692 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3693
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003694 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003695 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003696 if (localtime(&groundhogday)->tm_hour != 0)
3697 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003698#if HAVE_TZNAME
3699 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3700 if (strcmp(tzname[0], "UTC") ||
3701 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3702 exit(1);
3703#endif
Brett Cannon18367812003-09-19 00:59:16 +00003704
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003705 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003706 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003707 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003708 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003709#if HAVE_TZNAME
3710 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3711 exit(1);
3712#endif
Brett Cannon18367812003-09-19 00:59:16 +00003713
3714 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3715 tzset();
3716 if (localtime(&groundhogday)->tm_hour != 11)
3717 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003718#if HAVE_TZNAME
3719 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3720 exit(1);
3721#endif
3722
3723#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003724 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3725 exit(1);
3726 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3727 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003728#endif
Brett Cannon18367812003-09-19 00:59:16 +00003729
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003730 exit(0);
3731}
3732],
3733ac_cv_working_tzset=yes,
3734ac_cv_working_tzset=no,
3735ac_cv_working_tzset=no)])
3736AC_MSG_RESULT($ac_cv_working_tzset)
3737if test "$ac_cv_working_tzset" = yes
3738then
3739 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3740 [Define if tzset() actually switches the local timezone in a meaningful way.])
3741fi
3742
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003743# Look for subsecond timestamps in struct stat
3744AC_MSG_CHECKING(for tv_nsec in struct stat)
3745AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3746AC_TRY_COMPILE([#include <sys/stat.h>], [
3747struct stat st;
3748st.st_mtim.tv_nsec = 1;
3749],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003750ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003751ac_cv_stat_tv_nsec=no,
3752ac_cv_stat_tv_nsec=no))
3753AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3754if test "$ac_cv_stat_tv_nsec" = yes
3755then
3756 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3757 [Define if you have struct stat.st_mtim.tv_nsec])
3758fi
3759
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003760# Look for BSD style subsecond timestamps in struct stat
3761AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3762AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3763AC_TRY_COMPILE([#include <sys/stat.h>], [
3764struct stat st;
3765st.st_mtimespec.tv_nsec = 1;
3766],
3767ac_cv_stat_tv_nsec2=yes,
3768ac_cv_stat_tv_nsec2=no,
3769ac_cv_stat_tv_nsec2=no))
3770AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3771if test "$ac_cv_stat_tv_nsec2" = yes
3772then
3773 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3774 [Define if you have struct stat.st_mtimensec])
3775fi
3776
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003777# On HP/UX 11.0, mvwdelch is a block with a return statement
3778AC_MSG_CHECKING(whether mvwdelch is an expression)
3779AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3780AC_TRY_COMPILE([#include <curses.h>], [
3781 int rtn;
3782 rtn = mvwdelch(0,0,0);
3783], ac_cv_mvwdelch_is_expression=yes,
3784 ac_cv_mvwdelch_is_expression=no,
3785 ac_cv_mvwdelch_is_expression=yes))
3786AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3787
3788if test "$ac_cv_mvwdelch_is_expression" = yes
3789then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003790 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3791 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003792fi
3793
3794AC_MSG_CHECKING(whether WINDOW has _flags)
3795AC_CACHE_VAL(ac_cv_window_has_flags,
3796AC_TRY_COMPILE([#include <curses.h>], [
3797 WINDOW *w;
3798 w->_flags = 0;
3799], ac_cv_window_has_flags=yes,
3800 ac_cv_window_has_flags=no,
3801 ac_cv_window_has_flags=no))
3802AC_MSG_RESULT($ac_cv_window_has_flags)
3803
3804
3805if test "$ac_cv_window_has_flags" = yes
3806then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003807 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3808 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003809fi
3810
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003811AC_MSG_CHECKING(for is_term_resized)
3812AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3813 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3814 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003815 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003816)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003817
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003818AC_MSG_CHECKING(for resize_term)
3819AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3820 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3821 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003822 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003823)
3824
3825AC_MSG_CHECKING(for resizeterm)
3826AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3827 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3828 AC_MSG_RESULT(yes),
3829 AC_MSG_RESULT(no)
3830)
3831
Thomas Wouters89f507f2006-12-13 04:49:30 +00003832AC_MSG_CHECKING(for /dev/ptmx)
3833
3834if test -r /dev/ptmx
3835then
3836 AC_MSG_RESULT(yes)
3837 AC_DEFINE(HAVE_DEV_PTMX, 1,
3838 [Define if we have /dev/ptmx.])
3839else
3840 AC_MSG_RESULT(no)
3841fi
3842
3843AC_MSG_CHECKING(for /dev/ptc)
3844
3845if test -r /dev/ptc
3846then
3847 AC_MSG_RESULT(yes)
3848 AC_DEFINE(HAVE_DEV_PTC, 1,
3849 [Define if we have /dev/ptc.])
3850else
3851 AC_MSG_RESULT(no)
3852fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003853
Thomas Wouters477c8d52006-05-27 19:21:47 +00003854AC_MSG_CHECKING(for %zd printf() format support)
3855AC_TRY_RUN([#include <stdio.h>
3856#include <stddef.h>
3857#include <string.h>
3858
Christian Heimes2c181612007-12-17 20:04:13 +00003859#ifdef HAVE_SYS_TYPES_H
3860#include <sys/types.h>
3861#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003862
3863#ifdef HAVE_SSIZE_T
3864typedef ssize_t Py_ssize_t;
3865#elif SIZEOF_VOID_P == SIZEOF_LONG
3866typedef long Py_ssize_t;
3867#else
3868typedef int Py_ssize_t;
3869#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003870
Christian Heimes2c181612007-12-17 20:04:13 +00003871int main()
3872{
3873 char buffer[256];
3874
Thomas Wouters477c8d52006-05-27 19:21:47 +00003875 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3876 return 1;
3877
Thomas Wouters89f507f2006-12-13 04:49:30 +00003878 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003879 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003880
3881 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3882 return 1;
3883
3884 if (strcmp(buffer, "-123"))
3885 return 1;
3886
Thomas Wouters477c8d52006-05-27 19:21:47 +00003887 return 0;
3888}],
3889[AC_MSG_RESULT(yes)
3890 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3891 AC_MSG_RESULT(no))
3892
Martin v. Löwis01c04012002-11-11 14:58:44 +00003893AC_CHECK_TYPE(socklen_t,,
3894 AC_DEFINE(socklen_t,int,
3895 Define to `int' if <sys/socket.h> does not define.),[
3896#ifdef HAVE_SYS_TYPES_H
3897#include <sys/types.h>
3898#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003899#ifdef HAVE_SYS_SOCKET_H
3900#include <sys/socket.h>
3901#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003902])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003903
Antoine Pitroufff95302008-09-03 18:58:51 +00003904AC_MSG_CHECKING(for broken mbstowcs)
3905AC_TRY_RUN([
3906#include<stdlib.h>
3907int main() {
3908 size_t len = -1;
3909 const char *str = "text";
3910 len = mbstowcs(NULL, str, 0);
3911 return (len != 4);
3912}
3913],
3914ac_cv_broken_mbstowcs=no,
3915ac_cv_broken_mbstowcs=yes,
3916ac_cv_broken_mbstowcs=no)
3917AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3918if test "$ac_cv_broken_mbstowcs" = yes
3919then
3920 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3921 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3922 wide chars that would be converted.])
3923fi
3924
Antoine Pitroub52ec782009-01-25 16:34:23 +00003925# Check for --with-computed-gotos
3926AC_MSG_CHECKING(for --with-computed-gotos)
3927AC_ARG_WITH(computed-gotos,
3928 AC_HELP_STRING(--with-computed-gotos,
3929 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3930[
3931if test "$withval" != no
3932then
3933 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3934 [Define if you want to use computed gotos in ceval.c.])
3935 AC_MSG_RESULT(yes)
3936else AC_MSG_RESULT(no)
3937fi],
3938[AC_MSG_RESULT(no)])
3939
3940
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003941AC_SUBST(THREADHEADERS)
3942
3943for h in `(cd $srcdir;echo Python/thread_*.h)`
3944do
3945 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3946done
3947
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003948AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003949SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003950AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003951for dir in $SRCDIRS; do
3952 if test ! -d $dir; then
3953 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003954 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003955done
3956AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003957
Guido van Rossum627b2d71993-12-24 10:39:16 +00003958# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003959AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003960AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003961
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003962echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003963if test ! -f Modules/Setup
3964then
3965 cp $srcdir/Modules/Setup.dist Modules/Setup
3966fi
3967
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003968echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003969if test ! -f Modules/Setup.local
3970then
3971 echo "# Edit this file for local setup changes" >Modules/Setup.local
3972fi
3973
3974echo "creating Makefile"
3975$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3976 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003977 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003978mv config.c Modules