blob: 9ad9f758e586f13e915557f37f55ee29a00e5400 [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Georg Brandl5c7f8fb2008-12-05 09:00:55 +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)
Neal Norwitz9be57322006-08-18 05:39:20 +00007m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Ronald Oussoren5640ce22008-06-05 12:58:24 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Ronald Oussoren988117f2006-04-29 11:31:35 +000072AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +000095AC_SUBST(ARCH_RUN_32BIT)
96
Ronald Oussoren5640ce22008-06-05 12:58:24 +000097UNIVERSAL_ARCHS="32-bit"
98AC_MSG_CHECKING(for --with-universal-archs)
99AC_ARG_WITH(universal-archs,
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000100 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000101[
102 AC_MSG_RESULT($withval)
103 UNIVERSAL_ARCHS="$withval"
104],
105[
106 AC_MSG_RESULT(32-bit)
107])
108
109
110
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000111AC_ARG_WITH(framework-name,
112 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
113 specify an alternate name of the framework built with --enable-framework),
114[
115 PYTHONFRAMEWORK=${withval}
116 PYTHONFRAMEWORKDIR=${withval}.framework
117 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
118 ],[
119 PYTHONFRAMEWORK=Python
120 PYTHONFRAMEWORKDIR=Python.framework
121 PYTHONFRAMEWORKIDENTIFIER=org.python.python
122])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000123dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000124AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000125 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
126[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000127 case $enableval in
128 yes)
129 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000130 esac
131 case $enableval in
132 no)
133 PYTHONFRAMEWORK=
134 PYTHONFRAMEWORKDIR=no-framework
135 PYTHONFRAMEWORKPREFIX=
136 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000137 FRAMEWORKINSTALLFIRST=
138 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000139 FRAMEWORKALTINSTALLFIRST=
140 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000141 if test "x${prefix}" = "xNONE"; then
142 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
143 else
144 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
145 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000146 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 ;;
148 *)
149 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000150 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000151 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000152 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
153 if test "$UNIVERSAL_ARCHS" = "all"
154 then
155 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussoren75d83852009-03-30 17:56:14 +0000156 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000157 else
Ronald Oussoren75d83852009-03-30 17:56:14 +0000158 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000159 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
160 fi
161
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000162 if test "x${prefix}" = "xNONE" ; then
163 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
164 else
165 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
166 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000167 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000168
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000169 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000170 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000171 AC_CONFIG_FILES(Mac/Makefile)
172 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
173 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000174 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
175 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000176 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000177 ],[
178 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000179 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000180 PYTHONFRAMEWORKPREFIX=
181 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000182 FRAMEWORKINSTALLFIRST=
183 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000184 FRAMEWORKALTINSTALLFIRST=
185 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000186 if test "x${prefix}" = "xNONE" ; then
187 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
188 else
189 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
190 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000191 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000192
193 if test "$UNIVERSAL_ARCHS" = "all"
194 then
195 FRAMEWORKINSTALLLAST=update4wayuniversal
196 FRAMEWORKALTINSTALLLAST=update4wayuniversal
197 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198])
199AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000200AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000201AC_SUBST(PYTHONFRAMEWORKDIR)
202AC_SUBST(PYTHONFRAMEWORKPREFIX)
203AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000204AC_SUBST(FRAMEWORKINSTALLFIRST)
205AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000206AC_SUBST(FRAMEWORKALTINSTALLFIRST)
207AC_SUBST(FRAMEWORKALTINSTALLLAST)
208AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000209
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000210##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000211## AC_HELP_STRING(--with-dyld,
212## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000213##
Guido van Rossumb418f891996-07-30 18:06:02 +0000214# Set name for machine-dependent library files
215AC_SUBST(MACHDEP)
216AC_MSG_CHECKING(MACHDEP)
217if test -z "$MACHDEP"
218then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000219 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000220 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
221 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000222 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000223 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000224 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000225 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000226 ac_md_system=`echo $ac_sys_system |
227 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
228 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000229 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000230 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000232 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000233 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000234 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000235 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000236 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000237 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000238 esac
239fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000240
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000241# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
242# disable features if it is defined, without any means to access these
243# features as extensions. For these systems, we skip the definition of
244# _XOPEN_SOURCE. Before adding a system to the list to gain access to
245# some feature, make sure there is no alternative way to access this
246# feature. Also, when using wildcards, make sure you have verified the
247# need for not defining _XOPEN_SOURCE on all systems matching the
248# wildcard, and that the wildcard does not include future systems
249# (which may remove their limitations).
250dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
251case $ac_sys_system/$ac_sys_release in
252 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
253 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000254 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000255 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000256 define_xopen_source=no
257 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
258 # also defined. This can be overridden by defining _BSD_SOURCE
259 # As this has a different meaning on Linux, only define it on OpenBSD
260 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
261 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000262 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
263 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
264 # Marc Recht
Georg Brandl60616122008-11-16 08:02:56 +0000265 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000266 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000267 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
268 # of union __?sigval. Reported by Stuart Bishop.
269 SunOS/5.6)
270 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000271 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
272 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000273 # Reconfirmed for 7.1.4 by Martin v. Loewis.
274 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000275 define_xopen_source=no;;
276 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000277 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000278 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000279 define_xopen_source=no;;
Martin v. Löwis7f08c1f2008-11-04 20:43:31 +0000280 # On FreeBSD 4, the math functions C89 does not cover are never defined
281 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
282 FreeBSD/4.*)
283 define_xopen_source=no;;
284 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
285 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
286 # identifies itself as Darwin/7.*
287 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
288 # disables platform specific features beyond repair.
289 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
290 # has no effect, don't bother defining them
291 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000292 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000293 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
294 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
295 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000296 AIX/4)
297 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000298 AIX/5)
299 if test `uname -r` -eq 1; then
300 define_xopen_source=no
301 fi
302 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000303 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
304 # defining NI_NUMERICHOST.
305 QNX/6.3.2)
306 define_xopen_source=no
307 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000308
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000309esac
310
311if test $define_xopen_source = yes
312then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000313 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
314 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000315 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
316 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000317 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000318 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000319 AC_DEFINE(_XOPEN_SOURCE, 500,
320 Define to the level of X/Open that your system supports)
321 ;;
322 *)
323 AC_DEFINE(_XOPEN_SOURCE, 600,
324 Define to the level of X/Open that your system supports)
325 ;;
326 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000327
328 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
329 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
330 # several APIs are not declared. Since this is also needed in some
331 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000332 # except for Solaris 10, where it must not be defined,
333 # as it implies XPG4.2
334 case $ac_sys_system/$ac_sys_release in
335 SunOS/5.10)
336 ;;
337 *)
338 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
339 Define to activate Unix95-and-earlier features)
340 ;;
341 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000342
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000343 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
344
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000345fi
346
Guido van Rossum91922671997-10-09 20:24:13 +0000347#
348# SGI compilers allow the specification of the both the ABI and the
349# ISA on the command line. Depending on the values of these switches,
350# different and often incompatable code will be generated.
351#
352# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
353# thus supply support for various ABI/ISA combinations. The MACHDEP
354# variable is also adjusted.
355#
356AC_SUBST(SGI_ABI)
357if test ! -z "$SGI_ABI"
358then
359 CC="cc $SGI_ABI"
360 LDFLAGS="$SGI_ABI $LDFLAGS"
361 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
362fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000363AC_MSG_RESULT($MACHDEP)
364
Jack Jansen83f898c2002-12-30 22:23:40 +0000365# And add extra plat-mac for darwin
366AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000367AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000368AC_MSG_CHECKING(EXTRAPLATDIR)
369if test -z "$EXTRAPLATDIR"
370then
371 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000372 darwin)
373 EXTRAPLATDIR="\$(PLATMACDIRS)"
374 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
375 ;;
376 *)
377 EXTRAPLATDIR=""
378 EXTRAMACHDEPPATH=""
379 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000380 esac
381fi
382AC_MSG_RESULT($EXTRAPLATDIR)
383
Jack Jansen6b08a402004-06-03 12:41:45 +0000384# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
385# it may influence the way we can build extensions, so distutils
386# needs to check it
387AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000388AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000389CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000390EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000391
Mark Dickinson65134662008-04-25 16:11:04 +0000392AC_MSG_CHECKING(machine type as reported by uname -m)
393ac_sys_machine=`uname -m`
394AC_MSG_RESULT($ac_sys_machine)
395
Guido van Rossum627b2d71993-12-24 10:39:16 +0000396# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000397
398# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
399# for debug/optimization stuff. BASECFLAGS is for flags that are required
400# just to get things to compile and link. Users are free to override OPT
401# when running configure or make. The build should not break if they do.
402# BASECFLAGS should generally not be messed with, however.
403
404# XXX shouldn't some/most/all of this code be merged with the stuff later
405# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000406AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000407AC_ARG_WITH(gcc,
408 AC_HELP_STRING(--without-gcc,never use gcc),
409[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000410 case $withval in
Georg Brandlc04c2892009-01-14 00:00:17 +0000411 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000412 without_gcc=yes;;
413 yes) CC=gcc
414 without_gcc=no;;
415 *) CC=$withval
416 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000417 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000418 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000419 AIX*) CC=cc_r
420 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000421 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000422 case $BE_HOST_CPU in
423 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000424 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000425 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000426 BASECFLAGS="$BASECFLAGS -export pragma"
427 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000428 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000429 ;;
430 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000431 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000432 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000433 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000434 ;;
435 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000436 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000437 ;;
438 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000439 AR="\$(srcdir)/Modules/ar_beos"
440 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000441 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000442 Monterey*)
443 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000444 without_gcc=;;
445 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000446 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000447AC_MSG_RESULT($without_gcc)
448
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000449# If the user switches compilers, we can't believe the cache
450if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
451then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000452 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
453(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000454fi
455
Guido van Rossum627b2d71993-12-24 10:39:16 +0000456AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000457
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000458AC_SUBST(CXX)
459AC_SUBST(MAINCC)
460AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
461AC_ARG_WITH(cxx_main,
462 AC_HELP_STRING([--with-cxx-main=<compiler>],
463 [compile main() and link python executable with C++ compiler]),
464[
465
466 case $withval in
467 no) with_cxx_main=no
468 MAINCC='$(CC)';;
469 yes) with_cxx_main=yes
470 MAINCC='$(CXX)';;
471 *) with_cxx_main=yes
472 MAINCC=$withval
473 if test -z "$CXX"
474 then
475 CXX=$withval
476 fi;;
477 esac], [
478 with_cxx_main=no
479 MAINCC='$(CC)'
480])
481AC_MSG_RESULT($with_cxx_main)
482
483preset_cxx="$CXX"
484if test -z "$CXX"
485then
486 case "$CC" in
487 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
488 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
489 esac
490 if test "$CXX" = "notfound"
491 then
492 CXX=""
493 fi
494fi
495if test -z "$CXX"
496then
497 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
498 if test "$CXX" = "notfound"
499 then
500 CXX=""
501 fi
502fi
503if test "$preset_cxx" != "$CXX"
504then
505 AC_MSG_WARN([
506
507 By default, distutils will build C++ extension modules with "$CXX".
508 If this is not intended, then set CXX on the configure command line.
509 ])
510fi
511
512
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000513# checks for UNIX variants that set C preprocessor variables
514AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000515
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000516# Check for unsupported systems
517case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000518atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000519 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
520 echo See README for details.
521 exit 1;;
522esac
523
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000524AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000525AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000526AC_ARG_WITH(suffix,
527 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
528[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000529 case $withval in
530 no) EXEEXT=;;
531 yes) EXEEXT=.exe;;
532 *) EXEEXT=$withval;;
533 esac])
534AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000535
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000536# Test whether we're running on a non-case-sensitive system, in which
537# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000538AC_SUBST(BUILDEXEEXT)
539AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000540if test ! -d CaseSensitiveTestDir; then
541mkdir CaseSensitiveTestDir
542fi
543
544if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000545then
Jack Jansen1999ef42001-12-06 21:47:20 +0000546 AC_MSG_RESULT(yes)
547 BUILDEXEEXT=.exe
548else
549 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000550 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000551fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000552rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000553
Guido van Rossumdd997f71998-10-07 19:58:26 +0000554case $MACHDEP in
555bsdos*)
556 case $CC in
557 gcc) CC="$CC -D_HAVE_BSDI";;
558 esac;;
559esac
560
Guido van Rossum84561611997-08-21 00:08:11 +0000561case $ac_sys_system in
562hp*|HP*)
563 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000564 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000565 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000566Monterey*)
567 case $CC in
568 cc) CC="$CC -Wl,-Bexport";;
569 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000570SunOS*)
571 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000572 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000573 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000574esac
575
Martin v. Löwise8964d42001-03-06 12:09:07 +0000576
Neil Schemenauer61c51152001-01-26 16:18:16 +0000577AC_SUBST(LIBRARY)
578AC_MSG_CHECKING(LIBRARY)
579if test -z "$LIBRARY"
580then
581 LIBRARY='libpython$(VERSION).a'
582fi
583AC_MSG_RESULT($LIBRARY)
584
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000585# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000586# name of the library into which to insert object files). BLDLIBRARY is also
587# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
588# is blank as the main program is not linked directly against LDLIBRARY.
589# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
590# systems without shared libraries, LDLIBRARY is the same as LIBRARY
591# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
592# DLLLIBRARY is the shared (i.e., DLL) library.
593#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000594# RUNSHARED is used to run shared python without installed libraries
595#
596# INSTSONAME is the name of the shared library that will be use to install
597# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000598AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000599AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000600AC_SUBST(BLDLIBRARY)
601AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000602AC_SUBST(INSTSONAME)
603AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000604LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000605BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000606INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000607DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000608LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000609RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000610
Guido van Rossumfb842551997-08-06 23:42:07 +0000611# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000612# If CXX is set, and if it is needed to link a main function that was
613# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
614# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000615# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000616# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000617AC_SUBST(LINKCC)
618AC_MSG_CHECKING(LINKCC)
619if test -z "$LINKCC"
620then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000621 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000622 case $ac_sys_system in
623 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000624 exp_extra="\"\""
625 if test $ac_sys_release -ge 5 -o \
626 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
627 exp_extra="."
628 fi
629 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000630 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000631 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000632 QNX*)
633 # qcc must be used because the other compilers do not
634 # support -N.
635 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000636 esac
637fi
638AC_MSG_RESULT($LINKCC)
639
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640AC_MSG_CHECKING(for --enable-shared)
641AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000642 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000643
Martin v. Löwis1142de32002-03-29 16:28:31 +0000644if test -z "$enable_shared"
645then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000646 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000647 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000648 enable_shared="yes";;
649 *)
650 enable_shared="no";;
651 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000652fi
653AC_MSG_RESULT($enable_shared)
654
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000655AC_MSG_CHECKING(for --enable-profiling)
656AC_ARG_ENABLE(profiling,
657 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
658[ac_save_cc="$CC"
659 CC="$CC -pg"
660 AC_TRY_RUN([int main() { return 0; }],
661 ac_enable_profiling="yes",
662 ac_enable_profiling="no",
663 ac_enable_profiling="no")
664 CC="$ac_save_cc"])
665AC_MSG_RESULT($ac_enable_profiling)
666
667case "$ac_enable_profiling" in
668 "yes")
669 BASECFLAGS="-pg $BASECFLAGS"
670 LDFLAGS="-pg $LDFLAGS"
671 ;;
672esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000673
674AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000675
Guido van Rossumb8552162001-09-05 14:58:11 +0000676# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
677# library that we build, but we do not want to link against it (we
678# will find it with a -framework option). For this reason there is an
679# extra variable BLDLIBRARY against which Python and the extension
680# modules are linked, BLDLIBRARY. This is normally the same as
681# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000682if test "$enable_framework"
683then
684 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000685 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000686 BLDLIBRARY=''
687else
688 BLDLIBRARY='$(LDLIBRARY)'
689fi
690
Martin v. Löwis1142de32002-03-29 16:28:31 +0000691# Other platforms follow
692if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000693 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694 case $ac_sys_system in
695 BeOS*)
696 LDLIBRARY='libpython$(VERSION).so'
697 ;;
698 CYGWIN*)
699 LDLIBRARY='libpython$(VERSION).dll.a'
700 DLLLIBRARY='libpython$(VERSION).dll'
701 ;;
702 SunOS*)
703 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000704 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000705 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000706 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000708 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709 LDLIBRARY='libpython$(VERSION).so'
710 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000711 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000712 case $ac_sys_system in
713 FreeBSD*)
714 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
715 ;;
716 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000717 INSTSONAME="$LDLIBRARY".$SOVERSION
718 ;;
719 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000720 case `uname -m` in
721 ia64)
722 LDLIBRARY='libpython$(VERSION).so'
723 ;;
724 *)
725 LDLIBRARY='libpython$(VERSION).sl'
726 ;;
727 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000729 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 ;;
731 OSF*)
732 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000733 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000734 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000736 atheos*)
737 LDLIBRARY='libpython$(VERSION).so'
738 BLDLIBRARY='-L. -lpython$(VERSION)'
739 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
740 ;;
Ronald Oussorene9cce8e2009-01-02 10:46:42 +0000741 Darwin*)
742 LDLIBRARY='libpython$(VERSION).dylib'
743 BLDLIBRARY='-L. -lpython$(VERSION)'
744 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
745 ;;
746
Martin v. Löwis1142de32002-03-29 16:28:31 +0000747 esac
Jason Tishler30765592003-09-04 11:04:06 +0000748else # shared is disabled
749 case $ac_sys_system in
750 CYGWIN*)
751 BLDLIBRARY='$(LIBRARY)'
752 LDLIBRARY='libpython$(VERSION).dll.a'
753 ;;
754 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000755fi
756
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000757AC_MSG_RESULT($LDLIBRARY)
758
Guido van Rossum627b2d71993-12-24 10:39:16 +0000759AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000760AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000761AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000762
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000763AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000764AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000765if test $SVNVERSION = found
766then
767 SVNVERSION="svnversion \$(srcdir)"
768else
Benjamin Peterson2eb65452009-05-23 19:35:33 +0000769 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000770fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000771
Neil Schemenauera42c8272001-03-31 00:01:55 +0000772case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000773bsdos*|hp*|HP*)
774 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000775 if test -z "$INSTALL"
776 then
777 INSTALL="${srcdir}/install-sh -c"
778 fi
779esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000780AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000781
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000782# Not every filesystem supports hard links
783AC_SUBST(LN)
784if test -z "$LN" ; then
785 case $ac_sys_system in
786 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000787 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000788 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000789 *) LN=ln;;
790 esac
791fi
792
Fred Drake9f715822001-07-11 06:27:00 +0000793# Check for --with-pydebug
794AC_MSG_CHECKING(for --with-pydebug)
795AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000796 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
797[
Fred Drake9f715822001-07-11 06:27:00 +0000798if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000799then
800 AC_DEFINE(Py_DEBUG, 1,
801 [Define if you want to build an interpreter with many run-time checks.])
802 AC_MSG_RESULT(yes);
803 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000804else AC_MSG_RESULT(no); Py_DEBUG='false'
805fi],
806[AC_MSG_RESULT(no)])
807
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
809# merged with this chunk of code?
810
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000811# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812# ------------------------
813# (The following bit of code is complicated enough - please keep things
814# indented properly. Just pretend you're editing Python code. ;-)
815
816# There are two parallel sets of case statements below, one that checks to
817# see if OPT was set and one that does BASECFLAGS setting based upon
818# compiler and platform. BASECFLAGS tweaks need to be made even if the
819# user set OPT.
820
821# tweak OPT based on compiler and platform, only if the user didn't set
822# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000823AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000824if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000825then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 case $GCC in
827 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000828 if test "$CC" != 'g++' ; then
829 STRICT_PROTO="-Wstrict-prototypes"
830 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000831 # For gcc 4.x we need to use -fwrapv so lets check if its supported
832 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
833 WRAP="-fwrapv"
834 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000836 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000837 if test "$Py_DEBUG" = 'true' ; then
838 # Optimization messes up debuggers, so turn it off for
839 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000840 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000841 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000842 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843 fi
844 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000846 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000848 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000849 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 SCO_SV*) OPT="$OPT -m486 -DSCO5"
851 ;;
852 esac
Fred Drake9f715822001-07-11 06:27:00 +0000853 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000855 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 OPT="-O"
857 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000858 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000859
860 # The current (beta) Monterey compiler dies with optimizations
861 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000862 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000863 Monterey*)
864 OPT=""
865 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000866 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867
Guido van Rossum4e8af441994-08-19 15:33:54 +0000868fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000869
Skip Montanarodecc6a42003-01-01 20:07:49 +0000870AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000871
872# The -arch flags for universal builds on OSX
873UNIVERSAL_ARCH_FLAGS=
874AC_SUBST(UNIVERSAL_ARCH_FLAGS)
875
Skip Montanarodecc6a42003-01-01 20:07:49 +0000876# tweak BASECFLAGS based on compiler and platform
877case $GCC in
878yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000879 # Python violates C99 rules, by casting between incompatible
880 # pointer types. GCC may generate bad code as a result of that,
881 # so use -fno-strict-aliasing if supported.
882 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
883 ac_save_cc="$CC"
884 CC="$CC -fno-strict-aliasing"
885 AC_TRY_RUN([int main() { return 0; }],
886 ac_cv_no_strict_aliasing_ok=yes,
887 ac_cv_no_strict_aliasing_ok=no,
888 ac_cv_no_strict_aliasing_ok=no)
889 CC="$ac_save_cc"
890 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
891 if test $ac_cv_no_strict_aliasing_ok = yes
892 then
893 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
894 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000895
896 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
897 # support. Without this, treatment of subnormals doesn't follow
898 # the standard.
899 case $ac_sys_machine in
900 alpha*)
901 BASECFLAGS="$BASECFLAGS -mieee"
902 ;;
903 esac
904
Skip Montanarodecc6a42003-01-01 20:07:49 +0000905 case $ac_sys_system in
906 SCO_SV*)
907 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
908 ;;
909 # is there any other compiler on Darwin besides gcc?
910 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000911 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
912 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000913
914
Ronald Oussoren988117f2006-04-29 11:31:35 +0000915 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000916 UNIVERSAL_ARCH_FLAGS=""
917 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
918 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000919 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000920
921 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
922 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren461f2202009-09-06 10:54:28 +0000923 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000924
925 elif test "$UNIVERSAL_ARCHS" = "all" ; then
926 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000927 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000928
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000929 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
930 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
931 ARCH_RUN_32BIT="arch -i386"
932
933 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
934 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
935 ARCH_RUN_32BIT="arch -i386 -ppc"
936
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000937 else
938 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
939
940 fi
941
942
943 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000944 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000945 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
946 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
947 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000948 fi
949
Benjamin Peterson4347c442008-07-17 15:59:24 +0000950 # Calculate the right deployment target for this build.
951 #
952 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
953 if test ${cur_target} '>' 10.2; then
954 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +0000955 if test ${enable_universalsdk}; then
956 if test "${UNIVERSAL_ARCHS}" = "all"; then
957 # Ensure that the default platform for a
958 # 4-way universal build is OSX 10.5,
959 # that's the first OS release where
960 # 4-way builds make sense.
961 cur_target='10.5'
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000962
963 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
964 cur_target='10.5'
965
966 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
967 cur_target='10.5'
968
969 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
970 cur_target='10.5'
Ronald Oussoren461f2202009-09-06 10:54:28 +0000971 fi
972 else
973 if test `arch` = "i386"; then
974 # On Intel macs default to a deployment
975 # target of 10.4, that's the first OSX
976 # release with Intel support.
977 cur_target="10.4"
978 fi
979 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +0000980 fi
981 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
982
983 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
984 # environment with a value that is the same as what we'll use
985 # in the Makefile to ensure that we'll get the same compiler
986 # environment during configure and build time.
987 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
988 export MACOSX_DEPLOYMENT_TARGET
989 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
990
Skip Montanarodecc6a42003-01-01 20:07:49 +0000991 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000992 OSF*)
993 BASECFLAGS="$BASECFLAGS -mieee"
994 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000995 esac
996 ;;
997
998*)
999 case $ac_sys_system in
1000 OpenUNIX*|UnixWare*)
1001 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1002 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001003 OSF*)
1004 BASECFLAGS="$BASECFLAGS -ieee -std"
1005 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001006 SCO_SV*)
1007 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1008 ;;
1009 esac
1010 ;;
1011esac
1012
Fred Drakee1ceaa02001-12-04 20:55:47 +00001013if test "$Py_DEBUG" = 'true'; then
1014 :
1015else
1016 OPT="-DNDEBUG $OPT"
1017fi
1018
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001019if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001020then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001021 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001022fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001023
Neal Norwitz020c46a2006-01-07 21:39:28 +00001024# disable check for icc since it seems to pass, but generates a warning
1025if test "$CC" = icc
1026then
1027 ac_cv_opt_olimit_ok=no
1028fi
1029
Guido van Rossum91922671997-10-09 20:24:13 +00001030AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1031AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1032[ac_save_cc="$CC"
1033CC="$CC -OPT:Olimit=0"
1034AC_TRY_RUN([int main() { return 0; }],
1035 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001036 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001037 ac_cv_opt_olimit_ok=no)
1038CC="$ac_save_cc"])
1039AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001040if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001041 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001042 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1043 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1044 # environment?
1045 Darwin*)
1046 ;;
1047 *)
1048 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1049 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001050 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001051else
1052 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1053 AC_CACHE_VAL(ac_cv_olimit_ok,
1054 [ac_save_cc="$CC"
1055 CC="$CC -Olimit 1500"
1056 AC_TRY_RUN([int main() { return 0; }],
1057 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001058 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001059 ac_cv_olimit_ok=no)
1060 CC="$ac_save_cc"])
1061 AC_MSG_RESULT($ac_cv_olimit_ok)
1062 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001063 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001064 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001065fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001066
Martin v. Löwisaac13162006-10-19 10:58:46 +00001067# Check whether GCC supports PyArg_ParseTuple format
1068if test "$GCC" = "yes"
1069then
1070 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1071 save_CFLAGS=$CFLAGS
1072 CFLAGS="$CFLAGS -Werror"
1073 AC_TRY_COMPILE([
1074 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1075 ],,
1076 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1077 AC_MSG_RESULT(yes),
1078 AC_MSG_RESULT(no)
1079 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001080 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001081fi
1082
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001083# On some compilers, pthreads are available without further options
1084# (e.g. MacOS X). On some of these systems, the compiler will not
1085# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1086# So we have to see first whether pthreads are available without
1087# options before we can check whether -Kpthread improves anything.
1088AC_MSG_CHECKING(whether pthreads are available without options)
1089AC_CACHE_VAL(ac_cv_pthread_is_default,
1090[AC_TRY_RUN([
1091#include <pthread.h>
1092
1093void* routine(void* p){return NULL;}
1094
1095int main(){
1096 pthread_t p;
1097 if(pthread_create(&p,NULL,routine,NULL)!=0)
1098 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001099 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001100 return 0;
1101}
1102],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001103[
1104 ac_cv_pthread_is_default=yes
1105 ac_cv_kthread=no
1106 ac_cv_pthread=no
1107],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001108 ac_cv_pthread_is_default=no,
1109 ac_cv_pthread_is_default=no)
1110])
1111AC_MSG_RESULT($ac_cv_pthread_is_default)
1112
1113
1114if test $ac_cv_pthread_is_default = yes
1115then
1116 ac_cv_kpthread=no
1117else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001118# -Kpthread, if available, provides the right #defines
1119# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001120# Some compilers won't report that they do not support -Kpthread,
1121# so we need to run a program to see whether it really made the
1122# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001123AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1124AC_CACHE_VAL(ac_cv_kpthread,
1125[ac_save_cc="$CC"
1126CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001127AC_TRY_RUN([
1128#include <pthread.h>
1129
1130void* routine(void* p){return NULL;}
1131
1132int main(){
1133 pthread_t p;
1134 if(pthread_create(&p,NULL,routine,NULL)!=0)
1135 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001136 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001137 return 0;
1138}
1139],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001140 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001141 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001142 ac_cv_kpthread=no)
1143CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001144AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001145fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001146
Skip Montanarod8d39a02003-07-10 20:44:10 +00001147if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001148then
1149# -Kthread, if available, provides the right #defines
1150# and linker options to make pthread_create available
1151# Some compilers won't report that they do not support -Kthread,
1152# so we need to run a program to see whether it really made the
1153# function available.
1154AC_MSG_CHECKING(whether $CC accepts -Kthread)
1155AC_CACHE_VAL(ac_cv_kthread,
1156[ac_save_cc="$CC"
1157CC="$CC -Kthread"
1158AC_TRY_RUN([
1159#include <pthread.h>
1160
1161void* routine(void* p){return NULL;}
1162
1163int main(){
1164 pthread_t p;
1165 if(pthread_create(&p,NULL,routine,NULL)!=0)
1166 return 1;
1167 (void)pthread_detach(p);
1168 return 0;
1169}
1170],
1171 ac_cv_kthread=yes,
1172 ac_cv_kthread=no,
1173 ac_cv_kthread=no)
1174CC="$ac_save_cc"])
1175AC_MSG_RESULT($ac_cv_kthread)
1176fi
1177
Skip Montanarod8d39a02003-07-10 20:44:10 +00001178if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001179then
1180# -pthread, if available, provides the right #defines
1181# and linker options to make pthread_create available
1182# Some compilers won't report that they do not support -pthread,
1183# so we need to run a program to see whether it really made the
1184# function available.
1185AC_MSG_CHECKING(whether $CC accepts -pthread)
1186AC_CACHE_VAL(ac_cv_thread,
1187[ac_save_cc="$CC"
1188CC="$CC -pthread"
1189AC_TRY_RUN([
1190#include <pthread.h>
1191
1192void* routine(void* p){return NULL;}
1193
1194int main(){
1195 pthread_t p;
1196 if(pthread_create(&p,NULL,routine,NULL)!=0)
1197 return 1;
1198 (void)pthread_detach(p);
1199 return 0;
1200}
1201],
1202 ac_cv_pthread=yes,
1203 ac_cv_pthread=no,
1204 ac_cv_pthread=no)
1205CC="$ac_save_cc"])
1206AC_MSG_RESULT($ac_cv_pthread)
1207fi
1208
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001209# If we have set a CC compiler flag for thread support then
1210# check if it works for CXX, too.
1211ac_cv_cxx_thread=no
1212if test ! -z "$CXX"
1213then
1214AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1215ac_save_cxx="$CXX"
1216
1217if test "$ac_cv_kpthread" = "yes"
1218then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001219 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001220 ac_cv_cxx_thread=yes
1221elif test "$ac_cv_kthread" = "yes"
1222then
1223 CXX="$CXX -Kthread"
1224 ac_cv_cxx_thread=yes
1225elif test "$ac_cv_pthread" = "yes"
1226then
1227 CXX="$CXX -pthread"
1228 ac_cv_cxx_thread=yes
1229fi
1230
1231if test $ac_cv_cxx_thread = yes
1232then
1233 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1234 $CXX -c conftest.$ac_ext 2>&5
1235 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1236 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1237 then
1238 ac_cv_cxx_thread=yes
1239 else
1240 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001241 fi
1242 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001243fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001244AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001245fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001246CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001247
Fred Drakece81d592000-07-09 14:39:29 +00001248dnl # check for ANSI or K&R ("traditional") preprocessor
1249dnl AC_MSG_CHECKING(for C preprocessor type)
1250dnl AC_TRY_COMPILE([
1251dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1252dnl int foo;
1253dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1254dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1255dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001256
Guido van Rossum627b2d71993-12-24 10:39:16 +00001257# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001258AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001259AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1260fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001261ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001262shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001263unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001264sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1265sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001266sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001267sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001268sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001269sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001270bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001271AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001272AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001273
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001274# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001275AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001276#ifdef HAVE_CURSES_H
1277#include <curses.h>
1278#endif
1279])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001280
Martin v. Löwis11017b12006-01-14 18:12:57 +00001281# On Linux, netlink.h requires asm/types.h
1282AC_CHECK_HEADERS(linux/netlink.h,,,[
1283#ifdef HAVE_ASM_TYPES_H
1284#include <asm/types.h>
1285#endif
1286#ifdef HAVE_SYS_SOCKET_H
1287#include <sys/socket.h>
1288#endif
1289])
1290
Guido van Rossum627b2d71993-12-24 10:39:16 +00001291# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001292was_it_defined=no
1293AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001294AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1295 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1296])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001297AC_MSG_RESULT($was_it_defined)
1298
Neal Norwitz11690112002-07-30 01:08:28 +00001299# Check whether using makedev requires defining _OSF_SOURCE
1300AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001301AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001302 [ makedev(0, 0) ],
1303 ac_cv_has_makedev=yes,
1304 ac_cv_has_makedev=no)
1305if test "$ac_cv_has_makedev" = "no"; then
1306 # we didn't link, try if _OSF_SOURCE will allow us to link
1307 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001308#define _OSF_SOURCE 1
1309#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001310 ],
1311 [ makedev(0, 0) ],
1312 ac_cv_has_makedev=yes,
1313 ac_cv_has_makedev=no)
1314 if test "$ac_cv_has_makedev" = "yes"; then
1315 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1316 fi
1317fi
1318AC_MSG_RESULT($ac_cv_has_makedev)
1319if test "$ac_cv_has_makedev" = "yes"; then
1320 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1321fi
1322
Martin v. Löwis399a6892002-10-04 10:22:02 +00001323# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1324# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1325# defined, but the compiler does not support pragma redefine_extname,
1326# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1327# structures (such as rlimit64) without declaring them. As a
1328# work-around, disable LFS on such configurations
1329
1330use_lfs=yes
1331AC_MSG_CHECKING(Solaris LFS bug)
1332AC_TRY_COMPILE([
1333#define _LARGEFILE_SOURCE 1
1334#define _FILE_OFFSET_BITS 64
1335#include <sys/resource.h>
1336],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1337AC_MSG_RESULT($sol_lfs_bug)
1338if test "$sol_lfs_bug" = "yes"; then
1339 use_lfs=no
1340fi
1341
1342if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001343# Two defines needed to enable largefile support on various platforms
1344# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001345AC_DEFINE(_LARGEFILE_SOURCE, 1,
1346[This must be defined on some systems to enable large file support.])
1347AC_DEFINE(_FILE_OFFSET_BITS, 64,
1348[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001349fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001350
Guido van Rossum300fda71996-08-19 21:58:16 +00001351# Add some code to confdefs.h so that the test for off_t works on SCO
1352cat >> confdefs.h <<\EOF
1353#if defined(SCO_DS)
1354#undef _OFF_T
1355#endif
1356EOF
1357
Guido van Rossumef2255b2000-03-10 22:30:29 +00001358# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001359AC_TYPE_MODE_T
1360AC_TYPE_OFF_T
1361AC_TYPE_PID_T
1362AC_TYPE_SIGNAL
1363AC_TYPE_SIZE_T
1364AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001365AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001366 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001367
Guido van Rossumef2255b2000-03-10 22:30:29 +00001368# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001369# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001370AC_CHECK_SIZEOF(int, 4)
1371AC_CHECK_SIZEOF(long, 4)
1372AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001373AC_CHECK_SIZEOF(short, 2)
1374AC_CHECK_SIZEOF(float, 4)
1375AC_CHECK_SIZEOF(double, 8)
1376AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001377AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001378AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001379
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001380AC_MSG_CHECKING(for long long support)
1381have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001382AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1383 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1384 have_long_long=yes
1385])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001386AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001387if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001388AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001389fi
1390
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001391AC_MSG_CHECKING(for long double support)
1392have_long_double=no
1393AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1394 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1395 have_long_double=yes
1396])
1397AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001398if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001399AC_CHECK_SIZEOF(long double, 12)
1400fi
1401
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001402AC_MSG_CHECKING(for _Bool support)
1403have_c99_bool=no
1404AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1405 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1406 have_c99_bool=yes
1407])
1408AC_MSG_RESULT($have_c99_bool)
1409if test "$have_c99_bool" = yes ; then
1410AC_CHECK_SIZEOF(_Bool, 1)
1411fi
1412
Martin v. Löwisebe26702006-10-02 14:55:51 +00001413AC_CHECK_TYPES(uintptr_t,
1414 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001415 [], [#ifdef HAVE_STDINT_H
1416 #include <stdint.h>
1417 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001418
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001419
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001420# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1421AC_MSG_CHECKING(size of off_t)
1422AC_CACHE_VAL(ac_cv_sizeof_off_t,
1423[AC_TRY_RUN([#include <stdio.h>
1424#include <sys/types.h>
1425main()
1426{
1427 FILE *f=fopen("conftestval", "w");
1428 if (!f) exit(1);
1429 fprintf(f, "%d\n", sizeof(off_t));
1430 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001431}],
1432ac_cv_sizeof_off_t=`cat conftestval`,
1433ac_cv_sizeof_off_t=0,
1434ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001435])
1436AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001437AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1438[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001439
1440AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001441if test "$have_long_long" = yes -a \
1442 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1443 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001444 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1445 [Defined to enable large file support when an off_t is bigger than a long
1446 and long long is available and at least as big as an off_t. You may need
1447 to add some flags for configuration and compilation to enable this mode.
1448 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001449 AC_MSG_RESULT(yes)
1450else
1451 AC_MSG_RESULT(no)
1452fi
1453
Fred Drakea3f6e912000-06-29 20:44:47 +00001454# AC_CHECK_SIZEOF() doesn't include <time.h>.
1455AC_MSG_CHECKING(size of time_t)
1456AC_CACHE_VAL(ac_cv_sizeof_time_t,
1457[AC_TRY_RUN([#include <stdio.h>
1458#include <time.h>
1459main()
1460{
1461 FILE *f=fopen("conftestval", "w");
1462 if (!f) exit(1);
1463 fprintf(f, "%d\n", sizeof(time_t));
1464 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001465}],
1466ac_cv_sizeof_time_t=`cat conftestval`,
1467ac_cv_sizeof_time_t=0,
1468ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001469])
1470AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001471AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1472[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001473
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001474
Trent Mick635f6fb2000-08-23 21:33:05 +00001475# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001476ac_save_cc="$CC"
1477if test "$ac_cv_kpthread" = "yes"
1478then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001479elif test "$ac_cv_kthread" = "yes"
1480then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001481elif test "$ac_cv_pthread" = "yes"
1482then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001483fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001484AC_MSG_CHECKING(for pthread_t)
1485have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001486AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001487AC_MSG_RESULT($have_pthread_t)
1488if test "$have_pthread_t" = yes ; then
1489 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1490 AC_MSG_CHECKING(size of pthread_t)
1491 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1492 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001493#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001494 main()
1495 {
1496 FILE *f=fopen("conftestval", "w");
1497 if (!f) exit(1);
1498 fprintf(f, "%d\n", sizeof(pthread_t));
1499 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001500 }],
1501 ac_cv_sizeof_pthread_t=`cat conftestval`,
1502 ac_cv_sizeof_pthread_t=0,
1503 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001504 ])
1505 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001506 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1507 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001508fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001509CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001510
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001511AC_MSG_CHECKING(for --enable-toolbox-glue)
1512AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001513 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001514
1515if test -z "$enable_toolbox_glue"
1516then
1517 case $ac_sys_system/$ac_sys_release in
1518 Darwin/*)
1519 enable_toolbox_glue="yes";;
1520 *)
1521 enable_toolbox_glue="no";;
1522 esac
1523fi
1524case "$enable_toolbox_glue" in
1525yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001526 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001527 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001528 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1529 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001530 ;;
1531*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001532 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001533 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001534 ;;
1535esac
1536AC_MSG_RESULT($enable_toolbox_glue)
1537
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001538
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001539AC_SUBST(OTHER_LIBTOOL_OPT)
1540case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001541 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001542 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1543 ;;
1544 Darwin/*)
1545 OTHER_LIBTOOL_OPT=""
1546 ;;
1547esac
1548
Ronald Oussoren461f2202009-09-06 10:54:28 +00001549
1550ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001551AC_SUBST(LIBTOOL_CRUFT)
1552case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001553 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001554 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1555 if test "${enable_universalsdk}"; then
1556 :
1557 else
Ronald Oussoren461f2202009-09-06 10:54:28 +00001558 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001559 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001560 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001561 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001562 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001563 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1564 if test ${gcc_version} '<' 4.0
1565 then
1566 LIBTOOL_CRUFT="-lcc_dynamic"
1567 else
1568 LIBTOOL_CRUFT=""
1569 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001570 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001571 #include <unistd.h>
1572 int main(int argc, char*argv[])
1573 {
1574 if (sizeof(long) == 4) {
1575 return 0;
1576 } else {
1577 return 1;
1578 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001579 }
1580 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001581 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001582 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001583
1584 if test "${ac_osx_32bit}" = "yes"; then
1585 case `arch` in
1586 i386)
1587 MACOSX_DEFAULT_ARCH="i386"
1588 ;;
1589 ppc)
1590 MACOSX_DEFAULT_ARCH="ppc"
1591 ;;
1592 *)
1593 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1594 ;;
1595 esac
1596 else
1597 case `arch` in
1598 i386)
1599 MACOSX_DEFAULT_ARCH="x86_64"
1600 ;;
1601 ppc)
1602 MACOSX_DEFAULT_ARCH="ppc64"
1603 ;;
1604 *)
1605 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1606 ;;
1607 esac
1608
1609 #ARCH_RUN_32BIT="true"
1610 fi
1611
1612 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001613 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001614 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001615esac
1616
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001617AC_MSG_CHECKING(for --enable-framework)
1618if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001619then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001620 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001621 # -F. is needed to allow linking to the framework while
1622 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001623 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1624 [Define if you want to produce an OpenStep/Rhapsody framework
1625 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001626 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001627 if test $enable_shared = "yes"
1628 then
1629 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1630 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001631else
1632 AC_MSG_RESULT(no)
1633fi
1634
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001635AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001636case $ac_sys_system/$ac_sys_release in
1637 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001638 AC_DEFINE(WITH_DYLD, 1,
1639 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1640 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1641 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001642 AC_MSG_RESULT(always on for Darwin)
1643 ;;
1644 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001645 AC_MSG_RESULT(no)
1646 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001647esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001648
Guido van Rossumac405f61994-09-12 10:56:06 +00001649# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001650AC_SUBST(SO)
1651AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001652AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001653AC_SUBST(CCSHARED)
1654AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001655# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001656# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001657AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001658if test -z "$SO"
1659then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001660 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001661 hp*|HP*)
1662 case `uname -m` in
1663 ia64) SO=.so;;
1664 *) SO=.sl;;
1665 esac
1666 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001667 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001668 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001669 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001670else
1671 # this might also be a termcap variable, see #610332
1672 echo
1673 echo '====================================================================='
1674 echo '+ +'
1675 echo '+ WARNING: You have set SO in your environment. +'
1676 echo '+ Do you really mean to change the extension for shared libraries? +'
1677 echo '+ Continuing in 10 seconds to let you to ponder. +'
1678 echo '+ +'
1679 echo '====================================================================='
1680 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001681fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001682AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001683
Neal Norwitz58e28882006-05-19 07:00:58 +00001684AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001685# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001686# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001687# (Shared libraries in this instance are shared modules to be loaded into
1688# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001689AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001690if test -z "$LDSHARED"
1691then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001692 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001693 AIX*)
1694 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001695 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001696 ;;
1697 BeOS*)
1698 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001699 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001700 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001701 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001702 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001703 SunOS/5*)
1704 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001705 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001706 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001707 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001708 hp*|HP*)
1709 if test "$GCC" = "yes"
1710 then LDSHARED='$(CC) -shared'
1711 else LDSHARED='ld -b';
1712 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001713 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001714 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001715 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1716 if test "$enable_framework" ; then
1717 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001718 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1719 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001720 else
1721 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001722 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001723 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001724 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001725 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1726 if test "$enable_framework" ; then
1727 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001728 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1729 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001730 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001731 # No framework, use the Python app as bundle-loader
1732 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001733 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001734 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001735 Darwin/*)
1736 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1737 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001738
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001739 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001740 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001741 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001742 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001743 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001744 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1745 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001746 else
1747 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1748 if test "$enable_framework" ; then
1749 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001750 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1751 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001752 else
1753 # No framework, use the Python app as bundle-loader
1754 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1755 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1756 fi
1757 fi
1758 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001759 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001760 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001761 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001762 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001763 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001764 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001765 else
1766 LDSHARED="ld -Bshareable ${LDFLAGS}"
1767 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001768 OpenBSD*)
1769 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1770 then
1771 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1772 else
1773 case `uname -r` in
1774 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1775 LDSHARED="ld -Bshareable ${LDFLAGS}"
1776 ;;
1777 *)
1778 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1779 ;;
1780 esac
1781 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001782 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001783 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001784 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001785 then LDSHARED='$(CC) -shared'
1786 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001787 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001788 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001789 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001790 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001791 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001792 *) LDSHARED="ld";;
1793 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001794fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001795AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001796BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001797# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001798# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001799AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001800if test -z "$CCSHARED"
1801then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001802 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001803 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001804 then CCSHARED="-fPIC";
1805 elif test `uname -p` = sparc;
1806 then CCSHARED="-xcode=pic32";
1807 else CCSHARED="-Kpic";
1808 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001809 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001810 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001811 else CCSHARED="+z";
1812 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001813 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001814 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001815 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001816 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001817 if test "$GCC" = "yes"
1818 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001819 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001820 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001821 SCO_SV*)
1822 if test "$GCC" = "yes"
1823 then CCSHARED="-fPIC"
1824 else CCSHARED="-Kpic -belf"
1825 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001826 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001827 IRIX*/6*) case $CC in
1828 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001829 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001830 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001831 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001832 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001833fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001834AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001835# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001836# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001837AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001838if test -z "$LINKFORSHARED"
1839then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001840 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001841 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001842 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001843 LINKFORSHARED="-Wl,-E -Wl,+s";;
1844# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001845 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001846 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001847 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001848 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001849 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1850 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001851 # not used by the core itself but which needs to be in the core so
1852 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001853 # -prebind is no longer used, because it actually seems to give a
1854 # slowdown in stead of a speedup, maybe due to the large number of
1855 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001856
1857 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001858 if test "$enable_framework"
1859 then
Jack Jansenda49e192005-01-07 13:08:22 +00001860 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001861 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001862 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001863 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001864 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001865 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001866 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001867 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1868 then
1869 LINKFORSHARED="-Wl,--export-dynamic"
1870 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001871 SunOS/5*) case $CC in
1872 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001873 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001874 then
1875 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001876 fi;;
1877 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001878 CYGWIN*)
1879 if test $enable_shared = "no"
1880 then
1881 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1882 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001883 QNX*)
1884 # -Wl,-E causes the symbols to be added to the dynamic
1885 # symbol table so that they can be found when a module
1886 # is loaded. -N 2048K causes the stack size to be set
1887 # to 2048 kilobytes so that the stack doesn't overflow
1888 # when running test_compile.py.
1889 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001890 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001891fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001892AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001893
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001894
Neil Schemenauer61c51152001-01-26 16:18:16 +00001895AC_SUBST(CFLAGSFORSHARED)
1896AC_MSG_CHECKING(CFLAGSFORSHARED)
1897if test ! "$LIBRARY" = "$LDLIBRARY"
1898then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001899 case $ac_sys_system in
1900 CYGWIN*)
1901 # Cygwin needs CCSHARED when building extension DLLs
1902 # but not when building the interpreter DLL.
1903 CFLAGSFORSHARED='';;
1904 *)
1905 CFLAGSFORSHARED='$(CCSHARED)'
1906 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001907fi
1908AC_MSG_RESULT($CFLAGSFORSHARED)
1909
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001910# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1911# library (with --enable-shared).
1912# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001913# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1914# if it is not required, since it creates a dependency of the shared library
1915# to LIBS. This, in turn, means that applications linking the shared libpython
1916# don't need to link LIBS explicitly. The default should be only changed
1917# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001918AC_SUBST(SHLIBS)
1919AC_MSG_CHECKING(SHLIBS)
1920case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001921 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001922 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001923esac
1924AC_MSG_RESULT($SHLIBS)
1925
1926
Guido van Rossum627b2d71993-12-24 10:39:16 +00001927# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001928AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1929AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001930
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00001931# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001932if test "$with_threads" = "yes" -o -z "$with_threads"; then
1933 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1934 # posix4 on Solaris 2.6
1935 # pthread (first!) on Linux
1936fi
1937
Martin v. Löwis19d17342003-06-14 21:03:05 +00001938# check if we need libintl for locale functions
1939AC_CHECK_LIB(intl, textdomain,
1940 AC_DEFINE(WITH_LIBINTL, 1,
1941 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001942
1943# checks for system dependent C++ extensions support
1944case "$ac_sys_system" in
1945 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1946 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1947 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001948 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1949 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1950 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001951 AC_MSG_RESULT(yes)],
1952 [AC_MSG_RESULT(no)]);;
1953 *) ;;
1954esac
1955
Guido van Rossum70c7f481998-03-26 18:44:10 +00001956# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001957# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001958AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001959AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001960
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001961case "$ac_sys_system" in
1962BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001963AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1964;;
1965esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001966
Guido van Rossumc5a39031996-07-31 17:35:03 +00001967AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001968AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001969 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1970[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001971AC_MSG_RESULT($withval)
1972LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001973],
1974[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001975
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001976# Check for use of the system libffi library
1977AC_MSG_CHECKING(for --with-system-ffi)
1978AC_ARG_WITH(system_ffi,
1979 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1980
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001981AC_MSG_RESULT($with_system_ffi)
1982
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001983# Determine if signalmodule should be used.
1984AC_SUBST(USE_SIGNAL_MODULE)
1985AC_SUBST(SIGNAL_OBJS)
1986AC_MSG_CHECKING(for --with-signal-module)
1987AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001988 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001989
1990if test -z "$with_signal_module"
1991then with_signal_module="yes"
1992fi
1993AC_MSG_RESULT($with_signal_module)
1994
1995if test "${with_signal_module}" = "yes"; then
1996 USE_SIGNAL_MODULE=""
1997 SIGNAL_OBJS=""
1998else
1999 USE_SIGNAL_MODULE="#"
2000 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2001fi
2002
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002003# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002004AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002005USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002006
Guido van Rossum54d93d41997-01-22 20:51:58 +00002007AC_MSG_CHECKING(for --with-dec-threads)
2008AC_SUBST(LDLAST)
2009AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002010 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2011[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002012AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002013LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002014if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002015 with_thread="$withval";
2016fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002017[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002018
Martin v. Löwis11437992002-04-12 09:54:03 +00002019# Templates for things AC_DEFINEd more than once.
2020# For a single AC_DEFINE, no template is needed.
2021AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2022AH_TEMPLATE(_REENTRANT,
2023 [Define to force use of thread-safe errno, h_errno, and other functions])
2024AH_TEMPLATE(WITH_THREAD,
2025 [Define if you want to compile in rudimentary thread support])
2026
Guido van Rossum54d93d41997-01-22 20:51:58 +00002027AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002028dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002029AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002030 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002031
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002032# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002033dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002034AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002035 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2036 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002037
2038if test -z "$with_threads"
2039then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002040fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002041AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002042
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002043AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002044if test "$with_threads" = "no"
2045then
2046 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002047elif test "$ac_cv_pthread_is_default" = yes
2048then
2049 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002050 # Defining _REENTRANT on system with POSIX threads should not hurt.
2051 AC_DEFINE(_REENTRANT)
2052 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002053 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002054elif test "$ac_cv_kpthread" = "yes"
2055then
2056 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002057 if test "$ac_cv_cxx_thread" = "yes"; then
2058 CXX="$CXX -Kpthread"
2059 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002060 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002061 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002062 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002063elif test "$ac_cv_kthread" = "yes"
2064then
2065 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002066 if test "$ac_cv_cxx_thread" = "yes"; then
2067 CXX="$CXX -Kthread"
2068 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002069 AC_DEFINE(WITH_THREAD)
2070 posix_threads=yes
2071 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002072elif test "$ac_cv_pthread" = "yes"
2073then
2074 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002075 if test "$ac_cv_cxx_thread" = "yes"; then
2076 CXX="$CXX -pthread"
2077 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002078 AC_DEFINE(WITH_THREAD)
2079 posix_threads=yes
2080 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002081else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002082 if test ! -z "$with_threads" -a -d "$with_threads"
2083 then LDFLAGS="$LDFLAGS -L$with_threads"
2084 fi
2085 if test ! -z "$withval" -a -d "$withval"
2086 then LDFLAGS="$LDFLAGS -L$withval"
2087 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002088
2089 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002090 # define _POSIX_THREADS in unistd.h. Some apparently don't
2091 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002092 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2093 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002094 [
2095#include <unistd.h>
2096#ifdef _POSIX_THREADS
2097yes
2098#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002099 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2100 AC_MSG_RESULT($unistd_defines_pthreads)
2101
Martin v. Löwis130fb172001-07-19 11:00:41 +00002102 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002103 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2104 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002105 AC_DEFINE(HURD_C_THREADS, 1,
2106 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002107 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002108 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002109 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2110 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002111 AC_DEFINE(MACH_C_THREADS, 1,
2112 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002113 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002114 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002115 AC_ARG_WITH([pth],
2116 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2117 [AC_MSG_RESULT($withval)
2118 AC_DEFINE([WITH_THREAD])
2119 AC_DEFINE([HAVE_PTH], 1,
2120 [Define if you have GNU PTH threads.])
2121 LIBS="-lpth $LIBS"
2122 THREADOBJ="Python/thread.o"],
2123 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002124
2125 # Just looking for pthread_create in libpthread is not enough:
2126 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2127 # So we really have to include pthread.h, and then link.
2128 _libs=$LIBS
2129 LIBS="$LIBS -lpthread"
2130 AC_MSG_CHECKING([for pthread_create in -lpthread])
2131 AC_TRY_LINK([#include <pthread.h>
2132
2133void * start_routine (void *arg) { exit (0); }], [
2134pthread_create (NULL, NULL, start_routine, NULL)], [
2135 AC_MSG_RESULT(yes)
2136 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002137 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002138 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002139 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002140 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002141 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002142 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002143 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2144 AC_DEFINE(ATHEOS_THREADS, 1,
2145 [Define this if you have AtheOS threads.])
2146 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002147 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002148 AC_DEFINE(BEOS_THREADS, 1,
2149 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002150 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002151 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002152 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002153 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002154 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002155 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002156 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002157 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002158 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002159 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002160 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002161 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002162 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002163 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002164 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002165 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002166 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002167 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002168 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002169
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002170 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2171 LIBS="$LIBS -lmpc"
2172 THREADOBJ="Python/thread.o"
2173 USE_THREAD_MODULE=""])
2174
2175 if test "$posix_threads" != "yes"; then
2176 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2177 LIBS="$LIBS -lthread"
2178 THREADOBJ="Python/thread.o"
2179 USE_THREAD_MODULE=""])
2180 fi
2181
2182 if test "$USE_THREAD_MODULE" != "#"
2183 then
2184 # If the above checks didn't disable threads, (at least) OSF1
2185 # needs this '-threads' argument during linking.
2186 case $ac_sys_system in
2187 OSF1) LDLAST=-threads;;
2188 esac
2189 fi
2190fi
2191
2192if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002193 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002194 AC_DEFINE(_POSIX_THREADS, 1,
2195 [Define if you have POSIX threads,
2196 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002197 fi
2198
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002199 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2200 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002201 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2202 Defined for Solaris 2.6 bug in pthread header.)
2203 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002204 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002205 Define if the Posix semaphores do not work on your system)
2206 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002207 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2208 Define if the Posix semaphores do not work on your system)
2209 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002210 esac
2211
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002212 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2213 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2214 [AC_TRY_RUN([#include <pthread.h>
2215 void *foo(void *parm) {
2216 return NULL;
2217 }
2218 main() {
2219 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002220 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002221 if (pthread_attr_init(&attr)) exit(-1);
2222 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002223 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002224 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002225 }],
2226 ac_cv_pthread_system_supported=yes,
2227 ac_cv_pthread_system_supported=no,
2228 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002229 ])
2230 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2231 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002232 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002233 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002234 AC_CHECK_FUNCS(pthread_sigmask,
2235 [case $ac_sys_system in
2236 CYGWIN*)
2237 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2238 [Define if pthread_sigmask() does not work on your system.])
2239 ;;
2240 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002241fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002242
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002243
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002244# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002245AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002246AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002247AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002248[ --enable-ipv6 Enable ipv6 (with ipv4) support
2249 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002250[ case "$enableval" in
2251 no)
2252 AC_MSG_RESULT(no)
2253 ipv6=no
2254 ;;
2255 *) AC_MSG_RESULT(yes)
2256 AC_DEFINE(ENABLE_IPV6)
2257 ipv6=yes
2258 ;;
2259 esac ],
2260
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002261[
2262dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263 AC_TRY_RUN([ /* AF_INET6 available check */
2264#include <sys/types.h>
2265#include <sys/socket.h>
2266main()
2267{
2268 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2269 exit(1);
2270 else
2271 exit(0);
2272}
2273],
2274 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002275 ipv6=yes,
2276 AC_MSG_RESULT(no)
2277 ipv6=no,
2278 AC_MSG_RESULT(no)
2279 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002280)
2281
2282if test "$ipv6" = "yes"; then
2283 AC_MSG_CHECKING(if RFC2553 API is available)
2284 AC_TRY_COMPILE([#include <sys/types.h>
2285#include <netinet/in.h>],
2286 [struct sockaddr_in6 x;
2287x.sin6_scope_id;],
2288 AC_MSG_RESULT(yes)
2289 ipv6=yes,
2290 AC_MSG_RESULT(no, IPv6 disabled)
2291 ipv6=no)
2292fi
2293
2294if test "$ipv6" = "yes"; then
2295 AC_DEFINE(ENABLE_IPV6)
2296fi
2297])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002298
2299ipv6type=unknown
2300ipv6lib=none
2301ipv6trylibc=no
2302
2303if test "$ipv6" = "yes"; then
2304 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002305 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2306 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002307 case $i in
2308 inria)
2309 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002310 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311#include <netinet/in.h>
2312#ifdef IPV6_INRIA_VERSION
2313yes
2314#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002315 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002316 ;;
2317 kame)
2318 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002319 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002320#include <netinet/in.h>
2321#ifdef __KAME__
2322yes
2323#endif],
2324 [ipv6type=$i;
2325 ipv6lib=inet6
2326 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002327 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002328 ;;
2329 linux-glibc)
2330 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002331 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002332#include <features.h>
2333#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2334yes
2335#endif],
2336 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002337 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002338 ;;
2339 linux-inet6)
2340 dnl http://www.v6.linux.or.jp/
2341 if test -d /usr/inet6; then
2342 ipv6type=$i
2343 ipv6lib=inet6
2344 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002345 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002346 fi
2347 ;;
2348 solaris)
2349 if test -f /etc/netconfig; then
2350 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2351 ipv6type=$i
2352 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002353 fi
2354 fi
2355 ;;
2356 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002357 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002358#include <sys/param.h>
2359#ifdef _TOSHIBA_INET6
2360yes
2361#endif],
2362 [ipv6type=$i;
2363 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002364 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002365 ;;
2366 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002367 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002368#include </usr/local/v6/include/sys/v6config.h>
2369#ifdef __V6D__
2370yes
2371#endif],
2372 [ipv6type=$i;
2373 ipv6lib=v6;
2374 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002375 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002376 ;;
2377 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002378 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002379#include <sys/param.h>
2380#ifdef _ZETA_MINAMI_INET6
2381yes
2382#endif],
2383 [ipv6type=$i;
2384 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002385 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002386 ;;
2387 esac
2388 if test "$ipv6type" != "unknown"; then
2389 break
2390 fi
2391 done
2392 AC_MSG_RESULT($ipv6type)
2393fi
2394
2395if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2396 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2397 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2398 echo "using lib$ipv6lib"
2399 else
2400 if test $ipv6trylibc = "yes"; then
2401 echo "using libc"
2402 else
2403 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2404 echo "You need to fetch lib$ipv6lib.a from appropriate"
2405 echo 'ipv6 kit and compile beforehand.'
2406 exit 1
2407 fi
2408 fi
2409fi
2410
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002411AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2412AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2413 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2414 AC_MSG_RESULT(yes),
2415 AC_MSG_RESULT(no)
2416)
2417
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002418# Check for --with-doc-strings
2419AC_MSG_CHECKING(for --with-doc-strings)
2420AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002421 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002422
2423if test -z "$with_doc_strings"
2424then with_doc_strings="yes"
2425fi
2426if test "$with_doc_strings" != "no"
2427then
2428 AC_DEFINE(WITH_DOC_STRINGS, 1,
2429 [Define if you want documentation strings in extension modules])
2430fi
2431AC_MSG_RESULT($with_doc_strings)
2432
Neil Schemenauera35c6882001-02-27 04:45:05 +00002433# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002434AC_MSG_CHECKING(for --with-tsc)
2435AC_ARG_WITH(tsc,
2436[ --with(out)-tsc enable/disable timestamp counter profile], [
2437if test "$withval" != no
2438then
2439 AC_DEFINE(WITH_TSC, 1,
2440 [Define to profile with the Pentium timestamp counter])
2441 AC_MSG_RESULT(yes)
2442else AC_MSG_RESULT(no)
2443fi],
2444[AC_MSG_RESULT(no)])
2445
2446# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002447AC_MSG_CHECKING(for --with-pymalloc)
2448AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002449 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002450
2451if test -z "$with_pymalloc"
2452then with_pymalloc="yes"
2453fi
2454if test "$with_pymalloc" != "no"
2455then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002456 AC_DEFINE(WITH_PYMALLOC, 1,
2457 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002458fi
2459AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002460
Barry Warsawef82cd72000-06-30 16:21:01 +00002461# Check for --with-wctype-functions
2462AC_MSG_CHECKING(for --with-wctype-functions)
2463AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002464 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2465[
Barry Warsawef82cd72000-06-30 16:21:01 +00002466if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002467then
2468 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2469 [Define if you want wctype.h functions to be used instead of the
2470 one supplied by Python itself. (see Include/unicodectype.h).])
2471 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002472else AC_MSG_RESULT(no)
2473fi],
2474[AC_MSG_RESULT(no)])
2475
Guido van Rossum68242b51996-05-28 22:53:03 +00002476# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002477AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002478DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002479
Guido van Rossume97ee181999-12-20 21:27:22 +00002480# the dlopen() function means we might want to use dynload_shlib.o. some
2481# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002482AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002483
2484# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2485# loading of modules.
2486AC_SUBST(DYNLOADFILE)
2487AC_MSG_CHECKING(DYNLOADFILE)
2488if test -z "$DYNLOADFILE"
2489then
2490 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002491 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2492 if test "$ac_cv_func_dlopen" = yes
2493 then DYNLOADFILE="dynload_shlib.o"
2494 else DYNLOADFILE="dynload_aix.o"
2495 fi
2496 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002497 BeOS*) DYNLOADFILE="dynload_beos.o";;
2498 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002499 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2500 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002501 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002502 *)
2503 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2504 # out any dynamic loading
2505 if test "$ac_cv_func_dlopen" = yes
2506 then DYNLOADFILE="dynload_shlib.o"
2507 else DYNLOADFILE="dynload_stub.o"
2508 fi
2509 ;;
2510 esac
2511fi
2512AC_MSG_RESULT($DYNLOADFILE)
2513if test "$DYNLOADFILE" != "dynload_stub.o"
2514then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002515 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2516 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002517fi
2518
Jack Jansenc49e5b72001-06-19 15:00:23 +00002519# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2520
2521AC_SUBST(MACHDEP_OBJS)
2522AC_MSG_CHECKING(MACHDEP_OBJS)
2523if test -z "$MACHDEP_OBJS"
2524then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002525 MACHDEP_OBJS=$extra_machdep_objs
2526else
2527 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002528fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002529AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002530
Guido van Rossum627b2d71993-12-24 10:39:16 +00002531# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002532AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2533 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002534 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002535 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002536 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002537 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002538 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002539 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002540 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002541 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002542 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002543 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002544
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002545# For some functions, having a definition is not sufficient, since
2546# we want to take their address.
2547AC_MSG_CHECKING(for chroot)
2548AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2549 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2550 AC_MSG_RESULT(yes),
2551 AC_MSG_RESULT(no)
2552)
2553AC_MSG_CHECKING(for link)
2554AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2555 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2556 AC_MSG_RESULT(yes),
2557 AC_MSG_RESULT(no)
2558)
2559AC_MSG_CHECKING(for symlink)
2560AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2561 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2562 AC_MSG_RESULT(yes),
2563 AC_MSG_RESULT(no)
2564)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002565AC_MSG_CHECKING(for fchdir)
2566AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2567 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2568 AC_MSG_RESULT(yes),
2569 AC_MSG_RESULT(no)
2570)
2571AC_MSG_CHECKING(for fsync)
2572AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002573 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002574 AC_MSG_RESULT(yes),
2575 AC_MSG_RESULT(no)
2576)
2577AC_MSG_CHECKING(for fdatasync)
2578AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2579 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2580 AC_MSG_RESULT(yes),
2581 AC_MSG_RESULT(no)
2582)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002583AC_MSG_CHECKING(for epoll)
2584AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2585 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2586 AC_MSG_RESULT(yes),
2587 AC_MSG_RESULT(no)
2588)
2589AC_MSG_CHECKING(for kqueue)
2590AC_TRY_COMPILE([
2591#include <sys/types.h>
2592#include <sys/event.h>
2593 ], int x=kqueue(),
2594 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2595 AC_MSG_RESULT(yes),
2596 AC_MSG_RESULT(no)
2597)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002598# On some systems (eg. FreeBSD 5), we would find a definition of the
2599# functions ctermid_r, setgroups in the library, but no prototype
2600# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2601# address to avoid compiler warnings and potential miscompilations
2602# because of the missing prototypes.
2603
2604AC_MSG_CHECKING(for ctermid_r)
2605AC_TRY_COMPILE([
2606#include "confdefs.h"
2607#include <stdio.h>
2608], void* p = ctermid_r,
2609 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2610 AC_MSG_RESULT(yes),
2611 AC_MSG_RESULT(no)
2612)
2613
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002614AC_MSG_CHECKING(for flock)
2615AC_TRY_COMPILE([
2616#include "confdefs.h"
2617#include <sys/file.h>
2618], void* p = flock,
2619 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2620 AC_MSG_RESULT(yes),
2621 AC_MSG_RESULT(no)
2622)
2623
2624AC_MSG_CHECKING(for getpagesize)
2625AC_TRY_COMPILE([
2626#include "confdefs.h"
2627#include <unistd.h>
2628], void* p = getpagesize,
2629 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2630 AC_MSG_RESULT(yes),
2631 AC_MSG_RESULT(no)
2632)
2633
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002634dnl check for true
2635AC_CHECK_PROGS(TRUE, true, /bin/true)
2636
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002637dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2638dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002639AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002640 AC_CHECK_LIB(resolv, inet_aton)
2641)
2642
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002643# On Tru64, chflags seems to be present, but calling it will
2644# exit Python
2645AC_MSG_CHECKING(for chflags)
2646AC_TRY_RUN([
2647#include <sys/stat.h>
2648#include <unistd.h>
2649int main(int argc, char*argv[])
2650{
2651 if(chflags(argv[0], 0) != 0)
2652 return 1;
2653 return 0;
2654}
2655],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2656 AC_MSG_RESULT(yes),
2657 AC_MSG_RESULT(no)
2658)
2659
2660AC_MSG_CHECKING(for lchflags)
2661AC_TRY_RUN([
2662#include <sys/stat.h>
2663#include <unistd.h>
2664int main(int argc, char*argv[])
2665{
2666 if(lchflags(argv[0], 0) != 0)
2667 return 1;
2668 return 0;
2669}
2670],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2671 AC_MSG_RESULT(yes),
2672 AC_MSG_RESULT(no)
2673)
2674
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002675dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002676dnl
2677dnl On MacOSX the linker will search for dylibs on the entire linker path
2678dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2679dnl to revert to a more traditional unix behaviour and make it possible to
2680dnl override the system libz with a local static library of libz. Temporarily
2681dnl add that flag to our CFLAGS as well to ensure that we check the version
2682dnl of libz that will be used by setup.py.
2683dnl The -L/usr/local/lib is needed as wel to get the same compilation
2684dnl environment as setup.py (and leaving it out can cause configure to use the
2685dnl wrong version of the library)
2686case $ac_sys_system/$ac_sys_release in
2687Darwin/*)
2688 _CUR_CFLAGS="${CFLAGS}"
2689 _CUR_LDFLAGS="${LDFLAGS}"
2690 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2691 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2692 ;;
2693esac
2694
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002695AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2696
Ronald Oussorenf8752642006-07-06 10:13:35 +00002697case $ac_sys_system/$ac_sys_release in
2698Darwin/*)
2699 CFLAGS="${_CUR_CFLAGS}"
2700 LDFLAGS="${_CUR_LDFLAGS}"
2701 ;;
2702esac
2703
Martin v. Löwise9416172003-05-03 10:12:45 +00002704AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002705AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002706#include "confdefs.h"
2707#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002708], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002709 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2710 AC_MSG_RESULT(yes),
2711 AC_MSG_RESULT(no)
2712)
2713
2714AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002715AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002716#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002717#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002718#include <sys/socket.h>
2719#include <netinet/in.h>
2720#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002721], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002722 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2723 AC_MSG_RESULT(yes),
2724 AC_MSG_RESULT(no)
2725)
2726
2727AC_MSG_CHECKING(for inet_pton)
2728AC_TRY_COMPILE([
2729#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002730#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002731#include <sys/socket.h>
2732#include <netinet/in.h>
2733#include <arpa/inet.h>
2734], void* p = inet_pton,
2735 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2736 AC_MSG_RESULT(yes),
2737 AC_MSG_RESULT(no)
2738)
2739
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002740# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002741AC_MSG_CHECKING(for setgroups)
2742AC_TRY_COMPILE([
2743#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002744#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002745#ifdef HAVE_GRP_H
2746#include <grp.h>
2747#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002748],
2749void* p = setgroups,
2750 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2751 AC_MSG_RESULT(yes),
2752 AC_MSG_RESULT(no)
2753)
2754
Fred Drake8cef4cf2000-06-28 16:40:38 +00002755# check for openpty and forkpty
2756
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002757AC_CHECK_FUNCS(openpty,,
2758 AC_CHECK_LIB(util,openpty,
2759 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2760 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2761 )
2762)
2763AC_CHECK_FUNCS(forkpty,,
2764 AC_CHECK_LIB(util,forkpty,
2765 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2766 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2767 )
2768)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002769
Brett Cannonaa5778d2008-03-18 04:09:00 +00002770# Stuff for expat.
2771AC_CHECK_FUNCS(memmove)
2772
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002773# check for long file support functions
2774AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2775
Brett Cannonaa5778d2008-03-18 04:09:00 +00002776AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002777AC_CHECK_FUNCS(getpgrp,
2778 AC_TRY_COMPILE([#include <unistd.h>],
2779 [getpgrp(0);],
2780 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2781 [Define if getpgrp() must be called as getpgrp(0).])
2782 )
2783)
Jack Jansen150753c2003-03-29 22:07:47 +00002784AC_CHECK_FUNCS(setpgrp,
2785 AC_TRY_COMPILE([#include <unistd.h>],
2786 [setpgrp(0,0);],
2787 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2788 [Define if setpgrp() must be called as setpgrp(0, 0).])
2789 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002790)
2791AC_CHECK_FUNCS(gettimeofday,
2792 AC_TRY_COMPILE([#include <sys/time.h>],
2793 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2794 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2795 [Define if gettimeofday() does not have second (timezone) argument
2796 This is the case on Motorola V4 (R40V4.2)])
2797 )
2798)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002799
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002800AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002801AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002802#if defined(MAJOR_IN_MKDEV)
2803#include <sys/mkdev.h>
2804#elif defined(MAJOR_IN_SYSMACROS)
2805#include <sys/sysmacros.h>
2806#else
2807#include <sys/types.h>
2808#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002809],[
2810 makedev(major(0),minor(0));
2811],[
2812 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2813 [Define to 1 if you have the device macros.])
2814 AC_MSG_RESULT(yes)
2815],[
2816 AC_MSG_RESULT(no)
2817])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002818
2819# On OSF/1 V5.1, getaddrinfo is available, but a define
2820# for [no]getaddrinfo in netdb.h.
2821AC_MSG_CHECKING(for getaddrinfo)
2822AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002823#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002824#include <sys/socket.h>
2825#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002826#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002827],[
2828getaddrinfo(NULL, NULL, NULL, NULL);
2829], [
2830AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002831AC_MSG_CHECKING(getaddrinfo bug)
2832AC_TRY_RUN([
2833#include <sys/types.h>
2834#include <netdb.h>
2835#include <string.h>
2836#include <sys/socket.h>
2837#include <netinet/in.h>
2838
2839main()
2840{
2841 int passive, gaierr, inet4 = 0, inet6 = 0;
2842 struct addrinfo hints, *ai, *aitop;
2843 char straddr[INET6_ADDRSTRLEN], strport[16];
2844
2845 for (passive = 0; passive <= 1; passive++) {
2846 memset(&hints, 0, sizeof(hints));
2847 hints.ai_family = AF_UNSPEC;
2848 hints.ai_flags = passive ? AI_PASSIVE : 0;
2849 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002850 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002851 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2852 (void)gai_strerror(gaierr);
2853 goto bad;
2854 }
2855 for (ai = aitop; ai; ai = ai->ai_next) {
2856 if (ai->ai_addr == NULL ||
2857 ai->ai_addrlen == 0 ||
2858 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2859 straddr, sizeof(straddr), strport, sizeof(strport),
2860 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2861 goto bad;
2862 }
2863 switch (ai->ai_family) {
2864 case AF_INET:
2865 if (strcmp(strport, "54321") != 0) {
2866 goto bad;
2867 }
2868 if (passive) {
2869 if (strcmp(straddr, "0.0.0.0") != 0) {
2870 goto bad;
2871 }
2872 } else {
2873 if (strcmp(straddr, "127.0.0.1") != 0) {
2874 goto bad;
2875 }
2876 }
2877 inet4++;
2878 break;
2879 case AF_INET6:
2880 if (strcmp(strport, "54321") != 0) {
2881 goto bad;
2882 }
2883 if (passive) {
2884 if (strcmp(straddr, "::") != 0) {
2885 goto bad;
2886 }
2887 } else {
2888 if (strcmp(straddr, "::1") != 0) {
2889 goto bad;
2890 }
2891 }
2892 inet6++;
2893 break;
2894 case AF_UNSPEC:
2895 goto bad;
2896 break;
2897 default:
2898 /* another family support? */
2899 break;
2900 }
2901 }
2902 }
2903
2904 if (!(inet4 == 0 || inet4 == 2))
2905 goto bad;
2906 if (!(inet6 == 0 || inet6 == 2))
2907 goto bad;
2908
2909 if (aitop)
2910 freeaddrinfo(aitop);
2911 exit(0);
2912
2913 bad:
2914 if (aitop)
2915 freeaddrinfo(aitop);
2916 exit(1);
2917}
2918],
2919AC_MSG_RESULT(good)
2920buggygetaddrinfo=no,
2921AC_MSG_RESULT(buggy)
2922buggygetaddrinfo=yes,
2923AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002924buggygetaddrinfo=yes)], [
2925AC_MSG_RESULT(no)
2926buggygetaddrinfo=yes
2927])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002928
2929if test "$buggygetaddrinfo" = "yes"; then
2930 if test "$ipv6" = "yes"; then
2931 echo 'Fatal: You must get working getaddrinfo() function.'
2932 echo ' or you can specify "--disable-ipv6"'.
2933 exit 1
2934 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002935else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002936 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002937fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002938AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002939
Guido van Rossum627b2d71993-12-24 10:39:16 +00002940# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002941AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002942AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002943AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002944AC_CHECK_MEMBERS([struct stat.st_rdev])
2945AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002946AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002947AC_CHECK_MEMBERS([struct stat.st_gen])
2948AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002949AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002950
2951AC_MSG_CHECKING(for time.h that defines altzone)
2952AC_CACHE_VAL(ac_cv_header_time_altzone,
2953[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2954 ac_cv_header_time_altzone=yes,
2955 ac_cv_header_time_altzone=no)])
2956AC_MSG_RESULT($ac_cv_header_time_altzone)
2957if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002958 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002959fi
2960
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002961was_it_defined=no
2962AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002963AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002964#include <sys/types.h>
2965#include <sys/select.h>
2966#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002967], [;], [
2968 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2969 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2970 (which you can't on SCO ODT 3.0).])
2971 was_it_defined=yes
2972])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002973AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002974
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002975AC_MSG_CHECKING(for addrinfo)
2976AC_CACHE_VAL(ac_cv_struct_addrinfo,
2977AC_TRY_COMPILE([
2978# include <netdb.h>],
2979 [struct addrinfo a],
2980 ac_cv_struct_addrinfo=yes,
2981 ac_cv_struct_addrinfo=no))
2982AC_MSG_RESULT($ac_cv_struct_addrinfo)
2983if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002984 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002985fi
2986
2987AC_MSG_CHECKING(for sockaddr_storage)
2988AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2989AC_TRY_COMPILE([
2990# include <sys/types.h>
2991# include <sys/socket.h>],
2992 [struct sockaddr_storage s],
2993 ac_cv_struct_sockaddr_storage=yes,
2994 ac_cv_struct_sockaddr_storage=no))
2995AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2996if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002997 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002998fi
2999
Guido van Rossum627b2d71993-12-24 10:39:16 +00003000# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003001
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003003AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003004
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003005works=no
3006AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003007AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3008 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3009)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003010AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003011
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003012works=no
3013AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014AC_TRY_COMPILE([], [signed char c;], works=yes,
3015 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3016)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003017AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003018
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003019have_prototypes=no
3020AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003021AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3022 AC_DEFINE(HAVE_PROTOTYPES, 1,
3023 [Define if your compiler supports function prototype])
3024 have_prototypes=yes
3025])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003026AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003027
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003028works=no
3029AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003030AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003031#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003032int foo(int x, ...) {
3033 va_list va;
3034 va_start(va, x);
3035 va_arg(va, int);
3036 va_arg(va, char *);
3037 va_arg(va, double);
3038 return 0;
3039}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003040], [return foo(10, "", 3.14);], [
3041 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3042 [Define if your compiler supports variable length function prototypes
3043 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3044 works=yes
3045])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003046AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003047
Dave Cole331708b2004-08-09 04:51:41 +00003048# check for socketpair
3049AC_MSG_CHECKING(for socketpair)
3050AC_TRY_COMPILE([
3051#include <sys/types.h>
3052#include <sys/socket.h>
3053], void *x=socketpair,
3054 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3055 AC_MSG_RESULT(yes),
3056 AC_MSG_RESULT(no)
3057)
3058
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003059# check if sockaddr has sa_len member
3060AC_MSG_CHECKING(if sockaddr has sa_len member)
3061AC_TRY_COMPILE([#include <sys/types.h>
3062#include <sys/socket.h>],
3063[struct sockaddr x;
3064x.sa_len = 0;],
3065 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003066 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003067 AC_MSG_RESULT(no))
3068
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003069va_list_is_array=no
3070AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003071AC_TRY_COMPILE([
3072#ifdef HAVE_STDARG_PROTOTYPES
3073#include <stdarg.h>
3074#else
3075#include <varargs.h>
3076#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003077], [va_list list1, list2; list1 = list2;], , [
3078 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3079 va_list_is_array=yes
3080])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003081AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003082
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003083# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003084AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3085 [Define this if you have some version of gethostbyname_r()])
3086
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003087AC_CHECK_FUNC(gethostbyname_r, [
3088 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3089 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3090 OLD_CFLAGS=$CFLAGS
3091 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3092 AC_TRY_COMPILE([
3093# include <netdb.h>
3094 ], [
3095 char *name;
3096 struct hostent *he, *res;
3097 char buffer[2048];
3098 int buflen = 2048;
3099 int h_errnop;
3100
3101 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3102 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003103 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003104 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3105 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003106 AC_MSG_RESULT(yes)
3107 ], [
3108 AC_MSG_RESULT(no)
3109 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3110 AC_TRY_COMPILE([
3111# include <netdb.h>
3112 ], [
3113 char *name;
3114 struct hostent *he;
3115 char buffer[2048];
3116 int buflen = 2048;
3117 int h_errnop;
3118
3119 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3120 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003121 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003122 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3123 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003124 AC_MSG_RESULT(yes)
3125 ], [
3126 AC_MSG_RESULT(no)
3127 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3128 AC_TRY_COMPILE([
3129# include <netdb.h>
3130 ], [
3131 char *name;
3132 struct hostent *he;
3133 struct hostent_data data;
3134
3135 (void) gethostbyname_r(name, he, &data);
3136 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003137 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003138 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3139 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003140 AC_MSG_RESULT(yes)
3141 ], [
3142 AC_MSG_RESULT(no)
3143 ])
3144 ])
3145 ])
3146 CFLAGS=$OLD_CFLAGS
3147], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003148 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003149])
3150AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3151AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3152AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003153AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003154AC_SUBST(HAVE_GETHOSTBYNAME)
3155
Guido van Rossum627b2d71993-12-24 10:39:16 +00003156# checks for system services
3157# (none yet)
3158
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003159# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003160AC_CHECK_FUNC(__fpu_control,
3161 [],
3162 [AC_CHECK_LIB(ieee, __fpu_control)
3163])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003164
Guido van Rossum93274221997-05-09 02:42:00 +00003165# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003166AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003167AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003168 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3169[
Guido van Rossum93274221997-05-09 02:42:00 +00003170if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003171then
3172 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3173 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3174 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003175else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003176fi],
3177[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003178
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003179# check for --with-libm=...
3180AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003181case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003182Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003183BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003184*) LIBM=-lm
3185esac
Guido van Rossum93274221997-05-09 02:42:00 +00003186AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003187AC_ARG_WITH(libm,
3188 AC_HELP_STRING(--with-libm=STRING, math library),
3189[
Guido van Rossum93274221997-05-09 02:42:00 +00003190if test "$withval" = no
3191then LIBM=
3192 AC_MSG_RESULT(force LIBM empty)
3193elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003194then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003195 AC_MSG_RESULT(set LIBM="$withval")
3196else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003197fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003198[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003199
3200# check for --with-libc=...
3201AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003202AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003203AC_ARG_WITH(libc,
3204 AC_HELP_STRING(--with-libc=STRING, C library),
3205[
Guido van Rossum93274221997-05-09 02:42:00 +00003206if test "$withval" = no
3207then LIBC=
3208 AC_MSG_RESULT(force LIBC empty)
3209elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003210then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003211 AC_MSG_RESULT(set LIBC="$withval")
3212else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003213fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003214[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003215
Christian Heimes0a8143f2007-12-18 23:22:54 +00003216# ************************************
3217# * Check for mathematical functions *
3218# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003219
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003220LIBS_SAVE=$LIBS
3221LIBS="$LIBS $LIBM"
3222
Mark Dickinsone05e8402009-05-04 13:30:43 +00003223# Detect whether system arithmetic is subject to x87-style double
3224# rounding issues. The result of this test has little meaning on non
3225# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3226# mode is round-to-nearest and double rounding issues are present, and
3227# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3228AC_MSG_CHECKING(for x87-style double rounding)
3229AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3230AC_TRY_RUN([
3231#include <stdlib.h>
3232#include <math.h>
3233int main() {
3234 volatile double x, y, z;
3235 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3236 x = 0.99999999999999989; /* 1-2**-53 */
3237 y = 1./x;
3238 if (y != 1.)
3239 exit(0);
3240 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3241 x = 1e16;
3242 y = 2.99999;
3243 z = x + y;
3244 if (z != 1e16+4.)
3245 exit(0);
3246 /* both tests show evidence of double rounding */
3247 exit(1);
3248}
3249],
3250ac_cv_x87_double_rounding=no,
3251ac_cv_x87_double_rounding=yes,
3252ac_cv_x87_double_rounding=no)])
3253AC_MSG_RESULT($ac_cv_x87_double_rounding)
3254if test "$ac_cv_x87_double_rounding" = yes
3255then
3256 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3257 [Define if arithmetic is subject to x87-style double rounding issue])
3258fi
3259
3260
Mark Dickinson265d7382008-04-21 22:32:24 +00003261# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3262# -0. on some architectures.
3263AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3264AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3265AC_TRY_RUN([
3266#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003267#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003268int main() {
3269 /* return 0 if either negative zeros don't exist
3270 on this platform or if negative zeros exist
3271 and tanh(-0.) == -0. */
3272 if (atan2(0., -1.) == atan2(-0., -1.) ||
3273 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3274 else exit(1);
3275}
3276],
3277ac_cv_tanh_preserves_zero_sign=yes,
3278ac_cv_tanh_preserves_zero_sign=no,
3279ac_cv_tanh_preserves_zero_sign=no)])
3280AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3281if test "$ac_cv_tanh_preserves_zero_sign" = yes
3282then
3283 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3284 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3285fi
3286
Mark Dickinsone05e8402009-05-04 13:30:43 +00003287AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3288AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003289
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003290LIBS=$LIBS_SAVE
3291
Guido van Rossumef2255b2000-03-10 22:30:29 +00003292# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003293AC_CHECK_HEADER(wchar.h, [
3294 AC_DEFINE(HAVE_WCHAR_H, 1,
3295 [Define if the compiler provides a wchar.h header file.])
3296 wchar_h="yes"
3297],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003298wchar_h="no"
3299)
3300
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003301# determine wchar_t size
3302if test "$wchar_h" = yes
3303then
Guido van Rossum67b26592001-10-20 14:21:45 +00003304 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003305fi
3306
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003307AC_MSG_CHECKING(for UCS-4 tcl)
3308have_ucs4_tcl=no
3309AC_TRY_COMPILE([
3310#include <tcl.h>
3311#if TCL_UTF_MAX != 6
3312# error "NOT UCS4_TCL"
3313#endif], [], [
3314 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3315 have_ucs4_tcl=yes
3316])
3317AC_MSG_RESULT($have_ucs4_tcl)
3318
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003319# check whether wchar_t is signed or not
3320if test "$wchar_h" = yes
3321then
3322 # check whether wchar_t is signed or not
3323 AC_MSG_CHECKING(whether wchar_t is signed)
3324 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3325 AC_TRY_RUN([
3326 #include <wchar.h>
3327 int main()
3328 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003329 /* Success: exit code 0 */
3330 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003331 }
3332 ],
3333 ac_cv_wchar_t_signed=yes,
3334 ac_cv_wchar_t_signed=no,
3335 ac_cv_wchar_t_signed=yes)])
3336 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3337fi
3338
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003339AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003340dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003341AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003342 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3343 [],
3344 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003345
3346if test $enable_unicode = yes
3347then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003348 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003349 case "$have_ucs4_tcl" in
3350 yes) enable_unicode="ucs4"
3351 ;;
3352 *) enable_unicode="ucs2"
3353 ;;
3354 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003355fi
3356
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003357AH_TEMPLATE(Py_UNICODE_SIZE,
3358 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003359case "$enable_unicode" in
3360ucs2) unicode_size="2"
3361 AC_DEFINE(Py_UNICODE_SIZE,2)
3362 ;;
3363ucs4) unicode_size="4"
3364 AC_DEFINE(Py_UNICODE_SIZE,4)
3365 ;;
3366esac
3367
Martin v. Löwis11437992002-04-12 09:54:03 +00003368AH_TEMPLATE(PY_UNICODE_TYPE,
3369 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003370
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003371AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003372if test "$enable_unicode" = "no"
3373then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003374 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003375 AC_MSG_RESULT(not used)
3376else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003377 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003378 AC_DEFINE(Py_USING_UNICODE, 1,
3379 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003380
3381 # wchar_t is only usable if it maps to an unsigned type
3382 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003383 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003384 then
3385 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003386 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3387 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003388 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003389 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003390 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3391 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3392 then
3393 PY_UNICODE_TYPE="unsigned short"
3394 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3395 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3396 then
3397 PY_UNICODE_TYPE="unsigned long"
3398 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3399 else
3400 PY_UNICODE_TYPE="no type found"
3401 fi
3402 AC_MSG_RESULT($PY_UNICODE_TYPE)
3403fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003404
3405# check for endianness
3406AC_C_BIGENDIAN
3407
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003408# Check whether right shifting a negative integer extends the sign bit
3409# or fills with zeros (like the Cray J90, according to Tim Peters).
3410AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003411AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003412AC_TRY_RUN([
3413int main()
3414{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003415 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003416}
Guido van Rossum3065c942001-09-17 04:03:14 +00003417],
3418ac_cv_rshift_extends_sign=yes,
3419ac_cv_rshift_extends_sign=no,
3420ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003421AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3422if test "$ac_cv_rshift_extends_sign" = no
3423then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003424 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3425 [Define if i>>j for signed int i does not extend the sign bit
3426 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003427fi
3428
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003429# check for getc_unlocked and related locking functions
3430AC_MSG_CHECKING(for getc_unlocked() and friends)
3431AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3432AC_TRY_LINK([#include <stdio.h>],[
3433 FILE *f = fopen("/dev/null", "r");
3434 flockfile(f);
3435 getc_unlocked(f);
3436 funlockfile(f);
3437], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3438AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3439if test "$ac_cv_have_getc_unlocked" = yes
3440then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003441 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3442 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003443fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003444
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003445# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003446# save the value of LIBS so we don't actually link Python with readline
3447LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003448
3449# On some systems we need to link readline to a termcap compatible
3450# library. NOTE: Keep the precedence of listed libraries synchronised
3451# with setup.py.
3452py_cv_lib_readline=no
3453AC_MSG_CHECKING([how to link readline libs])
3454for py_libtermcap in "" ncursesw ncurses curses termcap; do
3455 if test -z "$py_libtermcap"; then
3456 READLINE_LIBS="-lreadline"
3457 else
3458 READLINE_LIBS="-lreadline -l$py_libtermcap"
3459 fi
3460 LIBS="$READLINE_LIBS $LIBS_no_readline"
3461 AC_LINK_IFELSE(
3462 [AC_LANG_CALL([],[readline])],
3463 [py_cv_lib_readline=yes])
3464 if test $py_cv_lib_readline = yes; then
3465 break
3466 fi
3467done
3468# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3469#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003470if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003471 AC_MSG_RESULT([none])
3472else
3473 AC_MSG_RESULT([$READLINE_LIBS])
3474 AC_DEFINE(HAVE_LIBREADLINE, 1,
3475 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003476fi
3477
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003478# check for readline 2.1
3479AC_CHECK_LIB(readline, rl_callback_handler_install,
3480 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003481 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003482
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003483# check for readline 2.2
3484AC_TRY_CPP([#include <readline/readline.h>],
3485have_readline=yes, have_readline=no)
3486if test $have_readline = yes
3487then
3488 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3489 [readline/readline.h],
3490 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3491 [Define if you have readline 2.2]), )
3492fi
3493
Martin v. Löwis0daad592001-09-30 21:09:59 +00003494# check for readline 4.0
3495AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003496 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003497 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003498
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003499# also in 4.0
3500AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3501 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003502 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003503
Guido van Rossum353ae582001-07-10 16:45:32 +00003504# check for readline 4.2
3505AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003506 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003507 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003508
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003509# also in readline 4.2
3510AC_TRY_CPP([#include <readline/readline.h>],
3511have_readline=yes, have_readline=no)
3512if test $have_readline = yes
3513then
3514 AC_EGREP_HEADER([extern int rl_catch_signals;],
3515 [readline/readline.h],
3516 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3517 [Define if you can turn off readline's signal handling.]), )
3518fi
3519
Martin v. Löwis82bca632006-02-10 20:49:30 +00003520# End of readline checks: restore LIBS
3521LIBS=$LIBS_no_readline
3522
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003523AC_MSG_CHECKING(for broken nice())
3524AC_CACHE_VAL(ac_cv_broken_nice, [
3525AC_TRY_RUN([
3526int main()
3527{
3528 int val1 = nice(1);
3529 if (val1 != -1 && val1 == nice(2))
3530 exit(0);
3531 exit(1);
3532}
Guido van Rossum3065c942001-09-17 04:03:14 +00003533],
3534ac_cv_broken_nice=yes,
3535ac_cv_broken_nice=no,
3536ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003537AC_MSG_RESULT($ac_cv_broken_nice)
3538if test "$ac_cv_broken_nice" = yes
3539then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003540 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3541 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003542fi
3543
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003544AC_MSG_CHECKING(for broken poll())
3545AC_TRY_RUN([
3546#include <poll.h>
3547
3548int main (void)
3549 {
3550 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3551
3552 close (42);
3553
3554 int poll_test = poll (&poll_struct, 1, 0);
3555
3556 if (poll_test < 0)
3557 {
3558 exit(0);
3559 }
3560 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3561 {
3562 exit(0);
3563 }
3564 else
3565 {
3566 exit(1);
3567 }
3568 }
3569],
3570ac_cv_broken_poll=yes,
3571ac_cv_broken_poll=no,
3572ac_cv_broken_poll=no)
3573AC_MSG_RESULT($ac_cv_broken_poll)
3574if test "$ac_cv_broken_poll" = yes
3575then
3576 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3577 [Define if poll() sets errno on invalid file descriptors.])
3578fi
3579
Brett Cannon43802422005-02-10 20:48:03 +00003580# Before we can test tzset, we need to check if struct tm has a tm_zone
3581# (which is not required by ISO C or UNIX spec) and/or if we support
3582# tzname[]
3583AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003584
Brett Cannon43802422005-02-10 20:48:03 +00003585# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003586AC_MSG_CHECKING(for working tzset())
3587AC_CACHE_VAL(ac_cv_working_tzset, [
3588AC_TRY_RUN([
3589#include <stdlib.h>
3590#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003591#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003592
3593#if HAVE_TZNAME
3594extern char *tzname[];
3595#endif
3596
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003597int main()
3598{
Brett Cannon18367812003-09-19 00:59:16 +00003599 /* Note that we need to ensure that not only does tzset(3)
3600 do 'something' with localtime, but it works as documented
3601 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003602 This includes making sure that tzname is set properly if
3603 tm->tm_zone does not exist since it is the alternative way
3604 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003605
3606 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003607 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003608 */
3609
Brett Cannon43802422005-02-10 20:48:03 +00003610 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003611 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3612
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003613 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003614 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003615 if (localtime(&groundhogday)->tm_hour != 0)
3616 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003617#if HAVE_TZNAME
3618 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3619 if (strcmp(tzname[0], "UTC") ||
3620 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3621 exit(1);
3622#endif
Brett Cannon18367812003-09-19 00:59:16 +00003623
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003624 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003625 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003626 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003627 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003628#if HAVE_TZNAME
3629 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3630 exit(1);
3631#endif
Brett Cannon18367812003-09-19 00:59:16 +00003632
3633 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3634 tzset();
3635 if (localtime(&groundhogday)->tm_hour != 11)
3636 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003637#if HAVE_TZNAME
3638 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3639 exit(1);
3640#endif
3641
3642#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003643 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3644 exit(1);
3645 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3646 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003647#endif
Brett Cannon18367812003-09-19 00:59:16 +00003648
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003649 exit(0);
3650}
3651],
3652ac_cv_working_tzset=yes,
3653ac_cv_working_tzset=no,
3654ac_cv_working_tzset=no)])
3655AC_MSG_RESULT($ac_cv_working_tzset)
3656if test "$ac_cv_working_tzset" = yes
3657then
3658 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3659 [Define if tzset() actually switches the local timezone in a meaningful way.])
3660fi
3661
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003662# Look for subsecond timestamps in struct stat
3663AC_MSG_CHECKING(for tv_nsec in struct stat)
3664AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3665AC_TRY_COMPILE([#include <sys/stat.h>], [
3666struct stat st;
3667st.st_mtim.tv_nsec = 1;
3668],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003669ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003670ac_cv_stat_tv_nsec=no,
3671ac_cv_stat_tv_nsec=no))
3672AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3673if test "$ac_cv_stat_tv_nsec" = yes
3674then
3675 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3676 [Define if you have struct stat.st_mtim.tv_nsec])
3677fi
3678
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003679# Look for BSD style subsecond timestamps in struct stat
3680AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3681AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3682AC_TRY_COMPILE([#include <sys/stat.h>], [
3683struct stat st;
3684st.st_mtimespec.tv_nsec = 1;
3685],
3686ac_cv_stat_tv_nsec2=yes,
3687ac_cv_stat_tv_nsec2=no,
3688ac_cv_stat_tv_nsec2=no))
3689AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3690if test "$ac_cv_stat_tv_nsec2" = yes
3691then
3692 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3693 [Define if you have struct stat.st_mtimensec])
3694fi
3695
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003696# On HP/UX 11.0, mvwdelch is a block with a return statement
3697AC_MSG_CHECKING(whether mvwdelch is an expression)
3698AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3699AC_TRY_COMPILE([#include <curses.h>], [
3700 int rtn;
3701 rtn = mvwdelch(0,0,0);
3702], ac_cv_mvwdelch_is_expression=yes,
3703 ac_cv_mvwdelch_is_expression=no,
3704 ac_cv_mvwdelch_is_expression=yes))
3705AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3706
3707if test "$ac_cv_mvwdelch_is_expression" = yes
3708then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003709 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3710 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003711fi
3712
3713AC_MSG_CHECKING(whether WINDOW has _flags)
3714AC_CACHE_VAL(ac_cv_window_has_flags,
3715AC_TRY_COMPILE([#include <curses.h>], [
3716 WINDOW *w;
3717 w->_flags = 0;
3718], ac_cv_window_has_flags=yes,
3719 ac_cv_window_has_flags=no,
3720 ac_cv_window_has_flags=no))
3721AC_MSG_RESULT($ac_cv_window_has_flags)
3722
3723
3724if test "$ac_cv_window_has_flags" = yes
3725then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003726 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3727 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003728fi
3729
Walter Dörwald4994d952006-06-19 08:07:50 +00003730AC_MSG_CHECKING(for is_term_resized)
3731AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3732 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3733 AC_MSG_RESULT(yes),
3734 AC_MSG_RESULT(no)
3735)
3736
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003737AC_MSG_CHECKING(for resize_term)
3738AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3739 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003740 AC_MSG_RESULT(yes),
3741 AC_MSG_RESULT(no)
3742)
3743
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003744AC_MSG_CHECKING(for resizeterm)
3745AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3746 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003747 AC_MSG_RESULT(yes),
3748 AC_MSG_RESULT(no)
3749)
3750
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003751AC_MSG_CHECKING(for /dev/ptmx)
3752
3753if test -r /dev/ptmx
3754then
3755 AC_MSG_RESULT(yes)
3756 AC_DEFINE(HAVE_DEV_PTMX, 1,
3757 [Define if we have /dev/ptmx.])
3758else
3759 AC_MSG_RESULT(no)
3760fi
3761
3762AC_MSG_CHECKING(for /dev/ptc)
3763
3764if test -r /dev/ptc
3765then
3766 AC_MSG_RESULT(yes)
3767 AC_DEFINE(HAVE_DEV_PTC, 1,
3768 [Define if we have /dev/ptc.])
3769else
3770 AC_MSG_RESULT(no)
3771fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003772
Brett Cannon09d12362006-05-11 05:11:33 +00003773AC_MSG_CHECKING(for %zd printf() format support)
3774AC_TRY_RUN([#include <stdio.h>
3775#include <stddef.h>
3776#include <string.h>
3777
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003778#ifdef HAVE_SYS_TYPES_H
3779#include <sys/types.h>
3780#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003781
3782#ifdef HAVE_SSIZE_T
3783typedef ssize_t Py_ssize_t;
3784#elif SIZEOF_VOID_P == SIZEOF_LONG
3785typedef long Py_ssize_t;
3786#else
3787typedef int Py_ssize_t;
3788#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003789
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003790int main()
3791{
3792 char buffer[256];
3793
Brett Cannon09d12362006-05-11 05:11:33 +00003794 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3795 return 1;
3796
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003797 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003798 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003799
3800 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3801 return 1;
3802
3803 if (strcmp(buffer, "-123"))
3804 return 1;
3805
Brett Cannon09d12362006-05-11 05:11:33 +00003806 return 0;
3807}],
3808[AC_MSG_RESULT(yes)
3809 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3810 AC_MSG_RESULT(no))
3811
Martin v. Löwis01c04012002-11-11 14:58:44 +00003812AC_CHECK_TYPE(socklen_t,,
3813 AC_DEFINE(socklen_t,int,
3814 Define to `int' if <sys/socket.h> does not define.),[
3815#ifdef HAVE_SYS_TYPES_H
3816#include <sys/types.h>
3817#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003818#ifdef HAVE_SYS_SOCKET_H
3819#include <sys/socket.h>
3820#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003821])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003822
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003823AC_SUBST(THREADHEADERS)
3824
3825for h in `(cd $srcdir;echo Python/thread_*.h)`
3826do
3827 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3828done
3829
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003830AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003831SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003832AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003833for dir in $SRCDIRS; do
3834 if test ! -d $dir; then
3835 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003836 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003837done
3838AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003839
Guido van Rossum627b2d71993-12-24 10:39:16 +00003840# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003841AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3842AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003843
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003844echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003845if test ! -f Modules/Setup
3846then
3847 cp $srcdir/Modules/Setup.dist Modules/Setup
3848fi
3849
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003850echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003851if test ! -f Modules/Setup.local
3852then
3853 echo "# Edit this file for local setup changes" >Modules/Setup.local
3854fi
3855
3856echo "creating Makefile"
3857$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3858 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003859 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003860
3861case $ac_sys_system in
3862BeOS)
3863 AC_MSG_WARN([
3864
3865 Support for BeOS is deprecated as of Python 2.6.
3866 See PEP 11 for the gory details.
3867 ])
3868 ;;
3869*) ;;
3870esac
3871
Neil Schemenauer66252162001-02-19 04:47:42 +00003872mv config.c Modules