blob: bd16b2eae723730d0510f27dd49ef02eb1c9807f [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Neal Norwitz9be57322006-08-18 05:39:20 +00004m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +00007AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000064 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000065[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000102 FRAMEWORKALTINSTALLFIRST=
103 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000104 if test "x${prefix}" = "xNONE"; then
105 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
106 else
107 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
108 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000109 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000110 ;;
111 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000112 PYTHONFRAMEWORK=Python
113 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000115 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000116 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
117 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000118 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
119 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000120 if test "x${prefix}" = "xNONE" ; then
121 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
122 else
123 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
124 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000125 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000126
127 # Add makefiles for Mac specific code to the list of output
128 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000129 AC_CONFIG_FILES(Mac/Makefile)
130 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
131 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000132 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000133 ],[
134 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000135 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000142 if test "x${prefix}" = "xNONE" ; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 enable_framework=
148])
149AC_SUBST(PYTHONFRAMEWORK)
150AC_SUBST(PYTHONFRAMEWORKDIR)
151AC_SUBST(PYTHONFRAMEWORKPREFIX)
152AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000153AC_SUBST(FRAMEWORKINSTALLFIRST)
154AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000155AC_SUBST(FRAMEWORKALTINSTALLFIRST)
156AC_SUBST(FRAMEWORKALTINSTALLLAST)
157AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000158
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000159##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160## AC_HELP_STRING(--with-dyld,
161## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000162##
Guido van Rossumb418f891996-07-30 18:06:02 +0000163# Set name for machine-dependent library files
164AC_SUBST(MACHDEP)
165AC_MSG_CHECKING(MACHDEP)
166if test -z "$MACHDEP"
167then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000168 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000169 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
170 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000171 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000172 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000173 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000174 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000175 ac_md_system=`echo $ac_sys_system |
176 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
177 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000178 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000179 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000180
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000181 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000182 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000183 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000184 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000185 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000186 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 esac
188fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000189
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000190# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
191# disable features if it is defined, without any means to access these
192# features as extensions. For these systems, we skip the definition of
193# _XOPEN_SOURCE. Before adding a system to the list to gain access to
194# some feature, make sure there is no alternative way to access this
195# feature. Also, when using wildcards, make sure you have verified the
196# need for not defining _XOPEN_SOURCE on all systems matching the
197# wildcard, and that the wildcard does not include future systems
198# (which may remove their limitations).
199dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
200case $ac_sys_system/$ac_sys_release in
201 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
202 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000203 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz4bc2c092006-09-05 02:57:01 +0000204 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000205 define_xopen_source=no
206 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
207 # also defined. This can be overridden by defining _BSD_SOURCE
208 # As this has a different meaning on Linux, only define it on OpenBSD
209 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
210 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000211 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
212 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
213 # Marc Recht
214 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
215 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000216 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
217 # of union __?sigval. Reported by Stuart Bishop.
218 SunOS/5.6)
219 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000220 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
221 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000222 # Reconfirmed for 7.1.4 by Martin v. Loewis.
223 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000224 define_xopen_source=no;;
225 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000226 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000227 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000228 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000229 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
230 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
231 # this is fixed in 10.3, which identifies itself as Darwin/7.*
232 # This should hopefully be fixed in FreeBSD 4.9
233 FreeBSD/4.8* | Darwin/6* )
234 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000235 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
236 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
237 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000238 AIX/4)
239 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000240 AIX/5)
241 if test `uname -r` -eq 1; then
242 define_xopen_source=no
243 fi
244 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000245 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
246 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000247 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000248 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000249 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000250 define_xopen_source=no
251 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000252
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000253esac
254
255if test $define_xopen_source = yes
256then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000257 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
258 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000259 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
260 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000261 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000262 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000263 AC_DEFINE(_XOPEN_SOURCE, 500,
264 Define to the level of X/Open that your system supports)
265 ;;
266 *)
267 AC_DEFINE(_XOPEN_SOURCE, 600,
268 Define to the level of X/Open that your system supports)
269 ;;
270 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000271
272 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
273 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
274 # several APIs are not declared. Since this is also needed in some
275 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000276 # except for Solaris 10, where it must not be defined,
277 # as it implies XPG4.2
278 case $ac_sys_system/$ac_sys_release in
279 SunOS/5.10)
280 ;;
281 *)
282 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
283 Define to activate Unix95-and-earlier features)
284 ;;
285 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000286
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000287 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
288
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000289fi
290
Guido van Rossum91922671997-10-09 20:24:13 +0000291#
292# SGI compilers allow the specification of the both the ABI and the
293# ISA on the command line. Depending on the values of these switches,
294# different and often incompatable code will be generated.
295#
296# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
297# thus supply support for various ABI/ISA combinations. The MACHDEP
298# variable is also adjusted.
299#
300AC_SUBST(SGI_ABI)
301if test ! -z "$SGI_ABI"
302then
303 CC="cc $SGI_ABI"
304 LDFLAGS="$SGI_ABI $LDFLAGS"
305 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
306fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000307AC_MSG_RESULT($MACHDEP)
308
Jack Jansen83f898c2002-12-30 22:23:40 +0000309# And add extra plat-mac for darwin
310AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000311AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000312AC_MSG_CHECKING(EXTRAPLATDIR)
313if test -z "$EXTRAPLATDIR"
314then
315 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000316 darwin)
317 EXTRAPLATDIR="\$(PLATMACDIRS)"
318 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
319 ;;
320 *)
321 EXTRAPLATDIR=""
322 EXTRAMACHDEPPATH=""
323 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000324 esac
325fi
326AC_MSG_RESULT($EXTRAPLATDIR)
327
Jack Jansen6b08a402004-06-03 12:41:45 +0000328# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
329# it may influence the way we can build extensions, so distutils
330# needs to check it
331AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000332AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000333CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000334EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000335
Guido van Rossum627b2d71993-12-24 10:39:16 +0000336# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000337
338# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
339# for debug/optimization stuff. BASECFLAGS is for flags that are required
340# just to get things to compile and link. Users are free to override OPT
341# when running configure or make. The build should not break if they do.
342# BASECFLAGS should generally not be messed with, however.
343
344# XXX shouldn't some/most/all of this code be merged with the stuff later
345# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000346AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000347AC_ARG_WITH(gcc,
348 AC_HELP_STRING(--without-gcc,never use gcc),
349[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000350 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000351 no) CC=cc
352 without_gcc=yes;;
353 yes) CC=gcc
354 without_gcc=no;;
355 *) CC=$withval
356 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000357 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000358 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000359 AIX*) CC=cc_r
360 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000361 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000362 case $BE_HOST_CPU in
363 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000364 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000365 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000366 BASECFLAGS="$BASECFLAGS -export pragma"
367 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000368 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000369 ;;
370 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000371 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000372 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000373 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000374 ;;
375 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000376 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000377 ;;
378 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000379 AR="\$(srcdir)/Modules/ar_beos"
380 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000381 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000382 Monterey*)
383 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000384 without_gcc=;;
385 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000386 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000387AC_MSG_RESULT($without_gcc)
388
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000389# If the user switches compilers, we can't believe the cache
390if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
391then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000392 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
393(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000394fi
395
Guido van Rossum627b2d71993-12-24 10:39:16 +0000396AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000397
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000398AC_SUBST(CXX)
399AC_SUBST(MAINCC)
400AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
401AC_ARG_WITH(cxx_main,
402 AC_HELP_STRING([--with-cxx-main=<compiler>],
403 [compile main() and link python executable with C++ compiler]),
404[
405
406 case $withval in
407 no) with_cxx_main=no
408 MAINCC='$(CC)';;
409 yes) with_cxx_main=yes
410 MAINCC='$(CXX)';;
411 *) with_cxx_main=yes
412 MAINCC=$withval
413 if test -z "$CXX"
414 then
415 CXX=$withval
416 fi;;
417 esac], [
418 with_cxx_main=no
419 MAINCC='$(CC)'
420])
421AC_MSG_RESULT($with_cxx_main)
422
423preset_cxx="$CXX"
424if test -z "$CXX"
425then
426 case "$CC" in
427 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
428 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
429 esac
430 if test "$CXX" = "notfound"
431 then
432 CXX=""
433 fi
434fi
435if test -z "$CXX"
436then
437 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
438 if test "$CXX" = "notfound"
439 then
440 CXX=""
441 fi
442fi
443if test "$preset_cxx" != "$CXX"
444then
445 AC_MSG_WARN([
446
447 By default, distutils will build C++ extension modules with "$CXX".
448 If this is not intended, then set CXX on the configure command line.
449 ])
450fi
451
452
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000453# checks for UNIX variants that set C preprocessor variables
454AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000455
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000456# Check for unsupported systems
457case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000458atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000459 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
460 echo See README for details.
461 exit 1;;
462esac
463
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000464AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000465AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000466AC_ARG_WITH(suffix,
467 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
468[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000469 case $withval in
470 no) EXEEXT=;;
471 yes) EXEEXT=.exe;;
472 *) EXEEXT=$withval;;
473 esac])
474AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000475
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000476# Test whether we're running on a non-case-sensitive system, in which
477# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000478AC_SUBST(BUILDEXEEXT)
479AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000480if test ! -d CaseSensitiveTestDir; then
481mkdir CaseSensitiveTestDir
482fi
483
484if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000485then
Jack Jansen1999ef42001-12-06 21:47:20 +0000486 AC_MSG_RESULT(yes)
487 BUILDEXEEXT=.exe
488else
489 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000490 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000491fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000492rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000493
Guido van Rossumdd997f71998-10-07 19:58:26 +0000494case $MACHDEP in
495bsdos*)
496 case $CC in
497 gcc) CC="$CC -D_HAVE_BSDI";;
498 esac;;
499esac
500
Guido van Rossum84561611997-08-21 00:08:11 +0000501case $ac_sys_system in
502hp*|HP*)
503 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000504 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000505 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000506Monterey*)
507 case $CC in
508 cc) CC="$CC -Wl,-Bexport";;
509 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000510SunOS*)
511 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000512 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000513 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000514esac
515
Martin v. Löwise8964d42001-03-06 12:09:07 +0000516
Neil Schemenauer61c51152001-01-26 16:18:16 +0000517AC_SUBST(LIBRARY)
518AC_MSG_CHECKING(LIBRARY)
519if test -z "$LIBRARY"
520then
521 LIBRARY='libpython$(VERSION).a'
522fi
523AC_MSG_RESULT($LIBRARY)
524
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000525# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000526# name of the library into which to insert object files). BLDLIBRARY is also
527# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
528# is blank as the main program is not linked directly against LDLIBRARY.
529# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
530# systems without shared libraries, LDLIBRARY is the same as LIBRARY
531# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
532# DLLLIBRARY is the shared (i.e., DLL) library.
533#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000534# RUNSHARED is used to run shared python without installed libraries
535#
536# INSTSONAME is the name of the shared library that will be use to install
537# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000538AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000539AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000540AC_SUBST(BLDLIBRARY)
541AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000542AC_SUBST(INSTSONAME)
543AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000544LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000545BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000546INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000547DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000548LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000549RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000550
Guido van Rossumfb842551997-08-06 23:42:07 +0000551# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000552# If CXX is set, and if it is needed to link a main function that was
553# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
554# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000555# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000556# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000557AC_SUBST(LINKCC)
558AC_MSG_CHECKING(LINKCC)
559if test -z "$LINKCC"
560then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000561 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000562 case $ac_sys_system in
563 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000564 exp_extra="\"\""
565 if test $ac_sys_release -ge 5 -o \
566 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
567 exp_extra="."
568 fi
569 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000570 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000571 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000572 esac
573fi
574AC_MSG_RESULT($LINKCC)
575
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576AC_MSG_CHECKING(for --enable-shared)
577AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000578 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000579
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580if test -z "$enable_shared"
581then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000582 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000583 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000584 enable_shared="yes";;
585 *)
586 enable_shared="no";;
587 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588fi
589AC_MSG_RESULT($enable_shared)
590
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000591AC_MSG_CHECKING(for --enable-profiling)
592AC_ARG_ENABLE(profiling,
593 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
594[ac_save_cc="$CC"
595 CC="$CC -pg"
596 AC_TRY_RUN([int main() { return 0; }],
597 ac_enable_profiling="yes",
598 ac_enable_profiling="no",
599 ac_enable_profiling="no")
600 CC="$ac_save_cc"])
601AC_MSG_RESULT($ac_enable_profiling)
602
603case "$ac_enable_profiling" in
604 "yes")
605 BASECFLAGS="-pg $BASECFLAGS"
606 LDFLAGS="-pg $LDFLAGS"
607 ;;
608esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000609
610AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000611
Guido van Rossumb8552162001-09-05 14:58:11 +0000612# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
613# library that we build, but we do not want to link against it (we
614# will find it with a -framework option). For this reason there is an
615# extra variable BLDLIBRARY against which Python and the extension
616# modules are linked, BLDLIBRARY. This is normally the same as
617# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000618if test "$enable_framework"
619then
620 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000621 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000622 BLDLIBRARY=''
623else
624 BLDLIBRARY='$(LDLIBRARY)'
625fi
626
Martin v. Löwis1142de32002-03-29 16:28:31 +0000627# Other platforms follow
628if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000629 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630 case $ac_sys_system in
631 BeOS*)
632 LDLIBRARY='libpython$(VERSION).so'
633 ;;
634 CYGWIN*)
635 LDLIBRARY='libpython$(VERSION).dll.a'
636 DLLLIBRARY='libpython$(VERSION).dll'
637 ;;
638 SunOS*)
639 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000640 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000641 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000642 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000644 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000645 LDLIBRARY='libpython$(VERSION).so'
646 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000647 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000648 case $ac_sys_system in
649 FreeBSD*)
650 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
651 ;;
652 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000653 INSTSONAME="$LDLIBRARY".$SOVERSION
654 ;;
655 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000656 case `uname -m` in
657 ia64)
658 LDLIBRARY='libpython$(VERSION).so'
659 ;;
660 *)
661 LDLIBRARY='libpython$(VERSION).sl'
662 ;;
663 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000665 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000666 ;;
667 OSF*)
668 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000669 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000670 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000671 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000672 atheos*)
673 LDLIBRARY='libpython$(VERSION).so'
674 BLDLIBRARY='-L. -lpython$(VERSION)'
675 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
676 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000677 esac
Jason Tishler30765592003-09-04 11:04:06 +0000678else # shared is disabled
679 case $ac_sys_system in
680 CYGWIN*)
681 BLDLIBRARY='$(LIBRARY)'
682 LDLIBRARY='libpython$(VERSION).dll.a'
683 ;;
684 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000685fi
686
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000687AC_MSG_RESULT($LDLIBRARY)
688
Guido van Rossum627b2d71993-12-24 10:39:16 +0000689AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000690AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000691AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000692
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000693AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000694AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000695if test $SVNVERSION = found
696then
697 SVNVERSION="svnversion \$(srcdir)"
698else
699 SVNVERSION="echo exported"
700fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000701
Neil Schemenauera42c8272001-03-31 00:01:55 +0000702case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000703bsdos*|hp*|HP*)
704 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000705 if test -z "$INSTALL"
706 then
707 INSTALL="${srcdir}/install-sh -c"
708 fi
709esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000710AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000711
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000712# Not every filesystem supports hard links
713AC_SUBST(LN)
714if test -z "$LN" ; then
715 case $ac_sys_system in
716 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000717 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000718 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000719 *) LN=ln;;
720 esac
721fi
722
Fred Drake9f715822001-07-11 06:27:00 +0000723# Check for --with-pydebug
724AC_MSG_CHECKING(for --with-pydebug)
725AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000726 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
727[
Fred Drake9f715822001-07-11 06:27:00 +0000728if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000729then
730 AC_DEFINE(Py_DEBUG, 1,
731 [Define if you want to build an interpreter with many run-time checks.])
732 AC_MSG_RESULT(yes);
733 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000734else AC_MSG_RESULT(no); Py_DEBUG='false'
735fi],
736[AC_MSG_RESULT(no)])
737
Skip Montanarodecc6a42003-01-01 20:07:49 +0000738# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
739# merged with this chunk of code?
740
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000741# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000742# ------------------------
743# (The following bit of code is complicated enough - please keep things
744# indented properly. Just pretend you're editing Python code. ;-)
745
746# There are two parallel sets of case statements below, one that checks to
747# see if OPT was set and one that does BASECFLAGS setting based upon
748# compiler and platform. BASECFLAGS tweaks need to be made even if the
749# user set OPT.
750
751# tweak OPT based on compiler and platform, only if the user didn't set
752# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000753AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000754if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000755then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000756 case $GCC in
757 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000758 if test "$CC" != 'g++' ; then
759 STRICT_PROTO="-Wstrict-prototypes"
760 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000761 # For gcc 4.x we need to use -fwrapv so lets check if its supported
762 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
763 WRAP="-fwrapv"
764 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000765 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000766 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000767 if test "$Py_DEBUG" = 'true' ; then
768 # Optimization messes up debuggers, so turn it off for
769 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000770 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000771 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000772 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000773 fi
774 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000775 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000776 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000777 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000778 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000779 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000780 SCO_SV*) OPT="$OPT -m486 -DSCO5"
781 ;;
782 esac
Fred Drake9f715822001-07-11 06:27:00 +0000783 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000784
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000785 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000786 OPT="-O"
787 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000788 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000789
790 # The current (beta) Monterey compiler dies with optimizations
791 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000792 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000793 Monterey*)
794 OPT=""
795 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000796 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000797
Guido van Rossum4e8af441994-08-19 15:33:54 +0000798fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000799
Skip Montanarodecc6a42003-01-01 20:07:49 +0000800AC_SUBST(BASECFLAGS)
801# tweak BASECFLAGS based on compiler and platform
802case $GCC in
803yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000804 # Python violates C99 rules, by casting between incompatible
805 # pointer types. GCC may generate bad code as a result of that,
806 # so use -fno-strict-aliasing if supported.
807 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
808 ac_save_cc="$CC"
809 CC="$CC -fno-strict-aliasing"
810 AC_TRY_RUN([int main() { return 0; }],
811 ac_cv_no_strict_aliasing_ok=yes,
812 ac_cv_no_strict_aliasing_ok=no,
813 ac_cv_no_strict_aliasing_ok=no)
814 CC="$ac_save_cc"
815 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
816 if test $ac_cv_no_strict_aliasing_ok = yes
817 then
818 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
819 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000820 case $ac_sys_system in
821 SCO_SV*)
822 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
823 ;;
824 # is there any other compiler on Darwin besides gcc?
825 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000826 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000827 if test "${enable_universalsdk}"; then
828 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
829 fi
830
Skip Montanarodecc6a42003-01-01 20:07:49 +0000831 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000832 OSF*)
833 BASECFLAGS="$BASECFLAGS -mieee"
834 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 esac
836 ;;
837
838*)
839 case $ac_sys_system in
840 OpenUNIX*|UnixWare*)
841 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
842 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000843 OSF*)
844 BASECFLAGS="$BASECFLAGS -ieee -std"
845 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 SCO_SV*)
847 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
848 ;;
849 esac
850 ;;
851esac
852
Fred Drakee1ceaa02001-12-04 20:55:47 +0000853if test "$Py_DEBUG" = 'true'; then
854 :
855else
856 OPT="-DNDEBUG $OPT"
857fi
858
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000859if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000860then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000862fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000863
Neal Norwitz020c46a2006-01-07 21:39:28 +0000864# disable check for icc since it seems to pass, but generates a warning
865if test "$CC" = icc
866then
867 ac_cv_opt_olimit_ok=no
868fi
869
Guido van Rossum91922671997-10-09 20:24:13 +0000870AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
871AC_CACHE_VAL(ac_cv_opt_olimit_ok,
872[ac_save_cc="$CC"
873CC="$CC -OPT:Olimit=0"
874AC_TRY_RUN([int main() { return 0; }],
875 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000876 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000877 ac_cv_opt_olimit_ok=no)
878CC="$ac_save_cc"])
879AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000880if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000881 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000882 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
883 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
884 # environment?
885 Darwin*)
886 ;;
887 *)
888 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
889 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000890 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000891else
892 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
893 AC_CACHE_VAL(ac_cv_olimit_ok,
894 [ac_save_cc="$CC"
895 CC="$CC -Olimit 1500"
896 AC_TRY_RUN([int main() { return 0; }],
897 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000898 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000899 ac_cv_olimit_ok=no)
900 CC="$ac_save_cc"])
901 AC_MSG_RESULT($ac_cv_olimit_ok)
902 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000904 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000905fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000906
Martin v. Löwisaac13162006-10-19 10:58:46 +0000907# Check whether GCC supports PyArg_ParseTuple format
908if test "$GCC" = "yes"
909then
910 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
911 save_CFLAGS=$CFLAGS
912 CFLAGS="$CFLAGS -Werror"
913 AC_TRY_COMPILE([
914 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
915 ],,
916 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
917 AC_MSG_RESULT(yes),
918 AC_MSG_RESULT(no)
919 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +0000920 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +0000921fi
922
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000923# On some compilers, pthreads are available without further options
924# (e.g. MacOS X). On some of these systems, the compiler will not
925# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
926# So we have to see first whether pthreads are available without
927# options before we can check whether -Kpthread improves anything.
928AC_MSG_CHECKING(whether pthreads are available without options)
929AC_CACHE_VAL(ac_cv_pthread_is_default,
930[AC_TRY_RUN([
931#include <pthread.h>
932
933void* routine(void* p){return NULL;}
934
935int main(){
936 pthread_t p;
937 if(pthread_create(&p,NULL,routine,NULL)!=0)
938 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000939 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000940 return 0;
941}
942],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000943[
944 ac_cv_pthread_is_default=yes
945 ac_cv_kthread=no
946 ac_cv_pthread=no
947],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000948 ac_cv_pthread_is_default=no,
949 ac_cv_pthread_is_default=no)
950])
951AC_MSG_RESULT($ac_cv_pthread_is_default)
952
953
954if test $ac_cv_pthread_is_default = yes
955then
956 ac_cv_kpthread=no
957else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000958# -Kpthread, if available, provides the right #defines
959# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000960# Some compilers won't report that they do not support -Kpthread,
961# so we need to run a program to see whether it really made the
962# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000963AC_MSG_CHECKING(whether $CC accepts -Kpthread)
964AC_CACHE_VAL(ac_cv_kpthread,
965[ac_save_cc="$CC"
966CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000967AC_TRY_RUN([
968#include <pthread.h>
969
970void* routine(void* p){return NULL;}
971
972int main(){
973 pthread_t p;
974 if(pthread_create(&p,NULL,routine,NULL)!=0)
975 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000976 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000977 return 0;
978}
979],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000980 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000981 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000982 ac_cv_kpthread=no)
983CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000984AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000985fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000986
Skip Montanarod8d39a02003-07-10 20:44:10 +0000987if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000988then
989# -Kthread, if available, provides the right #defines
990# and linker options to make pthread_create available
991# Some compilers won't report that they do not support -Kthread,
992# so we need to run a program to see whether it really made the
993# function available.
994AC_MSG_CHECKING(whether $CC accepts -Kthread)
995AC_CACHE_VAL(ac_cv_kthread,
996[ac_save_cc="$CC"
997CC="$CC -Kthread"
998AC_TRY_RUN([
999#include <pthread.h>
1000
1001void* routine(void* p){return NULL;}
1002
1003int main(){
1004 pthread_t p;
1005 if(pthread_create(&p,NULL,routine,NULL)!=0)
1006 return 1;
1007 (void)pthread_detach(p);
1008 return 0;
1009}
1010],
1011 ac_cv_kthread=yes,
1012 ac_cv_kthread=no,
1013 ac_cv_kthread=no)
1014CC="$ac_save_cc"])
1015AC_MSG_RESULT($ac_cv_kthread)
1016fi
1017
Skip Montanarod8d39a02003-07-10 20:44:10 +00001018if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001019then
1020# -pthread, if available, provides the right #defines
1021# and linker options to make pthread_create available
1022# Some compilers won't report that they do not support -pthread,
1023# so we need to run a program to see whether it really made the
1024# function available.
1025AC_MSG_CHECKING(whether $CC accepts -pthread)
1026AC_CACHE_VAL(ac_cv_thread,
1027[ac_save_cc="$CC"
1028CC="$CC -pthread"
1029AC_TRY_RUN([
1030#include <pthread.h>
1031
1032void* routine(void* p){return NULL;}
1033
1034int main(){
1035 pthread_t p;
1036 if(pthread_create(&p,NULL,routine,NULL)!=0)
1037 return 1;
1038 (void)pthread_detach(p);
1039 return 0;
1040}
1041],
1042 ac_cv_pthread=yes,
1043 ac_cv_pthread=no,
1044 ac_cv_pthread=no)
1045CC="$ac_save_cc"])
1046AC_MSG_RESULT($ac_cv_pthread)
1047fi
1048
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001049# If we have set a CC compiler flag for thread support then
1050# check if it works for CXX, too.
1051ac_cv_cxx_thread=no
1052if test ! -z "$CXX"
1053then
1054AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1055ac_save_cxx="$CXX"
1056
1057if test "$ac_cv_kpthread" = "yes"
1058then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001059 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001060 ac_cv_cxx_thread=yes
1061elif test "$ac_cv_kthread" = "yes"
1062then
1063 CXX="$CXX -Kthread"
1064 ac_cv_cxx_thread=yes
1065elif test "$ac_cv_pthread" = "yes"
1066then
1067 CXX="$CXX -pthread"
1068 ac_cv_cxx_thread=yes
1069fi
1070
1071if test $ac_cv_cxx_thread = yes
1072then
1073 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1074 $CXX -c conftest.$ac_ext 2>&5
1075 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1076 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1077 then
1078 ac_cv_cxx_thread=yes
1079 else
1080 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001081 fi
1082 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001083fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001084AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001085fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001086CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001087
Fred Drakece81d592000-07-09 14:39:29 +00001088dnl # check for ANSI or K&R ("traditional") preprocessor
1089dnl AC_MSG_CHECKING(for C preprocessor type)
1090dnl AC_TRY_COMPILE([
1091dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1092dnl int foo;
1093dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1094dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1095dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001096
Guido van Rossum627b2d71993-12-24 10:39:16 +00001097# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001098AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001099AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1100fcntl.h grp.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001101io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
1102shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001103unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001104sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1105sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001106sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1107sys/time.h \
1108sys/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 +00001109sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001110bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001111AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001112AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001113
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001114# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001115AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001116#ifdef HAVE_CURSES_H
1117#include <curses.h>
1118#endif
1119])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001120
Martin v. Löwis11017b12006-01-14 18:12:57 +00001121# On Linux, netlink.h requires asm/types.h
1122AC_CHECK_HEADERS(linux/netlink.h,,,[
1123#ifdef HAVE_ASM_TYPES_H
1124#include <asm/types.h>
1125#endif
1126#ifdef HAVE_SYS_SOCKET_H
1127#include <sys/socket.h>
1128#endif
1129])
1130
Guido van Rossum627b2d71993-12-24 10:39:16 +00001131# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001132was_it_defined=no
1133AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001134AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1135 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1136])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001137AC_MSG_RESULT($was_it_defined)
1138
Neal Norwitz11690112002-07-30 01:08:28 +00001139# Check whether using makedev requires defining _OSF_SOURCE
1140AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001141AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001142 [ makedev(0, 0) ],
1143 ac_cv_has_makedev=yes,
1144 ac_cv_has_makedev=no)
1145if test "$ac_cv_has_makedev" = "no"; then
1146 # we didn't link, try if _OSF_SOURCE will allow us to link
1147 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001148#define _OSF_SOURCE 1
1149#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001150 ],
1151 [ makedev(0, 0) ],
1152 ac_cv_has_makedev=yes,
1153 ac_cv_has_makedev=no)
1154 if test "$ac_cv_has_makedev" = "yes"; then
1155 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1156 fi
1157fi
1158AC_MSG_RESULT($ac_cv_has_makedev)
1159if test "$ac_cv_has_makedev" = "yes"; then
1160 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1161fi
1162
Martin v. Löwis399a6892002-10-04 10:22:02 +00001163# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1164# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1165# defined, but the compiler does not support pragma redefine_extname,
1166# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1167# structures (such as rlimit64) without declaring them. As a
1168# work-around, disable LFS on such configurations
1169
1170use_lfs=yes
1171AC_MSG_CHECKING(Solaris LFS bug)
1172AC_TRY_COMPILE([
1173#define _LARGEFILE_SOURCE 1
1174#define _FILE_OFFSET_BITS 64
1175#include <sys/resource.h>
1176],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1177AC_MSG_RESULT($sol_lfs_bug)
1178if test "$sol_lfs_bug" = "yes"; then
1179 use_lfs=no
1180fi
1181
1182if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001183# Two defines needed to enable largefile support on various platforms
1184# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001185AC_DEFINE(_LARGEFILE_SOURCE, 1,
1186[This must be defined on some systems to enable large file support.])
1187AC_DEFINE(_FILE_OFFSET_BITS, 64,
1188[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001189fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001190
Guido van Rossum300fda71996-08-19 21:58:16 +00001191# Add some code to confdefs.h so that the test for off_t works on SCO
1192cat >> confdefs.h <<\EOF
1193#if defined(SCO_DS)
1194#undef _OFF_T
1195#endif
1196EOF
1197
Guido van Rossumef2255b2000-03-10 22:30:29 +00001198# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001199AC_TYPE_MODE_T
1200AC_TYPE_OFF_T
1201AC_TYPE_PID_T
1202AC_TYPE_SIGNAL
1203AC_TYPE_SIZE_T
1204AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001205AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001206 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001207
Guido van Rossumef2255b2000-03-10 22:30:29 +00001208# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001209# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001210AC_CHECK_SIZEOF(int, 4)
1211AC_CHECK_SIZEOF(long, 4)
1212AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001213AC_CHECK_SIZEOF(short, 2)
1214AC_CHECK_SIZEOF(float, 4)
1215AC_CHECK_SIZEOF(double, 8)
1216AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001217AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001218AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001219
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001220AC_MSG_CHECKING(for long long support)
1221have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001222AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1223 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1224 have_long_long=yes
1225])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001226AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001227if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001228AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001229fi
1230
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001231AC_MSG_CHECKING(for _Bool support)
1232have_c99_bool=no
1233AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1234 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1235 have_c99_bool=yes
1236])
1237AC_MSG_RESULT($have_c99_bool)
1238if test "$have_c99_bool" = yes ; then
1239AC_CHECK_SIZEOF(_Bool, 1)
1240fi
1241
Martin v. Löwisebe26702006-10-02 14:55:51 +00001242AC_CHECK_TYPES(uintptr_t,
1243 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001244 [], [#ifdef HAVE_STDINT_H
1245 #include <stdint.h>
1246 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001247
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001248
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001249# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1250AC_MSG_CHECKING(size of off_t)
1251AC_CACHE_VAL(ac_cv_sizeof_off_t,
1252[AC_TRY_RUN([#include <stdio.h>
1253#include <sys/types.h>
1254main()
1255{
1256 FILE *f=fopen("conftestval", "w");
1257 if (!f) exit(1);
1258 fprintf(f, "%d\n", sizeof(off_t));
1259 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001260}],
1261ac_cv_sizeof_off_t=`cat conftestval`,
1262ac_cv_sizeof_off_t=0,
1263ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001264])
1265AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001266AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1267[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001268
1269AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001270if test "$have_long_long" = yes -a \
1271 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1272 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001273 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1274 [Defined to enable large file support when an off_t is bigger than a long
1275 and long long is available and at least as big as an off_t. You may need
1276 to add some flags for configuration and compilation to enable this mode.
1277 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001278 AC_MSG_RESULT(yes)
1279else
1280 AC_MSG_RESULT(no)
1281fi
1282
Fred Drakea3f6e912000-06-29 20:44:47 +00001283# AC_CHECK_SIZEOF() doesn't include <time.h>.
1284AC_MSG_CHECKING(size of time_t)
1285AC_CACHE_VAL(ac_cv_sizeof_time_t,
1286[AC_TRY_RUN([#include <stdio.h>
1287#include <time.h>
1288main()
1289{
1290 FILE *f=fopen("conftestval", "w");
1291 if (!f) exit(1);
1292 fprintf(f, "%d\n", sizeof(time_t));
1293 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001294}],
1295ac_cv_sizeof_time_t=`cat conftestval`,
1296ac_cv_sizeof_time_t=0,
1297ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001298])
1299AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001300AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1301[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001302
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001303
Trent Mick635f6fb2000-08-23 21:33:05 +00001304# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001305ac_save_cc="$CC"
1306if test "$ac_cv_kpthread" = "yes"
1307then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001308elif test "$ac_cv_kthread" = "yes"
1309then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001310elif test "$ac_cv_pthread" = "yes"
1311then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001312fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001313AC_MSG_CHECKING(for pthread_t)
1314have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001315AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001316AC_MSG_RESULT($have_pthread_t)
1317if test "$have_pthread_t" = yes ; then
1318 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1319 AC_MSG_CHECKING(size of pthread_t)
1320 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1321 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001322#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001323 main()
1324 {
1325 FILE *f=fopen("conftestval", "w");
1326 if (!f) exit(1);
1327 fprintf(f, "%d\n", sizeof(pthread_t));
1328 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001329 }],
1330 ac_cv_sizeof_pthread_t=`cat conftestval`,
1331 ac_cv_sizeof_pthread_t=0,
1332 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001333 ])
1334 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001335 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1336 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001337fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001338CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001339
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001340AC_MSG_CHECKING(for --enable-toolbox-glue)
1341AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001342 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001343
1344if test -z "$enable_toolbox_glue"
1345then
1346 case $ac_sys_system/$ac_sys_release in
1347 Darwin/*)
1348 enable_toolbox_glue="yes";;
1349 *)
1350 enable_toolbox_glue="no";;
1351 esac
1352fi
1353case "$enable_toolbox_glue" in
1354yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001355 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001356 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001357 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1358 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001359 ;;
1360*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001362 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001363 ;;
1364esac
1365AC_MSG_RESULT($enable_toolbox_glue)
1366
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001367AC_SUBST(OTHER_LIBTOOL_OPT)
1368case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001369 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001370 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1371 ;;
1372 Darwin/*)
1373 OTHER_LIBTOOL_OPT=""
1374 ;;
1375esac
1376
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001377AC_SUBST(LIBTOOL_CRUFT)
1378case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001379 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001380 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1381 if test "${enable_universalsdk}"; then
1382 :
1383 else
1384 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1385 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001386 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001387 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001388 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001389 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1390 if test ${gcc_version} '<' 4.0
1391 then
1392 LIBTOOL_CRUFT="-lcc_dynamic"
1393 else
1394 LIBTOOL_CRUFT=""
1395 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001396 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001397 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001398 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001399esac
1400
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001401AC_MSG_CHECKING(for --enable-framework)
1402if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001403then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001404 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001405 # -F. is needed to allow linking to the framework while
1406 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001407 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1408 [Define if you want to produce an OpenStep/Rhapsody framework
1409 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001410 AC_MSG_RESULT(yes)
1411else
1412 AC_MSG_RESULT(no)
1413fi
1414
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001415AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001416case $ac_sys_system/$ac_sys_release in
1417 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001418 AC_DEFINE(WITH_DYLD, 1,
1419 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1420 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1421 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001422 AC_MSG_RESULT(always on for Darwin)
1423 ;;
1424 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001425 AC_MSG_RESULT(no)
1426 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001427esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001428
Guido van Rossumac405f61994-09-12 10:56:06 +00001429# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001430AC_SUBST(SO)
1431AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001432AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001433AC_SUBST(CCSHARED)
1434AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001435# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001436# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001437AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001438if test -z "$SO"
1439then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001440 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001441 hp*|HP*)
1442 case `uname -m` in
1443 ia64) SO=.so;;
1444 *) SO=.sl;;
1445 esac
1446 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001447 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001448 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001449 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001450else
1451 # this might also be a termcap variable, see #610332
1452 echo
1453 echo '====================================================================='
1454 echo '+ +'
1455 echo '+ WARNING: You have set SO in your environment. +'
1456 echo '+ Do you really mean to change the extension for shared libraries? +'
1457 echo '+ Continuing in 10 seconds to let you to ponder. +'
1458 echo '+ +'
1459 echo '====================================================================='
1460 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001461fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001462AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001463AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001464# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001465# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001466# (Shared libraries in this instance are shared modules to be loaded into
1467# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001468AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001469if test -z "$LDSHARED"
1470then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001471 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001472 AIX*)
1473 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001474 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001475 ;;
1476 BeOS*)
1477 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001478 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001479 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001480 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001481 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001482 SunOS/5*)
1483 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001484 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001485 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001486 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001487 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001488 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001489 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001490 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1491 if test "$enable_framework" ; then
1492 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001493 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1494 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001495 else
1496 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001497 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001498 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001499 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001500 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1501 if test "$enable_framework" ; then
1502 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001503 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1504 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001505 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001506 # No framework, use the Python app as bundle-loader
1507 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001508 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001509 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001510 Darwin/*)
1511 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1512 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001513 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001514 if test ${cur_target} '>' 10.2; then
1515 cur_target=10.3
1516 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001517 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001518
1519 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1520 # environment with a value that is the same as what we'll use
1521 # in the Makefile to ensure that we'll get the same compiler
1522 # environment during configure and build time.
1523 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1524 export MACOSX_DEPLOYMENT_TARGET
1525
Ronald Oussoren988117f2006-04-29 11:31:35 +00001526 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001527 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001528 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001529 if test "${enable_universalsdk}"; then
1530 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1531 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001532 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1533 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001534 else
1535 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1536 if test "$enable_framework" ; then
1537 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001538 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1539 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001540 else
1541 # No framework, use the Python app as bundle-loader
1542 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1543 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1544 fi
1545 fi
1546 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001547 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001548 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001549 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001550 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001551 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001552 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001553 else
1554 LDSHARED="ld -Bshareable ${LDFLAGS}"
1555 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001556 OpenBSD*)
1557 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1558 then
1559 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1560 else
1561 case `uname -r` in
1562 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1563 LDSHARED="ld -Bshareable ${LDFLAGS}"
1564 ;;
1565 *)
1566 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1567 ;;
1568 esac
1569 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001570 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001571 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001572 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001573 then LDSHARED='$(CC) -shared'
1574 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001575 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001576 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001577 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001578 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001579 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001580 *) LDSHARED="ld";;
1581 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001582fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001583AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001584BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001585# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001586# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001587AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001588if test -z "$CCSHARED"
1589then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001590 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001591 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001592 then CCSHARED="-fPIC";
1593 elif test `uname -p` = sparc;
1594 then CCSHARED="-xcode=pic32";
1595 else CCSHARED="-Kpic";
1596 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001597 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001598 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001599 else CCSHARED="+z";
1600 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001601 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001602 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001603 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001604 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001605 if test "$GCC" = "yes"
1606 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001607 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001608 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001609 SCO_SV*)
1610 if test "$GCC" = "yes"
1611 then CCSHARED="-fPIC"
1612 else CCSHARED="-Kpic -belf"
1613 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001614 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001615 IRIX*/6*) case $CC in
1616 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001617 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001618 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001619 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001620 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001621fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001622AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001623# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001624# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001625AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001626if test -z "$LINKFORSHARED"
1627then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001628 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001629 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001630 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001631 LINKFORSHARED="-Wl,-E -Wl,+s";;
1632# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001633 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001634 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001635 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001636 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001637 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1638 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001639 # not used by the core itself but which needs to be in the core so
1640 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001641 # -prebind is no longer used, because it actually seems to give a
1642 # slowdown in stead of a speedup, maybe due to the large number of
1643 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001644
1645 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001646 if test "$enable_framework"
1647 then
Jack Jansenda49e192005-01-07 13:08:22 +00001648 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001649 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001650 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001651 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001652 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001653 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001654 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001655 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1656 then
1657 LINKFORSHARED="-Wl,--export-dynamic"
1658 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001659 SunOS/5*) case $CC in
1660 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001661 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001662 then
1663 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001664 fi;;
1665 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001666 CYGWIN*)
1667 if test $enable_shared = "no"
1668 then
1669 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1670 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001671 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001672fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001673AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001674
Neil Schemenauer61c51152001-01-26 16:18:16 +00001675AC_SUBST(CFLAGSFORSHARED)
1676AC_MSG_CHECKING(CFLAGSFORSHARED)
1677if test ! "$LIBRARY" = "$LDLIBRARY"
1678then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001679 case $ac_sys_system in
1680 CYGWIN*)
1681 # Cygwin needs CCSHARED when building extension DLLs
1682 # but not when building the interpreter DLL.
1683 CFLAGSFORSHARED='';;
1684 *)
1685 CFLAGSFORSHARED='$(CCSHARED)'
1686 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001687fi
1688AC_MSG_RESULT($CFLAGSFORSHARED)
1689
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001690# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1691# library (with --enable-shared).
1692# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001693# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1694# if it is not required, since it creates a dependency of the shared library
1695# to LIBS. This, in turn, means that applications linking the shared libpython
1696# don't need to link LIBS explicitly. The default should be only changed
1697# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001698AC_SUBST(SHLIBS)
1699AC_MSG_CHECKING(SHLIBS)
1700case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001701 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001702 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001703esac
1704AC_MSG_RESULT($SHLIBS)
1705
1706
Guido van Rossum627b2d71993-12-24 10:39:16 +00001707# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001708AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1709AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001710
1711# only check for sem_ini if thread support is requested
1712if test "$with_threads" = "yes" -o -z "$with_threads"; then
1713 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1714 # posix4 on Solaris 2.6
1715 # pthread (first!) on Linux
1716fi
1717
Martin v. Löwis19d17342003-06-14 21:03:05 +00001718# check if we need libintl for locale functions
1719AC_CHECK_LIB(intl, textdomain,
1720 AC_DEFINE(WITH_LIBINTL, 1,
1721 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001722
1723# checks for system dependent C++ extensions support
1724case "$ac_sys_system" in
1725 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1726 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1727 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001728 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1729 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1730 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001731 AC_MSG_RESULT(yes)],
1732 [AC_MSG_RESULT(no)]);;
1733 *) ;;
1734esac
1735
Guido van Rossum70c7f481998-03-26 18:44:10 +00001736# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001737# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001738AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001739AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001740
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001741case "$ac_sys_system" in
1742BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001743AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1744;;
1745esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001746
Guido van Rossumc5a39031996-07-31 17:35:03 +00001747AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001748AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001749 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1750[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001751AC_MSG_RESULT($withval)
1752LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001753],
1754[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001755
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001756# Check for use of the system libffi library
Matthias Klose9afb9852007-10-24 20:00:44 +00001757AC_CHECK_HEADER(ffi.h)
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001758AC_MSG_CHECKING(for --with-system-ffi)
1759AC_ARG_WITH(system_ffi,
1760 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1761
Matthias Klose9afb9852007-10-24 20:00:44 +00001762if test -z "$with_system_ffi" && test "$ac_cv_header_ffi_h" = yes; then
1763 case "$ac_sys_system/`uname -m`" in
Thomas Heller486b1b02007-11-02 19:10:24 +00001764 Linux/alpha*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Matthias Klose6e183f82007-10-25 06:37:24 +00001765 Linux/arm*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Thomas Heller486b1b02007-11-02 19:10:24 +00001766 Linux/ppc*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
1767 Linux/s390*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";;
Matthias Klose9afb9852007-10-24 20:00:44 +00001768 *) with_system_ffi="no"
1769 esac
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001770fi
1771AC_MSG_RESULT($with_system_ffi)
1772
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001773# Determine if signalmodule should be used.
1774AC_SUBST(USE_SIGNAL_MODULE)
1775AC_SUBST(SIGNAL_OBJS)
1776AC_MSG_CHECKING(for --with-signal-module)
1777AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001778 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001779
1780if test -z "$with_signal_module"
1781then with_signal_module="yes"
1782fi
1783AC_MSG_RESULT($with_signal_module)
1784
1785if test "${with_signal_module}" = "yes"; then
1786 USE_SIGNAL_MODULE=""
1787 SIGNAL_OBJS=""
1788else
1789 USE_SIGNAL_MODULE="#"
1790 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1791fi
1792
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001793# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001794AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001795USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001796
Guido van Rossum54d93d41997-01-22 20:51:58 +00001797AC_MSG_CHECKING(for --with-dec-threads)
1798AC_SUBST(LDLAST)
1799AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001800 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1801[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001802AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001803LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001804if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001805 with_thread="$withval";
1806fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001807[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001808
Martin v. Löwis11437992002-04-12 09:54:03 +00001809# Templates for things AC_DEFINEd more than once.
1810# For a single AC_DEFINE, no template is needed.
1811AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1812AH_TEMPLATE(_REENTRANT,
1813 [Define to force use of thread-safe errno, h_errno, and other functions])
1814AH_TEMPLATE(WITH_THREAD,
1815 [Define if you want to compile in rudimentary thread support])
1816
Guido van Rossum54d93d41997-01-22 20:51:58 +00001817AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001818dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001819AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001820 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001821
Barry Warsawc0d24d82000-06-29 16:12:00 +00001822# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001823dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001824AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001825 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1826 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001827
1828if test -z "$with_threads"
1829then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001830fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001831AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001832
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001833AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001834if test "$with_threads" = "no"
1835then
1836 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001837elif test "$ac_cv_pthread_is_default" = yes
1838then
1839 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001840 # Defining _REENTRANT on system with POSIX threads should not hurt.
1841 AC_DEFINE(_REENTRANT)
1842 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001843 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001844elif test "$ac_cv_kpthread" = "yes"
1845then
1846 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001847 if test "$ac_cv_cxx_thread" = "yes"; then
1848 CXX="$CXX -Kpthread"
1849 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001850 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001851 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001852 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001853elif test "$ac_cv_kthread" = "yes"
1854then
1855 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001856 if test "$ac_cv_cxx_thread" = "yes"; then
1857 CXX="$CXX -Kthread"
1858 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001859 AC_DEFINE(WITH_THREAD)
1860 posix_threads=yes
1861 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001862elif test "$ac_cv_pthread" = "yes"
1863then
1864 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001865 if test "$ac_cv_cxx_thread" = "yes"; then
1866 CXX="$CXX -pthread"
1867 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001868 AC_DEFINE(WITH_THREAD)
1869 posix_threads=yes
1870 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001871else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001872 if test ! -z "$with_threads" -a -d "$with_threads"
1873 then LDFLAGS="$LDFLAGS -L$with_threads"
1874 fi
1875 if test ! -z "$withval" -a -d "$withval"
1876 then LDFLAGS="$LDFLAGS -L$withval"
1877 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001878
1879 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001880 # define _POSIX_THREADS in unistd.h. Some apparently don't
1881 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001882 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1883 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001884 [
1885#include <unistd.h>
1886#ifdef _POSIX_THREADS
1887yes
1888#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001889 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1890 AC_MSG_RESULT($unistd_defines_pthreads)
1891
Martin v. Löwis130fb172001-07-19 11:00:41 +00001892 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001893 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1894 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001895 AC_DEFINE(HURD_C_THREADS, 1,
1896 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001897 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001898 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001899 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1900 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001901 AC_DEFINE(MACH_C_THREADS, 1,
1902 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001903 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001904 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001905 AC_ARG_WITH([pth],
1906 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1907 [AC_MSG_RESULT($withval)
1908 AC_DEFINE([WITH_THREAD])
1909 AC_DEFINE([HAVE_PTH], 1,
1910 [Define if you have GNU PTH threads.])
1911 LIBS="-lpth $LIBS"
1912 THREADOBJ="Python/thread.o"],
1913 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001914
1915 # Just looking for pthread_create in libpthread is not enough:
1916 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1917 # So we really have to include pthread.h, and then link.
1918 _libs=$LIBS
1919 LIBS="$LIBS -lpthread"
1920 AC_MSG_CHECKING([for pthread_create in -lpthread])
1921 AC_TRY_LINK([#include <pthread.h>
1922
1923void * start_routine (void *arg) { exit (0); }], [
1924pthread_create (NULL, NULL, start_routine, NULL)], [
1925 AC_MSG_RESULT(yes)
1926 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001927 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001928 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001929 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001930 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001931 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001932 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001933 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1934 AC_DEFINE(ATHEOS_THREADS, 1,
1935 [Define this if you have AtheOS threads.])
1936 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001937 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001938 AC_DEFINE(BEOS_THREADS, 1,
1939 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001940 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001941 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001942 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001943 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001944 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001945 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001946 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001947 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001948 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001949 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001950 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001951 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001952 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001953 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001954 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001955 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001956 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001957 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001958 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001959
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001960 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1961 LIBS="$LIBS -lmpc"
1962 THREADOBJ="Python/thread.o"
1963 USE_THREAD_MODULE=""])
1964
1965 if test "$posix_threads" != "yes"; then
1966 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1967 LIBS="$LIBS -lthread"
1968 THREADOBJ="Python/thread.o"
1969 USE_THREAD_MODULE=""])
1970 fi
1971
1972 if test "$USE_THREAD_MODULE" != "#"
1973 then
1974 # If the above checks didn't disable threads, (at least) OSF1
1975 # needs this '-threads' argument during linking.
1976 case $ac_sys_system in
1977 OSF1) LDLAST=-threads;;
1978 esac
1979 fi
1980fi
1981
1982if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001983 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001984 AC_DEFINE(_POSIX_THREADS, 1,
1985 [Define if you have POSIX threads,
1986 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001987 fi
1988
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001989 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1990 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001991 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1992 Defined for Solaris 2.6 bug in pthread header.)
1993 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001994 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001995 Define if the Posix semaphores do not work on your system)
1996 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00001997 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
1998 Define if the Posix semaphores do not work on your system)
1999 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002000 esac
2001
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002002 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2003 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2004 [AC_TRY_RUN([#include <pthread.h>
2005 void *foo(void *parm) {
2006 return NULL;
2007 }
2008 main() {
2009 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002010 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002011 if (pthread_attr_init(&attr)) exit(-1);
2012 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002013 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002014 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002015 }],
2016 ac_cv_pthread_system_supported=yes,
2017 ac_cv_pthread_system_supported=no,
2018 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002019 ])
2020 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2021 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002022 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002023 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002024 AC_CHECK_FUNCS(pthread_sigmask,
2025 [case $ac_sys_system in
2026 CYGWIN*)
2027 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2028 [Define if pthread_sigmask() does not work on your system.])
2029 ;;
2030 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002031fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002032
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002033
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002034# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002035AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002036AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002037AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002038[ --enable-ipv6 Enable ipv6 (with ipv4) support
2039 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002040[ case "$enableval" in
2041 no)
2042 AC_MSG_RESULT(no)
2043 ipv6=no
2044 ;;
2045 *) AC_MSG_RESULT(yes)
2046 AC_DEFINE(ENABLE_IPV6)
2047 ipv6=yes
2048 ;;
2049 esac ],
2050
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002051[
2052dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002053 AC_TRY_RUN([ /* AF_INET6 available check */
2054#include <sys/types.h>
2055#include <sys/socket.h>
2056main()
2057{
2058 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2059 exit(1);
2060 else
2061 exit(0);
2062}
2063],
2064 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002065 ipv6=yes,
2066 AC_MSG_RESULT(no)
2067 ipv6=no,
2068 AC_MSG_RESULT(no)
2069 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002070)
2071
2072if test "$ipv6" = "yes"; then
2073 AC_MSG_CHECKING(if RFC2553 API is available)
2074 AC_TRY_COMPILE([#include <sys/types.h>
2075#include <netinet/in.h>],
2076 [struct sockaddr_in6 x;
2077x.sin6_scope_id;],
2078 AC_MSG_RESULT(yes)
2079 ipv6=yes,
2080 AC_MSG_RESULT(no, IPv6 disabled)
2081 ipv6=no)
2082fi
2083
2084if test "$ipv6" = "yes"; then
2085 AC_DEFINE(ENABLE_IPV6)
2086fi
2087])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002088
2089ipv6type=unknown
2090ipv6lib=none
2091ipv6trylibc=no
2092
2093if test "$ipv6" = "yes"; then
2094 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002095 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2096 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002097 case $i in
2098 inria)
2099 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002100 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002101#include <netinet/in.h>
2102#ifdef IPV6_INRIA_VERSION
2103yes
2104#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002105 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002106 ;;
2107 kame)
2108 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002109 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002110#include <netinet/in.h>
2111#ifdef __KAME__
2112yes
2113#endif],
2114 [ipv6type=$i;
2115 ipv6lib=inet6
2116 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002117 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002118 ;;
2119 linux-glibc)
2120 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002121 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002122#include <features.h>
2123#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2124yes
2125#endif],
2126 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002127 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002128 ;;
2129 linux-inet6)
2130 dnl http://www.v6.linux.or.jp/
2131 if test -d /usr/inet6; then
2132 ipv6type=$i
2133 ipv6lib=inet6
2134 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002135 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002136 fi
2137 ;;
2138 solaris)
2139 if test -f /etc/netconfig; then
2140 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2141 ipv6type=$i
2142 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002143 fi
2144 fi
2145 ;;
2146 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002147 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002148#include <sys/param.h>
2149#ifdef _TOSHIBA_INET6
2150yes
2151#endif],
2152 [ipv6type=$i;
2153 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002154 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002155 ;;
2156 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002157 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002158#include </usr/local/v6/include/sys/v6config.h>
2159#ifdef __V6D__
2160yes
2161#endif],
2162 [ipv6type=$i;
2163 ipv6lib=v6;
2164 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002165 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002166 ;;
2167 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002168 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002169#include <sys/param.h>
2170#ifdef _ZETA_MINAMI_INET6
2171yes
2172#endif],
2173 [ipv6type=$i;
2174 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002175 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002176 ;;
2177 esac
2178 if test "$ipv6type" != "unknown"; then
2179 break
2180 fi
2181 done
2182 AC_MSG_RESULT($ipv6type)
2183fi
2184
2185if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2186 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2187 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2188 echo "using lib$ipv6lib"
2189 else
2190 if test $ipv6trylibc = "yes"; then
2191 echo "using libc"
2192 else
2193 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2194 echo "You need to fetch lib$ipv6lib.a from appropriate"
2195 echo 'ipv6 kit and compile beforehand.'
2196 exit 1
2197 fi
2198 fi
2199fi
2200
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002201# Check for --with-doc-strings
2202AC_MSG_CHECKING(for --with-doc-strings)
2203AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002204 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002205
2206if test -z "$with_doc_strings"
2207then with_doc_strings="yes"
2208fi
2209if test "$with_doc_strings" != "no"
2210then
2211 AC_DEFINE(WITH_DOC_STRINGS, 1,
2212 [Define if you want documentation strings in extension modules])
2213fi
2214AC_MSG_RESULT($with_doc_strings)
2215
Neil Schemenauera35c6882001-02-27 04:45:05 +00002216# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002217AC_MSG_CHECKING(for --with-tsc)
2218AC_ARG_WITH(tsc,
2219[ --with(out)-tsc enable/disable timestamp counter profile], [
2220if test "$withval" != no
2221then
2222 AC_DEFINE(WITH_TSC, 1,
2223 [Define to profile with the Pentium timestamp counter])
2224 AC_MSG_RESULT(yes)
2225else AC_MSG_RESULT(no)
2226fi],
2227[AC_MSG_RESULT(no)])
2228
2229# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002230AC_MSG_CHECKING(for --with-pymalloc)
2231AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002232 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002233
2234if test -z "$with_pymalloc"
2235then with_pymalloc="yes"
2236fi
2237if test "$with_pymalloc" != "no"
2238then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002239 AC_DEFINE(WITH_PYMALLOC, 1,
2240 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002241fi
2242AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002243
Barry Warsawef82cd72000-06-30 16:21:01 +00002244# Check for --with-wctype-functions
2245AC_MSG_CHECKING(for --with-wctype-functions)
2246AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002247 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2248[
Barry Warsawef82cd72000-06-30 16:21:01 +00002249if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002250then
2251 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2252 [Define if you want wctype.h functions to be used instead of the
2253 one supplied by Python itself. (see Include/unicodectype.h).])
2254 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002255else AC_MSG_RESULT(no)
2256fi],
2257[AC_MSG_RESULT(no)])
2258
Guido van Rossum68242b51996-05-28 22:53:03 +00002259# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002260AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002261DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002262
Guido van Rossume97ee181999-12-20 21:27:22 +00002263# the dlopen() function means we might want to use dynload_shlib.o. some
2264# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002265AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002266
2267# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2268# loading of modules.
2269AC_SUBST(DYNLOADFILE)
2270AC_MSG_CHECKING(DYNLOADFILE)
2271if test -z "$DYNLOADFILE"
2272then
2273 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002274 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2275 if test "$ac_cv_func_dlopen" = yes
2276 then DYNLOADFILE="dynload_shlib.o"
2277 else DYNLOADFILE="dynload_aix.o"
2278 fi
2279 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002280 BeOS*) DYNLOADFILE="dynload_beos.o";;
2281 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002282 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2283 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002284 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002285 *)
2286 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2287 # out any dynamic loading
2288 if test "$ac_cv_func_dlopen" = yes
2289 then DYNLOADFILE="dynload_shlib.o"
2290 else DYNLOADFILE="dynload_stub.o"
2291 fi
2292 ;;
2293 esac
2294fi
2295AC_MSG_RESULT($DYNLOADFILE)
2296if test "$DYNLOADFILE" != "dynload_stub.o"
2297then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002298 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2299 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002300fi
2301
Jack Jansenc49e5b72001-06-19 15:00:23 +00002302# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2303
2304AC_SUBST(MACHDEP_OBJS)
2305AC_MSG_CHECKING(MACHDEP_OBJS)
2306if test -z "$MACHDEP_OBJS"
2307then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002308 MACHDEP_OBJS=$extra_machdep_objs
2309else
2310 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002311fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002312AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002313
Guido van Rossum627b2d71993-12-24 10:39:16 +00002314# checks for library functions
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002315AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr \
Christian Heimes36281872007-11-30 21:11:28 +00002316 ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002317 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002318 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002319 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002320 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002321 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002322 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002323 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002324 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002325 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002326 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002327
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002328# For some functions, having a definition is not sufficient, since
2329# we want to take their address.
2330AC_MSG_CHECKING(for chroot)
2331AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2332 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2333 AC_MSG_RESULT(yes),
2334 AC_MSG_RESULT(no)
2335)
2336AC_MSG_CHECKING(for link)
2337AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2338 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2339 AC_MSG_RESULT(yes),
2340 AC_MSG_RESULT(no)
2341)
2342AC_MSG_CHECKING(for symlink)
2343AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2344 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2345 AC_MSG_RESULT(yes),
2346 AC_MSG_RESULT(no)
2347)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002348AC_MSG_CHECKING(for fchdir)
2349AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2350 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2351 AC_MSG_RESULT(yes),
2352 AC_MSG_RESULT(no)
2353)
2354AC_MSG_CHECKING(for fsync)
2355AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002356 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002357 AC_MSG_RESULT(yes),
2358 AC_MSG_RESULT(no)
2359)
2360AC_MSG_CHECKING(for fdatasync)
2361AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2362 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2363 AC_MSG_RESULT(yes),
2364 AC_MSG_RESULT(no)
2365)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002366
Martin v. Löwisd5843682002-11-21 20:41:28 +00002367# On some systems (eg. FreeBSD 5), we would find a definition of the
2368# functions ctermid_r, setgroups in the library, but no prototype
2369# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2370# address to avoid compiler warnings and potential miscompilations
2371# because of the missing prototypes.
2372
2373AC_MSG_CHECKING(for ctermid_r)
2374AC_TRY_COMPILE([
2375#include "confdefs.h"
2376#include <stdio.h>
2377], void* p = ctermid_r,
2378 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2379 AC_MSG_RESULT(yes),
2380 AC_MSG_RESULT(no)
2381)
2382
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002383AC_MSG_CHECKING(for flock)
2384AC_TRY_COMPILE([
2385#include "confdefs.h"
2386#include <sys/file.h>
2387], void* p = flock,
2388 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2389 AC_MSG_RESULT(yes),
2390 AC_MSG_RESULT(no)
2391)
2392
2393AC_MSG_CHECKING(for getpagesize)
2394AC_TRY_COMPILE([
2395#include "confdefs.h"
2396#include <unistd.h>
2397], void* p = getpagesize,
2398 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2399 AC_MSG_RESULT(yes),
2400 AC_MSG_RESULT(no)
2401)
2402
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002403dnl check for true
2404AC_CHECK_PROGS(TRUE, true, /bin/true)
2405
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002406dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2407dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002408AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002409 AC_CHECK_LIB(resolv, inet_aton)
2410)
2411
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002412# On Tru64, chflags seems to be present, but calling it will
2413# exit Python
2414AC_MSG_CHECKING(for chflags)
2415AC_TRY_RUN([
2416#include <sys/stat.h>
2417#include <unistd.h>
2418int main(int argc, char*argv[])
2419{
2420 if(chflags(argv[0], 0) != 0)
2421 return 1;
2422 return 0;
2423}
2424],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2425 AC_MSG_RESULT(yes),
2426 AC_MSG_RESULT(no)
2427)
2428
2429AC_MSG_CHECKING(for lchflags)
2430AC_TRY_RUN([
2431#include <sys/stat.h>
2432#include <unistd.h>
2433int main(int argc, char*argv[])
2434{
2435 if(lchflags(argv[0], 0) != 0)
2436 return 1;
2437 return 0;
2438}
2439],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2440 AC_MSG_RESULT(yes),
2441 AC_MSG_RESULT(no)
2442)
2443
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002444dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002445dnl
2446dnl On MacOSX the linker will search for dylibs on the entire linker path
2447dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2448dnl to revert to a more traditional unix behaviour and make it possible to
2449dnl override the system libz with a local static library of libz. Temporarily
2450dnl add that flag to our CFLAGS as well to ensure that we check the version
2451dnl of libz that will be used by setup.py.
2452dnl The -L/usr/local/lib is needed as wel to get the same compilation
2453dnl environment as setup.py (and leaving it out can cause configure to use the
2454dnl wrong version of the library)
2455case $ac_sys_system/$ac_sys_release in
2456Darwin/*)
2457 _CUR_CFLAGS="${CFLAGS}"
2458 _CUR_LDFLAGS="${LDFLAGS}"
2459 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2460 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2461 ;;
2462esac
2463
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002464AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2465
Ronald Oussorenf8752642006-07-06 10:13:35 +00002466case $ac_sys_system/$ac_sys_release in
2467Darwin/*)
2468 CFLAGS="${_CUR_CFLAGS}"
2469 LDFLAGS="${_CUR_LDFLAGS}"
2470 ;;
2471esac
2472
Martin v. Löwise9416172003-05-03 10:12:45 +00002473AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002474AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002475#include "confdefs.h"
2476#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002477], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002478 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2479 AC_MSG_RESULT(yes),
2480 AC_MSG_RESULT(no)
2481)
2482
2483AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002484AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002485#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002486#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002487#include <sys/socket.h>
2488#include <netinet/in.h>
2489#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002490], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002491 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2492 AC_MSG_RESULT(yes),
2493 AC_MSG_RESULT(no)
2494)
2495
2496AC_MSG_CHECKING(for inet_pton)
2497AC_TRY_COMPILE([
2498#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002499#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002500#include <sys/socket.h>
2501#include <netinet/in.h>
2502#include <arpa/inet.h>
2503], void* p = inet_pton,
2504 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2505 AC_MSG_RESULT(yes),
2506 AC_MSG_RESULT(no)
2507)
2508
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002509# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002510AC_MSG_CHECKING(for setgroups)
2511AC_TRY_COMPILE([
2512#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002513#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002514#ifdef HAVE_GRP_H
2515#include <grp.h>
2516#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002517],
2518void* p = setgroups,
2519 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2520 AC_MSG_RESULT(yes),
2521 AC_MSG_RESULT(no)
2522)
2523
Fred Drake8cef4cf2000-06-28 16:40:38 +00002524# check for openpty and forkpty
2525
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002526AC_CHECK_FUNCS(openpty,,
2527 AC_CHECK_LIB(util,openpty,
2528 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2529 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2530 )
2531)
2532AC_CHECK_FUNCS(forkpty,,
2533 AC_CHECK_LIB(util,forkpty,
2534 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2535 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2536 )
2537)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002538
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002539# check for long file support functions
2540AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2541
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002542AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002543AC_CHECK_FUNCS(getpgrp,
2544 AC_TRY_COMPILE([#include <unistd.h>],
2545 [getpgrp(0);],
2546 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2547 [Define if getpgrp() must be called as getpgrp(0).])
2548 )
2549)
Jack Jansen150753c2003-03-29 22:07:47 +00002550AC_CHECK_FUNCS(setpgrp,
2551 AC_TRY_COMPILE([#include <unistd.h>],
2552 [setpgrp(0,0);],
2553 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2554 [Define if setpgrp() must be called as setpgrp(0, 0).])
2555 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002556)
2557AC_CHECK_FUNCS(gettimeofday,
2558 AC_TRY_COMPILE([#include <sys/time.h>],
2559 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2560 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2561 [Define if gettimeofday() does not have second (timezone) argument
2562 This is the case on Motorola V4 (R40V4.2)])
2563 )
2564)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002565
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002566AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002567AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002568#if defined(MAJOR_IN_MKDEV)
2569#include <sys/mkdev.h>
2570#elif defined(MAJOR_IN_SYSMACROS)
2571#include <sys/sysmacros.h>
2572#else
2573#include <sys/types.h>
2574#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002575],[
2576 makedev(major(0),minor(0));
2577],[
2578 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2579 [Define to 1 if you have the device macros.])
2580 AC_MSG_RESULT(yes)
2581],[
2582 AC_MSG_RESULT(no)
2583])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002584
2585# On OSF/1 V5.1, getaddrinfo is available, but a define
2586# for [no]getaddrinfo in netdb.h.
2587AC_MSG_CHECKING(for getaddrinfo)
2588AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002589#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002590#include <sys/socket.h>
2591#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002592#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002593],[
2594getaddrinfo(NULL, NULL, NULL, NULL);
2595], [
2596AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002597AC_MSG_CHECKING(getaddrinfo bug)
2598AC_TRY_RUN([
2599#include <sys/types.h>
2600#include <netdb.h>
2601#include <string.h>
2602#include <sys/socket.h>
2603#include <netinet/in.h>
2604
2605main()
2606{
2607 int passive, gaierr, inet4 = 0, inet6 = 0;
2608 struct addrinfo hints, *ai, *aitop;
2609 char straddr[INET6_ADDRSTRLEN], strport[16];
2610
2611 for (passive = 0; passive <= 1; passive++) {
2612 memset(&hints, 0, sizeof(hints));
2613 hints.ai_family = AF_UNSPEC;
2614 hints.ai_flags = passive ? AI_PASSIVE : 0;
2615 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002616 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002617 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2618 (void)gai_strerror(gaierr);
2619 goto bad;
2620 }
2621 for (ai = aitop; ai; ai = ai->ai_next) {
2622 if (ai->ai_addr == NULL ||
2623 ai->ai_addrlen == 0 ||
2624 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2625 straddr, sizeof(straddr), strport, sizeof(strport),
2626 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2627 goto bad;
2628 }
2629 switch (ai->ai_family) {
2630 case AF_INET:
2631 if (strcmp(strport, "54321") != 0) {
2632 goto bad;
2633 }
2634 if (passive) {
2635 if (strcmp(straddr, "0.0.0.0") != 0) {
2636 goto bad;
2637 }
2638 } else {
2639 if (strcmp(straddr, "127.0.0.1") != 0) {
2640 goto bad;
2641 }
2642 }
2643 inet4++;
2644 break;
2645 case AF_INET6:
2646 if (strcmp(strport, "54321") != 0) {
2647 goto bad;
2648 }
2649 if (passive) {
2650 if (strcmp(straddr, "::") != 0) {
2651 goto bad;
2652 }
2653 } else {
2654 if (strcmp(straddr, "::1") != 0) {
2655 goto bad;
2656 }
2657 }
2658 inet6++;
2659 break;
2660 case AF_UNSPEC:
2661 goto bad;
2662 break;
2663 default:
2664 /* another family support? */
2665 break;
2666 }
2667 }
2668 }
2669
2670 if (!(inet4 == 0 || inet4 == 2))
2671 goto bad;
2672 if (!(inet6 == 0 || inet6 == 2))
2673 goto bad;
2674
2675 if (aitop)
2676 freeaddrinfo(aitop);
2677 exit(0);
2678
2679 bad:
2680 if (aitop)
2681 freeaddrinfo(aitop);
2682 exit(1);
2683}
2684],
2685AC_MSG_RESULT(good)
2686buggygetaddrinfo=no,
2687AC_MSG_RESULT(buggy)
2688buggygetaddrinfo=yes,
2689AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002690buggygetaddrinfo=yes)], [
2691AC_MSG_RESULT(no)
2692buggygetaddrinfo=yes
2693])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002694
2695if test "$buggygetaddrinfo" = "yes"; then
2696 if test "$ipv6" = "yes"; then
2697 echo 'Fatal: You must get working getaddrinfo() function.'
2698 echo ' or you can specify "--disable-ipv6"'.
2699 exit 1
2700 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002701else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002702 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002703fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002704AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002705
Guido van Rossum627b2d71993-12-24 10:39:16 +00002706# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002707AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002708AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002709AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002710AC_CHECK_MEMBERS([struct stat.st_rdev])
2711AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002712AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002713AC_CHECK_MEMBERS([struct stat.st_gen])
2714AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002715AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002716
2717AC_MSG_CHECKING(for time.h that defines altzone)
2718AC_CACHE_VAL(ac_cv_header_time_altzone,
2719[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2720 ac_cv_header_time_altzone=yes,
2721 ac_cv_header_time_altzone=no)])
2722AC_MSG_RESULT($ac_cv_header_time_altzone)
2723if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002724 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002725fi
2726
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002727was_it_defined=no
2728AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002729AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002730#include <sys/types.h>
2731#include <sys/select.h>
2732#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002733], [;], [
2734 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2735 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2736 (which you can't on SCO ODT 3.0).])
2737 was_it_defined=yes
2738])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002739AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002740
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002741AC_MSG_CHECKING(for addrinfo)
2742AC_CACHE_VAL(ac_cv_struct_addrinfo,
2743AC_TRY_COMPILE([
2744# include <netdb.h>],
2745 [struct addrinfo a],
2746 ac_cv_struct_addrinfo=yes,
2747 ac_cv_struct_addrinfo=no))
2748AC_MSG_RESULT($ac_cv_struct_addrinfo)
2749if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002750 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002751fi
2752
2753AC_MSG_CHECKING(for sockaddr_storage)
2754AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2755AC_TRY_COMPILE([
2756# include <sys/types.h>
2757# include <sys/socket.h>],
2758 [struct sockaddr_storage s],
2759 ac_cv_struct_sockaddr_storage=yes,
2760 ac_cv_struct_sockaddr_storage=no))
2761AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2762if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002763 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002764fi
2765
Guido van Rossum627b2d71993-12-24 10:39:16 +00002766# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002767
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002768AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002769AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002770
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002771works=no
2772AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002773AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2774 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2775)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002776AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002777
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002778works=no
2779AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002780AC_TRY_COMPILE([], [signed char c;], works=yes,
2781 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2782)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002783AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002784
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002785have_prototypes=no
2786AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002787AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2788 AC_DEFINE(HAVE_PROTOTYPES, 1,
2789 [Define if your compiler supports function prototype])
2790 have_prototypes=yes
2791])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002792AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002793
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002794works=no
2795AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002796AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002797#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002798int foo(int x, ...) {
2799 va_list va;
2800 va_start(va, x);
2801 va_arg(va, int);
2802 va_arg(va, char *);
2803 va_arg(va, double);
2804 return 0;
2805}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002806], [return foo(10, "", 3.14);], [
2807 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2808 [Define if your compiler supports variable length function prototypes
2809 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2810 works=yes
2811])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002812AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002813
Dave Cole331708b2004-08-09 04:51:41 +00002814# check for socketpair
2815AC_MSG_CHECKING(for socketpair)
2816AC_TRY_COMPILE([
2817#include <sys/types.h>
2818#include <sys/socket.h>
2819], void *x=socketpair,
2820 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2821 AC_MSG_RESULT(yes),
2822 AC_MSG_RESULT(no)
2823)
2824
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002825# check if sockaddr has sa_len member
2826AC_MSG_CHECKING(if sockaddr has sa_len member)
2827AC_TRY_COMPILE([#include <sys/types.h>
2828#include <sys/socket.h>],
2829[struct sockaddr x;
2830x.sa_len = 0;],
2831 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002832 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002833 AC_MSG_RESULT(no))
2834
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002835va_list_is_array=no
2836AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002837AC_TRY_COMPILE([
2838#ifdef HAVE_STDARG_PROTOTYPES
2839#include <stdarg.h>
2840#else
2841#include <varargs.h>
2842#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002843], [va_list list1, list2; list1 = list2;], , [
2844 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2845 va_list_is_array=yes
2846])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002847AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002848
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002849# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002850AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2851 [Define this if you have some version of gethostbyname_r()])
2852
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002853AC_CHECK_FUNC(gethostbyname_r, [
2854 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2855 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2856 OLD_CFLAGS=$CFLAGS
2857 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2858 AC_TRY_COMPILE([
2859# include <netdb.h>
2860 ], [
2861 char *name;
2862 struct hostent *he, *res;
2863 char buffer[2048];
2864 int buflen = 2048;
2865 int h_errnop;
2866
2867 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2868 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002869 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002870 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2871 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002872 AC_MSG_RESULT(yes)
2873 ], [
2874 AC_MSG_RESULT(no)
2875 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2876 AC_TRY_COMPILE([
2877# include <netdb.h>
2878 ], [
2879 char *name;
2880 struct hostent *he;
2881 char buffer[2048];
2882 int buflen = 2048;
2883 int h_errnop;
2884
2885 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2886 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002887 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002888 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2889 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002890 AC_MSG_RESULT(yes)
2891 ], [
2892 AC_MSG_RESULT(no)
2893 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2894 AC_TRY_COMPILE([
2895# include <netdb.h>
2896 ], [
2897 char *name;
2898 struct hostent *he;
2899 struct hostent_data data;
2900
2901 (void) gethostbyname_r(name, he, &data);
2902 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002903 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002904 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2905 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002906 AC_MSG_RESULT(yes)
2907 ], [
2908 AC_MSG_RESULT(no)
2909 ])
2910 ])
2911 ])
2912 CFLAGS=$OLD_CFLAGS
2913], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002914 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002915])
2916AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2917AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2918AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002919AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002920AC_SUBST(HAVE_GETHOSTBYNAME)
2921
Guido van Rossum627b2d71993-12-24 10:39:16 +00002922# checks for system services
2923# (none yet)
2924
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002926AC_CHECK_FUNC(__fpu_control,
2927 [],
2928 [AC_CHECK_LIB(ieee, __fpu_control)
2929])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002930
Guido van Rossum93274221997-05-09 02:42:00 +00002931# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002932AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002933AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002934 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2935[
Guido van Rossum93274221997-05-09 02:42:00 +00002936if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002937then
2938 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2939 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2940 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002941else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002942fi],
2943[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002944
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002945# check for --with-libm=...
2946AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002947case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002948Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002949BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002950*) LIBM=-lm
2951esac
Guido van Rossum93274221997-05-09 02:42:00 +00002952AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002953AC_ARG_WITH(libm,
2954 AC_HELP_STRING(--with-libm=STRING, math library),
2955[
Guido van Rossum93274221997-05-09 02:42:00 +00002956if test "$withval" = no
2957then LIBM=
2958 AC_MSG_RESULT(force LIBM empty)
2959elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002960then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002961 AC_MSG_RESULT(set LIBM="$withval")
2962else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002963fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002964[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002965
2966# check for --with-libc=...
2967AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002968AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002969AC_ARG_WITH(libc,
2970 AC_HELP_STRING(--with-libc=STRING, C library),
2971[
Guido van Rossum93274221997-05-09 02:42:00 +00002972if test "$withval" = no
2973then LIBC=
2974 AC_MSG_RESULT(force LIBC empty)
2975elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002976then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002977 AC_MSG_RESULT(set LIBC="$withval")
2978else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002979fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002980[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002981
Christian Heimes0a8143f2007-12-18 23:22:54 +00002982# ************************************
2983# * Check for mathematical functions *
2984# ************************************
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002985LIBS_SAVE=$LIBS
2986LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002987AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00002988
Christian Heimes48723512008-01-20 14:28:28 +00002989AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00002990
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002991LIBS=$LIBS_SAVE
2992
Guido van Rossumef2255b2000-03-10 22:30:29 +00002993# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002994AC_CHECK_HEADER(wchar.h, [
2995 AC_DEFINE(HAVE_WCHAR_H, 1,
2996 [Define if the compiler provides a wchar.h header file.])
2997 wchar_h="yes"
2998],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002999wchar_h="no"
3000)
3001
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003002# determine wchar_t size
3003if test "$wchar_h" = yes
3004then
Guido van Rossum67b26592001-10-20 14:21:45 +00003005 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003006fi
3007
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003008AC_MSG_CHECKING(for UCS-4 tcl)
3009have_ucs4_tcl=no
3010AC_TRY_COMPILE([
3011#include <tcl.h>
3012#if TCL_UTF_MAX != 6
3013# error "NOT UCS4_TCL"
3014#endif], [], [
3015 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3016 have_ucs4_tcl=yes
3017])
3018AC_MSG_RESULT($have_ucs4_tcl)
3019
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003020# check whether wchar_t is signed or not
3021if test "$wchar_h" = yes
3022then
3023 # check whether wchar_t is signed or not
3024 AC_MSG_CHECKING(whether wchar_t is signed)
3025 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3026 AC_TRY_RUN([
3027 #include <wchar.h>
3028 int main()
3029 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003030 /* Success: exit code 0 */
3031 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003032 }
3033 ],
3034 ac_cv_wchar_t_signed=yes,
3035 ac_cv_wchar_t_signed=no,
3036 ac_cv_wchar_t_signed=yes)])
3037 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3038fi
3039
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003040AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003041dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003042AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003043 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3044 [],
3045 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003046
3047if test $enable_unicode = yes
3048then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003049 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003050 case "$have_ucs4_tcl" in
3051 yes) enable_unicode="ucs4"
3052 ;;
3053 *) enable_unicode="ucs2"
3054 ;;
3055 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003056fi
3057
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003058AH_TEMPLATE(Py_UNICODE_SIZE,
3059 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003060case "$enable_unicode" in
3061ucs2) unicode_size="2"
3062 AC_DEFINE(Py_UNICODE_SIZE,2)
3063 ;;
3064ucs4) unicode_size="4"
3065 AC_DEFINE(Py_UNICODE_SIZE,4)
3066 ;;
3067esac
3068
Martin v. Löwis11437992002-04-12 09:54:03 +00003069AH_TEMPLATE(PY_UNICODE_TYPE,
3070 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003071
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003072AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003073if test "$enable_unicode" = "no"
3074then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003075 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003076 AC_MSG_RESULT(not used)
3077else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003078 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003079 AC_DEFINE(Py_USING_UNICODE, 1,
3080 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003081
3082 # wchar_t is only usable if it maps to an unsigned type
3083 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003084 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003085 then
3086 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003087 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3088 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003089 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003090 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003091 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3092 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3093 then
3094 PY_UNICODE_TYPE="unsigned short"
3095 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3096 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3097 then
3098 PY_UNICODE_TYPE="unsigned long"
3099 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3100 else
3101 PY_UNICODE_TYPE="no type found"
3102 fi
3103 AC_MSG_RESULT($PY_UNICODE_TYPE)
3104fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003105
3106# check for endianness
3107AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003108AH_VERBATIM([WORDS_BIGENDIAN],
3109[
3110 /* Define to 1 if your processor stores words with the most significant byte
3111 first (like Motorola and SPARC, unlike Intel and VAX).
3112
3113 The block below does compile-time checking for endianness on platforms
3114 that use GCC and therefore allows compiling fat binaries on OSX by using
3115 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3116 such that the configure-result is used on systems that don't use GCC.
3117 */
3118#ifdef __BIG_ENDIAN__
3119#define WORDS_BIGENDIAN 1
3120#else
3121#ifndef __LITTLE_ENDIAN__
3122#undef WORDS_BIGENDIAN
3123#endif
3124#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003125
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003126# Check whether right shifting a negative integer extends the sign bit
3127# or fills with zeros (like the Cray J90, according to Tim Peters).
3128AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003129AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003130AC_TRY_RUN([
3131int main()
3132{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003133 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003134}
Guido van Rossum3065c942001-09-17 04:03:14 +00003135],
3136ac_cv_rshift_extends_sign=yes,
3137ac_cv_rshift_extends_sign=no,
3138ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003139AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3140if test "$ac_cv_rshift_extends_sign" = no
3141then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003142 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3143 [Define if i>>j for signed int i does not extend the sign bit
3144 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003145fi
3146
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003147# check for getc_unlocked and related locking functions
3148AC_MSG_CHECKING(for getc_unlocked() and friends)
3149AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3150AC_TRY_LINK([#include <stdio.h>],[
3151 FILE *f = fopen("/dev/null", "r");
3152 flockfile(f);
3153 getc_unlocked(f);
3154 funlockfile(f);
3155], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3156AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3157if test "$ac_cv_have_getc_unlocked" = yes
3158then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003159 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3160 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003161fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003162
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003163# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003164# save the value of LIBS so we don't actually link Python with readline
3165LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003166AC_CHECK_LIB(readline, readline)
3167if test "$ac_cv_have_readline_readline" = no
3168then
3169 AC_CHECK_LIB(termcap, readline)
3170fi
3171
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003172# check for readline 2.1
3173AC_CHECK_LIB(readline, rl_callback_handler_install,
3174 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003175 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003176
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003177# check for readline 2.2
3178AC_TRY_CPP([#include <readline/readline.h>],
3179have_readline=yes, have_readline=no)
3180if test $have_readline = yes
3181then
3182 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3183 [readline/readline.h],
3184 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3185 [Define if you have readline 2.2]), )
3186fi
3187
Martin v. Löwis0daad592001-09-30 21:09:59 +00003188# check for readline 4.0
3189AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003190 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003191 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003192
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003193# also in 4.0
3194AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3195 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3196 [Define if you have readline 4.0]), , )
3197
Guido van Rossum353ae582001-07-10 16:45:32 +00003198# check for readline 4.2
3199AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003200 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003201 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003202
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003203# also in readline 4.2
3204AC_TRY_CPP([#include <readline/readline.h>],
3205have_readline=yes, have_readline=no)
3206if test $have_readline = yes
3207then
3208 AC_EGREP_HEADER([extern int rl_catch_signals;],
3209 [readline/readline.h],
3210 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3211 [Define if you can turn off readline's signal handling.]), )
3212fi
3213
Martin v. Löwis82bca632006-02-10 20:49:30 +00003214# End of readline checks: restore LIBS
3215LIBS=$LIBS_no_readline
3216
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003217AC_MSG_CHECKING(for broken nice())
3218AC_CACHE_VAL(ac_cv_broken_nice, [
3219AC_TRY_RUN([
3220int main()
3221{
3222 int val1 = nice(1);
3223 if (val1 != -1 && val1 == nice(2))
3224 exit(0);
3225 exit(1);
3226}
Guido van Rossum3065c942001-09-17 04:03:14 +00003227],
3228ac_cv_broken_nice=yes,
3229ac_cv_broken_nice=no,
3230ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003231AC_MSG_RESULT($ac_cv_broken_nice)
3232if test "$ac_cv_broken_nice" = yes
3233then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003234 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3235 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003236fi
3237
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003238AC_MSG_CHECKING(for broken poll())
3239AC_TRY_RUN([
3240#include <poll.h>
3241
3242int main (void)
3243 {
3244 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3245
3246 close (42);
3247
3248 int poll_test = poll (&poll_struct, 1, 0);
3249
3250 if (poll_test < 0)
3251 {
3252 exit(0);
3253 }
3254 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3255 {
3256 exit(0);
3257 }
3258 else
3259 {
3260 exit(1);
3261 }
3262 }
3263],
3264ac_cv_broken_poll=yes,
3265ac_cv_broken_poll=no,
3266ac_cv_broken_poll=no)
3267AC_MSG_RESULT($ac_cv_broken_poll)
3268if test "$ac_cv_broken_poll" = yes
3269then
3270 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3271 [Define if poll() sets errno on invalid file descriptors.])
3272fi
3273
Brett Cannon43802422005-02-10 20:48:03 +00003274# Before we can test tzset, we need to check if struct tm has a tm_zone
3275# (which is not required by ISO C or UNIX spec) and/or if we support
3276# tzname[]
3277AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003278
Brett Cannon43802422005-02-10 20:48:03 +00003279# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003280AC_MSG_CHECKING(for working tzset())
3281AC_CACHE_VAL(ac_cv_working_tzset, [
3282AC_TRY_RUN([
3283#include <stdlib.h>
3284#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003285#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003286
3287#if HAVE_TZNAME
3288extern char *tzname[];
3289#endif
3290
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003291int main()
3292{
Brett Cannon18367812003-09-19 00:59:16 +00003293 /* Note that we need to ensure that not only does tzset(3)
3294 do 'something' with localtime, but it works as documented
3295 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003296 This includes making sure that tzname is set properly if
3297 tm->tm_zone does not exist since it is the alternative way
3298 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003299
3300 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003301 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003302 */
3303
Brett Cannon43802422005-02-10 20:48:03 +00003304 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003305 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3306
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003307 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003308 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003309 if (localtime(&groundhogday)->tm_hour != 0)
3310 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003311#if HAVE_TZNAME
3312 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3313 if (strcmp(tzname[0], "UTC") ||
3314 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3315 exit(1);
3316#endif
Brett Cannon18367812003-09-19 00:59:16 +00003317
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003318 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003319 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003320 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003321 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003322#if HAVE_TZNAME
3323 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3324 exit(1);
3325#endif
Brett Cannon18367812003-09-19 00:59:16 +00003326
3327 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3328 tzset();
3329 if (localtime(&groundhogday)->tm_hour != 11)
3330 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003331#if HAVE_TZNAME
3332 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3333 exit(1);
3334#endif
3335
3336#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003337 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3338 exit(1);
3339 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3340 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003341#endif
Brett Cannon18367812003-09-19 00:59:16 +00003342
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003343 exit(0);
3344}
3345],
3346ac_cv_working_tzset=yes,
3347ac_cv_working_tzset=no,
3348ac_cv_working_tzset=no)])
3349AC_MSG_RESULT($ac_cv_working_tzset)
3350if test "$ac_cv_working_tzset" = yes
3351then
3352 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3353 [Define if tzset() actually switches the local timezone in a meaningful way.])
3354fi
3355
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003356# Look for subsecond timestamps in struct stat
3357AC_MSG_CHECKING(for tv_nsec in struct stat)
3358AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3359AC_TRY_COMPILE([#include <sys/stat.h>], [
3360struct stat st;
3361st.st_mtim.tv_nsec = 1;
3362],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003363ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003364ac_cv_stat_tv_nsec=no,
3365ac_cv_stat_tv_nsec=no))
3366AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3367if test "$ac_cv_stat_tv_nsec" = yes
3368then
3369 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3370 [Define if you have struct stat.st_mtim.tv_nsec])
3371fi
3372
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003373# Look for BSD style subsecond timestamps in struct stat
3374AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3375AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3376AC_TRY_COMPILE([#include <sys/stat.h>], [
3377struct stat st;
3378st.st_mtimespec.tv_nsec = 1;
3379],
3380ac_cv_stat_tv_nsec2=yes,
3381ac_cv_stat_tv_nsec2=no,
3382ac_cv_stat_tv_nsec2=no))
3383AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3384if test "$ac_cv_stat_tv_nsec2" = yes
3385then
3386 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3387 [Define if you have struct stat.st_mtimensec])
3388fi
3389
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003390# On HP/UX 11.0, mvwdelch is a block with a return statement
3391AC_MSG_CHECKING(whether mvwdelch is an expression)
3392AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3393AC_TRY_COMPILE([#include <curses.h>], [
3394 int rtn;
3395 rtn = mvwdelch(0,0,0);
3396], ac_cv_mvwdelch_is_expression=yes,
3397 ac_cv_mvwdelch_is_expression=no,
3398 ac_cv_mvwdelch_is_expression=yes))
3399AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3400
3401if test "$ac_cv_mvwdelch_is_expression" = yes
3402then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003403 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3404 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003405fi
3406
3407AC_MSG_CHECKING(whether WINDOW has _flags)
3408AC_CACHE_VAL(ac_cv_window_has_flags,
3409AC_TRY_COMPILE([#include <curses.h>], [
3410 WINDOW *w;
3411 w->_flags = 0;
3412], ac_cv_window_has_flags=yes,
3413 ac_cv_window_has_flags=no,
3414 ac_cv_window_has_flags=no))
3415AC_MSG_RESULT($ac_cv_window_has_flags)
3416
3417
3418if test "$ac_cv_window_has_flags" = yes
3419then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003420 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3421 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003422fi
3423
Walter Dörwald4994d952006-06-19 08:07:50 +00003424AC_MSG_CHECKING(for is_term_resized)
3425AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3426 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3427 AC_MSG_RESULT(yes),
3428 AC_MSG_RESULT(no)
3429)
3430
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003431AC_MSG_CHECKING(for resize_term)
3432AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3433 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003434 AC_MSG_RESULT(yes),
3435 AC_MSG_RESULT(no)
3436)
3437
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003438AC_MSG_CHECKING(for resizeterm)
3439AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3440 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003441 AC_MSG_RESULT(yes),
3442 AC_MSG_RESULT(no)
3443)
3444
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003445AC_MSG_CHECKING(for /dev/ptmx)
3446
3447if test -r /dev/ptmx
3448then
3449 AC_MSG_RESULT(yes)
3450 AC_DEFINE(HAVE_DEV_PTMX, 1,
3451 [Define if we have /dev/ptmx.])
3452else
3453 AC_MSG_RESULT(no)
3454fi
3455
3456AC_MSG_CHECKING(for /dev/ptc)
3457
3458if test -r /dev/ptc
3459then
3460 AC_MSG_RESULT(yes)
3461 AC_DEFINE(HAVE_DEV_PTC, 1,
3462 [Define if we have /dev/ptc.])
3463else
3464 AC_MSG_RESULT(no)
3465fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003466
Brett Cannon09d12362006-05-11 05:11:33 +00003467AC_MSG_CHECKING(for %zd printf() format support)
3468AC_TRY_RUN([#include <stdio.h>
3469#include <stddef.h>
3470#include <string.h>
3471
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003472#ifdef HAVE_SYS_TYPES_H
3473#include <sys/types.h>
3474#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003475
3476#ifdef HAVE_SSIZE_T
3477typedef ssize_t Py_ssize_t;
3478#elif SIZEOF_VOID_P == SIZEOF_LONG
3479typedef long Py_ssize_t;
3480#else
3481typedef int Py_ssize_t;
3482#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003483
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003484int main()
3485{
3486 char buffer[256];
3487
Brett Cannon09d12362006-05-11 05:11:33 +00003488 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3489 return 1;
3490
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003491 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003492 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003493
3494 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3495 return 1;
3496
3497 if (strcmp(buffer, "-123"))
3498 return 1;
3499
Brett Cannon09d12362006-05-11 05:11:33 +00003500 return 0;
3501}],
3502[AC_MSG_RESULT(yes)
3503 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3504 AC_MSG_RESULT(no))
3505
Martin v. Löwis01c04012002-11-11 14:58:44 +00003506AC_CHECK_TYPE(socklen_t,,
3507 AC_DEFINE(socklen_t,int,
3508 Define to `int' if <sys/socket.h> does not define.),[
3509#ifdef HAVE_SYS_TYPES_H
3510#include <sys/types.h>
3511#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003512#ifdef HAVE_SYS_SOCKET_H
3513#include <sys/socket.h>
3514#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003515])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003516
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003517AC_SUBST(THREADHEADERS)
3518
3519for h in `(cd $srcdir;echo Python/thread_*.h)`
3520do
3521 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3522done
3523
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003524AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003525SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003526AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003527for dir in $SRCDIRS; do
3528 if test ! -d $dir; then
3529 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003530 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003531done
3532AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003533
Guido van Rossum627b2d71993-12-24 10:39:16 +00003534# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003535AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3536AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003537
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003538echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003539if test ! -f Modules/Setup
3540then
3541 cp $srcdir/Modules/Setup.dist Modules/Setup
3542fi
3543
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003544echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003545if test ! -f Modules/Setup.local
3546then
3547 echo "# Edit this file for local setup changes" >Modules/Setup.local
3548fi
3549
3550echo "creating Makefile"
3551$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3552 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003553 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003554
3555case $ac_sys_system in
3556BeOS)
3557 AC_MSG_WARN([
3558
3559 Support for BeOS is deprecated as of Python 2.6.
3560 See PEP 11 for the gory details.
3561 ])
3562 ;;
3563*) ;;
3564esac
3565
Neil Schemenauer66252162001-02-19 04:47:42 +00003566mv config.c Modules