blob: bc9a02e9611530db665f362d5f13103abfab8bba [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
Ronald Oussoren580c7fe2008-05-02 19:45:11 +000086AC_ARG_WITH(framework-name,
87 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
88 specify an alternate name of the framework built with --enable-framework),
89[
90 PYTHONFRAMEWORK=${withval}
91 PYTHONFRAMEWORKDIR=${withval}.framework
92 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
93 ],[
94 PYTHONFRAMEWORK=Python
95 PYTHONFRAMEWORKDIR=Python.framework
96 PYTHONFRAMEWORKIDENTIFIER=org.python.python
97])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000098dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000099AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000100 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
101[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000102 case $enableval in
103 yes)
104 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000105 esac
106 case $enableval in
107 no)
108 PYTHONFRAMEWORK=
109 PYTHONFRAMEWORKDIR=no-framework
110 PYTHONFRAMEWORKPREFIX=
111 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000112 FRAMEWORKINSTALLFIRST=
113 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000114 FRAMEWORKALTINSTALLFIRST=
115 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000116 if test "x${prefix}" = "xNONE"; then
117 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
118 else
119 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
120 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000121 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000122 ;;
123 *)
124 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000125 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000126 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
127 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000128 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
129 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000130 if test "x${prefix}" = "xNONE" ; then
131 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
132 else
133 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
134 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000135 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000136
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000137 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000138 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000139 AC_CONFIG_FILES(Mac/Makefile)
140 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
141 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000142 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
143 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000144 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 ],[
146 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000148 PYTHONFRAMEWORKPREFIX=
149 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000150 FRAMEWORKINSTALLFIRST=
151 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000152 FRAMEWORKALTINSTALLFIRST=
153 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000154 if test "x${prefix}" = "xNONE" ; then
155 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
156 else
157 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
158 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000159 enable_framework=
160])
161AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000162AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000163AC_SUBST(PYTHONFRAMEWORKDIR)
164AC_SUBST(PYTHONFRAMEWORKPREFIX)
165AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000166AC_SUBST(FRAMEWORKINSTALLFIRST)
167AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000168AC_SUBST(FRAMEWORKALTINSTALLFIRST)
169AC_SUBST(FRAMEWORKALTINSTALLLAST)
170AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000171
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000172##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000173## AC_HELP_STRING(--with-dyld,
174## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000175##
Guido van Rossumb418f891996-07-30 18:06:02 +0000176# Set name for machine-dependent library files
177AC_SUBST(MACHDEP)
178AC_MSG_CHECKING(MACHDEP)
179if test -z "$MACHDEP"
180then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000181 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000182 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
183 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000184 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000185 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000186 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000188 ac_md_system=`echo $ac_sys_system |
189 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
190 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000191 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000192 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000193
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000194 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000195 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000196 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000197 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000198 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000199 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000200 esac
201fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000202
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000203# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
204# disable features if it is defined, without any means to access these
205# features as extensions. For these systems, we skip the definition of
206# _XOPEN_SOURCE. Before adding a system to the list to gain access to
207# some feature, make sure there is no alternative way to access this
208# feature. Also, when using wildcards, make sure you have verified the
209# need for not defining _XOPEN_SOURCE on all systems matching the
210# wildcard, and that the wildcard does not include future systems
211# (which may remove their limitations).
212dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
213case $ac_sys_system/$ac_sys_release in
214 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
215 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000216 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz4bc2c092006-09-05 02:57:01 +0000217 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000218 define_xopen_source=no
219 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
220 # also defined. This can be overridden by defining _BSD_SOURCE
221 # As this has a different meaning on Linux, only define it on OpenBSD
222 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
223 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000224 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
225 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
226 # Marc Recht
227 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
228 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000229 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
230 # of union __?sigval. Reported by Stuart Bishop.
231 SunOS/5.6)
232 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000233 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
234 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000235 # Reconfirmed for 7.1.4 by Martin v. Loewis.
236 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000237 define_xopen_source=no;;
238 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000239 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000240 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000241 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000242 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
243 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
244 # this is fixed in 10.3, which identifies itself as Darwin/7.*
245 # This should hopefully be fixed in FreeBSD 4.9
246 FreeBSD/4.8* | Darwin/6* )
247 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000248 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
249 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
250 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000251 AIX/4)
252 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000253 AIX/5)
254 if test `uname -r` -eq 1; then
255 define_xopen_source=no
256 fi
257 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000258 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
259 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000260 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000261 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000262 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000263 define_xopen_source=no
264 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000265
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000266esac
267
268if test $define_xopen_source = yes
269then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000270 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
271 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000272 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
273 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000274 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000275 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000276 AC_DEFINE(_XOPEN_SOURCE, 500,
277 Define to the level of X/Open that your system supports)
278 ;;
279 *)
280 AC_DEFINE(_XOPEN_SOURCE, 600,
281 Define to the level of X/Open that your system supports)
282 ;;
283 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000284
285 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
286 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
287 # several APIs are not declared. Since this is also needed in some
288 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000289 # except for Solaris 10, where it must not be defined,
290 # as it implies XPG4.2
291 case $ac_sys_system/$ac_sys_release in
292 SunOS/5.10)
293 ;;
294 *)
295 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
296 Define to activate Unix95-and-earlier features)
297 ;;
298 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000299
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000300 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
301
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000302fi
303
Guido van Rossum91922671997-10-09 20:24:13 +0000304#
305# SGI compilers allow the specification of the both the ABI and the
306# ISA on the command line. Depending on the values of these switches,
307# different and often incompatable code will be generated.
308#
309# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
310# thus supply support for various ABI/ISA combinations. The MACHDEP
311# variable is also adjusted.
312#
313AC_SUBST(SGI_ABI)
314if test ! -z "$SGI_ABI"
315then
316 CC="cc $SGI_ABI"
317 LDFLAGS="$SGI_ABI $LDFLAGS"
318 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
319fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000320AC_MSG_RESULT($MACHDEP)
321
Jack Jansen83f898c2002-12-30 22:23:40 +0000322# And add extra plat-mac for darwin
323AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000324AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000325AC_MSG_CHECKING(EXTRAPLATDIR)
326if test -z "$EXTRAPLATDIR"
327then
328 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000329 darwin)
330 EXTRAPLATDIR="\$(PLATMACDIRS)"
331 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
332 ;;
333 *)
334 EXTRAPLATDIR=""
335 EXTRAMACHDEPPATH=""
336 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000337 esac
338fi
339AC_MSG_RESULT($EXTRAPLATDIR)
340
Jack Jansen6b08a402004-06-03 12:41:45 +0000341# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
342# it may influence the way we can build extensions, so distutils
343# needs to check it
344AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000345AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000346CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000347EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000348
Mark Dickinson65134662008-04-25 16:11:04 +0000349AC_MSG_CHECKING(machine type as reported by uname -m)
350ac_sys_machine=`uname -m`
351AC_MSG_RESULT($ac_sys_machine)
352
Guido van Rossum627b2d71993-12-24 10:39:16 +0000353# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000354
355# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
356# for debug/optimization stuff. BASECFLAGS is for flags that are required
357# just to get things to compile and link. Users are free to override OPT
358# when running configure or make. The build should not break if they do.
359# BASECFLAGS should generally not be messed with, however.
360
361# XXX shouldn't some/most/all of this code be merged with the stuff later
362# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000363AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000364AC_ARG_WITH(gcc,
365 AC_HELP_STRING(--without-gcc,never use gcc),
366[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000367 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000368 no) CC=cc
369 without_gcc=yes;;
370 yes) CC=gcc
371 without_gcc=no;;
372 *) CC=$withval
373 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000374 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000375 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000376 AIX*) CC=cc_r
377 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000378 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000379 case $BE_HOST_CPU in
380 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000381 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000382 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000383 BASECFLAGS="$BASECFLAGS -export pragma"
384 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000385 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000386 ;;
387 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000388 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000389 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000390 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000391 ;;
392 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000393 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000394 ;;
395 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000396 AR="\$(srcdir)/Modules/ar_beos"
397 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000398 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000399 Monterey*)
400 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000401 without_gcc=;;
402 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000403 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000404AC_MSG_RESULT($without_gcc)
405
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000406# If the user switches compilers, we can't believe the cache
407if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
408then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000409 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
410(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000411fi
412
Guido van Rossum627b2d71993-12-24 10:39:16 +0000413AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000414
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000415AC_SUBST(CXX)
416AC_SUBST(MAINCC)
417AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
418AC_ARG_WITH(cxx_main,
419 AC_HELP_STRING([--with-cxx-main=<compiler>],
420 [compile main() and link python executable with C++ compiler]),
421[
422
423 case $withval in
424 no) with_cxx_main=no
425 MAINCC='$(CC)';;
426 yes) with_cxx_main=yes
427 MAINCC='$(CXX)';;
428 *) with_cxx_main=yes
429 MAINCC=$withval
430 if test -z "$CXX"
431 then
432 CXX=$withval
433 fi;;
434 esac], [
435 with_cxx_main=no
436 MAINCC='$(CC)'
437])
438AC_MSG_RESULT($with_cxx_main)
439
440preset_cxx="$CXX"
441if test -z "$CXX"
442then
443 case "$CC" in
444 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
445 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
446 esac
447 if test "$CXX" = "notfound"
448 then
449 CXX=""
450 fi
451fi
452if test -z "$CXX"
453then
454 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
455 if test "$CXX" = "notfound"
456 then
457 CXX=""
458 fi
459fi
460if test "$preset_cxx" != "$CXX"
461then
462 AC_MSG_WARN([
463
464 By default, distutils will build C++ extension modules with "$CXX".
465 If this is not intended, then set CXX on the configure command line.
466 ])
467fi
468
469
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000470# checks for UNIX variants that set C preprocessor variables
471AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000472
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000473# Check for unsupported systems
474case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000475atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000476 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
477 echo See README for details.
478 exit 1;;
479esac
480
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000481AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000482AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000483AC_ARG_WITH(suffix,
484 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
485[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000486 case $withval in
487 no) EXEEXT=;;
488 yes) EXEEXT=.exe;;
489 *) EXEEXT=$withval;;
490 esac])
491AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000492
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000493# Test whether we're running on a non-case-sensitive system, in which
494# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000495AC_SUBST(BUILDEXEEXT)
496AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000497if test ! -d CaseSensitiveTestDir; then
498mkdir CaseSensitiveTestDir
499fi
500
501if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000502then
Jack Jansen1999ef42001-12-06 21:47:20 +0000503 AC_MSG_RESULT(yes)
504 BUILDEXEEXT=.exe
505else
506 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000507 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000508fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000509rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000510
Guido van Rossumdd997f71998-10-07 19:58:26 +0000511case $MACHDEP in
512bsdos*)
513 case $CC in
514 gcc) CC="$CC -D_HAVE_BSDI";;
515 esac;;
516esac
517
Guido van Rossum84561611997-08-21 00:08:11 +0000518case $ac_sys_system in
519hp*|HP*)
520 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000521 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000522 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000523Monterey*)
524 case $CC in
525 cc) CC="$CC -Wl,-Bexport";;
526 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000527SunOS*)
528 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000529 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000530 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000531esac
532
Martin v. Löwise8964d42001-03-06 12:09:07 +0000533
Neil Schemenauer61c51152001-01-26 16:18:16 +0000534AC_SUBST(LIBRARY)
535AC_MSG_CHECKING(LIBRARY)
536if test -z "$LIBRARY"
537then
538 LIBRARY='libpython$(VERSION).a'
539fi
540AC_MSG_RESULT($LIBRARY)
541
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000542# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000543# name of the library into which to insert object files). BLDLIBRARY is also
544# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
545# is blank as the main program is not linked directly against LDLIBRARY.
546# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
547# systems without shared libraries, LDLIBRARY is the same as LIBRARY
548# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
549# DLLLIBRARY is the shared (i.e., DLL) library.
550#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000551# RUNSHARED is used to run shared python without installed libraries
552#
553# INSTSONAME is the name of the shared library that will be use to install
554# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000555AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000556AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000557AC_SUBST(BLDLIBRARY)
558AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000559AC_SUBST(INSTSONAME)
560AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000561LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000562BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000563INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000564DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000565LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000566RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000567
Guido van Rossumfb842551997-08-06 23:42:07 +0000568# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000569# If CXX is set, and if it is needed to link a main function that was
570# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
571# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000572# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000573# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000574AC_SUBST(LINKCC)
575AC_MSG_CHECKING(LINKCC)
576if test -z "$LINKCC"
577then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000578 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000579 case $ac_sys_system in
580 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000581 exp_extra="\"\""
582 if test $ac_sys_release -ge 5 -o \
583 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
584 exp_extra="."
585 fi
586 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000587 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000588 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000589 esac
590fi
591AC_MSG_RESULT($LINKCC)
592
Martin v. Löwis1142de32002-03-29 16:28:31 +0000593AC_MSG_CHECKING(for --enable-shared)
594AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000595 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000596
Martin v. Löwis1142de32002-03-29 16:28:31 +0000597if test -z "$enable_shared"
598then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000599 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000600 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000601 enable_shared="yes";;
602 *)
603 enable_shared="no";;
604 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605fi
606AC_MSG_RESULT($enable_shared)
607
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000608AC_MSG_CHECKING(for --enable-profiling)
609AC_ARG_ENABLE(profiling,
610 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
611[ac_save_cc="$CC"
612 CC="$CC -pg"
613 AC_TRY_RUN([int main() { return 0; }],
614 ac_enable_profiling="yes",
615 ac_enable_profiling="no",
616 ac_enable_profiling="no")
617 CC="$ac_save_cc"])
618AC_MSG_RESULT($ac_enable_profiling)
619
620case "$ac_enable_profiling" in
621 "yes")
622 BASECFLAGS="-pg $BASECFLAGS"
623 LDFLAGS="-pg $LDFLAGS"
624 ;;
625esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000626
627AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000628
Guido van Rossumb8552162001-09-05 14:58:11 +0000629# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
630# library that we build, but we do not want to link against it (we
631# will find it with a -framework option). For this reason there is an
632# extra variable BLDLIBRARY against which Python and the extension
633# modules are linked, BLDLIBRARY. This is normally the same as
634# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000635if test "$enable_framework"
636then
637 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000638 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000639 BLDLIBRARY=''
640else
641 BLDLIBRARY='$(LDLIBRARY)'
642fi
643
Martin v. Löwis1142de32002-03-29 16:28:31 +0000644# Other platforms follow
645if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000646 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647 case $ac_sys_system in
648 BeOS*)
649 LDLIBRARY='libpython$(VERSION).so'
650 ;;
651 CYGWIN*)
652 LDLIBRARY='libpython$(VERSION).dll.a'
653 DLLLIBRARY='libpython$(VERSION).dll'
654 ;;
655 SunOS*)
656 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000657 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000658 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000659 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000660 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000661 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000662 LDLIBRARY='libpython$(VERSION).so'
663 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000664 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000665 case $ac_sys_system in
666 FreeBSD*)
667 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
668 ;;
669 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000670 INSTSONAME="$LDLIBRARY".$SOVERSION
671 ;;
672 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000673 case `uname -m` in
674 ia64)
675 LDLIBRARY='libpython$(VERSION).so'
676 ;;
677 *)
678 LDLIBRARY='libpython$(VERSION).sl'
679 ;;
680 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000682 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000683 ;;
684 OSF*)
685 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000686 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000687 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000688 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000689 atheos*)
690 LDLIBRARY='libpython$(VERSION).so'
691 BLDLIBRARY='-L. -lpython$(VERSION)'
692 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
693 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694 esac
Jason Tishler30765592003-09-04 11:04:06 +0000695else # shared is disabled
696 case $ac_sys_system in
697 CYGWIN*)
698 BLDLIBRARY='$(LIBRARY)'
699 LDLIBRARY='libpython$(VERSION).dll.a'
700 ;;
701 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000702fi
703
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000704AC_MSG_RESULT($LDLIBRARY)
705
Guido van Rossum627b2d71993-12-24 10:39:16 +0000706AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000707AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000708AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000709
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000710AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000711AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000712if test $SVNVERSION = found
713then
714 SVNVERSION="svnversion \$(srcdir)"
715else
716 SVNVERSION="echo exported"
717fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000718
Neil Schemenauera42c8272001-03-31 00:01:55 +0000719case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000720bsdos*|hp*|HP*)
721 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000722 if test -z "$INSTALL"
723 then
724 INSTALL="${srcdir}/install-sh -c"
725 fi
726esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000727AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000728
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000729# Not every filesystem supports hard links
730AC_SUBST(LN)
731if test -z "$LN" ; then
732 case $ac_sys_system in
733 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000734 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000735 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000736 *) LN=ln;;
737 esac
738fi
739
Fred Drake9f715822001-07-11 06:27:00 +0000740# Check for --with-pydebug
741AC_MSG_CHECKING(for --with-pydebug)
742AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000743 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
744[
Fred Drake9f715822001-07-11 06:27:00 +0000745if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000746then
747 AC_DEFINE(Py_DEBUG, 1,
748 [Define if you want to build an interpreter with many run-time checks.])
749 AC_MSG_RESULT(yes);
750 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000751else AC_MSG_RESULT(no); Py_DEBUG='false'
752fi],
753[AC_MSG_RESULT(no)])
754
Skip Montanarodecc6a42003-01-01 20:07:49 +0000755# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
756# merged with this chunk of code?
757
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000758# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000759# ------------------------
760# (The following bit of code is complicated enough - please keep things
761# indented properly. Just pretend you're editing Python code. ;-)
762
763# There are two parallel sets of case statements below, one that checks to
764# see if OPT was set and one that does BASECFLAGS setting based upon
765# compiler and platform. BASECFLAGS tweaks need to be made even if the
766# user set OPT.
767
768# tweak OPT based on compiler and platform, only if the user didn't set
769# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000770AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000771if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000772then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000773 case $GCC in
774 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000775 if test "$CC" != 'g++' ; then
776 STRICT_PROTO="-Wstrict-prototypes"
777 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000778 # For gcc 4.x we need to use -fwrapv so lets check if its supported
779 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
780 WRAP="-fwrapv"
781 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000782 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000783 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000784 if test "$Py_DEBUG" = 'true' ; then
785 # Optimization messes up debuggers, so turn it off for
786 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000787 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000788 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000789 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000790 fi
791 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000792 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000793 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000794 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000795 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000796 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000797 SCO_SV*) OPT="$OPT -m486 -DSCO5"
798 ;;
799 esac
Fred Drake9f715822001-07-11 06:27:00 +0000800 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000801
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000802 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000803 OPT="-O"
804 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000805 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000806
807 # The current (beta) Monterey compiler dies with optimizations
808 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000809 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000810 Monterey*)
811 OPT=""
812 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000813 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000814
Guido van Rossum4e8af441994-08-19 15:33:54 +0000815fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000816
Skip Montanarodecc6a42003-01-01 20:07:49 +0000817AC_SUBST(BASECFLAGS)
818# tweak BASECFLAGS based on compiler and platform
819case $GCC in
820yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000821 # Python violates C99 rules, by casting between incompatible
822 # pointer types. GCC may generate bad code as a result of that,
823 # so use -fno-strict-aliasing if supported.
824 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
825 ac_save_cc="$CC"
826 CC="$CC -fno-strict-aliasing"
827 AC_TRY_RUN([int main() { return 0; }],
828 ac_cv_no_strict_aliasing_ok=yes,
829 ac_cv_no_strict_aliasing_ok=no,
830 ac_cv_no_strict_aliasing_ok=no)
831 CC="$ac_save_cc"
832 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
833 if test $ac_cv_no_strict_aliasing_ok = yes
834 then
835 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
836 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000837
838 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
839 # support. Without this, treatment of subnormals doesn't follow
840 # the standard.
841 case $ac_sys_machine in
842 alpha*)
843 BASECFLAGS="$BASECFLAGS -mieee"
844 ;;
845 esac
846
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 case $ac_sys_system in
848 SCO_SV*)
849 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
850 ;;
851 # is there any other compiler on Darwin besides gcc?
852 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000853 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
854 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren988117f2006-04-29 11:31:35 +0000855 if test "${enable_universalsdk}"; then
856 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
857 fi
858
Skip Montanarodecc6a42003-01-01 20:07:49 +0000859 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000860 OSF*)
861 BASECFLAGS="$BASECFLAGS -mieee"
862 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000863 esac
864 ;;
865
866*)
867 case $ac_sys_system in
868 OpenUNIX*|UnixWare*)
869 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
870 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000871 OSF*)
872 BASECFLAGS="$BASECFLAGS -ieee -std"
873 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000874 SCO_SV*)
875 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
876 ;;
877 esac
878 ;;
879esac
880
Fred Drakee1ceaa02001-12-04 20:55:47 +0000881if test "$Py_DEBUG" = 'true'; then
882 :
883else
884 OPT="-DNDEBUG $OPT"
885fi
886
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000887if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000888then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000889 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000890fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000891
Neal Norwitz020c46a2006-01-07 21:39:28 +0000892# disable check for icc since it seems to pass, but generates a warning
893if test "$CC" = icc
894then
895 ac_cv_opt_olimit_ok=no
896fi
897
Guido van Rossum91922671997-10-09 20:24:13 +0000898AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
899AC_CACHE_VAL(ac_cv_opt_olimit_ok,
900[ac_save_cc="$CC"
901CC="$CC -OPT:Olimit=0"
902AC_TRY_RUN([int main() { return 0; }],
903 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000904 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000905 ac_cv_opt_olimit_ok=no)
906CC="$ac_save_cc"])
907AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000908if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000909 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000910 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
911 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
912 # environment?
913 Darwin*)
914 ;;
915 *)
916 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
917 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000918 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000919else
920 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
921 AC_CACHE_VAL(ac_cv_olimit_ok,
922 [ac_save_cc="$CC"
923 CC="$CC -Olimit 1500"
924 AC_TRY_RUN([int main() { return 0; }],
925 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000926 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000927 ac_cv_olimit_ok=no)
928 CC="$ac_save_cc"])
929 AC_MSG_RESULT($ac_cv_olimit_ok)
930 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000931 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000932 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000933fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000934
Martin v. Löwisaac13162006-10-19 10:58:46 +0000935# Check whether GCC supports PyArg_ParseTuple format
936if test "$GCC" = "yes"
937then
938 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
939 save_CFLAGS=$CFLAGS
940 CFLAGS="$CFLAGS -Werror"
941 AC_TRY_COMPILE([
942 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
943 ],,
944 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
945 AC_MSG_RESULT(yes),
946 AC_MSG_RESULT(no)
947 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +0000948 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +0000949fi
950
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000951# On some compilers, pthreads are available without further options
952# (e.g. MacOS X). On some of these systems, the compiler will not
953# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
954# So we have to see first whether pthreads are available without
955# options before we can check whether -Kpthread improves anything.
956AC_MSG_CHECKING(whether pthreads are available without options)
957AC_CACHE_VAL(ac_cv_pthread_is_default,
958[AC_TRY_RUN([
959#include <pthread.h>
960
961void* routine(void* p){return NULL;}
962
963int main(){
964 pthread_t p;
965 if(pthread_create(&p,NULL,routine,NULL)!=0)
966 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000967 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000968 return 0;
969}
970],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000971[
972 ac_cv_pthread_is_default=yes
973 ac_cv_kthread=no
974 ac_cv_pthread=no
975],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000976 ac_cv_pthread_is_default=no,
977 ac_cv_pthread_is_default=no)
978])
979AC_MSG_RESULT($ac_cv_pthread_is_default)
980
981
982if test $ac_cv_pthread_is_default = yes
983then
984 ac_cv_kpthread=no
985else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000986# -Kpthread, if available, provides the right #defines
987# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000988# Some compilers won't report that they do not support -Kpthread,
989# so we need to run a program to see whether it really made the
990# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000991AC_MSG_CHECKING(whether $CC accepts -Kpthread)
992AC_CACHE_VAL(ac_cv_kpthread,
993[ac_save_cc="$CC"
994CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000995AC_TRY_RUN([
996#include <pthread.h>
997
998void* routine(void* p){return NULL;}
999
1000int main(){
1001 pthread_t p;
1002 if(pthread_create(&p,NULL,routine,NULL)!=0)
1003 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001004 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001005 return 0;
1006}
1007],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001008 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001009 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001010 ac_cv_kpthread=no)
1011CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001012AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001013fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001014
Skip Montanarod8d39a02003-07-10 20:44:10 +00001015if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001016then
1017# -Kthread, if available, provides the right #defines
1018# and linker options to make pthread_create available
1019# Some compilers won't report that they do not support -Kthread,
1020# so we need to run a program to see whether it really made the
1021# function available.
1022AC_MSG_CHECKING(whether $CC accepts -Kthread)
1023AC_CACHE_VAL(ac_cv_kthread,
1024[ac_save_cc="$CC"
1025CC="$CC -Kthread"
1026AC_TRY_RUN([
1027#include <pthread.h>
1028
1029void* routine(void* p){return NULL;}
1030
1031int main(){
1032 pthread_t p;
1033 if(pthread_create(&p,NULL,routine,NULL)!=0)
1034 return 1;
1035 (void)pthread_detach(p);
1036 return 0;
1037}
1038],
1039 ac_cv_kthread=yes,
1040 ac_cv_kthread=no,
1041 ac_cv_kthread=no)
1042CC="$ac_save_cc"])
1043AC_MSG_RESULT($ac_cv_kthread)
1044fi
1045
Skip Montanarod8d39a02003-07-10 20:44:10 +00001046if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001047then
1048# -pthread, if available, provides the right #defines
1049# and linker options to make pthread_create available
1050# Some compilers won't report that they do not support -pthread,
1051# so we need to run a program to see whether it really made the
1052# function available.
1053AC_MSG_CHECKING(whether $CC accepts -pthread)
1054AC_CACHE_VAL(ac_cv_thread,
1055[ac_save_cc="$CC"
1056CC="$CC -pthread"
1057AC_TRY_RUN([
1058#include <pthread.h>
1059
1060void* routine(void* p){return NULL;}
1061
1062int main(){
1063 pthread_t p;
1064 if(pthread_create(&p,NULL,routine,NULL)!=0)
1065 return 1;
1066 (void)pthread_detach(p);
1067 return 0;
1068}
1069],
1070 ac_cv_pthread=yes,
1071 ac_cv_pthread=no,
1072 ac_cv_pthread=no)
1073CC="$ac_save_cc"])
1074AC_MSG_RESULT($ac_cv_pthread)
1075fi
1076
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001077# If we have set a CC compiler flag for thread support then
1078# check if it works for CXX, too.
1079ac_cv_cxx_thread=no
1080if test ! -z "$CXX"
1081then
1082AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1083ac_save_cxx="$CXX"
1084
1085if test "$ac_cv_kpthread" = "yes"
1086then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001087 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001088 ac_cv_cxx_thread=yes
1089elif test "$ac_cv_kthread" = "yes"
1090then
1091 CXX="$CXX -Kthread"
1092 ac_cv_cxx_thread=yes
1093elif test "$ac_cv_pthread" = "yes"
1094then
1095 CXX="$CXX -pthread"
1096 ac_cv_cxx_thread=yes
1097fi
1098
1099if test $ac_cv_cxx_thread = yes
1100then
1101 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1102 $CXX -c conftest.$ac_ext 2>&5
1103 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1104 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1105 then
1106 ac_cv_cxx_thread=yes
1107 else
1108 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001109 fi
1110 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001111fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001112AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001113fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001114CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001115
Fred Drakece81d592000-07-09 14:39:29 +00001116dnl # check for ANSI or K&R ("traditional") preprocessor
1117dnl AC_MSG_CHECKING(for C preprocessor type)
1118dnl AC_TRY_COMPILE([
1119dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1120dnl int foo;
1121dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1122dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1123dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001124
Guido van Rossum627b2d71993-12-24 10:39:16 +00001125# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001126AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001127AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1128fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001129ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001130shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001131unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001132sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1133sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001134sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1135sys/time.h \
1136sys/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 +00001137sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001138bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001139AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001140AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001141
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001142# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001143AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001144#ifdef HAVE_CURSES_H
1145#include <curses.h>
1146#endif
1147])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001148
Martin v. Löwis11017b12006-01-14 18:12:57 +00001149# On Linux, netlink.h requires asm/types.h
1150AC_CHECK_HEADERS(linux/netlink.h,,,[
1151#ifdef HAVE_ASM_TYPES_H
1152#include <asm/types.h>
1153#endif
1154#ifdef HAVE_SYS_SOCKET_H
1155#include <sys/socket.h>
1156#endif
1157])
1158
Guido van Rossum627b2d71993-12-24 10:39:16 +00001159# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001160was_it_defined=no
1161AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001162AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1163 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1164])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001165AC_MSG_RESULT($was_it_defined)
1166
Neal Norwitz11690112002-07-30 01:08:28 +00001167# Check whether using makedev requires defining _OSF_SOURCE
1168AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001169AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001170 [ makedev(0, 0) ],
1171 ac_cv_has_makedev=yes,
1172 ac_cv_has_makedev=no)
1173if test "$ac_cv_has_makedev" = "no"; then
1174 # we didn't link, try if _OSF_SOURCE will allow us to link
1175 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001176#define _OSF_SOURCE 1
1177#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001178 ],
1179 [ makedev(0, 0) ],
1180 ac_cv_has_makedev=yes,
1181 ac_cv_has_makedev=no)
1182 if test "$ac_cv_has_makedev" = "yes"; then
1183 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1184 fi
1185fi
1186AC_MSG_RESULT($ac_cv_has_makedev)
1187if test "$ac_cv_has_makedev" = "yes"; then
1188 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1189fi
1190
Martin v. Löwis399a6892002-10-04 10:22:02 +00001191# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1192# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1193# defined, but the compiler does not support pragma redefine_extname,
1194# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1195# structures (such as rlimit64) without declaring them. As a
1196# work-around, disable LFS on such configurations
1197
1198use_lfs=yes
1199AC_MSG_CHECKING(Solaris LFS bug)
1200AC_TRY_COMPILE([
1201#define _LARGEFILE_SOURCE 1
1202#define _FILE_OFFSET_BITS 64
1203#include <sys/resource.h>
1204],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1205AC_MSG_RESULT($sol_lfs_bug)
1206if test "$sol_lfs_bug" = "yes"; then
1207 use_lfs=no
1208fi
1209
1210if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001211# Two defines needed to enable largefile support on various platforms
1212# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001213AC_DEFINE(_LARGEFILE_SOURCE, 1,
1214[This must be defined on some systems to enable large file support.])
1215AC_DEFINE(_FILE_OFFSET_BITS, 64,
1216[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001217fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001218
Guido van Rossum300fda71996-08-19 21:58:16 +00001219# Add some code to confdefs.h so that the test for off_t works on SCO
1220cat >> confdefs.h <<\EOF
1221#if defined(SCO_DS)
1222#undef _OFF_T
1223#endif
1224EOF
1225
Guido van Rossumef2255b2000-03-10 22:30:29 +00001226# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001227AC_TYPE_MODE_T
1228AC_TYPE_OFF_T
1229AC_TYPE_PID_T
1230AC_TYPE_SIGNAL
1231AC_TYPE_SIZE_T
1232AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001233AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001234 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001235
Guido van Rossumef2255b2000-03-10 22:30:29 +00001236# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001237# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001238AC_CHECK_SIZEOF(int, 4)
1239AC_CHECK_SIZEOF(long, 4)
1240AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001241AC_CHECK_SIZEOF(short, 2)
1242AC_CHECK_SIZEOF(float, 4)
1243AC_CHECK_SIZEOF(double, 8)
1244AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001245AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001246AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001247
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001248AC_MSG_CHECKING(for long long support)
1249have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001250AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1251 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1252 have_long_long=yes
1253])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001254AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001255if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001256AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001257fi
1258
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001259AC_MSG_CHECKING(for _Bool support)
1260have_c99_bool=no
1261AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1262 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1263 have_c99_bool=yes
1264])
1265AC_MSG_RESULT($have_c99_bool)
1266if test "$have_c99_bool" = yes ; then
1267AC_CHECK_SIZEOF(_Bool, 1)
1268fi
1269
Martin v. Löwisebe26702006-10-02 14:55:51 +00001270AC_CHECK_TYPES(uintptr_t,
1271 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001272 [], [#ifdef HAVE_STDINT_H
1273 #include <stdint.h>
1274 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001275
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001276
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001277# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1278AC_MSG_CHECKING(size of off_t)
1279AC_CACHE_VAL(ac_cv_sizeof_off_t,
1280[AC_TRY_RUN([#include <stdio.h>
1281#include <sys/types.h>
1282main()
1283{
1284 FILE *f=fopen("conftestval", "w");
1285 if (!f) exit(1);
1286 fprintf(f, "%d\n", sizeof(off_t));
1287 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001288}],
1289ac_cv_sizeof_off_t=`cat conftestval`,
1290ac_cv_sizeof_off_t=0,
1291ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001292])
1293AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001294AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1295[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001296
1297AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001298if test "$have_long_long" = yes -a \
1299 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1300 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001301 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1302 [Defined to enable large file support when an off_t is bigger than a long
1303 and long long is available and at least as big as an off_t. You may need
1304 to add some flags for configuration and compilation to enable this mode.
1305 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001306 AC_MSG_RESULT(yes)
1307else
1308 AC_MSG_RESULT(no)
1309fi
1310
Fred Drakea3f6e912000-06-29 20:44:47 +00001311# AC_CHECK_SIZEOF() doesn't include <time.h>.
1312AC_MSG_CHECKING(size of time_t)
1313AC_CACHE_VAL(ac_cv_sizeof_time_t,
1314[AC_TRY_RUN([#include <stdio.h>
1315#include <time.h>
1316main()
1317{
1318 FILE *f=fopen("conftestval", "w");
1319 if (!f) exit(1);
1320 fprintf(f, "%d\n", sizeof(time_t));
1321 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001322}],
1323ac_cv_sizeof_time_t=`cat conftestval`,
1324ac_cv_sizeof_time_t=0,
1325ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001326])
1327AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001328AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1329[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001330
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001331
Trent Mick635f6fb2000-08-23 21:33:05 +00001332# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001333ac_save_cc="$CC"
1334if test "$ac_cv_kpthread" = "yes"
1335then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001336elif test "$ac_cv_kthread" = "yes"
1337then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001338elif test "$ac_cv_pthread" = "yes"
1339then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001340fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001341AC_MSG_CHECKING(for pthread_t)
1342have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001343AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001344AC_MSG_RESULT($have_pthread_t)
1345if test "$have_pthread_t" = yes ; then
1346 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1347 AC_MSG_CHECKING(size of pthread_t)
1348 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1349 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001350#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001351 main()
1352 {
1353 FILE *f=fopen("conftestval", "w");
1354 if (!f) exit(1);
1355 fprintf(f, "%d\n", sizeof(pthread_t));
1356 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001357 }],
1358 ac_cv_sizeof_pthread_t=`cat conftestval`,
1359 ac_cv_sizeof_pthread_t=0,
1360 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001361 ])
1362 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001363 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1364 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001365fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001366CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001367
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001368AC_MSG_CHECKING(for --enable-toolbox-glue)
1369AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001370 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001371
1372if test -z "$enable_toolbox_glue"
1373then
1374 case $ac_sys_system/$ac_sys_release in
1375 Darwin/*)
1376 enable_toolbox_glue="yes";;
1377 *)
1378 enable_toolbox_glue="no";;
1379 esac
1380fi
1381case "$enable_toolbox_glue" in
1382yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001383 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001384 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001385 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1386 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001387 ;;
1388*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001389 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001390 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001391 ;;
1392esac
1393AC_MSG_RESULT($enable_toolbox_glue)
1394
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001395AC_SUBST(OTHER_LIBTOOL_OPT)
1396case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001397 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001398 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1399 ;;
1400 Darwin/*)
1401 OTHER_LIBTOOL_OPT=""
1402 ;;
1403esac
1404
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001405AC_SUBST(LIBTOOL_CRUFT)
1406case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001407 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001408 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1409 if test "${enable_universalsdk}"; then
1410 :
1411 else
1412 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1413 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001414 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001415 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001416 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001417 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1418 if test ${gcc_version} '<' 4.0
1419 then
1420 LIBTOOL_CRUFT="-lcc_dynamic"
1421 else
1422 LIBTOOL_CRUFT=""
1423 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001424 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001425 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001426 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001427esac
1428
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001429AC_MSG_CHECKING(for --enable-framework)
1430if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001431then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001432 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001433 # -F. is needed to allow linking to the framework while
1434 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001435 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1436 [Define if you want to produce an OpenStep/Rhapsody framework
1437 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001438 AC_MSG_RESULT(yes)
1439else
1440 AC_MSG_RESULT(no)
1441fi
1442
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001443AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001444case $ac_sys_system/$ac_sys_release in
1445 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001446 AC_DEFINE(WITH_DYLD, 1,
1447 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1448 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1449 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001450 AC_MSG_RESULT(always on for Darwin)
1451 ;;
1452 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001453 AC_MSG_RESULT(no)
1454 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001455esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001456
Guido van Rossumac405f61994-09-12 10:56:06 +00001457# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001458AC_SUBST(SO)
1459AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001460AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001461AC_SUBST(CCSHARED)
1462AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001463# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001464# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001465AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001466if test -z "$SO"
1467then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001468 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001469 hp*|HP*)
1470 case `uname -m` in
1471 ia64) SO=.so;;
1472 *) SO=.sl;;
1473 esac
1474 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001475 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001476 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001477 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001478else
1479 # this might also be a termcap variable, see #610332
1480 echo
1481 echo '====================================================================='
1482 echo '+ +'
1483 echo '+ WARNING: You have set SO in your environment. +'
1484 echo '+ Do you really mean to change the extension for shared libraries? +'
1485 echo '+ Continuing in 10 seconds to let you to ponder. +'
1486 echo '+ +'
1487 echo '====================================================================='
1488 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001489fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001490AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001491AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001492# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001493# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001494# (Shared libraries in this instance are shared modules to be loaded into
1495# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001496AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001497if test -z "$LDSHARED"
1498then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001499 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001500 AIX*)
1501 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001502 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001503 ;;
1504 BeOS*)
1505 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001506 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001507 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001508 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001509 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001510 SunOS/5*)
1511 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001512 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001513 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001514 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001515 hp*|HP*)
1516 if test "$GCC" = "yes"
1517 then LDSHARED='$(CC) -shared'
1518 else LDSHARED='ld -b';
1519 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001520 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001521 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001522 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1523 if test "$enable_framework" ; then
1524 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001525 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1526 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001527 else
1528 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001529 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001530 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001531 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001532 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1533 if test "$enable_framework" ; then
1534 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001535 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1536 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001537 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001538 # No framework, use the Python app as bundle-loader
1539 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001540 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001541 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001542 Darwin/*)
1543 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1544 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001545 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001546 if test ${cur_target} '>' 10.2; then
1547 cur_target=10.3
1548 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001549 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001550
1551 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1552 # environment with a value that is the same as what we'll use
1553 # in the Makefile to ensure that we'll get the same compiler
1554 # environment during configure and build time.
1555 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1556 export MACOSX_DEPLOYMENT_TARGET
1557
Ronald Oussoren988117f2006-04-29 11:31:35 +00001558 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001559 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001560 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001561 if test "${enable_universalsdk}"; then
1562 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1563 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001564 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1565 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001566 else
1567 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1568 if test "$enable_framework" ; then
1569 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001570 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1571 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001572 else
1573 # No framework, use the Python app as bundle-loader
1574 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1575 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1576 fi
1577 fi
1578 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001579 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001580 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001581 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001582 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001583 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001584 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001585 else
1586 LDSHARED="ld -Bshareable ${LDFLAGS}"
1587 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001588 OpenBSD*)
1589 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1590 then
1591 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1592 else
1593 case `uname -r` in
1594 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1595 LDSHARED="ld -Bshareable ${LDFLAGS}"
1596 ;;
1597 *)
1598 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1599 ;;
1600 esac
1601 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001602 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001603 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001604 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001605 then LDSHARED='$(CC) -shared'
1606 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001607 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001608 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001609 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001610 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001611 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001612 *) LDSHARED="ld";;
1613 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001614fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001615AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001616BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001617# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001618# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001619AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001620if test -z "$CCSHARED"
1621then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001622 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001623 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001624 then CCSHARED="-fPIC";
1625 elif test `uname -p` = sparc;
1626 then CCSHARED="-xcode=pic32";
1627 else CCSHARED="-Kpic";
1628 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001629 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001630 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001631 else CCSHARED="+z";
1632 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001633 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001634 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001635 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001636 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001637 if test "$GCC" = "yes"
1638 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001639 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001640 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001641 SCO_SV*)
1642 if test "$GCC" = "yes"
1643 then CCSHARED="-fPIC"
1644 else CCSHARED="-Kpic -belf"
1645 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001646 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001647 IRIX*/6*) case $CC in
1648 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001649 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001650 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001651 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001652 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001653fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001654AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001655# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001656# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001657AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001658if test -z "$LINKFORSHARED"
1659then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001660 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001661 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001662 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001663 LINKFORSHARED="-Wl,-E -Wl,+s";;
1664# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001665 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001666 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001667 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001668 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001669 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1670 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001671 # not used by the core itself but which needs to be in the core so
1672 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001673 # -prebind is no longer used, because it actually seems to give a
1674 # slowdown in stead of a speedup, maybe due to the large number of
1675 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001676
1677 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001678 if test "$enable_framework"
1679 then
Jack Jansenda49e192005-01-07 13:08:22 +00001680 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001681 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001682 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001683 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001684 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001685 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001686 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001687 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1688 then
1689 LINKFORSHARED="-Wl,--export-dynamic"
1690 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001691 SunOS/5*) case $CC in
1692 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001693 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001694 then
1695 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001696 fi;;
1697 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001698 CYGWIN*)
1699 if test $enable_shared = "no"
1700 then
1701 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1702 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001703 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001704fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001705AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001706
Neil Schemenauer61c51152001-01-26 16:18:16 +00001707AC_SUBST(CFLAGSFORSHARED)
1708AC_MSG_CHECKING(CFLAGSFORSHARED)
1709if test ! "$LIBRARY" = "$LDLIBRARY"
1710then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001711 case $ac_sys_system in
1712 CYGWIN*)
1713 # Cygwin needs CCSHARED when building extension DLLs
1714 # but not when building the interpreter DLL.
1715 CFLAGSFORSHARED='';;
1716 *)
1717 CFLAGSFORSHARED='$(CCSHARED)'
1718 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001719fi
1720AC_MSG_RESULT($CFLAGSFORSHARED)
1721
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001722# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1723# library (with --enable-shared).
1724# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001725# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1726# if it is not required, since it creates a dependency of the shared library
1727# to LIBS. This, in turn, means that applications linking the shared libpython
1728# don't need to link LIBS explicitly. The default should be only changed
1729# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001730AC_SUBST(SHLIBS)
1731AC_MSG_CHECKING(SHLIBS)
1732case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001733 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001734 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001735esac
1736AC_MSG_RESULT($SHLIBS)
1737
1738
Guido van Rossum627b2d71993-12-24 10:39:16 +00001739# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001740AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1741AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001742
1743# only check for sem_ini if thread support is requested
1744if test "$with_threads" = "yes" -o -z "$with_threads"; then
1745 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1746 # posix4 on Solaris 2.6
1747 # pthread (first!) on Linux
1748fi
1749
Martin v. Löwis19d17342003-06-14 21:03:05 +00001750# check if we need libintl for locale functions
1751AC_CHECK_LIB(intl, textdomain,
1752 AC_DEFINE(WITH_LIBINTL, 1,
1753 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001754
1755# checks for system dependent C++ extensions support
1756case "$ac_sys_system" in
1757 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1758 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1759 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001760 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1761 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1762 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001763 AC_MSG_RESULT(yes)],
1764 [AC_MSG_RESULT(no)]);;
1765 *) ;;
1766esac
1767
Guido van Rossum70c7f481998-03-26 18:44:10 +00001768# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001769# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001770AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001771AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001772
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001773case "$ac_sys_system" in
1774BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001775AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1776;;
1777esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001778
Guido van Rossumc5a39031996-07-31 17:35:03 +00001779AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001780AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001781 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1782[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001783AC_MSG_RESULT($withval)
1784LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001785],
1786[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001787
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001788# Check for use of the system libffi library
1789AC_MSG_CHECKING(for --with-system-ffi)
1790AC_ARG_WITH(system_ffi,
1791 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1792
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001793AC_MSG_RESULT($with_system_ffi)
1794
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001795# Determine if signalmodule should be used.
1796AC_SUBST(USE_SIGNAL_MODULE)
1797AC_SUBST(SIGNAL_OBJS)
1798AC_MSG_CHECKING(for --with-signal-module)
1799AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001800 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001801
1802if test -z "$with_signal_module"
1803then with_signal_module="yes"
1804fi
1805AC_MSG_RESULT($with_signal_module)
1806
1807if test "${with_signal_module}" = "yes"; then
1808 USE_SIGNAL_MODULE=""
1809 SIGNAL_OBJS=""
1810else
1811 USE_SIGNAL_MODULE="#"
1812 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1813fi
1814
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001815# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001816AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001817USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001818
Guido van Rossum54d93d41997-01-22 20:51:58 +00001819AC_MSG_CHECKING(for --with-dec-threads)
1820AC_SUBST(LDLAST)
1821AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001822 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1823[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001824AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001825LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001826if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001827 with_thread="$withval";
1828fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001829[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001830
Martin v. Löwis11437992002-04-12 09:54:03 +00001831# Templates for things AC_DEFINEd more than once.
1832# For a single AC_DEFINE, no template is needed.
1833AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1834AH_TEMPLATE(_REENTRANT,
1835 [Define to force use of thread-safe errno, h_errno, and other functions])
1836AH_TEMPLATE(WITH_THREAD,
1837 [Define if you want to compile in rudimentary thread support])
1838
Guido van Rossum54d93d41997-01-22 20:51:58 +00001839AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001840dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001841AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001842 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001843
Barry Warsawc0d24d82000-06-29 16:12:00 +00001844# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001845dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001846AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001847 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1848 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001849
1850if test -z "$with_threads"
1851then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001852fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001853AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001854
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001855AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001856if test "$with_threads" = "no"
1857then
1858 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001859elif test "$ac_cv_pthread_is_default" = yes
1860then
1861 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001862 # Defining _REENTRANT on system with POSIX threads should not hurt.
1863 AC_DEFINE(_REENTRANT)
1864 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001865 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001866elif test "$ac_cv_kpthread" = "yes"
1867then
1868 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001869 if test "$ac_cv_cxx_thread" = "yes"; then
1870 CXX="$CXX -Kpthread"
1871 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001872 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001873 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001874 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001875elif test "$ac_cv_kthread" = "yes"
1876then
1877 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001878 if test "$ac_cv_cxx_thread" = "yes"; then
1879 CXX="$CXX -Kthread"
1880 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001881 AC_DEFINE(WITH_THREAD)
1882 posix_threads=yes
1883 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001884elif test "$ac_cv_pthread" = "yes"
1885then
1886 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001887 if test "$ac_cv_cxx_thread" = "yes"; then
1888 CXX="$CXX -pthread"
1889 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001890 AC_DEFINE(WITH_THREAD)
1891 posix_threads=yes
1892 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001893else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001894 if test ! -z "$with_threads" -a -d "$with_threads"
1895 then LDFLAGS="$LDFLAGS -L$with_threads"
1896 fi
1897 if test ! -z "$withval" -a -d "$withval"
1898 then LDFLAGS="$LDFLAGS -L$withval"
1899 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001900
1901 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001902 # define _POSIX_THREADS in unistd.h. Some apparently don't
1903 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001904 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1905 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001906 [
1907#include <unistd.h>
1908#ifdef _POSIX_THREADS
1909yes
1910#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001911 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1912 AC_MSG_RESULT($unistd_defines_pthreads)
1913
Martin v. Löwis130fb172001-07-19 11:00:41 +00001914 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001915 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1916 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001917 AC_DEFINE(HURD_C_THREADS, 1,
1918 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001919 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001920 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001921 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1922 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001923 AC_DEFINE(MACH_C_THREADS, 1,
1924 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001925 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001926 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001927 AC_ARG_WITH([pth],
1928 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1929 [AC_MSG_RESULT($withval)
1930 AC_DEFINE([WITH_THREAD])
1931 AC_DEFINE([HAVE_PTH], 1,
1932 [Define if you have GNU PTH threads.])
1933 LIBS="-lpth $LIBS"
1934 THREADOBJ="Python/thread.o"],
1935 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001936
1937 # Just looking for pthread_create in libpthread is not enough:
1938 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1939 # So we really have to include pthread.h, and then link.
1940 _libs=$LIBS
1941 LIBS="$LIBS -lpthread"
1942 AC_MSG_CHECKING([for pthread_create in -lpthread])
1943 AC_TRY_LINK([#include <pthread.h>
1944
1945void * start_routine (void *arg) { exit (0); }], [
1946pthread_create (NULL, NULL, start_routine, NULL)], [
1947 AC_MSG_RESULT(yes)
1948 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001949 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001950 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001951 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001952 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001953 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001954 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001955 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1956 AC_DEFINE(ATHEOS_THREADS, 1,
1957 [Define this if you have AtheOS threads.])
1958 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001959 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001960 AC_DEFINE(BEOS_THREADS, 1,
1961 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001962 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001963 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001964 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001965 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001966 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001967 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001968 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001969 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001970 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001971 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001972 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001973 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001974 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001975 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001976 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001977 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001978 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001979 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001980 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001981
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001982 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1983 LIBS="$LIBS -lmpc"
1984 THREADOBJ="Python/thread.o"
1985 USE_THREAD_MODULE=""])
1986
1987 if test "$posix_threads" != "yes"; then
1988 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1989 LIBS="$LIBS -lthread"
1990 THREADOBJ="Python/thread.o"
1991 USE_THREAD_MODULE=""])
1992 fi
1993
1994 if test "$USE_THREAD_MODULE" != "#"
1995 then
1996 # If the above checks didn't disable threads, (at least) OSF1
1997 # needs this '-threads' argument during linking.
1998 case $ac_sys_system in
1999 OSF1) LDLAST=-threads;;
2000 esac
2001 fi
2002fi
2003
2004if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002005 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002006 AC_DEFINE(_POSIX_THREADS, 1,
2007 [Define if you have POSIX threads,
2008 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002009 fi
2010
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002011 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2012 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002013 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2014 Defined for Solaris 2.6 bug in pthread header.)
2015 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002016 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002017 Define if the Posix semaphores do not work on your system)
2018 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002019 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2020 Define if the Posix semaphores do not work on your system)
2021 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002022 esac
2023
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002024 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2025 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2026 [AC_TRY_RUN([#include <pthread.h>
2027 void *foo(void *parm) {
2028 return NULL;
2029 }
2030 main() {
2031 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002032 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002033 if (pthread_attr_init(&attr)) exit(-1);
2034 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002035 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002036 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002037 }],
2038 ac_cv_pthread_system_supported=yes,
2039 ac_cv_pthread_system_supported=no,
2040 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002041 ])
2042 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2043 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002044 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002045 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002046 AC_CHECK_FUNCS(pthread_sigmask,
2047 [case $ac_sys_system in
2048 CYGWIN*)
2049 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2050 [Define if pthread_sigmask() does not work on your system.])
2051 ;;
2052 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002053fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002054
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002055
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002056# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002057AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002058AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002059AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002060[ --enable-ipv6 Enable ipv6 (with ipv4) support
2061 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002062[ case "$enableval" in
2063 no)
2064 AC_MSG_RESULT(no)
2065 ipv6=no
2066 ;;
2067 *) AC_MSG_RESULT(yes)
2068 AC_DEFINE(ENABLE_IPV6)
2069 ipv6=yes
2070 ;;
2071 esac ],
2072
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002073[
2074dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002075 AC_TRY_RUN([ /* AF_INET6 available check */
2076#include <sys/types.h>
2077#include <sys/socket.h>
2078main()
2079{
2080 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2081 exit(1);
2082 else
2083 exit(0);
2084}
2085],
2086 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002087 ipv6=yes,
2088 AC_MSG_RESULT(no)
2089 ipv6=no,
2090 AC_MSG_RESULT(no)
2091 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002092)
2093
2094if test "$ipv6" = "yes"; then
2095 AC_MSG_CHECKING(if RFC2553 API is available)
2096 AC_TRY_COMPILE([#include <sys/types.h>
2097#include <netinet/in.h>],
2098 [struct sockaddr_in6 x;
2099x.sin6_scope_id;],
2100 AC_MSG_RESULT(yes)
2101 ipv6=yes,
2102 AC_MSG_RESULT(no, IPv6 disabled)
2103 ipv6=no)
2104fi
2105
2106if test "$ipv6" = "yes"; then
2107 AC_DEFINE(ENABLE_IPV6)
2108fi
2109])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002110
2111ipv6type=unknown
2112ipv6lib=none
2113ipv6trylibc=no
2114
2115if test "$ipv6" = "yes"; then
2116 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002117 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2118 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002119 case $i in
2120 inria)
2121 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002122 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002123#include <netinet/in.h>
2124#ifdef IPV6_INRIA_VERSION
2125yes
2126#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002127 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002128 ;;
2129 kame)
2130 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002131 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002132#include <netinet/in.h>
2133#ifdef __KAME__
2134yes
2135#endif],
2136 [ipv6type=$i;
2137 ipv6lib=inet6
2138 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002139 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002140 ;;
2141 linux-glibc)
2142 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002143 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002144#include <features.h>
2145#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2146yes
2147#endif],
2148 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002149 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002150 ;;
2151 linux-inet6)
2152 dnl http://www.v6.linux.or.jp/
2153 if test -d /usr/inet6; then
2154 ipv6type=$i
2155 ipv6lib=inet6
2156 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002157 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002158 fi
2159 ;;
2160 solaris)
2161 if test -f /etc/netconfig; then
2162 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2163 ipv6type=$i
2164 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002165 fi
2166 fi
2167 ;;
2168 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002169 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002170#include <sys/param.h>
2171#ifdef _TOSHIBA_INET6
2172yes
2173#endif],
2174 [ipv6type=$i;
2175 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002176 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002177 ;;
2178 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002179 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002180#include </usr/local/v6/include/sys/v6config.h>
2181#ifdef __V6D__
2182yes
2183#endif],
2184 [ipv6type=$i;
2185 ipv6lib=v6;
2186 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002187 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002188 ;;
2189 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002190 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002191#include <sys/param.h>
2192#ifdef _ZETA_MINAMI_INET6
2193yes
2194#endif],
2195 [ipv6type=$i;
2196 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002197 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002198 ;;
2199 esac
2200 if test "$ipv6type" != "unknown"; then
2201 break
2202 fi
2203 done
2204 AC_MSG_RESULT($ipv6type)
2205fi
2206
2207if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2208 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2209 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2210 echo "using lib$ipv6lib"
2211 else
2212 if test $ipv6trylibc = "yes"; then
2213 echo "using libc"
2214 else
2215 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2216 echo "You need to fetch lib$ipv6lib.a from appropriate"
2217 echo 'ipv6 kit and compile beforehand.'
2218 exit 1
2219 fi
2220 fi
2221fi
2222
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002223# Check for --with-doc-strings
2224AC_MSG_CHECKING(for --with-doc-strings)
2225AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002226 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002227
2228if test -z "$with_doc_strings"
2229then with_doc_strings="yes"
2230fi
2231if test "$with_doc_strings" != "no"
2232then
2233 AC_DEFINE(WITH_DOC_STRINGS, 1,
2234 [Define if you want documentation strings in extension modules])
2235fi
2236AC_MSG_RESULT($with_doc_strings)
2237
Neil Schemenauera35c6882001-02-27 04:45:05 +00002238# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002239AC_MSG_CHECKING(for --with-tsc)
2240AC_ARG_WITH(tsc,
2241[ --with(out)-tsc enable/disable timestamp counter profile], [
2242if test "$withval" != no
2243then
2244 AC_DEFINE(WITH_TSC, 1,
2245 [Define to profile with the Pentium timestamp counter])
2246 AC_MSG_RESULT(yes)
2247else AC_MSG_RESULT(no)
2248fi],
2249[AC_MSG_RESULT(no)])
2250
2251# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002252AC_MSG_CHECKING(for --with-pymalloc)
2253AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002254 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002255
2256if test -z "$with_pymalloc"
2257then with_pymalloc="yes"
2258fi
2259if test "$with_pymalloc" != "no"
2260then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002261 AC_DEFINE(WITH_PYMALLOC, 1,
2262 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002263fi
2264AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002265
Barry Warsawef82cd72000-06-30 16:21:01 +00002266# Check for --with-wctype-functions
2267AC_MSG_CHECKING(for --with-wctype-functions)
2268AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002269 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2270[
Barry Warsawef82cd72000-06-30 16:21:01 +00002271if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002272then
2273 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2274 [Define if you want wctype.h functions to be used instead of the
2275 one supplied by Python itself. (see Include/unicodectype.h).])
2276 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002277else AC_MSG_RESULT(no)
2278fi],
2279[AC_MSG_RESULT(no)])
2280
Guido van Rossum68242b51996-05-28 22:53:03 +00002281# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002282AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002283DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002284
Guido van Rossume97ee181999-12-20 21:27:22 +00002285# the dlopen() function means we might want to use dynload_shlib.o. some
2286# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002287AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002288
2289# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2290# loading of modules.
2291AC_SUBST(DYNLOADFILE)
2292AC_MSG_CHECKING(DYNLOADFILE)
2293if test -z "$DYNLOADFILE"
2294then
2295 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002296 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2297 if test "$ac_cv_func_dlopen" = yes
2298 then DYNLOADFILE="dynload_shlib.o"
2299 else DYNLOADFILE="dynload_aix.o"
2300 fi
2301 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002302 BeOS*) DYNLOADFILE="dynload_beos.o";;
2303 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002304 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2305 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002306 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002307 *)
2308 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2309 # out any dynamic loading
2310 if test "$ac_cv_func_dlopen" = yes
2311 then DYNLOADFILE="dynload_shlib.o"
2312 else DYNLOADFILE="dynload_stub.o"
2313 fi
2314 ;;
2315 esac
2316fi
2317AC_MSG_RESULT($DYNLOADFILE)
2318if test "$DYNLOADFILE" != "dynload_stub.o"
2319then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002320 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2321 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002322fi
2323
Jack Jansenc49e5b72001-06-19 15:00:23 +00002324# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2325
2326AC_SUBST(MACHDEP_OBJS)
2327AC_MSG_CHECKING(MACHDEP_OBJS)
2328if test -z "$MACHDEP_OBJS"
2329then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002330 MACHDEP_OBJS=$extra_machdep_objs
2331else
2332 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002333fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002334AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002335
Guido van Rossum627b2d71993-12-24 10:39:16 +00002336# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002337AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2338 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002339 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002340 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002341 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002342 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002343 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002344 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002345 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002346 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002347 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002348 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002349
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002350# For some functions, having a definition is not sufficient, since
2351# we want to take their address.
2352AC_MSG_CHECKING(for chroot)
2353AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2354 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2355 AC_MSG_RESULT(yes),
2356 AC_MSG_RESULT(no)
2357)
2358AC_MSG_CHECKING(for link)
2359AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2360 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2361 AC_MSG_RESULT(yes),
2362 AC_MSG_RESULT(no)
2363)
2364AC_MSG_CHECKING(for symlink)
2365AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2366 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2367 AC_MSG_RESULT(yes),
2368 AC_MSG_RESULT(no)
2369)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002370AC_MSG_CHECKING(for fchdir)
2371AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2372 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2373 AC_MSG_RESULT(yes),
2374 AC_MSG_RESULT(no)
2375)
2376AC_MSG_CHECKING(for fsync)
2377AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002378 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002379 AC_MSG_RESULT(yes),
2380 AC_MSG_RESULT(no)
2381)
2382AC_MSG_CHECKING(for fdatasync)
2383AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2384 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2385 AC_MSG_RESULT(yes),
2386 AC_MSG_RESULT(no)
2387)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002388AC_MSG_CHECKING(for epoll)
2389AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2390 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2391 AC_MSG_RESULT(yes),
2392 AC_MSG_RESULT(no)
2393)
2394AC_MSG_CHECKING(for kqueue)
2395AC_TRY_COMPILE([
2396#include <sys/types.h>
2397#include <sys/event.h>
2398 ], int x=kqueue(),
2399 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2400 AC_MSG_RESULT(yes),
2401 AC_MSG_RESULT(no)
2402)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002403# On some systems (eg. FreeBSD 5), we would find a definition of the
2404# functions ctermid_r, setgroups in the library, but no prototype
2405# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2406# address to avoid compiler warnings and potential miscompilations
2407# because of the missing prototypes.
2408
2409AC_MSG_CHECKING(for ctermid_r)
2410AC_TRY_COMPILE([
2411#include "confdefs.h"
2412#include <stdio.h>
2413], void* p = ctermid_r,
2414 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2415 AC_MSG_RESULT(yes),
2416 AC_MSG_RESULT(no)
2417)
2418
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002419AC_MSG_CHECKING(for flock)
2420AC_TRY_COMPILE([
2421#include "confdefs.h"
2422#include <sys/file.h>
2423], void* p = flock,
2424 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2425 AC_MSG_RESULT(yes),
2426 AC_MSG_RESULT(no)
2427)
2428
2429AC_MSG_CHECKING(for getpagesize)
2430AC_TRY_COMPILE([
2431#include "confdefs.h"
2432#include <unistd.h>
2433], void* p = getpagesize,
2434 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2435 AC_MSG_RESULT(yes),
2436 AC_MSG_RESULT(no)
2437)
2438
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002439dnl check for true
2440AC_CHECK_PROGS(TRUE, true, /bin/true)
2441
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002442dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2443dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002444AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002445 AC_CHECK_LIB(resolv, inet_aton)
2446)
2447
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002448# On Tru64, chflags seems to be present, but calling it will
2449# exit Python
2450AC_MSG_CHECKING(for chflags)
2451AC_TRY_RUN([
2452#include <sys/stat.h>
2453#include <unistd.h>
2454int main(int argc, char*argv[])
2455{
2456 if(chflags(argv[0], 0) != 0)
2457 return 1;
2458 return 0;
2459}
2460],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2461 AC_MSG_RESULT(yes),
2462 AC_MSG_RESULT(no)
2463)
2464
2465AC_MSG_CHECKING(for lchflags)
2466AC_TRY_RUN([
2467#include <sys/stat.h>
2468#include <unistd.h>
2469int main(int argc, char*argv[])
2470{
2471 if(lchflags(argv[0], 0) != 0)
2472 return 1;
2473 return 0;
2474}
2475],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2476 AC_MSG_RESULT(yes),
2477 AC_MSG_RESULT(no)
2478)
2479
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002480dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002481dnl
2482dnl On MacOSX the linker will search for dylibs on the entire linker path
2483dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2484dnl to revert to a more traditional unix behaviour and make it possible to
2485dnl override the system libz with a local static library of libz. Temporarily
2486dnl add that flag to our CFLAGS as well to ensure that we check the version
2487dnl of libz that will be used by setup.py.
2488dnl The -L/usr/local/lib is needed as wel to get the same compilation
2489dnl environment as setup.py (and leaving it out can cause configure to use the
2490dnl wrong version of the library)
2491case $ac_sys_system/$ac_sys_release in
2492Darwin/*)
2493 _CUR_CFLAGS="${CFLAGS}"
2494 _CUR_LDFLAGS="${LDFLAGS}"
2495 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2496 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2497 ;;
2498esac
2499
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002500AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2501
Ronald Oussorenf8752642006-07-06 10:13:35 +00002502case $ac_sys_system/$ac_sys_release in
2503Darwin/*)
2504 CFLAGS="${_CUR_CFLAGS}"
2505 LDFLAGS="${_CUR_LDFLAGS}"
2506 ;;
2507esac
2508
Martin v. Löwise9416172003-05-03 10:12:45 +00002509AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002510AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002511#include "confdefs.h"
2512#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002513], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002514 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2515 AC_MSG_RESULT(yes),
2516 AC_MSG_RESULT(no)
2517)
2518
2519AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002520AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002521#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002522#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002523#include <sys/socket.h>
2524#include <netinet/in.h>
2525#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002526], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002527 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
2531
2532AC_MSG_CHECKING(for inet_pton)
2533AC_TRY_COMPILE([
2534#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002535#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002536#include <sys/socket.h>
2537#include <netinet/in.h>
2538#include <arpa/inet.h>
2539], void* p = inet_pton,
2540 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2541 AC_MSG_RESULT(yes),
2542 AC_MSG_RESULT(no)
2543)
2544
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002545# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002546AC_MSG_CHECKING(for setgroups)
2547AC_TRY_COMPILE([
2548#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002549#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002550#ifdef HAVE_GRP_H
2551#include <grp.h>
2552#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002553],
2554void* p = setgroups,
2555 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2556 AC_MSG_RESULT(yes),
2557 AC_MSG_RESULT(no)
2558)
2559
Fred Drake8cef4cf2000-06-28 16:40:38 +00002560# check for openpty and forkpty
2561
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002562AC_CHECK_FUNCS(openpty,,
2563 AC_CHECK_LIB(util,openpty,
2564 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2565 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2566 )
2567)
2568AC_CHECK_FUNCS(forkpty,,
2569 AC_CHECK_LIB(util,forkpty,
2570 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2571 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2572 )
2573)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002574
Brett Cannonaa5778d2008-03-18 04:09:00 +00002575# Stuff for expat.
2576AC_CHECK_FUNCS(memmove)
2577
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002578# check for long file support functions
2579AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2580
Brett Cannonaa5778d2008-03-18 04:09:00 +00002581AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002582AC_CHECK_FUNCS(getpgrp,
2583 AC_TRY_COMPILE([#include <unistd.h>],
2584 [getpgrp(0);],
2585 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2586 [Define if getpgrp() must be called as getpgrp(0).])
2587 )
2588)
Jack Jansen150753c2003-03-29 22:07:47 +00002589AC_CHECK_FUNCS(setpgrp,
2590 AC_TRY_COMPILE([#include <unistd.h>],
2591 [setpgrp(0,0);],
2592 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2593 [Define if setpgrp() must be called as setpgrp(0, 0).])
2594 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002595)
2596AC_CHECK_FUNCS(gettimeofday,
2597 AC_TRY_COMPILE([#include <sys/time.h>],
2598 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2599 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2600 [Define if gettimeofday() does not have second (timezone) argument
2601 This is the case on Motorola V4 (R40V4.2)])
2602 )
2603)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002604
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002605AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002606AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002607#if defined(MAJOR_IN_MKDEV)
2608#include <sys/mkdev.h>
2609#elif defined(MAJOR_IN_SYSMACROS)
2610#include <sys/sysmacros.h>
2611#else
2612#include <sys/types.h>
2613#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002614],[
2615 makedev(major(0),minor(0));
2616],[
2617 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2618 [Define to 1 if you have the device macros.])
2619 AC_MSG_RESULT(yes)
2620],[
2621 AC_MSG_RESULT(no)
2622])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002623
2624# On OSF/1 V5.1, getaddrinfo is available, but a define
2625# for [no]getaddrinfo in netdb.h.
2626AC_MSG_CHECKING(for getaddrinfo)
2627AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002628#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002629#include <sys/socket.h>
2630#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002631#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002632],[
2633getaddrinfo(NULL, NULL, NULL, NULL);
2634], [
2635AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002636AC_MSG_CHECKING(getaddrinfo bug)
2637AC_TRY_RUN([
2638#include <sys/types.h>
2639#include <netdb.h>
2640#include <string.h>
2641#include <sys/socket.h>
2642#include <netinet/in.h>
2643
2644main()
2645{
2646 int passive, gaierr, inet4 = 0, inet6 = 0;
2647 struct addrinfo hints, *ai, *aitop;
2648 char straddr[INET6_ADDRSTRLEN], strport[16];
2649
2650 for (passive = 0; passive <= 1; passive++) {
2651 memset(&hints, 0, sizeof(hints));
2652 hints.ai_family = AF_UNSPEC;
2653 hints.ai_flags = passive ? AI_PASSIVE : 0;
2654 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002655 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002656 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2657 (void)gai_strerror(gaierr);
2658 goto bad;
2659 }
2660 for (ai = aitop; ai; ai = ai->ai_next) {
2661 if (ai->ai_addr == NULL ||
2662 ai->ai_addrlen == 0 ||
2663 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2664 straddr, sizeof(straddr), strport, sizeof(strport),
2665 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2666 goto bad;
2667 }
2668 switch (ai->ai_family) {
2669 case AF_INET:
2670 if (strcmp(strport, "54321") != 0) {
2671 goto bad;
2672 }
2673 if (passive) {
2674 if (strcmp(straddr, "0.0.0.0") != 0) {
2675 goto bad;
2676 }
2677 } else {
2678 if (strcmp(straddr, "127.0.0.1") != 0) {
2679 goto bad;
2680 }
2681 }
2682 inet4++;
2683 break;
2684 case AF_INET6:
2685 if (strcmp(strport, "54321") != 0) {
2686 goto bad;
2687 }
2688 if (passive) {
2689 if (strcmp(straddr, "::") != 0) {
2690 goto bad;
2691 }
2692 } else {
2693 if (strcmp(straddr, "::1") != 0) {
2694 goto bad;
2695 }
2696 }
2697 inet6++;
2698 break;
2699 case AF_UNSPEC:
2700 goto bad;
2701 break;
2702 default:
2703 /* another family support? */
2704 break;
2705 }
2706 }
2707 }
2708
2709 if (!(inet4 == 0 || inet4 == 2))
2710 goto bad;
2711 if (!(inet6 == 0 || inet6 == 2))
2712 goto bad;
2713
2714 if (aitop)
2715 freeaddrinfo(aitop);
2716 exit(0);
2717
2718 bad:
2719 if (aitop)
2720 freeaddrinfo(aitop);
2721 exit(1);
2722}
2723],
2724AC_MSG_RESULT(good)
2725buggygetaddrinfo=no,
2726AC_MSG_RESULT(buggy)
2727buggygetaddrinfo=yes,
2728AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002729buggygetaddrinfo=yes)], [
2730AC_MSG_RESULT(no)
2731buggygetaddrinfo=yes
2732])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002733
2734if test "$buggygetaddrinfo" = "yes"; then
2735 if test "$ipv6" = "yes"; then
2736 echo 'Fatal: You must get working getaddrinfo() function.'
2737 echo ' or you can specify "--disable-ipv6"'.
2738 exit 1
2739 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002740else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002741 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002742fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002743AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002744
Guido van Rossum627b2d71993-12-24 10:39:16 +00002745# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002746AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002747AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002748AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002749AC_CHECK_MEMBERS([struct stat.st_rdev])
2750AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002751AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002752AC_CHECK_MEMBERS([struct stat.st_gen])
2753AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002754AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002755
2756AC_MSG_CHECKING(for time.h that defines altzone)
2757AC_CACHE_VAL(ac_cv_header_time_altzone,
2758[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2759 ac_cv_header_time_altzone=yes,
2760 ac_cv_header_time_altzone=no)])
2761AC_MSG_RESULT($ac_cv_header_time_altzone)
2762if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002763 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002764fi
2765
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002766was_it_defined=no
2767AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002768AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002769#include <sys/types.h>
2770#include <sys/select.h>
2771#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002772], [;], [
2773 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2774 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2775 (which you can't on SCO ODT 3.0).])
2776 was_it_defined=yes
2777])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002778AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002779
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002780AC_MSG_CHECKING(for addrinfo)
2781AC_CACHE_VAL(ac_cv_struct_addrinfo,
2782AC_TRY_COMPILE([
2783# include <netdb.h>],
2784 [struct addrinfo a],
2785 ac_cv_struct_addrinfo=yes,
2786 ac_cv_struct_addrinfo=no))
2787AC_MSG_RESULT($ac_cv_struct_addrinfo)
2788if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002789 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002790fi
2791
2792AC_MSG_CHECKING(for sockaddr_storage)
2793AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2794AC_TRY_COMPILE([
2795# include <sys/types.h>
2796# include <sys/socket.h>],
2797 [struct sockaddr_storage s],
2798 ac_cv_struct_sockaddr_storage=yes,
2799 ac_cv_struct_sockaddr_storage=no))
2800AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2801if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002802 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002803fi
2804
Guido van Rossum627b2d71993-12-24 10:39:16 +00002805# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002806
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002807AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002808AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002809
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002810works=no
2811AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002812AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2813 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2814)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002815AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002816
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002817works=no
2818AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002819AC_TRY_COMPILE([], [signed char c;], works=yes,
2820 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2821)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002822AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002823
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002824have_prototypes=no
2825AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002826AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2827 AC_DEFINE(HAVE_PROTOTYPES, 1,
2828 [Define if your compiler supports function prototype])
2829 have_prototypes=yes
2830])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002831AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002832
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002833works=no
2834AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002835AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002836#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002837int foo(int x, ...) {
2838 va_list va;
2839 va_start(va, x);
2840 va_arg(va, int);
2841 va_arg(va, char *);
2842 va_arg(va, double);
2843 return 0;
2844}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002845], [return foo(10, "", 3.14);], [
2846 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2847 [Define if your compiler supports variable length function prototypes
2848 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2849 works=yes
2850])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002851AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002852
Dave Cole331708b2004-08-09 04:51:41 +00002853# check for socketpair
2854AC_MSG_CHECKING(for socketpair)
2855AC_TRY_COMPILE([
2856#include <sys/types.h>
2857#include <sys/socket.h>
2858], void *x=socketpair,
2859 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2860 AC_MSG_RESULT(yes),
2861 AC_MSG_RESULT(no)
2862)
2863
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002864# check if sockaddr has sa_len member
2865AC_MSG_CHECKING(if sockaddr has sa_len member)
2866AC_TRY_COMPILE([#include <sys/types.h>
2867#include <sys/socket.h>],
2868[struct sockaddr x;
2869x.sa_len = 0;],
2870 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002871 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002872 AC_MSG_RESULT(no))
2873
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002874va_list_is_array=no
2875AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002876AC_TRY_COMPILE([
2877#ifdef HAVE_STDARG_PROTOTYPES
2878#include <stdarg.h>
2879#else
2880#include <varargs.h>
2881#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002882], [va_list list1, list2; list1 = list2;], , [
2883 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2884 va_list_is_array=yes
2885])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002886AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002887
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002888# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002889AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2890 [Define this if you have some version of gethostbyname_r()])
2891
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002892AC_CHECK_FUNC(gethostbyname_r, [
2893 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2894 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2895 OLD_CFLAGS=$CFLAGS
2896 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2897 AC_TRY_COMPILE([
2898# include <netdb.h>
2899 ], [
2900 char *name;
2901 struct hostent *he, *res;
2902 char buffer[2048];
2903 int buflen = 2048;
2904 int h_errnop;
2905
2906 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2907 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002908 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002909 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2910 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002911 AC_MSG_RESULT(yes)
2912 ], [
2913 AC_MSG_RESULT(no)
2914 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2915 AC_TRY_COMPILE([
2916# include <netdb.h>
2917 ], [
2918 char *name;
2919 struct hostent *he;
2920 char buffer[2048];
2921 int buflen = 2048;
2922 int h_errnop;
2923
2924 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2925 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002926 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002927 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2928 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002929 AC_MSG_RESULT(yes)
2930 ], [
2931 AC_MSG_RESULT(no)
2932 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2933 AC_TRY_COMPILE([
2934# include <netdb.h>
2935 ], [
2936 char *name;
2937 struct hostent *he;
2938 struct hostent_data data;
2939
2940 (void) gethostbyname_r(name, he, &data);
2941 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002942 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002943 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2944 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002945 AC_MSG_RESULT(yes)
2946 ], [
2947 AC_MSG_RESULT(no)
2948 ])
2949 ])
2950 ])
2951 CFLAGS=$OLD_CFLAGS
2952], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002953 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002954])
2955AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2956AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2957AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002958AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002959AC_SUBST(HAVE_GETHOSTBYNAME)
2960
Guido van Rossum627b2d71993-12-24 10:39:16 +00002961# checks for system services
2962# (none yet)
2963
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002964# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002965AC_CHECK_FUNC(__fpu_control,
2966 [],
2967 [AC_CHECK_LIB(ieee, __fpu_control)
2968])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002969
Guido van Rossum93274221997-05-09 02:42:00 +00002970# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002971AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002972AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002973 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2974[
Guido van Rossum93274221997-05-09 02:42:00 +00002975if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002976then
2977 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2978 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2979 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002980else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002981fi],
2982[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002983
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002984# check for --with-libm=...
2985AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002986case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002987Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002988BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002989*) LIBM=-lm
2990esac
Guido van Rossum93274221997-05-09 02:42:00 +00002991AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002992AC_ARG_WITH(libm,
2993 AC_HELP_STRING(--with-libm=STRING, math library),
2994[
Guido van Rossum93274221997-05-09 02:42:00 +00002995if test "$withval" = no
2996then LIBM=
2997 AC_MSG_RESULT(force LIBM empty)
2998elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002999then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003000 AC_MSG_RESULT(set LIBM="$withval")
3001else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003002fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003003[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003004
3005# check for --with-libc=...
3006AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003007AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003008AC_ARG_WITH(libc,
3009 AC_HELP_STRING(--with-libc=STRING, C library),
3010[
Guido van Rossum93274221997-05-09 02:42:00 +00003011if test "$withval" = no
3012then LIBC=
3013 AC_MSG_RESULT(force LIBC empty)
3014elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003015then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003016 AC_MSG_RESULT(set LIBC="$withval")
3017else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003018fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003019[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003020
Christian Heimes0a8143f2007-12-18 23:22:54 +00003021# ************************************
3022# * Check for mathematical functions *
3023# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003024
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003025LIBS_SAVE=$LIBS
3026LIBS="$LIBS $LIBM"
3027
Mark Dickinson265d7382008-04-21 22:32:24 +00003028# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3029# -0. on some architectures.
3030AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3031AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3032AC_TRY_RUN([
3033#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003034#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003035int main() {
3036 /* return 0 if either negative zeros don't exist
3037 on this platform or if negative zeros exist
3038 and tanh(-0.) == -0. */
3039 if (atan2(0., -1.) == atan2(-0., -1.) ||
3040 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3041 else exit(1);
3042}
3043],
3044ac_cv_tanh_preserves_zero_sign=yes,
3045ac_cv_tanh_preserves_zero_sign=no,
3046ac_cv_tanh_preserves_zero_sign=no)])
3047AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3048if test "$ac_cv_tanh_preserves_zero_sign" = yes
3049then
3050 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3051 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3052fi
3053
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003054AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003055
Christian Heimes48723512008-01-20 14:28:28 +00003056AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003057
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003058LIBS=$LIBS_SAVE
3059
Guido van Rossumef2255b2000-03-10 22:30:29 +00003060# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003061AC_CHECK_HEADER(wchar.h, [
3062 AC_DEFINE(HAVE_WCHAR_H, 1,
3063 [Define if the compiler provides a wchar.h header file.])
3064 wchar_h="yes"
3065],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003066wchar_h="no"
3067)
3068
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003069# determine wchar_t size
3070if test "$wchar_h" = yes
3071then
Guido van Rossum67b26592001-10-20 14:21:45 +00003072 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003073fi
3074
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003075AC_MSG_CHECKING(for UCS-4 tcl)
3076have_ucs4_tcl=no
3077AC_TRY_COMPILE([
3078#include <tcl.h>
3079#if TCL_UTF_MAX != 6
3080# error "NOT UCS4_TCL"
3081#endif], [], [
3082 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3083 have_ucs4_tcl=yes
3084])
3085AC_MSG_RESULT($have_ucs4_tcl)
3086
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003087# check whether wchar_t is signed or not
3088if test "$wchar_h" = yes
3089then
3090 # check whether wchar_t is signed or not
3091 AC_MSG_CHECKING(whether wchar_t is signed)
3092 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3093 AC_TRY_RUN([
3094 #include <wchar.h>
3095 int main()
3096 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003097 /* Success: exit code 0 */
3098 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003099 }
3100 ],
3101 ac_cv_wchar_t_signed=yes,
3102 ac_cv_wchar_t_signed=no,
3103 ac_cv_wchar_t_signed=yes)])
3104 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3105fi
3106
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003107AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003108dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003109AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003110 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3111 [],
3112 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003113
3114if test $enable_unicode = yes
3115then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003116 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003117 case "$have_ucs4_tcl" in
3118 yes) enable_unicode="ucs4"
3119 ;;
3120 *) enable_unicode="ucs2"
3121 ;;
3122 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003123fi
3124
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003125AH_TEMPLATE(Py_UNICODE_SIZE,
3126 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003127case "$enable_unicode" in
3128ucs2) unicode_size="2"
3129 AC_DEFINE(Py_UNICODE_SIZE,2)
3130 ;;
3131ucs4) unicode_size="4"
3132 AC_DEFINE(Py_UNICODE_SIZE,4)
3133 ;;
3134esac
3135
Martin v. Löwis11437992002-04-12 09:54:03 +00003136AH_TEMPLATE(PY_UNICODE_TYPE,
3137 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003138
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003139AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003140if test "$enable_unicode" = "no"
3141then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003142 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003143 AC_MSG_RESULT(not used)
3144else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003145 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003146 AC_DEFINE(Py_USING_UNICODE, 1,
3147 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003148
3149 # wchar_t is only usable if it maps to an unsigned type
3150 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003151 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003152 then
3153 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003154 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3155 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003156 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003157 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003158 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3159 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3160 then
3161 PY_UNICODE_TYPE="unsigned short"
3162 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3163 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3164 then
3165 PY_UNICODE_TYPE="unsigned long"
3166 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3167 else
3168 PY_UNICODE_TYPE="no type found"
3169 fi
3170 AC_MSG_RESULT($PY_UNICODE_TYPE)
3171fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003172
3173# check for endianness
3174AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003175AH_VERBATIM([WORDS_BIGENDIAN],
3176[
3177 /* Define to 1 if your processor stores words with the most significant byte
3178 first (like Motorola and SPARC, unlike Intel and VAX).
3179
3180 The block below does compile-time checking for endianness on platforms
3181 that use GCC and therefore allows compiling fat binaries on OSX by using
3182 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3183 such that the configure-result is used on systems that don't use GCC.
3184 */
3185#ifdef __BIG_ENDIAN__
3186#define WORDS_BIGENDIAN 1
3187#else
3188#ifndef __LITTLE_ENDIAN__
3189#undef WORDS_BIGENDIAN
3190#endif
3191#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003192
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003193# Check whether right shifting a negative integer extends the sign bit
3194# or fills with zeros (like the Cray J90, according to Tim Peters).
3195AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003196AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003197AC_TRY_RUN([
3198int main()
3199{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003200 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003201}
Guido van Rossum3065c942001-09-17 04:03:14 +00003202],
3203ac_cv_rshift_extends_sign=yes,
3204ac_cv_rshift_extends_sign=no,
3205ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003206AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3207if test "$ac_cv_rshift_extends_sign" = no
3208then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003209 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3210 [Define if i>>j for signed int i does not extend the sign bit
3211 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003212fi
3213
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003214# check for getc_unlocked and related locking functions
3215AC_MSG_CHECKING(for getc_unlocked() and friends)
3216AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3217AC_TRY_LINK([#include <stdio.h>],[
3218 FILE *f = fopen("/dev/null", "r");
3219 flockfile(f);
3220 getc_unlocked(f);
3221 funlockfile(f);
3222], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3223AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3224if test "$ac_cv_have_getc_unlocked" = yes
3225then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003226 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3227 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003228fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003229
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003230# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003231# save the value of LIBS so we don't actually link Python with readline
3232LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003233AC_CHECK_LIB(readline, readline)
3234if test "$ac_cv_have_readline_readline" = no
3235then
3236 AC_CHECK_LIB(termcap, readline)
3237fi
3238
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003239# check for readline 2.1
3240AC_CHECK_LIB(readline, rl_callback_handler_install,
3241 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003242 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003243
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003244# check for readline 2.2
3245AC_TRY_CPP([#include <readline/readline.h>],
3246have_readline=yes, have_readline=no)
3247if test $have_readline = yes
3248then
3249 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3250 [readline/readline.h],
3251 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3252 [Define if you have readline 2.2]), )
3253fi
3254
Martin v. Löwis0daad592001-09-30 21:09:59 +00003255# check for readline 4.0
3256AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003257 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003258 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003259
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003260# also in 4.0
3261AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3262 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3263 [Define if you have readline 4.0]), , )
3264
Guido van Rossum353ae582001-07-10 16:45:32 +00003265# check for readline 4.2
3266AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003267 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003268 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003269
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003270# also in readline 4.2
3271AC_TRY_CPP([#include <readline/readline.h>],
3272have_readline=yes, have_readline=no)
3273if test $have_readline = yes
3274then
3275 AC_EGREP_HEADER([extern int rl_catch_signals;],
3276 [readline/readline.h],
3277 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3278 [Define if you can turn off readline's signal handling.]), )
3279fi
3280
Martin v. Löwis82bca632006-02-10 20:49:30 +00003281# End of readline checks: restore LIBS
3282LIBS=$LIBS_no_readline
3283
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003284AC_MSG_CHECKING(for broken nice())
3285AC_CACHE_VAL(ac_cv_broken_nice, [
3286AC_TRY_RUN([
3287int main()
3288{
3289 int val1 = nice(1);
3290 if (val1 != -1 && val1 == nice(2))
3291 exit(0);
3292 exit(1);
3293}
Guido van Rossum3065c942001-09-17 04:03:14 +00003294],
3295ac_cv_broken_nice=yes,
3296ac_cv_broken_nice=no,
3297ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003298AC_MSG_RESULT($ac_cv_broken_nice)
3299if test "$ac_cv_broken_nice" = yes
3300then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003301 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3302 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003303fi
3304
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003305AC_MSG_CHECKING(for broken poll())
3306AC_TRY_RUN([
3307#include <poll.h>
3308
3309int main (void)
3310 {
3311 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3312
3313 close (42);
3314
3315 int poll_test = poll (&poll_struct, 1, 0);
3316
3317 if (poll_test < 0)
3318 {
3319 exit(0);
3320 }
3321 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3322 {
3323 exit(0);
3324 }
3325 else
3326 {
3327 exit(1);
3328 }
3329 }
3330],
3331ac_cv_broken_poll=yes,
3332ac_cv_broken_poll=no,
3333ac_cv_broken_poll=no)
3334AC_MSG_RESULT($ac_cv_broken_poll)
3335if test "$ac_cv_broken_poll" = yes
3336then
3337 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3338 [Define if poll() sets errno on invalid file descriptors.])
3339fi
3340
Brett Cannon43802422005-02-10 20:48:03 +00003341# Before we can test tzset, we need to check if struct tm has a tm_zone
3342# (which is not required by ISO C or UNIX spec) and/or if we support
3343# tzname[]
3344AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003345
Brett Cannon43802422005-02-10 20:48:03 +00003346# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003347AC_MSG_CHECKING(for working tzset())
3348AC_CACHE_VAL(ac_cv_working_tzset, [
3349AC_TRY_RUN([
3350#include <stdlib.h>
3351#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003352#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003353
3354#if HAVE_TZNAME
3355extern char *tzname[];
3356#endif
3357
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003358int main()
3359{
Brett Cannon18367812003-09-19 00:59:16 +00003360 /* Note that we need to ensure that not only does tzset(3)
3361 do 'something' with localtime, but it works as documented
3362 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003363 This includes making sure that tzname is set properly if
3364 tm->tm_zone does not exist since it is the alternative way
3365 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003366
3367 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003368 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003369 */
3370
Brett Cannon43802422005-02-10 20:48:03 +00003371 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003372 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3373
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003374 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003375 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003376 if (localtime(&groundhogday)->tm_hour != 0)
3377 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003378#if HAVE_TZNAME
3379 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3380 if (strcmp(tzname[0], "UTC") ||
3381 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3382 exit(1);
3383#endif
Brett Cannon18367812003-09-19 00:59:16 +00003384
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003385 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003386 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003387 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003388 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003389#if HAVE_TZNAME
3390 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3391 exit(1);
3392#endif
Brett Cannon18367812003-09-19 00:59:16 +00003393
3394 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3395 tzset();
3396 if (localtime(&groundhogday)->tm_hour != 11)
3397 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003398#if HAVE_TZNAME
3399 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3400 exit(1);
3401#endif
3402
3403#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003404 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3405 exit(1);
3406 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3407 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003408#endif
Brett Cannon18367812003-09-19 00:59:16 +00003409
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003410 exit(0);
3411}
3412],
3413ac_cv_working_tzset=yes,
3414ac_cv_working_tzset=no,
3415ac_cv_working_tzset=no)])
3416AC_MSG_RESULT($ac_cv_working_tzset)
3417if test "$ac_cv_working_tzset" = yes
3418then
3419 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3420 [Define if tzset() actually switches the local timezone in a meaningful way.])
3421fi
3422
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003423# Look for subsecond timestamps in struct stat
3424AC_MSG_CHECKING(for tv_nsec in struct stat)
3425AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3426AC_TRY_COMPILE([#include <sys/stat.h>], [
3427struct stat st;
3428st.st_mtim.tv_nsec = 1;
3429],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003430ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003431ac_cv_stat_tv_nsec=no,
3432ac_cv_stat_tv_nsec=no))
3433AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3434if test "$ac_cv_stat_tv_nsec" = yes
3435then
3436 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3437 [Define if you have struct stat.st_mtim.tv_nsec])
3438fi
3439
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003440# Look for BSD style subsecond timestamps in struct stat
3441AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3442AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3443AC_TRY_COMPILE([#include <sys/stat.h>], [
3444struct stat st;
3445st.st_mtimespec.tv_nsec = 1;
3446],
3447ac_cv_stat_tv_nsec2=yes,
3448ac_cv_stat_tv_nsec2=no,
3449ac_cv_stat_tv_nsec2=no))
3450AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3451if test "$ac_cv_stat_tv_nsec2" = yes
3452then
3453 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3454 [Define if you have struct stat.st_mtimensec])
3455fi
3456
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003457# On HP/UX 11.0, mvwdelch is a block with a return statement
3458AC_MSG_CHECKING(whether mvwdelch is an expression)
3459AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3460AC_TRY_COMPILE([#include <curses.h>], [
3461 int rtn;
3462 rtn = mvwdelch(0,0,0);
3463], ac_cv_mvwdelch_is_expression=yes,
3464 ac_cv_mvwdelch_is_expression=no,
3465 ac_cv_mvwdelch_is_expression=yes))
3466AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3467
3468if test "$ac_cv_mvwdelch_is_expression" = yes
3469then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003470 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3471 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003472fi
3473
3474AC_MSG_CHECKING(whether WINDOW has _flags)
3475AC_CACHE_VAL(ac_cv_window_has_flags,
3476AC_TRY_COMPILE([#include <curses.h>], [
3477 WINDOW *w;
3478 w->_flags = 0;
3479], ac_cv_window_has_flags=yes,
3480 ac_cv_window_has_flags=no,
3481 ac_cv_window_has_flags=no))
3482AC_MSG_RESULT($ac_cv_window_has_flags)
3483
3484
3485if test "$ac_cv_window_has_flags" = yes
3486then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003487 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3488 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003489fi
3490
Walter Dörwald4994d952006-06-19 08:07:50 +00003491AC_MSG_CHECKING(for is_term_resized)
3492AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3493 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3494 AC_MSG_RESULT(yes),
3495 AC_MSG_RESULT(no)
3496)
3497
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003498AC_MSG_CHECKING(for resize_term)
3499AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3500 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003501 AC_MSG_RESULT(yes),
3502 AC_MSG_RESULT(no)
3503)
3504
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003505AC_MSG_CHECKING(for resizeterm)
3506AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3507 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003508 AC_MSG_RESULT(yes),
3509 AC_MSG_RESULT(no)
3510)
3511
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003512AC_MSG_CHECKING(for /dev/ptmx)
3513
3514if test -r /dev/ptmx
3515then
3516 AC_MSG_RESULT(yes)
3517 AC_DEFINE(HAVE_DEV_PTMX, 1,
3518 [Define if we have /dev/ptmx.])
3519else
3520 AC_MSG_RESULT(no)
3521fi
3522
3523AC_MSG_CHECKING(for /dev/ptc)
3524
3525if test -r /dev/ptc
3526then
3527 AC_MSG_RESULT(yes)
3528 AC_DEFINE(HAVE_DEV_PTC, 1,
3529 [Define if we have /dev/ptc.])
3530else
3531 AC_MSG_RESULT(no)
3532fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003533
Brett Cannon09d12362006-05-11 05:11:33 +00003534AC_MSG_CHECKING(for %zd printf() format support)
3535AC_TRY_RUN([#include <stdio.h>
3536#include <stddef.h>
3537#include <string.h>
3538
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003539#ifdef HAVE_SYS_TYPES_H
3540#include <sys/types.h>
3541#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003542
3543#ifdef HAVE_SSIZE_T
3544typedef ssize_t Py_ssize_t;
3545#elif SIZEOF_VOID_P == SIZEOF_LONG
3546typedef long Py_ssize_t;
3547#else
3548typedef int Py_ssize_t;
3549#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003550
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003551int main()
3552{
3553 char buffer[256];
3554
Brett Cannon09d12362006-05-11 05:11:33 +00003555 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3556 return 1;
3557
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003558 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003559 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003560
3561 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3562 return 1;
3563
3564 if (strcmp(buffer, "-123"))
3565 return 1;
3566
Brett Cannon09d12362006-05-11 05:11:33 +00003567 return 0;
3568}],
3569[AC_MSG_RESULT(yes)
3570 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3571 AC_MSG_RESULT(no))
3572
Martin v. Löwis01c04012002-11-11 14:58:44 +00003573AC_CHECK_TYPE(socklen_t,,
3574 AC_DEFINE(socklen_t,int,
3575 Define to `int' if <sys/socket.h> does not define.),[
3576#ifdef HAVE_SYS_TYPES_H
3577#include <sys/types.h>
3578#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003579#ifdef HAVE_SYS_SOCKET_H
3580#include <sys/socket.h>
3581#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003582])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003583
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003584AC_SUBST(THREADHEADERS)
3585
3586for h in `(cd $srcdir;echo Python/thread_*.h)`
3587do
3588 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3589done
3590
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003591AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003592SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003593AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003594for dir in $SRCDIRS; do
3595 if test ! -d $dir; then
3596 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003597 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003598done
3599AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003600
Guido van Rossum627b2d71993-12-24 10:39:16 +00003601# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003602AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3603AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003604
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003605echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003606if test ! -f Modules/Setup
3607then
3608 cp $srcdir/Modules/Setup.dist Modules/Setup
3609fi
3610
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003611echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003612if test ! -f Modules/Setup.local
3613then
3614 echo "# Edit this file for local setup changes" >Modules/Setup.local
3615fi
3616
3617echo "creating Makefile"
3618$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3619 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003620 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003621
3622case $ac_sys_system in
3623BeOS)
3624 AC_MSG_WARN([
3625
3626 Support for BeOS is deprecated as of Python 2.6.
3627 See PEP 11 for the gory details.
3628 ])
3629 ;;
3630*) ;;
3631esac
3632
Neil Schemenauer66252162001-02-19 04:47:42 +00003633mv config.c Modules