blob: ecfe4e7b95d430c2c70eb07ca149f2178bb427e9 [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,
100 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
101[
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
929 else
930 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
931
932 fi
933
934
935 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000936 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000937 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
938 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
939 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000940 fi
941
Benjamin Peterson4347c442008-07-17 15:59:24 +0000942 # Calculate the right deployment target for this build.
943 #
944 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
945 if test ${cur_target} '>' 10.2; then
946 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +0000947 if test ${enable_universalsdk}; then
948 if test "${UNIVERSAL_ARCHS}" = "all"; then
949 # Ensure that the default platform for a
950 # 4-way universal build is OSX 10.5,
951 # that's the first OS release where
952 # 4-way builds make sense.
953 cur_target='10.5'
954 fi
955 else
956 if test `arch` = "i386"; then
957 # On Intel macs default to a deployment
958 # target of 10.4, that's the first OSX
959 # release with Intel support.
960 cur_target="10.4"
961 fi
962 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +0000963 fi
964 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
965
966 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
967 # environment with a value that is the same as what we'll use
968 # in the Makefile to ensure that we'll get the same compiler
969 # environment during configure and build time.
970 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
971 export MACOSX_DEPLOYMENT_TARGET
972 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
973
Skip Montanarodecc6a42003-01-01 20:07:49 +0000974 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000975 OSF*)
976 BASECFLAGS="$BASECFLAGS -mieee"
977 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000978 esac
979 ;;
980
981*)
982 case $ac_sys_system in
983 OpenUNIX*|UnixWare*)
984 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
985 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000986 OSF*)
987 BASECFLAGS="$BASECFLAGS -ieee -std"
988 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000989 SCO_SV*)
990 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
991 ;;
992 esac
993 ;;
994esac
995
Fred Drakee1ceaa02001-12-04 20:55:47 +0000996if test "$Py_DEBUG" = 'true'; then
997 :
998else
999 OPT="-DNDEBUG $OPT"
1000fi
1001
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001002if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001003then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001004 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001005fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001006
Neal Norwitz020c46a2006-01-07 21:39:28 +00001007# disable check for icc since it seems to pass, but generates a warning
1008if test "$CC" = icc
1009then
1010 ac_cv_opt_olimit_ok=no
1011fi
1012
Guido van Rossum91922671997-10-09 20:24:13 +00001013AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1014AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1015[ac_save_cc="$CC"
1016CC="$CC -OPT:Olimit=0"
1017AC_TRY_RUN([int main() { return 0; }],
1018 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001019 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001020 ac_cv_opt_olimit_ok=no)
1021CC="$ac_save_cc"])
1022AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001023if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001024 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001025 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1026 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1027 # environment?
1028 Darwin*)
1029 ;;
1030 *)
1031 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1032 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001033 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001034else
1035 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1036 AC_CACHE_VAL(ac_cv_olimit_ok,
1037 [ac_save_cc="$CC"
1038 CC="$CC -Olimit 1500"
1039 AC_TRY_RUN([int main() { return 0; }],
1040 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001041 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001042 ac_cv_olimit_ok=no)
1043 CC="$ac_save_cc"])
1044 AC_MSG_RESULT($ac_cv_olimit_ok)
1045 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001046 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001047 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001048fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001049
Martin v. Löwisaac13162006-10-19 10:58:46 +00001050# Check whether GCC supports PyArg_ParseTuple format
1051if test "$GCC" = "yes"
1052then
1053 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1054 save_CFLAGS=$CFLAGS
1055 CFLAGS="$CFLAGS -Werror"
1056 AC_TRY_COMPILE([
1057 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1058 ],,
1059 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1060 AC_MSG_RESULT(yes),
1061 AC_MSG_RESULT(no)
1062 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001063 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001064fi
1065
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001066# On some compilers, pthreads are available without further options
1067# (e.g. MacOS X). On some of these systems, the compiler will not
1068# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1069# So we have to see first whether pthreads are available without
1070# options before we can check whether -Kpthread improves anything.
1071AC_MSG_CHECKING(whether pthreads are available without options)
1072AC_CACHE_VAL(ac_cv_pthread_is_default,
1073[AC_TRY_RUN([
1074#include <pthread.h>
1075
1076void* routine(void* p){return NULL;}
1077
1078int main(){
1079 pthread_t p;
1080 if(pthread_create(&p,NULL,routine,NULL)!=0)
1081 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001082 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001083 return 0;
1084}
1085],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001086[
1087 ac_cv_pthread_is_default=yes
1088 ac_cv_kthread=no
1089 ac_cv_pthread=no
1090],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001091 ac_cv_pthread_is_default=no,
1092 ac_cv_pthread_is_default=no)
1093])
1094AC_MSG_RESULT($ac_cv_pthread_is_default)
1095
1096
1097if test $ac_cv_pthread_is_default = yes
1098then
1099 ac_cv_kpthread=no
1100else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001101# -Kpthread, if available, provides the right #defines
1102# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001103# Some compilers won't report that they do not support -Kpthread,
1104# so we need to run a program to see whether it really made the
1105# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001106AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1107AC_CACHE_VAL(ac_cv_kpthread,
1108[ac_save_cc="$CC"
1109CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001110AC_TRY_RUN([
1111#include <pthread.h>
1112
1113void* routine(void* p){return NULL;}
1114
1115int main(){
1116 pthread_t p;
1117 if(pthread_create(&p,NULL,routine,NULL)!=0)
1118 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001119 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001120 return 0;
1121}
1122],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001123 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001124 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001125 ac_cv_kpthread=no)
1126CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001127AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001128fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001129
Skip Montanarod8d39a02003-07-10 20:44:10 +00001130if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001131then
1132# -Kthread, if available, provides the right #defines
1133# and linker options to make pthread_create available
1134# Some compilers won't report that they do not support -Kthread,
1135# so we need to run a program to see whether it really made the
1136# function available.
1137AC_MSG_CHECKING(whether $CC accepts -Kthread)
1138AC_CACHE_VAL(ac_cv_kthread,
1139[ac_save_cc="$CC"
1140CC="$CC -Kthread"
1141AC_TRY_RUN([
1142#include <pthread.h>
1143
1144void* routine(void* p){return NULL;}
1145
1146int main(){
1147 pthread_t p;
1148 if(pthread_create(&p,NULL,routine,NULL)!=0)
1149 return 1;
1150 (void)pthread_detach(p);
1151 return 0;
1152}
1153],
1154 ac_cv_kthread=yes,
1155 ac_cv_kthread=no,
1156 ac_cv_kthread=no)
1157CC="$ac_save_cc"])
1158AC_MSG_RESULT($ac_cv_kthread)
1159fi
1160
Skip Montanarod8d39a02003-07-10 20:44:10 +00001161if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001162then
1163# -pthread, if available, provides the right #defines
1164# and linker options to make pthread_create available
1165# Some compilers won't report that they do not support -pthread,
1166# so we need to run a program to see whether it really made the
1167# function available.
1168AC_MSG_CHECKING(whether $CC accepts -pthread)
1169AC_CACHE_VAL(ac_cv_thread,
1170[ac_save_cc="$CC"
1171CC="$CC -pthread"
1172AC_TRY_RUN([
1173#include <pthread.h>
1174
1175void* routine(void* p){return NULL;}
1176
1177int main(){
1178 pthread_t p;
1179 if(pthread_create(&p,NULL,routine,NULL)!=0)
1180 return 1;
1181 (void)pthread_detach(p);
1182 return 0;
1183}
1184],
1185 ac_cv_pthread=yes,
1186 ac_cv_pthread=no,
1187 ac_cv_pthread=no)
1188CC="$ac_save_cc"])
1189AC_MSG_RESULT($ac_cv_pthread)
1190fi
1191
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001192# If we have set a CC compiler flag for thread support then
1193# check if it works for CXX, too.
1194ac_cv_cxx_thread=no
1195if test ! -z "$CXX"
1196then
1197AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1198ac_save_cxx="$CXX"
1199
1200if test "$ac_cv_kpthread" = "yes"
1201then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001202 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001203 ac_cv_cxx_thread=yes
1204elif test "$ac_cv_kthread" = "yes"
1205then
1206 CXX="$CXX -Kthread"
1207 ac_cv_cxx_thread=yes
1208elif test "$ac_cv_pthread" = "yes"
1209then
1210 CXX="$CXX -pthread"
1211 ac_cv_cxx_thread=yes
1212fi
1213
1214if test $ac_cv_cxx_thread = yes
1215then
1216 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1217 $CXX -c conftest.$ac_ext 2>&5
1218 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1219 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1220 then
1221 ac_cv_cxx_thread=yes
1222 else
1223 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001224 fi
1225 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001226fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001227AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001228fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001229CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001230
Fred Drakece81d592000-07-09 14:39:29 +00001231dnl # check for ANSI or K&R ("traditional") preprocessor
1232dnl AC_MSG_CHECKING(for C preprocessor type)
1233dnl AC_TRY_COMPILE([
1234dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1235dnl int foo;
1236dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1237dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1238dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001239
Guido van Rossum627b2d71993-12-24 10:39:16 +00001240# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001241AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001242AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1243fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001244ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001245shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001246unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001247sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1248sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001249sys/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 +00001250sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001251sys/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 +00001252sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001253bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001254AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001255AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001256
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001257# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001258AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001259#ifdef HAVE_CURSES_H
1260#include <curses.h>
1261#endif
1262])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001263
Martin v. Löwis11017b12006-01-14 18:12:57 +00001264# On Linux, netlink.h requires asm/types.h
1265AC_CHECK_HEADERS(linux/netlink.h,,,[
1266#ifdef HAVE_ASM_TYPES_H
1267#include <asm/types.h>
1268#endif
1269#ifdef HAVE_SYS_SOCKET_H
1270#include <sys/socket.h>
1271#endif
1272])
1273
Guido van Rossum627b2d71993-12-24 10:39:16 +00001274# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001275was_it_defined=no
1276AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001277AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1278 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1279])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001280AC_MSG_RESULT($was_it_defined)
1281
Neal Norwitz11690112002-07-30 01:08:28 +00001282# Check whether using makedev requires defining _OSF_SOURCE
1283AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001284AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001285 [ makedev(0, 0) ],
1286 ac_cv_has_makedev=yes,
1287 ac_cv_has_makedev=no)
1288if test "$ac_cv_has_makedev" = "no"; then
1289 # we didn't link, try if _OSF_SOURCE will allow us to link
1290 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001291#define _OSF_SOURCE 1
1292#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001293 ],
1294 [ makedev(0, 0) ],
1295 ac_cv_has_makedev=yes,
1296 ac_cv_has_makedev=no)
1297 if test "$ac_cv_has_makedev" = "yes"; then
1298 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1299 fi
1300fi
1301AC_MSG_RESULT($ac_cv_has_makedev)
1302if test "$ac_cv_has_makedev" = "yes"; then
1303 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1304fi
1305
Martin v. Löwis399a6892002-10-04 10:22:02 +00001306# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1307# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1308# defined, but the compiler does not support pragma redefine_extname,
1309# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1310# structures (such as rlimit64) without declaring them. As a
1311# work-around, disable LFS on such configurations
1312
1313use_lfs=yes
1314AC_MSG_CHECKING(Solaris LFS bug)
1315AC_TRY_COMPILE([
1316#define _LARGEFILE_SOURCE 1
1317#define _FILE_OFFSET_BITS 64
1318#include <sys/resource.h>
1319],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1320AC_MSG_RESULT($sol_lfs_bug)
1321if test "$sol_lfs_bug" = "yes"; then
1322 use_lfs=no
1323fi
1324
1325if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001326# Two defines needed to enable largefile support on various platforms
1327# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001328AC_DEFINE(_LARGEFILE_SOURCE, 1,
1329[This must be defined on some systems to enable large file support.])
1330AC_DEFINE(_FILE_OFFSET_BITS, 64,
1331[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001332fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001333
Guido van Rossum300fda71996-08-19 21:58:16 +00001334# Add some code to confdefs.h so that the test for off_t works on SCO
1335cat >> confdefs.h <<\EOF
1336#if defined(SCO_DS)
1337#undef _OFF_T
1338#endif
1339EOF
1340
Guido van Rossumef2255b2000-03-10 22:30:29 +00001341# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001342AC_TYPE_MODE_T
1343AC_TYPE_OFF_T
1344AC_TYPE_PID_T
1345AC_TYPE_SIGNAL
1346AC_TYPE_SIZE_T
1347AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001348AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001349 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001350
Guido van Rossumef2255b2000-03-10 22:30:29 +00001351# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001352# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001353AC_CHECK_SIZEOF(int, 4)
1354AC_CHECK_SIZEOF(long, 4)
1355AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001356AC_CHECK_SIZEOF(short, 2)
1357AC_CHECK_SIZEOF(float, 4)
1358AC_CHECK_SIZEOF(double, 8)
1359AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001360AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001361AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001362
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001363AC_MSG_CHECKING(for long long support)
1364have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001365AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1366 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1367 have_long_long=yes
1368])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001369AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001370if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001371AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001372fi
1373
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001374AC_MSG_CHECKING(for long double support)
1375have_long_double=no
1376AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1377 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1378 have_long_double=yes
1379])
1380AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001381if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001382AC_CHECK_SIZEOF(long double, 12)
1383fi
1384
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001385AC_MSG_CHECKING(for _Bool support)
1386have_c99_bool=no
1387AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1388 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1389 have_c99_bool=yes
1390])
1391AC_MSG_RESULT($have_c99_bool)
1392if test "$have_c99_bool" = yes ; then
1393AC_CHECK_SIZEOF(_Bool, 1)
1394fi
1395
Martin v. Löwisebe26702006-10-02 14:55:51 +00001396AC_CHECK_TYPES(uintptr_t,
1397 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001398 [], [#ifdef HAVE_STDINT_H
1399 #include <stdint.h>
1400 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001401
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001402
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001403# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1404AC_MSG_CHECKING(size of off_t)
1405AC_CACHE_VAL(ac_cv_sizeof_off_t,
1406[AC_TRY_RUN([#include <stdio.h>
1407#include <sys/types.h>
1408main()
1409{
1410 FILE *f=fopen("conftestval", "w");
1411 if (!f) exit(1);
1412 fprintf(f, "%d\n", sizeof(off_t));
1413 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001414}],
1415ac_cv_sizeof_off_t=`cat conftestval`,
1416ac_cv_sizeof_off_t=0,
1417ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001418])
1419AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001420AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1421[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001422
1423AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001424if test "$have_long_long" = yes -a \
1425 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1426 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001427 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1428 [Defined to enable large file support when an off_t is bigger than a long
1429 and long long is available and at least as big as an off_t. You may need
1430 to add some flags for configuration and compilation to enable this mode.
1431 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001432 AC_MSG_RESULT(yes)
1433else
1434 AC_MSG_RESULT(no)
1435fi
1436
Fred Drakea3f6e912000-06-29 20:44:47 +00001437# AC_CHECK_SIZEOF() doesn't include <time.h>.
1438AC_MSG_CHECKING(size of time_t)
1439AC_CACHE_VAL(ac_cv_sizeof_time_t,
1440[AC_TRY_RUN([#include <stdio.h>
1441#include <time.h>
1442main()
1443{
1444 FILE *f=fopen("conftestval", "w");
1445 if (!f) exit(1);
1446 fprintf(f, "%d\n", sizeof(time_t));
1447 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001448}],
1449ac_cv_sizeof_time_t=`cat conftestval`,
1450ac_cv_sizeof_time_t=0,
1451ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001452])
1453AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001454AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1455[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001456
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001457
Trent Mick635f6fb2000-08-23 21:33:05 +00001458# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001459ac_save_cc="$CC"
1460if test "$ac_cv_kpthread" = "yes"
1461then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001462elif test "$ac_cv_kthread" = "yes"
1463then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001464elif test "$ac_cv_pthread" = "yes"
1465then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001466fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001467AC_MSG_CHECKING(for pthread_t)
1468have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001469AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001470AC_MSG_RESULT($have_pthread_t)
1471if test "$have_pthread_t" = yes ; then
1472 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1473 AC_MSG_CHECKING(size of pthread_t)
1474 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1475 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001476#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001477 main()
1478 {
1479 FILE *f=fopen("conftestval", "w");
1480 if (!f) exit(1);
1481 fprintf(f, "%d\n", sizeof(pthread_t));
1482 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001483 }],
1484 ac_cv_sizeof_pthread_t=`cat conftestval`,
1485 ac_cv_sizeof_pthread_t=0,
1486 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001487 ])
1488 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001489 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1490 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001491fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001492CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001493
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001494AC_MSG_CHECKING(for --enable-toolbox-glue)
1495AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001496 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001497
1498if test -z "$enable_toolbox_glue"
1499then
1500 case $ac_sys_system/$ac_sys_release in
1501 Darwin/*)
1502 enable_toolbox_glue="yes";;
1503 *)
1504 enable_toolbox_glue="no";;
1505 esac
1506fi
1507case "$enable_toolbox_glue" in
1508yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001509 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001510 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001511 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1512 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001513 ;;
1514*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001515 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001516 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001517 ;;
1518esac
1519AC_MSG_RESULT($enable_toolbox_glue)
1520
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001521
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001522AC_SUBST(OTHER_LIBTOOL_OPT)
1523case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001524 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001525 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1526 ;;
1527 Darwin/*)
1528 OTHER_LIBTOOL_OPT=""
1529 ;;
1530esac
1531
Ronald Oussoren461f2202009-09-06 10:54:28 +00001532
1533ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001534AC_SUBST(LIBTOOL_CRUFT)
1535case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001536 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001537 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1538 if test "${enable_universalsdk}"; then
1539 :
1540 else
Ronald Oussoren461f2202009-09-06 10:54:28 +00001541 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001542 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001543 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001544 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001545 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001546 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1547 if test ${gcc_version} '<' 4.0
1548 then
1549 LIBTOOL_CRUFT="-lcc_dynamic"
1550 else
1551 LIBTOOL_CRUFT=""
1552 fi
Ronald Oussoren461f2202009-09-06 10:54:28 +00001553 AC_TRY_RUN([[
1554 #include <unistd.h>
1555 int main(int argc, char*argv[])
1556 {
1557 if (sizeof(long) == 4) {
1558 return 0;
1559 } else {
1560 return 1;
1561 }
1562 ]], ac_osx_32bit=yes,
1563 ac_osx_32bit=no,
1564 ac_osx_32bit=no)
1565
1566 if test "${ac_osx_32bit}" = "yes"; then
1567 case `arch` in
1568 i386)
1569 MACOSX_DEFAULT_ARCH="i386"
1570 ;;
1571 ppc)
1572 MACOSX_DEFAULT_ARCH="ppc"
1573 ;;
1574 *)
1575 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1576 ;;
1577 esac
1578 else
1579 case `arch` in
1580 i386)
1581 MACOSX_DEFAULT_ARCH="x86_64"
1582 ;;
1583 ppc)
1584 MACOSX_DEFAULT_ARCH="ppc64"
1585 ;;
1586 *)
1587 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1588 ;;
1589 esac
1590
1591 #ARCH_RUN_32BIT="true"
1592 fi
1593
1594 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001595 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001596 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001597esac
1598
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001599AC_MSG_CHECKING(for --enable-framework)
1600if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001601then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001602 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001603 # -F. is needed to allow linking to the framework while
1604 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001605 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1606 [Define if you want to produce an OpenStep/Rhapsody framework
1607 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001608 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001609 if test $enable_shared = "yes"
1610 then
1611 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1612 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001613else
1614 AC_MSG_RESULT(no)
1615fi
1616
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001617AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001618case $ac_sys_system/$ac_sys_release in
1619 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001620 AC_DEFINE(WITH_DYLD, 1,
1621 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1622 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1623 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001624 AC_MSG_RESULT(always on for Darwin)
1625 ;;
1626 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001627 AC_MSG_RESULT(no)
1628 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001629esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001630
Guido van Rossumac405f61994-09-12 10:56:06 +00001631# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001632AC_SUBST(SO)
1633AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001634AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001635AC_SUBST(CCSHARED)
1636AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001637# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001638# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001639AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001640if test -z "$SO"
1641then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001642 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001643 hp*|HP*)
1644 case `uname -m` in
1645 ia64) SO=.so;;
1646 *) SO=.sl;;
1647 esac
1648 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001649 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001650 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001651 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001652else
1653 # this might also be a termcap variable, see #610332
1654 echo
1655 echo '====================================================================='
1656 echo '+ +'
1657 echo '+ WARNING: You have set SO in your environment. +'
1658 echo '+ Do you really mean to change the extension for shared libraries? +'
1659 echo '+ Continuing in 10 seconds to let you to ponder. +'
1660 echo '+ +'
1661 echo '====================================================================='
1662 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001663fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001664AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001665
Neal Norwitz58e28882006-05-19 07:00:58 +00001666AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001667# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001668# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001669# (Shared libraries in this instance are shared modules to be loaded into
1670# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001671AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001672if test -z "$LDSHARED"
1673then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001674 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001675 AIX*)
1676 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001677 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001678 ;;
1679 BeOS*)
1680 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001681 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001682 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001683 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001684 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001685 SunOS/5*)
1686 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001687 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001688 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001689 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001690 hp*|HP*)
1691 if test "$GCC" = "yes"
1692 then LDSHARED='$(CC) -shared'
1693 else LDSHARED='ld -b';
1694 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001695 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001696 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001697 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1698 if test "$enable_framework" ; then
1699 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001700 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1701 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001702 else
1703 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001704 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001705 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001706 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001707 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1708 if test "$enable_framework" ; then
1709 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001710 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1711 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001712 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001713 # No framework, use the Python app as bundle-loader
1714 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001715 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001716 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001717 Darwin/*)
1718 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1719 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001720
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001721 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001722 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001723 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001724 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001725 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001726 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1727 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001728 else
1729 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1730 if test "$enable_framework" ; then
1731 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001732 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1733 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001734 else
1735 # No framework, use the Python app as bundle-loader
1736 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1737 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1738 fi
1739 fi
1740 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001741 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001742 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001743 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001744 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001745 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001746 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001747 else
1748 LDSHARED="ld -Bshareable ${LDFLAGS}"
1749 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001750 OpenBSD*)
1751 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1752 then
1753 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1754 else
1755 case `uname -r` in
1756 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1757 LDSHARED="ld -Bshareable ${LDFLAGS}"
1758 ;;
1759 *)
1760 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1761 ;;
1762 esac
1763 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001764 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001765 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001766 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001767 then LDSHARED='$(CC) -shared'
1768 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001769 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001770 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001771 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001772 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001773 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001774 *) LDSHARED="ld";;
1775 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001776fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001777AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001778BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001779# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001780# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001781AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001782if test -z "$CCSHARED"
1783then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001784 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001785 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001786 then CCSHARED="-fPIC";
1787 elif test `uname -p` = sparc;
1788 then CCSHARED="-xcode=pic32";
1789 else CCSHARED="-Kpic";
1790 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001791 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001792 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001793 else CCSHARED="+z";
1794 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001795 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001796 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001797 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001798 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001799 if test "$GCC" = "yes"
1800 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001801 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001802 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001803 SCO_SV*)
1804 if test "$GCC" = "yes"
1805 then CCSHARED="-fPIC"
1806 else CCSHARED="-Kpic -belf"
1807 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001808 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001809 IRIX*/6*) case $CC in
1810 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001811 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001812 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001813 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001814 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001815fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001816AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001817# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001818# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001819AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001820if test -z "$LINKFORSHARED"
1821then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001822 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001823 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001824 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001825 LINKFORSHARED="-Wl,-E -Wl,+s";;
1826# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001827 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001828 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001829 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001830 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001831 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1832 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001833 # not used by the core itself but which needs to be in the core so
1834 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001835 # -prebind is no longer used, because it actually seems to give a
1836 # slowdown in stead of a speedup, maybe due to the large number of
1837 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001838
1839 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001840 if test "$enable_framework"
1841 then
Jack Jansenda49e192005-01-07 13:08:22 +00001842 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001843 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001844 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001845 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001846 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001847 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001848 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001849 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1850 then
1851 LINKFORSHARED="-Wl,--export-dynamic"
1852 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001853 SunOS/5*) case $CC in
1854 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001855 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001856 then
1857 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001858 fi;;
1859 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001860 CYGWIN*)
1861 if test $enable_shared = "no"
1862 then
1863 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1864 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001865 QNX*)
1866 # -Wl,-E causes the symbols to be added to the dynamic
1867 # symbol table so that they can be found when a module
1868 # is loaded. -N 2048K causes the stack size to be set
1869 # to 2048 kilobytes so that the stack doesn't overflow
1870 # when running test_compile.py.
1871 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001872 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001873fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001874AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001875
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001876
Neil Schemenauer61c51152001-01-26 16:18:16 +00001877AC_SUBST(CFLAGSFORSHARED)
1878AC_MSG_CHECKING(CFLAGSFORSHARED)
1879if test ! "$LIBRARY" = "$LDLIBRARY"
1880then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001881 case $ac_sys_system in
1882 CYGWIN*)
1883 # Cygwin needs CCSHARED when building extension DLLs
1884 # but not when building the interpreter DLL.
1885 CFLAGSFORSHARED='';;
1886 *)
1887 CFLAGSFORSHARED='$(CCSHARED)'
1888 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001889fi
1890AC_MSG_RESULT($CFLAGSFORSHARED)
1891
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001892# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1893# library (with --enable-shared).
1894# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001895# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1896# if it is not required, since it creates a dependency of the shared library
1897# to LIBS. This, in turn, means that applications linking the shared libpython
1898# don't need to link LIBS explicitly. The default should be only changed
1899# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001900AC_SUBST(SHLIBS)
1901AC_MSG_CHECKING(SHLIBS)
1902case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001903 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001904 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001905esac
1906AC_MSG_RESULT($SHLIBS)
1907
1908
Guido van Rossum627b2d71993-12-24 10:39:16 +00001909# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001910AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1911AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001912
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00001913# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001914if test "$with_threads" = "yes" -o -z "$with_threads"; then
1915 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1916 # posix4 on Solaris 2.6
1917 # pthread (first!) on Linux
1918fi
1919
Martin v. Löwis19d17342003-06-14 21:03:05 +00001920# check if we need libintl for locale functions
1921AC_CHECK_LIB(intl, textdomain,
1922 AC_DEFINE(WITH_LIBINTL, 1,
1923 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001924
1925# checks for system dependent C++ extensions support
1926case "$ac_sys_system" in
1927 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1928 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1929 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001930 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1931 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1932 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001933 AC_MSG_RESULT(yes)],
1934 [AC_MSG_RESULT(no)]);;
1935 *) ;;
1936esac
1937
Guido van Rossum70c7f481998-03-26 18:44:10 +00001938# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001939# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001940AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001941AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001942
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001943case "$ac_sys_system" in
1944BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001945AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1946;;
1947esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001948
Guido van Rossumc5a39031996-07-31 17:35:03 +00001949AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001950AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001951 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1952[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001953AC_MSG_RESULT($withval)
1954LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001955],
1956[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001957
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001958# Check for use of the system libffi library
1959AC_MSG_CHECKING(for --with-system-ffi)
1960AC_ARG_WITH(system_ffi,
1961 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1962
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001963AC_MSG_RESULT($with_system_ffi)
1964
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001965# Determine if signalmodule should be used.
1966AC_SUBST(USE_SIGNAL_MODULE)
1967AC_SUBST(SIGNAL_OBJS)
1968AC_MSG_CHECKING(for --with-signal-module)
1969AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001970 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001971
1972if test -z "$with_signal_module"
1973then with_signal_module="yes"
1974fi
1975AC_MSG_RESULT($with_signal_module)
1976
1977if test "${with_signal_module}" = "yes"; then
1978 USE_SIGNAL_MODULE=""
1979 SIGNAL_OBJS=""
1980else
1981 USE_SIGNAL_MODULE="#"
1982 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1983fi
1984
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001985# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001986AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001987USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001988
Guido van Rossum54d93d41997-01-22 20:51:58 +00001989AC_MSG_CHECKING(for --with-dec-threads)
1990AC_SUBST(LDLAST)
1991AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001992 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1993[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001994AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001995LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001996if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001997 with_thread="$withval";
1998fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001999[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002000
Martin v. Löwis11437992002-04-12 09:54:03 +00002001# Templates for things AC_DEFINEd more than once.
2002# For a single AC_DEFINE, no template is needed.
2003AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2004AH_TEMPLATE(_REENTRANT,
2005 [Define to force use of thread-safe errno, h_errno, and other functions])
2006AH_TEMPLATE(WITH_THREAD,
2007 [Define if you want to compile in rudimentary thread support])
2008
Guido van Rossum54d93d41997-01-22 20:51:58 +00002009AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002010dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002011AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002012 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002013
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002014# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002015dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002016AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002017 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2018 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002019
2020if test -z "$with_threads"
2021then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002022fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002023AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002024
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002025AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002026if test "$with_threads" = "no"
2027then
2028 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002029elif test "$ac_cv_pthread_is_default" = yes
2030then
2031 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002032 # Defining _REENTRANT on system with POSIX threads should not hurt.
2033 AC_DEFINE(_REENTRANT)
2034 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002035 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002036elif test "$ac_cv_kpthread" = "yes"
2037then
2038 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002039 if test "$ac_cv_cxx_thread" = "yes"; then
2040 CXX="$CXX -Kpthread"
2041 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002042 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002043 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002044 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002045elif test "$ac_cv_kthread" = "yes"
2046then
2047 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002048 if test "$ac_cv_cxx_thread" = "yes"; then
2049 CXX="$CXX -Kthread"
2050 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002051 AC_DEFINE(WITH_THREAD)
2052 posix_threads=yes
2053 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002054elif test "$ac_cv_pthread" = "yes"
2055then
2056 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002057 if test "$ac_cv_cxx_thread" = "yes"; then
2058 CXX="$CXX -pthread"
2059 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002060 AC_DEFINE(WITH_THREAD)
2061 posix_threads=yes
2062 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002063else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002064 if test ! -z "$with_threads" -a -d "$with_threads"
2065 then LDFLAGS="$LDFLAGS -L$with_threads"
2066 fi
2067 if test ! -z "$withval" -a -d "$withval"
2068 then LDFLAGS="$LDFLAGS -L$withval"
2069 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002070
2071 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002072 # define _POSIX_THREADS in unistd.h. Some apparently don't
2073 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002074 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2075 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002076 [
2077#include <unistd.h>
2078#ifdef _POSIX_THREADS
2079yes
2080#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002081 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2082 AC_MSG_RESULT($unistd_defines_pthreads)
2083
Martin v. Löwis130fb172001-07-19 11:00:41 +00002084 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002085 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2086 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002087 AC_DEFINE(HURD_C_THREADS, 1,
2088 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002089 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002090 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002091 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2092 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002093 AC_DEFINE(MACH_C_THREADS, 1,
2094 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002095 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002096 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002097 AC_ARG_WITH([pth],
2098 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2099 [AC_MSG_RESULT($withval)
2100 AC_DEFINE([WITH_THREAD])
2101 AC_DEFINE([HAVE_PTH], 1,
2102 [Define if you have GNU PTH threads.])
2103 LIBS="-lpth $LIBS"
2104 THREADOBJ="Python/thread.o"],
2105 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002106
2107 # Just looking for pthread_create in libpthread is not enough:
2108 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2109 # So we really have to include pthread.h, and then link.
2110 _libs=$LIBS
2111 LIBS="$LIBS -lpthread"
2112 AC_MSG_CHECKING([for pthread_create in -lpthread])
2113 AC_TRY_LINK([#include <pthread.h>
2114
2115void * start_routine (void *arg) { exit (0); }], [
2116pthread_create (NULL, NULL, start_routine, NULL)], [
2117 AC_MSG_RESULT(yes)
2118 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002119 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002120 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002121 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002122 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002123 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002124 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002125 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2126 AC_DEFINE(ATHEOS_THREADS, 1,
2127 [Define this if you have AtheOS threads.])
2128 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002129 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002130 AC_DEFINE(BEOS_THREADS, 1,
2131 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002132 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002133 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002134 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002135 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002136 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002137 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002138 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002139 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002140 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002141 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002142 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002143 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002144 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002145 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002146 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002147 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002148 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002149 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002150 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002151
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002152 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2153 LIBS="$LIBS -lmpc"
2154 THREADOBJ="Python/thread.o"
2155 USE_THREAD_MODULE=""])
2156
2157 if test "$posix_threads" != "yes"; then
2158 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2159 LIBS="$LIBS -lthread"
2160 THREADOBJ="Python/thread.o"
2161 USE_THREAD_MODULE=""])
2162 fi
2163
2164 if test "$USE_THREAD_MODULE" != "#"
2165 then
2166 # If the above checks didn't disable threads, (at least) OSF1
2167 # needs this '-threads' argument during linking.
2168 case $ac_sys_system in
2169 OSF1) LDLAST=-threads;;
2170 esac
2171 fi
2172fi
2173
2174if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002175 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002176 AC_DEFINE(_POSIX_THREADS, 1,
2177 [Define if you have POSIX threads,
2178 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002179 fi
2180
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002181 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2182 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002183 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2184 Defined for Solaris 2.6 bug in pthread header.)
2185 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002186 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002187 Define if the Posix semaphores do not work on your system)
2188 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002189 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2190 Define if the Posix semaphores do not work on your system)
2191 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002192 esac
2193
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002194 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2195 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2196 [AC_TRY_RUN([#include <pthread.h>
2197 void *foo(void *parm) {
2198 return NULL;
2199 }
2200 main() {
2201 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002202 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002203 if (pthread_attr_init(&attr)) exit(-1);
2204 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002205 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002206 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002207 }],
2208 ac_cv_pthread_system_supported=yes,
2209 ac_cv_pthread_system_supported=no,
2210 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002211 ])
2212 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2213 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002214 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002215 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002216 AC_CHECK_FUNCS(pthread_sigmask,
2217 [case $ac_sys_system in
2218 CYGWIN*)
2219 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2220 [Define if pthread_sigmask() does not work on your system.])
2221 ;;
2222 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002223fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002224
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002225
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002226# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002227AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002228AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002229AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002230[ --enable-ipv6 Enable ipv6 (with ipv4) support
2231 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002232[ case "$enableval" in
2233 no)
2234 AC_MSG_RESULT(no)
2235 ipv6=no
2236 ;;
2237 *) AC_MSG_RESULT(yes)
2238 AC_DEFINE(ENABLE_IPV6)
2239 ipv6=yes
2240 ;;
2241 esac ],
2242
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002243[
2244dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245 AC_TRY_RUN([ /* AF_INET6 available check */
2246#include <sys/types.h>
2247#include <sys/socket.h>
2248main()
2249{
2250 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2251 exit(1);
2252 else
2253 exit(0);
2254}
2255],
2256 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002257 ipv6=yes,
2258 AC_MSG_RESULT(no)
2259 ipv6=no,
2260 AC_MSG_RESULT(no)
2261 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002262)
2263
2264if test "$ipv6" = "yes"; then
2265 AC_MSG_CHECKING(if RFC2553 API is available)
2266 AC_TRY_COMPILE([#include <sys/types.h>
2267#include <netinet/in.h>],
2268 [struct sockaddr_in6 x;
2269x.sin6_scope_id;],
2270 AC_MSG_RESULT(yes)
2271 ipv6=yes,
2272 AC_MSG_RESULT(no, IPv6 disabled)
2273 ipv6=no)
2274fi
2275
2276if test "$ipv6" = "yes"; then
2277 AC_DEFINE(ENABLE_IPV6)
2278fi
2279])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002280
2281ipv6type=unknown
2282ipv6lib=none
2283ipv6trylibc=no
2284
2285if test "$ipv6" = "yes"; then
2286 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002287 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2288 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002289 case $i in
2290 inria)
2291 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002292 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293#include <netinet/in.h>
2294#ifdef IPV6_INRIA_VERSION
2295yes
2296#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002297 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002298 ;;
2299 kame)
2300 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002301 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002302#include <netinet/in.h>
2303#ifdef __KAME__
2304yes
2305#endif],
2306 [ipv6type=$i;
2307 ipv6lib=inet6
2308 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002309 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002310 ;;
2311 linux-glibc)
2312 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002313 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002314#include <features.h>
2315#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2316yes
2317#endif],
2318 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002319 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002320 ;;
2321 linux-inet6)
2322 dnl http://www.v6.linux.or.jp/
2323 if test -d /usr/inet6; then
2324 ipv6type=$i
2325 ipv6lib=inet6
2326 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002327 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002328 fi
2329 ;;
2330 solaris)
2331 if test -f /etc/netconfig; then
2332 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2333 ipv6type=$i
2334 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002335 fi
2336 fi
2337 ;;
2338 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002339 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002340#include <sys/param.h>
2341#ifdef _TOSHIBA_INET6
2342yes
2343#endif],
2344 [ipv6type=$i;
2345 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002346 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002347 ;;
2348 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002349 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002350#include </usr/local/v6/include/sys/v6config.h>
2351#ifdef __V6D__
2352yes
2353#endif],
2354 [ipv6type=$i;
2355 ipv6lib=v6;
2356 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002357 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002358 ;;
2359 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002360 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002361#include <sys/param.h>
2362#ifdef _ZETA_MINAMI_INET6
2363yes
2364#endif],
2365 [ipv6type=$i;
2366 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002367 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002368 ;;
2369 esac
2370 if test "$ipv6type" != "unknown"; then
2371 break
2372 fi
2373 done
2374 AC_MSG_RESULT($ipv6type)
2375fi
2376
2377if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2378 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2379 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2380 echo "using lib$ipv6lib"
2381 else
2382 if test $ipv6trylibc = "yes"; then
2383 echo "using libc"
2384 else
2385 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2386 echo "You need to fetch lib$ipv6lib.a from appropriate"
2387 echo 'ipv6 kit and compile beforehand.'
2388 exit 1
2389 fi
2390 fi
2391fi
2392
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002393AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2394AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2395 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2396 AC_MSG_RESULT(yes),
2397 AC_MSG_RESULT(no)
2398)
2399
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002400# Check for --with-doc-strings
2401AC_MSG_CHECKING(for --with-doc-strings)
2402AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002403 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002404
2405if test -z "$with_doc_strings"
2406then with_doc_strings="yes"
2407fi
2408if test "$with_doc_strings" != "no"
2409then
2410 AC_DEFINE(WITH_DOC_STRINGS, 1,
2411 [Define if you want documentation strings in extension modules])
2412fi
2413AC_MSG_RESULT($with_doc_strings)
2414
Neil Schemenauera35c6882001-02-27 04:45:05 +00002415# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002416AC_MSG_CHECKING(for --with-tsc)
2417AC_ARG_WITH(tsc,
2418[ --with(out)-tsc enable/disable timestamp counter profile], [
2419if test "$withval" != no
2420then
2421 AC_DEFINE(WITH_TSC, 1,
2422 [Define to profile with the Pentium timestamp counter])
2423 AC_MSG_RESULT(yes)
2424else AC_MSG_RESULT(no)
2425fi],
2426[AC_MSG_RESULT(no)])
2427
2428# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002429AC_MSG_CHECKING(for --with-pymalloc)
2430AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002431 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002432
2433if test -z "$with_pymalloc"
2434then with_pymalloc="yes"
2435fi
2436if test "$with_pymalloc" != "no"
2437then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002438 AC_DEFINE(WITH_PYMALLOC, 1,
2439 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002440fi
2441AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002442
Barry Warsawef82cd72000-06-30 16:21:01 +00002443# Check for --with-wctype-functions
2444AC_MSG_CHECKING(for --with-wctype-functions)
2445AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002446 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2447[
Barry Warsawef82cd72000-06-30 16:21:01 +00002448if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002449then
2450 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2451 [Define if you want wctype.h functions to be used instead of the
2452 one supplied by Python itself. (see Include/unicodectype.h).])
2453 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002454else AC_MSG_RESULT(no)
2455fi],
2456[AC_MSG_RESULT(no)])
2457
Guido van Rossum68242b51996-05-28 22:53:03 +00002458# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002459AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002460DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002461
Guido van Rossume97ee181999-12-20 21:27:22 +00002462# the dlopen() function means we might want to use dynload_shlib.o. some
2463# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002464AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002465
2466# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2467# loading of modules.
2468AC_SUBST(DYNLOADFILE)
2469AC_MSG_CHECKING(DYNLOADFILE)
2470if test -z "$DYNLOADFILE"
2471then
2472 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002473 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2474 if test "$ac_cv_func_dlopen" = yes
2475 then DYNLOADFILE="dynload_shlib.o"
2476 else DYNLOADFILE="dynload_aix.o"
2477 fi
2478 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002479 BeOS*) DYNLOADFILE="dynload_beos.o";;
2480 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002481 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2482 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002483 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002484 *)
2485 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2486 # out any dynamic loading
2487 if test "$ac_cv_func_dlopen" = yes
2488 then DYNLOADFILE="dynload_shlib.o"
2489 else DYNLOADFILE="dynload_stub.o"
2490 fi
2491 ;;
2492 esac
2493fi
2494AC_MSG_RESULT($DYNLOADFILE)
2495if test "$DYNLOADFILE" != "dynload_stub.o"
2496then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002497 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2498 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002499fi
2500
Jack Jansenc49e5b72001-06-19 15:00:23 +00002501# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2502
2503AC_SUBST(MACHDEP_OBJS)
2504AC_MSG_CHECKING(MACHDEP_OBJS)
2505if test -z "$MACHDEP_OBJS"
2506then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002507 MACHDEP_OBJS=$extra_machdep_objs
2508else
2509 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002510fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002511AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002512
Guido van Rossum627b2d71993-12-24 10:39:16 +00002513# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002514AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2515 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002516 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002517 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002518 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002519 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002520 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002521 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002522 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002523 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002524 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002525 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002526
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002527# For some functions, having a definition is not sufficient, since
2528# we want to take their address.
2529AC_MSG_CHECKING(for chroot)
2530AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2531 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2532 AC_MSG_RESULT(yes),
2533 AC_MSG_RESULT(no)
2534)
2535AC_MSG_CHECKING(for link)
2536AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2537 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2538 AC_MSG_RESULT(yes),
2539 AC_MSG_RESULT(no)
2540)
2541AC_MSG_CHECKING(for symlink)
2542AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2543 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2544 AC_MSG_RESULT(yes),
2545 AC_MSG_RESULT(no)
2546)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002547AC_MSG_CHECKING(for fchdir)
2548AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2549 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2550 AC_MSG_RESULT(yes),
2551 AC_MSG_RESULT(no)
2552)
2553AC_MSG_CHECKING(for fsync)
2554AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002555 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002556 AC_MSG_RESULT(yes),
2557 AC_MSG_RESULT(no)
2558)
2559AC_MSG_CHECKING(for fdatasync)
2560AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2561 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2562 AC_MSG_RESULT(yes),
2563 AC_MSG_RESULT(no)
2564)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002565AC_MSG_CHECKING(for epoll)
2566AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2567 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2568 AC_MSG_RESULT(yes),
2569 AC_MSG_RESULT(no)
2570)
2571AC_MSG_CHECKING(for kqueue)
2572AC_TRY_COMPILE([
2573#include <sys/types.h>
2574#include <sys/event.h>
2575 ], int x=kqueue(),
2576 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2577 AC_MSG_RESULT(yes),
2578 AC_MSG_RESULT(no)
2579)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002580# On some systems (eg. FreeBSD 5), we would find a definition of the
2581# functions ctermid_r, setgroups in the library, but no prototype
2582# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2583# address to avoid compiler warnings and potential miscompilations
2584# because of the missing prototypes.
2585
2586AC_MSG_CHECKING(for ctermid_r)
2587AC_TRY_COMPILE([
2588#include "confdefs.h"
2589#include <stdio.h>
2590], void* p = ctermid_r,
2591 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2592 AC_MSG_RESULT(yes),
2593 AC_MSG_RESULT(no)
2594)
2595
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002596AC_MSG_CHECKING(for flock)
2597AC_TRY_COMPILE([
2598#include "confdefs.h"
2599#include <sys/file.h>
2600], void* p = flock,
2601 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2602 AC_MSG_RESULT(yes),
2603 AC_MSG_RESULT(no)
2604)
2605
2606AC_MSG_CHECKING(for getpagesize)
2607AC_TRY_COMPILE([
2608#include "confdefs.h"
2609#include <unistd.h>
2610], void* p = getpagesize,
2611 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2612 AC_MSG_RESULT(yes),
2613 AC_MSG_RESULT(no)
2614)
2615
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002616dnl check for true
2617AC_CHECK_PROGS(TRUE, true, /bin/true)
2618
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002619dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2620dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002621AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002622 AC_CHECK_LIB(resolv, inet_aton)
2623)
2624
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002625# On Tru64, chflags seems to be present, but calling it will
2626# exit Python
2627AC_MSG_CHECKING(for chflags)
2628AC_TRY_RUN([
2629#include <sys/stat.h>
2630#include <unistd.h>
2631int main(int argc, char*argv[])
2632{
2633 if(chflags(argv[0], 0) != 0)
2634 return 1;
2635 return 0;
2636}
2637],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2638 AC_MSG_RESULT(yes),
2639 AC_MSG_RESULT(no)
2640)
2641
2642AC_MSG_CHECKING(for lchflags)
2643AC_TRY_RUN([
2644#include <sys/stat.h>
2645#include <unistd.h>
2646int main(int argc, char*argv[])
2647{
2648 if(lchflags(argv[0], 0) != 0)
2649 return 1;
2650 return 0;
2651}
2652],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2653 AC_MSG_RESULT(yes),
2654 AC_MSG_RESULT(no)
2655)
2656
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002657dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002658dnl
2659dnl On MacOSX the linker will search for dylibs on the entire linker path
2660dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2661dnl to revert to a more traditional unix behaviour and make it possible to
2662dnl override the system libz with a local static library of libz. Temporarily
2663dnl add that flag to our CFLAGS as well to ensure that we check the version
2664dnl of libz that will be used by setup.py.
2665dnl The -L/usr/local/lib is needed as wel to get the same compilation
2666dnl environment as setup.py (and leaving it out can cause configure to use the
2667dnl wrong version of the library)
2668case $ac_sys_system/$ac_sys_release in
2669Darwin/*)
2670 _CUR_CFLAGS="${CFLAGS}"
2671 _CUR_LDFLAGS="${LDFLAGS}"
2672 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2673 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2674 ;;
2675esac
2676
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002677AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2678
Ronald Oussorenf8752642006-07-06 10:13:35 +00002679case $ac_sys_system/$ac_sys_release in
2680Darwin/*)
2681 CFLAGS="${_CUR_CFLAGS}"
2682 LDFLAGS="${_CUR_LDFLAGS}"
2683 ;;
2684esac
2685
Martin v. Löwise9416172003-05-03 10:12:45 +00002686AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002687AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002688#include "confdefs.h"
2689#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002690], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002691 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2692 AC_MSG_RESULT(yes),
2693 AC_MSG_RESULT(no)
2694)
2695
2696AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002697AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002698#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002699#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002700#include <sys/socket.h>
2701#include <netinet/in.h>
2702#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002703], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002704 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2705 AC_MSG_RESULT(yes),
2706 AC_MSG_RESULT(no)
2707)
2708
2709AC_MSG_CHECKING(for inet_pton)
2710AC_TRY_COMPILE([
2711#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002712#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002713#include <sys/socket.h>
2714#include <netinet/in.h>
2715#include <arpa/inet.h>
2716], void* p = inet_pton,
2717 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2718 AC_MSG_RESULT(yes),
2719 AC_MSG_RESULT(no)
2720)
2721
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002722# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002723AC_MSG_CHECKING(for setgroups)
2724AC_TRY_COMPILE([
2725#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002726#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002727#ifdef HAVE_GRP_H
2728#include <grp.h>
2729#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002730],
2731void* p = setgroups,
2732 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2733 AC_MSG_RESULT(yes),
2734 AC_MSG_RESULT(no)
2735)
2736
Fred Drake8cef4cf2000-06-28 16:40:38 +00002737# check for openpty and forkpty
2738
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002739AC_CHECK_FUNCS(openpty,,
2740 AC_CHECK_LIB(util,openpty,
2741 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2742 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2743 )
2744)
2745AC_CHECK_FUNCS(forkpty,,
2746 AC_CHECK_LIB(util,forkpty,
2747 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2748 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2749 )
2750)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002751
Brett Cannonaa5778d2008-03-18 04:09:00 +00002752# Stuff for expat.
2753AC_CHECK_FUNCS(memmove)
2754
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002755# check for long file support functions
2756AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2757
Brett Cannonaa5778d2008-03-18 04:09:00 +00002758AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002759AC_CHECK_FUNCS(getpgrp,
2760 AC_TRY_COMPILE([#include <unistd.h>],
2761 [getpgrp(0);],
2762 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2763 [Define if getpgrp() must be called as getpgrp(0).])
2764 )
2765)
Jack Jansen150753c2003-03-29 22:07:47 +00002766AC_CHECK_FUNCS(setpgrp,
2767 AC_TRY_COMPILE([#include <unistd.h>],
2768 [setpgrp(0,0);],
2769 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2770 [Define if setpgrp() must be called as setpgrp(0, 0).])
2771 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002772)
2773AC_CHECK_FUNCS(gettimeofday,
2774 AC_TRY_COMPILE([#include <sys/time.h>],
2775 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2776 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2777 [Define if gettimeofday() does not have second (timezone) argument
2778 This is the case on Motorola V4 (R40V4.2)])
2779 )
2780)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002781
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002782AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002783AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002784#if defined(MAJOR_IN_MKDEV)
2785#include <sys/mkdev.h>
2786#elif defined(MAJOR_IN_SYSMACROS)
2787#include <sys/sysmacros.h>
2788#else
2789#include <sys/types.h>
2790#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002791],[
2792 makedev(major(0),minor(0));
2793],[
2794 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2795 [Define to 1 if you have the device macros.])
2796 AC_MSG_RESULT(yes)
2797],[
2798 AC_MSG_RESULT(no)
2799])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002800
2801# On OSF/1 V5.1, getaddrinfo is available, but a define
2802# for [no]getaddrinfo in netdb.h.
2803AC_MSG_CHECKING(for getaddrinfo)
2804AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002805#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002806#include <sys/socket.h>
2807#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002808#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002809],[
2810getaddrinfo(NULL, NULL, NULL, NULL);
2811], [
2812AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002813AC_MSG_CHECKING(getaddrinfo bug)
2814AC_TRY_RUN([
2815#include <sys/types.h>
2816#include <netdb.h>
2817#include <string.h>
2818#include <sys/socket.h>
2819#include <netinet/in.h>
2820
2821main()
2822{
2823 int passive, gaierr, inet4 = 0, inet6 = 0;
2824 struct addrinfo hints, *ai, *aitop;
2825 char straddr[INET6_ADDRSTRLEN], strport[16];
2826
2827 for (passive = 0; passive <= 1; passive++) {
2828 memset(&hints, 0, sizeof(hints));
2829 hints.ai_family = AF_UNSPEC;
2830 hints.ai_flags = passive ? AI_PASSIVE : 0;
2831 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002832 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002833 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2834 (void)gai_strerror(gaierr);
2835 goto bad;
2836 }
2837 for (ai = aitop; ai; ai = ai->ai_next) {
2838 if (ai->ai_addr == NULL ||
2839 ai->ai_addrlen == 0 ||
2840 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2841 straddr, sizeof(straddr), strport, sizeof(strport),
2842 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2843 goto bad;
2844 }
2845 switch (ai->ai_family) {
2846 case AF_INET:
2847 if (strcmp(strport, "54321") != 0) {
2848 goto bad;
2849 }
2850 if (passive) {
2851 if (strcmp(straddr, "0.0.0.0") != 0) {
2852 goto bad;
2853 }
2854 } else {
2855 if (strcmp(straddr, "127.0.0.1") != 0) {
2856 goto bad;
2857 }
2858 }
2859 inet4++;
2860 break;
2861 case AF_INET6:
2862 if (strcmp(strport, "54321") != 0) {
2863 goto bad;
2864 }
2865 if (passive) {
2866 if (strcmp(straddr, "::") != 0) {
2867 goto bad;
2868 }
2869 } else {
2870 if (strcmp(straddr, "::1") != 0) {
2871 goto bad;
2872 }
2873 }
2874 inet6++;
2875 break;
2876 case AF_UNSPEC:
2877 goto bad;
2878 break;
2879 default:
2880 /* another family support? */
2881 break;
2882 }
2883 }
2884 }
2885
2886 if (!(inet4 == 0 || inet4 == 2))
2887 goto bad;
2888 if (!(inet6 == 0 || inet6 == 2))
2889 goto bad;
2890
2891 if (aitop)
2892 freeaddrinfo(aitop);
2893 exit(0);
2894
2895 bad:
2896 if (aitop)
2897 freeaddrinfo(aitop);
2898 exit(1);
2899}
2900],
2901AC_MSG_RESULT(good)
2902buggygetaddrinfo=no,
2903AC_MSG_RESULT(buggy)
2904buggygetaddrinfo=yes,
2905AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002906buggygetaddrinfo=yes)], [
2907AC_MSG_RESULT(no)
2908buggygetaddrinfo=yes
2909])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002910
2911if test "$buggygetaddrinfo" = "yes"; then
2912 if test "$ipv6" = "yes"; then
2913 echo 'Fatal: You must get working getaddrinfo() function.'
2914 echo ' or you can specify "--disable-ipv6"'.
2915 exit 1
2916 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002917else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002918 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002919fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002920AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002921
Guido van Rossum627b2d71993-12-24 10:39:16 +00002922# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002923AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002924AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002926AC_CHECK_MEMBERS([struct stat.st_rdev])
2927AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002928AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002929AC_CHECK_MEMBERS([struct stat.st_gen])
2930AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002931AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002932
2933AC_MSG_CHECKING(for time.h that defines altzone)
2934AC_CACHE_VAL(ac_cv_header_time_altzone,
2935[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2936 ac_cv_header_time_altzone=yes,
2937 ac_cv_header_time_altzone=no)])
2938AC_MSG_RESULT($ac_cv_header_time_altzone)
2939if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002940 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002941fi
2942
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002943was_it_defined=no
2944AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002945AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002946#include <sys/types.h>
2947#include <sys/select.h>
2948#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002949], [;], [
2950 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2951 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2952 (which you can't on SCO ODT 3.0).])
2953 was_it_defined=yes
2954])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002955AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002956
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002957AC_MSG_CHECKING(for addrinfo)
2958AC_CACHE_VAL(ac_cv_struct_addrinfo,
2959AC_TRY_COMPILE([
2960# include <netdb.h>],
2961 [struct addrinfo a],
2962 ac_cv_struct_addrinfo=yes,
2963 ac_cv_struct_addrinfo=no))
2964AC_MSG_RESULT($ac_cv_struct_addrinfo)
2965if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002966 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002967fi
2968
2969AC_MSG_CHECKING(for sockaddr_storage)
2970AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2971AC_TRY_COMPILE([
2972# include <sys/types.h>
2973# include <sys/socket.h>],
2974 [struct sockaddr_storage s],
2975 ac_cv_struct_sockaddr_storage=yes,
2976 ac_cv_struct_sockaddr_storage=no))
2977AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2978if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002979 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980fi
2981
Guido van Rossum627b2d71993-12-24 10:39:16 +00002982# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002983
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002984AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002985AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002986
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002987works=no
2988AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002989AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2990 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2991)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002993
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994works=no
2995AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002996AC_TRY_COMPILE([], [signed char c;], works=yes,
2997 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2998)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002999AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003000
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003001have_prototypes=no
3002AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003003AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3004 AC_DEFINE(HAVE_PROTOTYPES, 1,
3005 [Define if your compiler supports function prototype])
3006 have_prototypes=yes
3007])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003008AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003009
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003010works=no
3011AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003012AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003013#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003014int foo(int x, ...) {
3015 va_list va;
3016 va_start(va, x);
3017 va_arg(va, int);
3018 va_arg(va, char *);
3019 va_arg(va, double);
3020 return 0;
3021}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003022], [return foo(10, "", 3.14);], [
3023 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3024 [Define if your compiler supports variable length function prototypes
3025 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3026 works=yes
3027])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003028AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003029
Dave Cole331708b2004-08-09 04:51:41 +00003030# check for socketpair
3031AC_MSG_CHECKING(for socketpair)
3032AC_TRY_COMPILE([
3033#include <sys/types.h>
3034#include <sys/socket.h>
3035], void *x=socketpair,
3036 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3037 AC_MSG_RESULT(yes),
3038 AC_MSG_RESULT(no)
3039)
3040
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003041# check if sockaddr has sa_len member
3042AC_MSG_CHECKING(if sockaddr has sa_len member)
3043AC_TRY_COMPILE([#include <sys/types.h>
3044#include <sys/socket.h>],
3045[struct sockaddr x;
3046x.sa_len = 0;],
3047 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003049 AC_MSG_RESULT(no))
3050
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003051va_list_is_array=no
3052AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003053AC_TRY_COMPILE([
3054#ifdef HAVE_STDARG_PROTOTYPES
3055#include <stdarg.h>
3056#else
3057#include <varargs.h>
3058#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003059], [va_list list1, list2; list1 = list2;], , [
3060 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3061 va_list_is_array=yes
3062])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003063AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003064
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003065# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003066AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3067 [Define this if you have some version of gethostbyname_r()])
3068
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003069AC_CHECK_FUNC(gethostbyname_r, [
3070 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3071 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3072 OLD_CFLAGS=$CFLAGS
3073 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3074 AC_TRY_COMPILE([
3075# include <netdb.h>
3076 ], [
3077 char *name;
3078 struct hostent *he, *res;
3079 char buffer[2048];
3080 int buflen = 2048;
3081 int h_errnop;
3082
3083 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3084 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003085 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003086 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3087 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003088 AC_MSG_RESULT(yes)
3089 ], [
3090 AC_MSG_RESULT(no)
3091 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3092 AC_TRY_COMPILE([
3093# include <netdb.h>
3094 ], [
3095 char *name;
3096 struct hostent *he;
3097 char buffer[2048];
3098 int buflen = 2048;
3099 int h_errnop;
3100
3101 (void) gethostbyname_r(name, he, buffer, buflen, &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_5_ARG, 1,
3105 [Define this if you have the 5-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 3 args])
3110 AC_TRY_COMPILE([
3111# include <netdb.h>
3112 ], [
3113 char *name;
3114 struct hostent *he;
3115 struct hostent_data data;
3116
3117 (void) gethostbyname_r(name, he, &data);
3118 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003119 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003120 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3121 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003122 AC_MSG_RESULT(yes)
3123 ], [
3124 AC_MSG_RESULT(no)
3125 ])
3126 ])
3127 ])
3128 CFLAGS=$OLD_CFLAGS
3129], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003130 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003131])
3132AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3133AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3134AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003135AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003136AC_SUBST(HAVE_GETHOSTBYNAME)
3137
Guido van Rossum627b2d71993-12-24 10:39:16 +00003138# checks for system services
3139# (none yet)
3140
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003141# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003142AC_CHECK_FUNC(__fpu_control,
3143 [],
3144 [AC_CHECK_LIB(ieee, __fpu_control)
3145])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003146
Guido van Rossum93274221997-05-09 02:42:00 +00003147# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003148AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003149AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003150 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3151[
Guido van Rossum93274221997-05-09 02:42:00 +00003152if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003153then
3154 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3155 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3156 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003157else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003158fi],
3159[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003160
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003161# check for --with-libm=...
3162AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003163case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003164Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003165BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003166*) LIBM=-lm
3167esac
Guido van Rossum93274221997-05-09 02:42:00 +00003168AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003169AC_ARG_WITH(libm,
3170 AC_HELP_STRING(--with-libm=STRING, math library),
3171[
Guido van Rossum93274221997-05-09 02:42:00 +00003172if test "$withval" = no
3173then LIBM=
3174 AC_MSG_RESULT(force LIBM empty)
3175elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003176then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003177 AC_MSG_RESULT(set LIBM="$withval")
3178else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003179fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003180[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003181
3182# check for --with-libc=...
3183AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003184AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003185AC_ARG_WITH(libc,
3186 AC_HELP_STRING(--with-libc=STRING, C library),
3187[
Guido van Rossum93274221997-05-09 02:42:00 +00003188if test "$withval" = no
3189then LIBC=
3190 AC_MSG_RESULT(force LIBC empty)
3191elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003192then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003193 AC_MSG_RESULT(set LIBC="$withval")
3194else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003195fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003196[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003197
Christian Heimes0a8143f2007-12-18 23:22:54 +00003198# ************************************
3199# * Check for mathematical functions *
3200# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003201
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003202LIBS_SAVE=$LIBS
3203LIBS="$LIBS $LIBM"
3204
Mark Dickinsone05e8402009-05-04 13:30:43 +00003205# Detect whether system arithmetic is subject to x87-style double
3206# rounding issues. The result of this test has little meaning on non
3207# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3208# mode is round-to-nearest and double rounding issues are present, and
3209# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3210AC_MSG_CHECKING(for x87-style double rounding)
3211AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3212AC_TRY_RUN([
3213#include <stdlib.h>
3214#include <math.h>
3215int main() {
3216 volatile double x, y, z;
3217 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3218 x = 0.99999999999999989; /* 1-2**-53 */
3219 y = 1./x;
3220 if (y != 1.)
3221 exit(0);
3222 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3223 x = 1e16;
3224 y = 2.99999;
3225 z = x + y;
3226 if (z != 1e16+4.)
3227 exit(0);
3228 /* both tests show evidence of double rounding */
3229 exit(1);
3230}
3231],
3232ac_cv_x87_double_rounding=no,
3233ac_cv_x87_double_rounding=yes,
3234ac_cv_x87_double_rounding=no)])
3235AC_MSG_RESULT($ac_cv_x87_double_rounding)
3236if test "$ac_cv_x87_double_rounding" = yes
3237then
3238 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3239 [Define if arithmetic is subject to x87-style double rounding issue])
3240fi
3241
3242
Mark Dickinson265d7382008-04-21 22:32:24 +00003243# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3244# -0. on some architectures.
3245AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3246AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3247AC_TRY_RUN([
3248#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003249#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003250int main() {
3251 /* return 0 if either negative zeros don't exist
3252 on this platform or if negative zeros exist
3253 and tanh(-0.) == -0. */
3254 if (atan2(0., -1.) == atan2(-0., -1.) ||
3255 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3256 else exit(1);
3257}
3258],
3259ac_cv_tanh_preserves_zero_sign=yes,
3260ac_cv_tanh_preserves_zero_sign=no,
3261ac_cv_tanh_preserves_zero_sign=no)])
3262AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3263if test "$ac_cv_tanh_preserves_zero_sign" = yes
3264then
3265 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3266 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3267fi
3268
Mark Dickinsone05e8402009-05-04 13:30:43 +00003269AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3270AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003271
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003272LIBS=$LIBS_SAVE
3273
Guido van Rossumef2255b2000-03-10 22:30:29 +00003274# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003275AC_CHECK_HEADER(wchar.h, [
3276 AC_DEFINE(HAVE_WCHAR_H, 1,
3277 [Define if the compiler provides a wchar.h header file.])
3278 wchar_h="yes"
3279],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003280wchar_h="no"
3281)
3282
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003283# determine wchar_t size
3284if test "$wchar_h" = yes
3285then
Guido van Rossum67b26592001-10-20 14:21:45 +00003286 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003287fi
3288
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003289AC_MSG_CHECKING(for UCS-4 tcl)
3290have_ucs4_tcl=no
3291AC_TRY_COMPILE([
3292#include <tcl.h>
3293#if TCL_UTF_MAX != 6
3294# error "NOT UCS4_TCL"
3295#endif], [], [
3296 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3297 have_ucs4_tcl=yes
3298])
3299AC_MSG_RESULT($have_ucs4_tcl)
3300
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003301# check whether wchar_t is signed or not
3302if test "$wchar_h" = yes
3303then
3304 # check whether wchar_t is signed or not
3305 AC_MSG_CHECKING(whether wchar_t is signed)
3306 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3307 AC_TRY_RUN([
3308 #include <wchar.h>
3309 int main()
3310 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003311 /* Success: exit code 0 */
3312 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003313 }
3314 ],
3315 ac_cv_wchar_t_signed=yes,
3316 ac_cv_wchar_t_signed=no,
3317 ac_cv_wchar_t_signed=yes)])
3318 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3319fi
3320
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003321AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003322dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003323AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003324 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3325 [],
3326 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003327
3328if test $enable_unicode = yes
3329then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003330 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003331 case "$have_ucs4_tcl" in
3332 yes) enable_unicode="ucs4"
3333 ;;
3334 *) enable_unicode="ucs2"
3335 ;;
3336 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003337fi
3338
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003339AH_TEMPLATE(Py_UNICODE_SIZE,
3340 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003341case "$enable_unicode" in
3342ucs2) unicode_size="2"
3343 AC_DEFINE(Py_UNICODE_SIZE,2)
3344 ;;
3345ucs4) unicode_size="4"
3346 AC_DEFINE(Py_UNICODE_SIZE,4)
3347 ;;
3348esac
3349
Martin v. Löwis11437992002-04-12 09:54:03 +00003350AH_TEMPLATE(PY_UNICODE_TYPE,
3351 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003352
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003353AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003354if test "$enable_unicode" = "no"
3355then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003356 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003357 AC_MSG_RESULT(not used)
3358else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003359 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003360 AC_DEFINE(Py_USING_UNICODE, 1,
3361 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003362
3363 # wchar_t is only usable if it maps to an unsigned type
3364 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003365 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003366 then
3367 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003368 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3369 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003370 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003371 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003372 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3373 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3374 then
3375 PY_UNICODE_TYPE="unsigned short"
3376 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3377 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3378 then
3379 PY_UNICODE_TYPE="unsigned long"
3380 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3381 else
3382 PY_UNICODE_TYPE="no type found"
3383 fi
3384 AC_MSG_RESULT($PY_UNICODE_TYPE)
3385fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003386
3387# check for endianness
3388AC_C_BIGENDIAN
3389
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003390# Check whether right shifting a negative integer extends the sign bit
3391# or fills with zeros (like the Cray J90, according to Tim Peters).
3392AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003393AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003394AC_TRY_RUN([
3395int main()
3396{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003397 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003398}
Guido van Rossum3065c942001-09-17 04:03:14 +00003399],
3400ac_cv_rshift_extends_sign=yes,
3401ac_cv_rshift_extends_sign=no,
3402ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003403AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3404if test "$ac_cv_rshift_extends_sign" = no
3405then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003406 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3407 [Define if i>>j for signed int i does not extend the sign bit
3408 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003409fi
3410
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003411# check for getc_unlocked and related locking functions
3412AC_MSG_CHECKING(for getc_unlocked() and friends)
3413AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3414AC_TRY_LINK([#include <stdio.h>],[
3415 FILE *f = fopen("/dev/null", "r");
3416 flockfile(f);
3417 getc_unlocked(f);
3418 funlockfile(f);
3419], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3420AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3421if test "$ac_cv_have_getc_unlocked" = yes
3422then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003423 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3424 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003425fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003426
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003427# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003428# save the value of LIBS so we don't actually link Python with readline
3429LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003430
3431# On some systems we need to link readline to a termcap compatible
3432# library. NOTE: Keep the precedence of listed libraries synchronised
3433# with setup.py.
3434py_cv_lib_readline=no
3435AC_MSG_CHECKING([how to link readline libs])
3436for py_libtermcap in "" ncursesw ncurses curses termcap; do
3437 if test -z "$py_libtermcap"; then
3438 READLINE_LIBS="-lreadline"
3439 else
3440 READLINE_LIBS="-lreadline -l$py_libtermcap"
3441 fi
3442 LIBS="$READLINE_LIBS $LIBS_no_readline"
3443 AC_LINK_IFELSE(
3444 [AC_LANG_CALL([],[readline])],
3445 [py_cv_lib_readline=yes])
3446 if test $py_cv_lib_readline = yes; then
3447 break
3448 fi
3449done
3450# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3451#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003452if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003453 AC_MSG_RESULT([none])
3454else
3455 AC_MSG_RESULT([$READLINE_LIBS])
3456 AC_DEFINE(HAVE_LIBREADLINE, 1,
3457 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003458fi
3459
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003460# check for readline 2.1
3461AC_CHECK_LIB(readline, rl_callback_handler_install,
3462 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003463 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003464
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003465# check for readline 2.2
3466AC_TRY_CPP([#include <readline/readline.h>],
3467have_readline=yes, have_readline=no)
3468if test $have_readline = yes
3469then
3470 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3471 [readline/readline.h],
3472 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3473 [Define if you have readline 2.2]), )
3474fi
3475
Martin v. Löwis0daad592001-09-30 21:09:59 +00003476# check for readline 4.0
3477AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003478 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003479 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003480
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003481# also in 4.0
3482AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3483 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003484 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003485
Guido van Rossum353ae582001-07-10 16:45:32 +00003486# check for readline 4.2
3487AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003488 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003489 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003490
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003491# also in readline 4.2
3492AC_TRY_CPP([#include <readline/readline.h>],
3493have_readline=yes, have_readline=no)
3494if test $have_readline = yes
3495then
3496 AC_EGREP_HEADER([extern int rl_catch_signals;],
3497 [readline/readline.h],
3498 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3499 [Define if you can turn off readline's signal handling.]), )
3500fi
3501
Martin v. Löwis82bca632006-02-10 20:49:30 +00003502# End of readline checks: restore LIBS
3503LIBS=$LIBS_no_readline
3504
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003505AC_MSG_CHECKING(for broken nice())
3506AC_CACHE_VAL(ac_cv_broken_nice, [
3507AC_TRY_RUN([
3508int main()
3509{
3510 int val1 = nice(1);
3511 if (val1 != -1 && val1 == nice(2))
3512 exit(0);
3513 exit(1);
3514}
Guido van Rossum3065c942001-09-17 04:03:14 +00003515],
3516ac_cv_broken_nice=yes,
3517ac_cv_broken_nice=no,
3518ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003519AC_MSG_RESULT($ac_cv_broken_nice)
3520if test "$ac_cv_broken_nice" = yes
3521then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003522 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3523 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003524fi
3525
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003526AC_MSG_CHECKING(for broken poll())
3527AC_TRY_RUN([
3528#include <poll.h>
3529
3530int main (void)
3531 {
3532 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3533
3534 close (42);
3535
3536 int poll_test = poll (&poll_struct, 1, 0);
3537
3538 if (poll_test < 0)
3539 {
3540 exit(0);
3541 }
3542 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3543 {
3544 exit(0);
3545 }
3546 else
3547 {
3548 exit(1);
3549 }
3550 }
3551],
3552ac_cv_broken_poll=yes,
3553ac_cv_broken_poll=no,
3554ac_cv_broken_poll=no)
3555AC_MSG_RESULT($ac_cv_broken_poll)
3556if test "$ac_cv_broken_poll" = yes
3557then
3558 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3559 [Define if poll() sets errno on invalid file descriptors.])
3560fi
3561
Brett Cannon43802422005-02-10 20:48:03 +00003562# Before we can test tzset, we need to check if struct tm has a tm_zone
3563# (which is not required by ISO C or UNIX spec) and/or if we support
3564# tzname[]
3565AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003566
Brett Cannon43802422005-02-10 20:48:03 +00003567# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003568AC_MSG_CHECKING(for working tzset())
3569AC_CACHE_VAL(ac_cv_working_tzset, [
3570AC_TRY_RUN([
3571#include <stdlib.h>
3572#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003573#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003574
3575#if HAVE_TZNAME
3576extern char *tzname[];
3577#endif
3578
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003579int main()
3580{
Brett Cannon18367812003-09-19 00:59:16 +00003581 /* Note that we need to ensure that not only does tzset(3)
3582 do 'something' with localtime, but it works as documented
3583 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003584 This includes making sure that tzname is set properly if
3585 tm->tm_zone does not exist since it is the alternative way
3586 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003587
3588 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003589 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003590 */
3591
Brett Cannon43802422005-02-10 20:48:03 +00003592 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003593 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3594
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003595 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003596 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003597 if (localtime(&groundhogday)->tm_hour != 0)
3598 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003599#if HAVE_TZNAME
3600 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3601 if (strcmp(tzname[0], "UTC") ||
3602 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3603 exit(1);
3604#endif
Brett Cannon18367812003-09-19 00:59:16 +00003605
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003606 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003607 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003608 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003609 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003610#if HAVE_TZNAME
3611 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3612 exit(1);
3613#endif
Brett Cannon18367812003-09-19 00:59:16 +00003614
3615 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3616 tzset();
3617 if (localtime(&groundhogday)->tm_hour != 11)
3618 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003619#if HAVE_TZNAME
3620 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3621 exit(1);
3622#endif
3623
3624#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003625 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3626 exit(1);
3627 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3628 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003629#endif
Brett Cannon18367812003-09-19 00:59:16 +00003630
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003631 exit(0);
3632}
3633],
3634ac_cv_working_tzset=yes,
3635ac_cv_working_tzset=no,
3636ac_cv_working_tzset=no)])
3637AC_MSG_RESULT($ac_cv_working_tzset)
3638if test "$ac_cv_working_tzset" = yes
3639then
3640 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3641 [Define if tzset() actually switches the local timezone in a meaningful way.])
3642fi
3643
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003644# Look for subsecond timestamps in struct stat
3645AC_MSG_CHECKING(for tv_nsec in struct stat)
3646AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3647AC_TRY_COMPILE([#include <sys/stat.h>], [
3648struct stat st;
3649st.st_mtim.tv_nsec = 1;
3650],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003651ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003652ac_cv_stat_tv_nsec=no,
3653ac_cv_stat_tv_nsec=no))
3654AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3655if test "$ac_cv_stat_tv_nsec" = yes
3656then
3657 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3658 [Define if you have struct stat.st_mtim.tv_nsec])
3659fi
3660
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003661# Look for BSD style subsecond timestamps in struct stat
3662AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3663AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3664AC_TRY_COMPILE([#include <sys/stat.h>], [
3665struct stat st;
3666st.st_mtimespec.tv_nsec = 1;
3667],
3668ac_cv_stat_tv_nsec2=yes,
3669ac_cv_stat_tv_nsec2=no,
3670ac_cv_stat_tv_nsec2=no))
3671AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3672if test "$ac_cv_stat_tv_nsec2" = yes
3673then
3674 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3675 [Define if you have struct stat.st_mtimensec])
3676fi
3677
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003678# On HP/UX 11.0, mvwdelch is a block with a return statement
3679AC_MSG_CHECKING(whether mvwdelch is an expression)
3680AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3681AC_TRY_COMPILE([#include <curses.h>], [
3682 int rtn;
3683 rtn = mvwdelch(0,0,0);
3684], ac_cv_mvwdelch_is_expression=yes,
3685 ac_cv_mvwdelch_is_expression=no,
3686 ac_cv_mvwdelch_is_expression=yes))
3687AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3688
3689if test "$ac_cv_mvwdelch_is_expression" = yes
3690then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003691 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3692 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003693fi
3694
3695AC_MSG_CHECKING(whether WINDOW has _flags)
3696AC_CACHE_VAL(ac_cv_window_has_flags,
3697AC_TRY_COMPILE([#include <curses.h>], [
3698 WINDOW *w;
3699 w->_flags = 0;
3700], ac_cv_window_has_flags=yes,
3701 ac_cv_window_has_flags=no,
3702 ac_cv_window_has_flags=no))
3703AC_MSG_RESULT($ac_cv_window_has_flags)
3704
3705
3706if test "$ac_cv_window_has_flags" = yes
3707then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003708 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3709 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003710fi
3711
Walter Dörwald4994d952006-06-19 08:07:50 +00003712AC_MSG_CHECKING(for is_term_resized)
3713AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3714 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3715 AC_MSG_RESULT(yes),
3716 AC_MSG_RESULT(no)
3717)
3718
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003719AC_MSG_CHECKING(for resize_term)
3720AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3721 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003722 AC_MSG_RESULT(yes),
3723 AC_MSG_RESULT(no)
3724)
3725
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003726AC_MSG_CHECKING(for resizeterm)
3727AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3728 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003729 AC_MSG_RESULT(yes),
3730 AC_MSG_RESULT(no)
3731)
3732
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003733AC_MSG_CHECKING(for /dev/ptmx)
3734
3735if test -r /dev/ptmx
3736then
3737 AC_MSG_RESULT(yes)
3738 AC_DEFINE(HAVE_DEV_PTMX, 1,
3739 [Define if we have /dev/ptmx.])
3740else
3741 AC_MSG_RESULT(no)
3742fi
3743
3744AC_MSG_CHECKING(for /dev/ptc)
3745
3746if test -r /dev/ptc
3747then
3748 AC_MSG_RESULT(yes)
3749 AC_DEFINE(HAVE_DEV_PTC, 1,
3750 [Define if we have /dev/ptc.])
3751else
3752 AC_MSG_RESULT(no)
3753fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003754
Brett Cannon09d12362006-05-11 05:11:33 +00003755AC_MSG_CHECKING(for %zd printf() format support)
3756AC_TRY_RUN([#include <stdio.h>
3757#include <stddef.h>
3758#include <string.h>
3759
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003760#ifdef HAVE_SYS_TYPES_H
3761#include <sys/types.h>
3762#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003763
3764#ifdef HAVE_SSIZE_T
3765typedef ssize_t Py_ssize_t;
3766#elif SIZEOF_VOID_P == SIZEOF_LONG
3767typedef long Py_ssize_t;
3768#else
3769typedef int Py_ssize_t;
3770#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003771
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003772int main()
3773{
3774 char buffer[256];
3775
Brett Cannon09d12362006-05-11 05:11:33 +00003776 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3777 return 1;
3778
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003779 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003780 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003781
3782 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3783 return 1;
3784
3785 if (strcmp(buffer, "-123"))
3786 return 1;
3787
Brett Cannon09d12362006-05-11 05:11:33 +00003788 return 0;
3789}],
3790[AC_MSG_RESULT(yes)
3791 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3792 AC_MSG_RESULT(no))
3793
Martin v. Löwis01c04012002-11-11 14:58:44 +00003794AC_CHECK_TYPE(socklen_t,,
3795 AC_DEFINE(socklen_t,int,
3796 Define to `int' if <sys/socket.h> does not define.),[
3797#ifdef HAVE_SYS_TYPES_H
3798#include <sys/types.h>
3799#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003800#ifdef HAVE_SYS_SOCKET_H
3801#include <sys/socket.h>
3802#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003803])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003804
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003805AC_SUBST(THREADHEADERS)
3806
3807for h in `(cd $srcdir;echo Python/thread_*.h)`
3808do
3809 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3810done
3811
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003812AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003813SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003814AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003815for dir in $SRCDIRS; do
3816 if test ! -d $dir; then
3817 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003818 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003819done
3820AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003821
Guido van Rossum627b2d71993-12-24 10:39:16 +00003822# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003823AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3824AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003825
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003826echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003827if test ! -f Modules/Setup
3828then
3829 cp $srcdir/Modules/Setup.dist Modules/Setup
3830fi
3831
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003832echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003833if test ! -f Modules/Setup.local
3834then
3835 echo "# Edit this file for local setup changes" >Modules/Setup.local
3836fi
3837
3838echo "creating Makefile"
3839$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3840 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003841 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003842
3843case $ac_sys_system in
3844BeOS)
3845 AC_MSG_WARN([
3846
3847 Support for BeOS is deprecated as of Python 2.6.
3848 See PEP 11 for the gory details.
3849 ])
3850 ;;
3851*) ;;
3852esac
3853
Neil Schemenauer66252162001-02-19 04:47:42 +00003854mv config.c Modules