blob: 9aad09510a477e82e883a5c7a15da6cfbf95d3f2 [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öwis8c255e42008-05-23 15:06:50 +0000265 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
266 # defining NI_NUMERICHOST.
267 QNX/6.3.2)
268 define_xopen_source=no
269 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000270
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000271esac
272
273if test $define_xopen_source = yes
274then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000275 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
276 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000277 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
278 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000279 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000280 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000281 AC_DEFINE(_XOPEN_SOURCE, 500,
282 Define to the level of X/Open that your system supports)
283 ;;
284 *)
285 AC_DEFINE(_XOPEN_SOURCE, 600,
286 Define to the level of X/Open that your system supports)
287 ;;
288 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000289
290 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
291 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
292 # several APIs are not declared. Since this is also needed in some
293 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000294 # except for Solaris 10, where it must not be defined,
295 # as it implies XPG4.2
296 case $ac_sys_system/$ac_sys_release in
297 SunOS/5.10)
298 ;;
299 *)
300 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
301 Define to activate Unix95-and-earlier features)
302 ;;
303 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000304
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000305 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
306
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000307fi
308
Guido van Rossum91922671997-10-09 20:24:13 +0000309#
310# SGI compilers allow the specification of the both the ABI and the
311# ISA on the command line. Depending on the values of these switches,
312# different and often incompatable code will be generated.
313#
314# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
315# thus supply support for various ABI/ISA combinations. The MACHDEP
316# variable is also adjusted.
317#
318AC_SUBST(SGI_ABI)
319if test ! -z "$SGI_ABI"
320then
321 CC="cc $SGI_ABI"
322 LDFLAGS="$SGI_ABI $LDFLAGS"
323 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
324fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000325AC_MSG_RESULT($MACHDEP)
326
Jack Jansen83f898c2002-12-30 22:23:40 +0000327# And add extra plat-mac for darwin
328AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000329AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000330AC_MSG_CHECKING(EXTRAPLATDIR)
331if test -z "$EXTRAPLATDIR"
332then
333 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000334 darwin)
335 EXTRAPLATDIR="\$(PLATMACDIRS)"
336 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
337 ;;
338 *)
339 EXTRAPLATDIR=""
340 EXTRAMACHDEPPATH=""
341 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000342 esac
343fi
344AC_MSG_RESULT($EXTRAPLATDIR)
345
Jack Jansen6b08a402004-06-03 12:41:45 +0000346# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
347# it may influence the way we can build extensions, so distutils
348# needs to check it
349AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000350AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000351CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000352EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000353
Mark Dickinson65134662008-04-25 16:11:04 +0000354AC_MSG_CHECKING(machine type as reported by uname -m)
355ac_sys_machine=`uname -m`
356AC_MSG_RESULT($ac_sys_machine)
357
Guido van Rossum627b2d71993-12-24 10:39:16 +0000358# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000359
360# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
361# for debug/optimization stuff. BASECFLAGS is for flags that are required
362# just to get things to compile and link. Users are free to override OPT
363# when running configure or make. The build should not break if they do.
364# BASECFLAGS should generally not be messed with, however.
365
366# XXX shouldn't some/most/all of this code be merged with the stuff later
367# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000368AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000369AC_ARG_WITH(gcc,
370 AC_HELP_STRING(--without-gcc,never use gcc),
371[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000372 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000373 no) CC=cc
374 without_gcc=yes;;
375 yes) CC=gcc
376 without_gcc=no;;
377 *) CC=$withval
378 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000379 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000380 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000381 AIX*) CC=cc_r
382 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000383 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000384 case $BE_HOST_CPU in
385 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000386 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000387 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000388 BASECFLAGS="$BASECFLAGS -export pragma"
389 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000390 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000391 ;;
392 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000393 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000394 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000395 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000396 ;;
397 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000398 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000399 ;;
400 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000401 AR="\$(srcdir)/Modules/ar_beos"
402 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000403 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000404 Monterey*)
405 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000406 without_gcc=;;
407 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000408 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000409AC_MSG_RESULT($without_gcc)
410
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000411# If the user switches compilers, we can't believe the cache
412if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
413then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000414 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
415(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000416fi
417
Guido van Rossum627b2d71993-12-24 10:39:16 +0000418AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000419
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000420AC_SUBST(CXX)
421AC_SUBST(MAINCC)
422AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
423AC_ARG_WITH(cxx_main,
424 AC_HELP_STRING([--with-cxx-main=<compiler>],
425 [compile main() and link python executable with C++ compiler]),
426[
427
428 case $withval in
429 no) with_cxx_main=no
430 MAINCC='$(CC)';;
431 yes) with_cxx_main=yes
432 MAINCC='$(CXX)';;
433 *) with_cxx_main=yes
434 MAINCC=$withval
435 if test -z "$CXX"
436 then
437 CXX=$withval
438 fi;;
439 esac], [
440 with_cxx_main=no
441 MAINCC='$(CC)'
442])
443AC_MSG_RESULT($with_cxx_main)
444
445preset_cxx="$CXX"
446if test -z "$CXX"
447then
448 case "$CC" in
449 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
450 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
451 esac
452 if test "$CXX" = "notfound"
453 then
454 CXX=""
455 fi
456fi
457if test -z "$CXX"
458then
459 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
460 if test "$CXX" = "notfound"
461 then
462 CXX=""
463 fi
464fi
465if test "$preset_cxx" != "$CXX"
466then
467 AC_MSG_WARN([
468
469 By default, distutils will build C++ extension modules with "$CXX".
470 If this is not intended, then set CXX on the configure command line.
471 ])
472fi
473
474
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000475# checks for UNIX variants that set C preprocessor variables
476AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000477
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000478# Check for unsupported systems
479case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000480atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000481 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
482 echo See README for details.
483 exit 1;;
484esac
485
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000486AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000487AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000488AC_ARG_WITH(suffix,
489 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
490[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000491 case $withval in
492 no) EXEEXT=;;
493 yes) EXEEXT=.exe;;
494 *) EXEEXT=$withval;;
495 esac])
496AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000497
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000498# Test whether we're running on a non-case-sensitive system, in which
499# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000500AC_SUBST(BUILDEXEEXT)
501AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000502if test ! -d CaseSensitiveTestDir; then
503mkdir CaseSensitiveTestDir
504fi
505
506if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000507then
Jack Jansen1999ef42001-12-06 21:47:20 +0000508 AC_MSG_RESULT(yes)
509 BUILDEXEEXT=.exe
510else
511 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000512 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000513fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000514rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000515
Guido van Rossumdd997f71998-10-07 19:58:26 +0000516case $MACHDEP in
517bsdos*)
518 case $CC in
519 gcc) CC="$CC -D_HAVE_BSDI";;
520 esac;;
521esac
522
Guido van Rossum84561611997-08-21 00:08:11 +0000523case $ac_sys_system in
524hp*|HP*)
525 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000526 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000527 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000528Monterey*)
529 case $CC in
530 cc) CC="$CC -Wl,-Bexport";;
531 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000532SunOS*)
533 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000534 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000535 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000536esac
537
Martin v. Löwise8964d42001-03-06 12:09:07 +0000538
Neil Schemenauer61c51152001-01-26 16:18:16 +0000539AC_SUBST(LIBRARY)
540AC_MSG_CHECKING(LIBRARY)
541if test -z "$LIBRARY"
542then
543 LIBRARY='libpython$(VERSION).a'
544fi
545AC_MSG_RESULT($LIBRARY)
546
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000547# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000548# name of the library into which to insert object files). BLDLIBRARY is also
549# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
550# is blank as the main program is not linked directly against LDLIBRARY.
551# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
552# systems without shared libraries, LDLIBRARY is the same as LIBRARY
553# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
554# DLLLIBRARY is the shared (i.e., DLL) library.
555#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000556# RUNSHARED is used to run shared python without installed libraries
557#
558# INSTSONAME is the name of the shared library that will be use to install
559# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000560AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000561AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000562AC_SUBST(BLDLIBRARY)
563AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000564AC_SUBST(INSTSONAME)
565AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000566LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000567BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000568INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000569DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000570LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000571RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000572
Guido van Rossumfb842551997-08-06 23:42:07 +0000573# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000574# If CXX is set, and if it is needed to link a main function that was
575# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
576# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000577# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000578# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000579AC_SUBST(LINKCC)
580AC_MSG_CHECKING(LINKCC)
581if test -z "$LINKCC"
582then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000583 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000584 case $ac_sys_system in
585 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000586 exp_extra="\"\""
587 if test $ac_sys_release -ge 5 -o \
588 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
589 exp_extra="."
590 fi
591 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000592 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000593 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000594 QNX*)
595 # qcc must be used because the other compilers do not
596 # support -N.
597 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000598 esac
599fi
600AC_MSG_RESULT($LINKCC)
601
Martin v. Löwis1142de32002-03-29 16:28:31 +0000602AC_MSG_CHECKING(for --enable-shared)
603AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000604 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000605
Martin v. Löwis1142de32002-03-29 16:28:31 +0000606if test -z "$enable_shared"
607then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000608 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000609 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000610 enable_shared="yes";;
611 *)
612 enable_shared="no";;
613 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000614fi
615AC_MSG_RESULT($enable_shared)
616
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000617AC_MSG_CHECKING(for --enable-profiling)
618AC_ARG_ENABLE(profiling,
619 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
620[ac_save_cc="$CC"
621 CC="$CC -pg"
622 AC_TRY_RUN([int main() { return 0; }],
623 ac_enable_profiling="yes",
624 ac_enable_profiling="no",
625 ac_enable_profiling="no")
626 CC="$ac_save_cc"])
627AC_MSG_RESULT($ac_enable_profiling)
628
629case "$ac_enable_profiling" in
630 "yes")
631 BASECFLAGS="-pg $BASECFLAGS"
632 LDFLAGS="-pg $LDFLAGS"
633 ;;
634esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635
636AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000637
Guido van Rossumb8552162001-09-05 14:58:11 +0000638# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
639# library that we build, but we do not want to link against it (we
640# will find it with a -framework option). For this reason there is an
641# extra variable BLDLIBRARY against which Python and the extension
642# modules are linked, BLDLIBRARY. This is normally the same as
643# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000644if test "$enable_framework"
645then
646 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000647 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000648 BLDLIBRARY=''
649else
650 BLDLIBRARY='$(LDLIBRARY)'
651fi
652
Martin v. Löwis1142de32002-03-29 16:28:31 +0000653# Other platforms follow
654if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000655 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000656 case $ac_sys_system in
657 BeOS*)
658 LDLIBRARY='libpython$(VERSION).so'
659 ;;
660 CYGWIN*)
661 LDLIBRARY='libpython$(VERSION).dll.a'
662 DLLLIBRARY='libpython$(VERSION).dll'
663 ;;
664 SunOS*)
665 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000666 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000667 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000668 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000669 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000670 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000671 LDLIBRARY='libpython$(VERSION).so'
672 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000673 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000674 case $ac_sys_system in
675 FreeBSD*)
676 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
677 ;;
678 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000679 INSTSONAME="$LDLIBRARY".$SOVERSION
680 ;;
681 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000682 case `uname -m` in
683 ia64)
684 LDLIBRARY='libpython$(VERSION).so'
685 ;;
686 *)
687 LDLIBRARY='libpython$(VERSION).sl'
688 ;;
689 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000691 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000692 ;;
693 OSF*)
694 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000695 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000696 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000698 atheos*)
699 LDLIBRARY='libpython$(VERSION).so'
700 BLDLIBRARY='-L. -lpython$(VERSION)'
701 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
702 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000703 esac
Jason Tishler30765592003-09-04 11:04:06 +0000704else # shared is disabled
705 case $ac_sys_system in
706 CYGWIN*)
707 BLDLIBRARY='$(LIBRARY)'
708 LDLIBRARY='libpython$(VERSION).dll.a'
709 ;;
710 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000711fi
712
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000713AC_MSG_RESULT($LDLIBRARY)
714
Guido van Rossum627b2d71993-12-24 10:39:16 +0000715AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000716AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000717AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000718
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000719AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000720AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000721if test $SVNVERSION = found
722then
723 SVNVERSION="svnversion \$(srcdir)"
724else
725 SVNVERSION="echo exported"
726fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000727
Neil Schemenauera42c8272001-03-31 00:01:55 +0000728case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000729bsdos*|hp*|HP*)
730 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000731 if test -z "$INSTALL"
732 then
733 INSTALL="${srcdir}/install-sh -c"
734 fi
735esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000736AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000737
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000738# Not every filesystem supports hard links
739AC_SUBST(LN)
740if test -z "$LN" ; then
741 case $ac_sys_system in
742 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000743 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000744 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000745 *) LN=ln;;
746 esac
747fi
748
Fred Drake9f715822001-07-11 06:27:00 +0000749# Check for --with-pydebug
750AC_MSG_CHECKING(for --with-pydebug)
751AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000752 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
753[
Fred Drake9f715822001-07-11 06:27:00 +0000754if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000755then
756 AC_DEFINE(Py_DEBUG, 1,
757 [Define if you want to build an interpreter with many run-time checks.])
758 AC_MSG_RESULT(yes);
759 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000760else AC_MSG_RESULT(no); Py_DEBUG='false'
761fi],
762[AC_MSG_RESULT(no)])
763
Skip Montanarodecc6a42003-01-01 20:07:49 +0000764# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
765# merged with this chunk of code?
766
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000767# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768# ------------------------
769# (The following bit of code is complicated enough - please keep things
770# indented properly. Just pretend you're editing Python code. ;-)
771
772# There are two parallel sets of case statements below, one that checks to
773# see if OPT was set and one that does BASECFLAGS setting based upon
774# compiler and platform. BASECFLAGS tweaks need to be made even if the
775# user set OPT.
776
777# tweak OPT based on compiler and platform, only if the user didn't set
778# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000779AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000780if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000781then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000782 case $GCC in
783 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000784 if test "$CC" != 'g++' ; then
785 STRICT_PROTO="-Wstrict-prototypes"
786 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000787 # For gcc 4.x we need to use -fwrapv so lets check if its supported
788 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
789 WRAP="-fwrapv"
790 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000791 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000792 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000793 if test "$Py_DEBUG" = 'true' ; then
794 # Optimization messes up debuggers, so turn it off for
795 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000796 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000797 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000798 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000799 fi
800 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000801 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000802 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000803 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000804 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000805 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000806 SCO_SV*) OPT="$OPT -m486 -DSCO5"
807 ;;
808 esac
Fred Drake9f715822001-07-11 06:27:00 +0000809 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000810
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000811 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812 OPT="-O"
813 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000814 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000815
816 # The current (beta) Monterey compiler dies with optimizations
817 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000818 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000819 Monterey*)
820 OPT=""
821 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000822 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823
Guido van Rossum4e8af441994-08-19 15:33:54 +0000824fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000825
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826AC_SUBST(BASECFLAGS)
827# tweak BASECFLAGS based on compiler and platform
828case $GCC in
829yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000830 # Python violates C99 rules, by casting between incompatible
831 # pointer types. GCC may generate bad code as a result of that,
832 # so use -fno-strict-aliasing if supported.
833 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
834 ac_save_cc="$CC"
835 CC="$CC -fno-strict-aliasing"
836 AC_TRY_RUN([int main() { return 0; }],
837 ac_cv_no_strict_aliasing_ok=yes,
838 ac_cv_no_strict_aliasing_ok=no,
839 ac_cv_no_strict_aliasing_ok=no)
840 CC="$ac_save_cc"
841 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
842 if test $ac_cv_no_strict_aliasing_ok = yes
843 then
844 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
845 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000846
847 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
848 # support. Without this, treatment of subnormals doesn't follow
849 # the standard.
850 case $ac_sys_machine in
851 alpha*)
852 BASECFLAGS="$BASECFLAGS -mieee"
853 ;;
854 esac
855
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 case $ac_sys_system in
857 SCO_SV*)
858 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
859 ;;
860 # is there any other compiler on Darwin besides gcc?
861 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000862 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
863 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren988117f2006-04-29 11:31:35 +0000864 if test "${enable_universalsdk}"; then
865 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
866 fi
867
Skip Montanarodecc6a42003-01-01 20:07:49 +0000868 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000869 OSF*)
870 BASECFLAGS="$BASECFLAGS -mieee"
871 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000872 esac
873 ;;
874
875*)
876 case $ac_sys_system in
877 OpenUNIX*|UnixWare*)
878 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
879 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000880 OSF*)
881 BASECFLAGS="$BASECFLAGS -ieee -std"
882 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000883 SCO_SV*)
884 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
885 ;;
886 esac
887 ;;
888esac
889
Fred Drakee1ceaa02001-12-04 20:55:47 +0000890if test "$Py_DEBUG" = 'true'; then
891 :
892else
893 OPT="-DNDEBUG $OPT"
894fi
895
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000896if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000897then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000898 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000899fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000900
Neal Norwitz020c46a2006-01-07 21:39:28 +0000901# disable check for icc since it seems to pass, but generates a warning
902if test "$CC" = icc
903then
904 ac_cv_opt_olimit_ok=no
905fi
906
Guido van Rossum91922671997-10-09 20:24:13 +0000907AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
908AC_CACHE_VAL(ac_cv_opt_olimit_ok,
909[ac_save_cc="$CC"
910CC="$CC -OPT:Olimit=0"
911AC_TRY_RUN([int main() { return 0; }],
912 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000913 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000914 ac_cv_opt_olimit_ok=no)
915CC="$ac_save_cc"])
916AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000917if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000918 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000919 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
920 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
921 # environment?
922 Darwin*)
923 ;;
924 *)
925 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
926 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000927 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000928else
929 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
930 AC_CACHE_VAL(ac_cv_olimit_ok,
931 [ac_save_cc="$CC"
932 CC="$CC -Olimit 1500"
933 AC_TRY_RUN([int main() { return 0; }],
934 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000935 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000936 ac_cv_olimit_ok=no)
937 CC="$ac_save_cc"])
938 AC_MSG_RESULT($ac_cv_olimit_ok)
939 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000940 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000941 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000942fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000943
Martin v. Löwisaac13162006-10-19 10:58:46 +0000944# Check whether GCC supports PyArg_ParseTuple format
945if test "$GCC" = "yes"
946then
947 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
948 save_CFLAGS=$CFLAGS
949 CFLAGS="$CFLAGS -Werror"
950 AC_TRY_COMPILE([
951 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
952 ],,
953 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
954 AC_MSG_RESULT(yes),
955 AC_MSG_RESULT(no)
956 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +0000957 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +0000958fi
959
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000960# On some compilers, pthreads are available without further options
961# (e.g. MacOS X). On some of these systems, the compiler will not
962# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
963# So we have to see first whether pthreads are available without
964# options before we can check whether -Kpthread improves anything.
965AC_MSG_CHECKING(whether pthreads are available without options)
966AC_CACHE_VAL(ac_cv_pthread_is_default,
967[AC_TRY_RUN([
968#include <pthread.h>
969
970void* routine(void* p){return NULL;}
971
972int main(){
973 pthread_t p;
974 if(pthread_create(&p,NULL,routine,NULL)!=0)
975 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000976 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000977 return 0;
978}
979],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000980[
981 ac_cv_pthread_is_default=yes
982 ac_cv_kthread=no
983 ac_cv_pthread=no
984],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000985 ac_cv_pthread_is_default=no,
986 ac_cv_pthread_is_default=no)
987])
988AC_MSG_RESULT($ac_cv_pthread_is_default)
989
990
991if test $ac_cv_pthread_is_default = yes
992then
993 ac_cv_kpthread=no
994else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000995# -Kpthread, if available, provides the right #defines
996# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000997# Some compilers won't report that they do not support -Kpthread,
998# so we need to run a program to see whether it really made the
999# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001000AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1001AC_CACHE_VAL(ac_cv_kpthread,
1002[ac_save_cc="$CC"
1003CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001004AC_TRY_RUN([
1005#include <pthread.h>
1006
1007void* routine(void* p){return NULL;}
1008
1009int main(){
1010 pthread_t p;
1011 if(pthread_create(&p,NULL,routine,NULL)!=0)
1012 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001013 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001014 return 0;
1015}
1016],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001017 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001018 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001019 ac_cv_kpthread=no)
1020CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001021AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001022fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001023
Skip Montanarod8d39a02003-07-10 20:44:10 +00001024if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001025then
1026# -Kthread, if available, provides the right #defines
1027# and linker options to make pthread_create available
1028# Some compilers won't report that they do not support -Kthread,
1029# so we need to run a program to see whether it really made the
1030# function available.
1031AC_MSG_CHECKING(whether $CC accepts -Kthread)
1032AC_CACHE_VAL(ac_cv_kthread,
1033[ac_save_cc="$CC"
1034CC="$CC -Kthread"
1035AC_TRY_RUN([
1036#include <pthread.h>
1037
1038void* routine(void* p){return NULL;}
1039
1040int main(){
1041 pthread_t p;
1042 if(pthread_create(&p,NULL,routine,NULL)!=0)
1043 return 1;
1044 (void)pthread_detach(p);
1045 return 0;
1046}
1047],
1048 ac_cv_kthread=yes,
1049 ac_cv_kthread=no,
1050 ac_cv_kthread=no)
1051CC="$ac_save_cc"])
1052AC_MSG_RESULT($ac_cv_kthread)
1053fi
1054
Skip Montanarod8d39a02003-07-10 20:44:10 +00001055if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001056then
1057# -pthread, if available, provides the right #defines
1058# and linker options to make pthread_create available
1059# Some compilers won't report that they do not support -pthread,
1060# so we need to run a program to see whether it really made the
1061# function available.
1062AC_MSG_CHECKING(whether $CC accepts -pthread)
1063AC_CACHE_VAL(ac_cv_thread,
1064[ac_save_cc="$CC"
1065CC="$CC -pthread"
1066AC_TRY_RUN([
1067#include <pthread.h>
1068
1069void* routine(void* p){return NULL;}
1070
1071int main(){
1072 pthread_t p;
1073 if(pthread_create(&p,NULL,routine,NULL)!=0)
1074 return 1;
1075 (void)pthread_detach(p);
1076 return 0;
1077}
1078],
1079 ac_cv_pthread=yes,
1080 ac_cv_pthread=no,
1081 ac_cv_pthread=no)
1082CC="$ac_save_cc"])
1083AC_MSG_RESULT($ac_cv_pthread)
1084fi
1085
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001086# If we have set a CC compiler flag for thread support then
1087# check if it works for CXX, too.
1088ac_cv_cxx_thread=no
1089if test ! -z "$CXX"
1090then
1091AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1092ac_save_cxx="$CXX"
1093
1094if test "$ac_cv_kpthread" = "yes"
1095then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001096 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001097 ac_cv_cxx_thread=yes
1098elif test "$ac_cv_kthread" = "yes"
1099then
1100 CXX="$CXX -Kthread"
1101 ac_cv_cxx_thread=yes
1102elif test "$ac_cv_pthread" = "yes"
1103then
1104 CXX="$CXX -pthread"
1105 ac_cv_cxx_thread=yes
1106fi
1107
1108if test $ac_cv_cxx_thread = yes
1109then
1110 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1111 $CXX -c conftest.$ac_ext 2>&5
1112 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1113 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1114 then
1115 ac_cv_cxx_thread=yes
1116 else
1117 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001118 fi
1119 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001120fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001121AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001122fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001123CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001124
Fred Drakece81d592000-07-09 14:39:29 +00001125dnl # check for ANSI or K&R ("traditional") preprocessor
1126dnl AC_MSG_CHECKING(for C preprocessor type)
1127dnl AC_TRY_COMPILE([
1128dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1129dnl int foo;
1130dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1131dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1132dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001133
Guido van Rossum627b2d71993-12-24 10:39:16 +00001134# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001135AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001136AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1137fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001138ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001139shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001140unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001141sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1142sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001143sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001144sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001145sys/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 +00001146sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001147bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001148AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001149AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001150
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001151# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001152AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001153#ifdef HAVE_CURSES_H
1154#include <curses.h>
1155#endif
1156])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001157
Martin v. Löwis11017b12006-01-14 18:12:57 +00001158# On Linux, netlink.h requires asm/types.h
1159AC_CHECK_HEADERS(linux/netlink.h,,,[
1160#ifdef HAVE_ASM_TYPES_H
1161#include <asm/types.h>
1162#endif
1163#ifdef HAVE_SYS_SOCKET_H
1164#include <sys/socket.h>
1165#endif
1166])
1167
Guido van Rossum627b2d71993-12-24 10:39:16 +00001168# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001169was_it_defined=no
1170AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001171AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1172 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1173])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001174AC_MSG_RESULT($was_it_defined)
1175
Neal Norwitz11690112002-07-30 01:08:28 +00001176# Check whether using makedev requires defining _OSF_SOURCE
1177AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001178AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001179 [ makedev(0, 0) ],
1180 ac_cv_has_makedev=yes,
1181 ac_cv_has_makedev=no)
1182if test "$ac_cv_has_makedev" = "no"; then
1183 # we didn't link, try if _OSF_SOURCE will allow us to link
1184 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001185#define _OSF_SOURCE 1
1186#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001187 ],
1188 [ makedev(0, 0) ],
1189 ac_cv_has_makedev=yes,
1190 ac_cv_has_makedev=no)
1191 if test "$ac_cv_has_makedev" = "yes"; then
1192 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1193 fi
1194fi
1195AC_MSG_RESULT($ac_cv_has_makedev)
1196if test "$ac_cv_has_makedev" = "yes"; then
1197 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1198fi
1199
Martin v. Löwis399a6892002-10-04 10:22:02 +00001200# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1201# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1202# defined, but the compiler does not support pragma redefine_extname,
1203# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1204# structures (such as rlimit64) without declaring them. As a
1205# work-around, disable LFS on such configurations
1206
1207use_lfs=yes
1208AC_MSG_CHECKING(Solaris LFS bug)
1209AC_TRY_COMPILE([
1210#define _LARGEFILE_SOURCE 1
1211#define _FILE_OFFSET_BITS 64
1212#include <sys/resource.h>
1213],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1214AC_MSG_RESULT($sol_lfs_bug)
1215if test "$sol_lfs_bug" = "yes"; then
1216 use_lfs=no
1217fi
1218
1219if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001220# Two defines needed to enable largefile support on various platforms
1221# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001222AC_DEFINE(_LARGEFILE_SOURCE, 1,
1223[This must be defined on some systems to enable large file support.])
1224AC_DEFINE(_FILE_OFFSET_BITS, 64,
1225[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001226fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001227
Guido van Rossum300fda71996-08-19 21:58:16 +00001228# Add some code to confdefs.h so that the test for off_t works on SCO
1229cat >> confdefs.h <<\EOF
1230#if defined(SCO_DS)
1231#undef _OFF_T
1232#endif
1233EOF
1234
Guido van Rossumef2255b2000-03-10 22:30:29 +00001235# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001236AC_TYPE_MODE_T
1237AC_TYPE_OFF_T
1238AC_TYPE_PID_T
1239AC_TYPE_SIGNAL
1240AC_TYPE_SIZE_T
1241AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001242AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001243 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001244
Guido van Rossumef2255b2000-03-10 22:30:29 +00001245# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001246# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001247AC_CHECK_SIZEOF(int, 4)
1248AC_CHECK_SIZEOF(long, 4)
1249AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001250AC_CHECK_SIZEOF(short, 2)
1251AC_CHECK_SIZEOF(float, 4)
1252AC_CHECK_SIZEOF(double, 8)
1253AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001254AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001255AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001256
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001257AC_MSG_CHECKING(for long long support)
1258have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001259AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1260 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1261 have_long_long=yes
1262])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001263AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001264if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001265AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001266fi
1267
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001268AC_MSG_CHECKING(for _Bool support)
1269have_c99_bool=no
1270AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1271 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1272 have_c99_bool=yes
1273])
1274AC_MSG_RESULT($have_c99_bool)
1275if test "$have_c99_bool" = yes ; then
1276AC_CHECK_SIZEOF(_Bool, 1)
1277fi
1278
Martin v. Löwisebe26702006-10-02 14:55:51 +00001279AC_CHECK_TYPES(uintptr_t,
1280 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001281 [], [#ifdef HAVE_STDINT_H
1282 #include <stdint.h>
1283 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001284
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001285
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001286# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1287AC_MSG_CHECKING(size of off_t)
1288AC_CACHE_VAL(ac_cv_sizeof_off_t,
1289[AC_TRY_RUN([#include <stdio.h>
1290#include <sys/types.h>
1291main()
1292{
1293 FILE *f=fopen("conftestval", "w");
1294 if (!f) exit(1);
1295 fprintf(f, "%d\n", sizeof(off_t));
1296 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001297}],
1298ac_cv_sizeof_off_t=`cat conftestval`,
1299ac_cv_sizeof_off_t=0,
1300ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001301])
1302AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001303AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1304[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001305
1306AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001307if test "$have_long_long" = yes -a \
1308 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1309 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001310 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1311 [Defined to enable large file support when an off_t is bigger than a long
1312 and long long is available and at least as big as an off_t. You may need
1313 to add some flags for configuration and compilation to enable this mode.
1314 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001315 AC_MSG_RESULT(yes)
1316else
1317 AC_MSG_RESULT(no)
1318fi
1319
Fred Drakea3f6e912000-06-29 20:44:47 +00001320# AC_CHECK_SIZEOF() doesn't include <time.h>.
1321AC_MSG_CHECKING(size of time_t)
1322AC_CACHE_VAL(ac_cv_sizeof_time_t,
1323[AC_TRY_RUN([#include <stdio.h>
1324#include <time.h>
1325main()
1326{
1327 FILE *f=fopen("conftestval", "w");
1328 if (!f) exit(1);
1329 fprintf(f, "%d\n", sizeof(time_t));
1330 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001331}],
1332ac_cv_sizeof_time_t=`cat conftestval`,
1333ac_cv_sizeof_time_t=0,
1334ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001335])
1336AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001337AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1338[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001339
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001340
Trent Mick635f6fb2000-08-23 21:33:05 +00001341# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001342ac_save_cc="$CC"
1343if test "$ac_cv_kpthread" = "yes"
1344then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001345elif test "$ac_cv_kthread" = "yes"
1346then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001347elif test "$ac_cv_pthread" = "yes"
1348then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001349fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001350AC_MSG_CHECKING(for pthread_t)
1351have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001352AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001353AC_MSG_RESULT($have_pthread_t)
1354if test "$have_pthread_t" = yes ; then
1355 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1356 AC_MSG_CHECKING(size of pthread_t)
1357 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1358 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001359#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001360 main()
1361 {
1362 FILE *f=fopen("conftestval", "w");
1363 if (!f) exit(1);
1364 fprintf(f, "%d\n", sizeof(pthread_t));
1365 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001366 }],
1367 ac_cv_sizeof_pthread_t=`cat conftestval`,
1368 ac_cv_sizeof_pthread_t=0,
1369 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001370 ])
1371 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001372 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1373 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001374fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001375CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001376
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001377AC_MSG_CHECKING(for --enable-toolbox-glue)
1378AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001379 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001380
1381if test -z "$enable_toolbox_glue"
1382then
1383 case $ac_sys_system/$ac_sys_release in
1384 Darwin/*)
1385 enable_toolbox_glue="yes";;
1386 *)
1387 enable_toolbox_glue="no";;
1388 esac
1389fi
1390case "$enable_toolbox_glue" in
1391yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001392 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001393 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001394 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1395 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001396 ;;
1397*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001398 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001399 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001400 ;;
1401esac
1402AC_MSG_RESULT($enable_toolbox_glue)
1403
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001404AC_SUBST(OTHER_LIBTOOL_OPT)
1405case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001406 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001407 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1408 ;;
1409 Darwin/*)
1410 OTHER_LIBTOOL_OPT=""
1411 ;;
1412esac
1413
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001414AC_SUBST(LIBTOOL_CRUFT)
1415case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001416 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001417 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1418 if test "${enable_universalsdk}"; then
1419 :
1420 else
1421 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1422 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001423 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001424 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001425 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001426 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1427 if test ${gcc_version} '<' 4.0
1428 then
1429 LIBTOOL_CRUFT="-lcc_dynamic"
1430 else
1431 LIBTOOL_CRUFT=""
1432 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001433 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001434 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001435 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001436esac
1437
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001438AC_MSG_CHECKING(for --enable-framework)
1439if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001440then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001441 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001442 # -F. is needed to allow linking to the framework while
1443 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001444 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1445 [Define if you want to produce an OpenStep/Rhapsody framework
1446 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001447 AC_MSG_RESULT(yes)
1448else
1449 AC_MSG_RESULT(no)
1450fi
1451
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001452AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001453case $ac_sys_system/$ac_sys_release in
1454 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001455 AC_DEFINE(WITH_DYLD, 1,
1456 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1457 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1458 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001459 AC_MSG_RESULT(always on for Darwin)
1460 ;;
1461 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001462 AC_MSG_RESULT(no)
1463 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001464esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001465
Guido van Rossumac405f61994-09-12 10:56:06 +00001466# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001467AC_SUBST(SO)
1468AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001469AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001470AC_SUBST(CCSHARED)
1471AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001472# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001473# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001474AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001475if test -z "$SO"
1476then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001477 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001478 hp*|HP*)
1479 case `uname -m` in
1480 ia64) SO=.so;;
1481 *) SO=.sl;;
1482 esac
1483 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001484 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001485 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001486 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001487else
1488 # this might also be a termcap variable, see #610332
1489 echo
1490 echo '====================================================================='
1491 echo '+ +'
1492 echo '+ WARNING: You have set SO in your environment. +'
1493 echo '+ Do you really mean to change the extension for shared libraries? +'
1494 echo '+ Continuing in 10 seconds to let you to ponder. +'
1495 echo '+ +'
1496 echo '====================================================================='
1497 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001498fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001499AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001500AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001501# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001502# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001503# (Shared libraries in this instance are shared modules to be loaded into
1504# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001505AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001506if test -z "$LDSHARED"
1507then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001508 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001509 AIX*)
1510 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001511 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001512 ;;
1513 BeOS*)
1514 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001515 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001516 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001517 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001518 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001519 SunOS/5*)
1520 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001521 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001522 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001523 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001524 hp*|HP*)
1525 if test "$GCC" = "yes"
1526 then LDSHARED='$(CC) -shared'
1527 else LDSHARED='ld -b';
1528 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001529 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001530 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001531 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1532 if test "$enable_framework" ; then
1533 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001534 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1535 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001536 else
1537 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001538 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001539 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001540 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001541 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1542 if test "$enable_framework" ; then
1543 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001544 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1545 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001546 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001547 # No framework, use the Python app as bundle-loader
1548 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001549 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001550 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001551 Darwin/*)
1552 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1553 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001554 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001555 if test ${cur_target} '>' 10.2; then
1556 cur_target=10.3
1557 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001558 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001559
1560 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1561 # environment with a value that is the same as what we'll use
1562 # in the Makefile to ensure that we'll get the same compiler
1563 # environment during configure and build time.
1564 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1565 export MACOSX_DEPLOYMENT_TARGET
1566
Ronald Oussoren988117f2006-04-29 11:31:35 +00001567 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001568 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001569 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001570 if test "${enable_universalsdk}"; then
1571 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1572 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001573 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1574 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001575 else
1576 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1577 if test "$enable_framework" ; then
1578 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001579 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1580 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001581 else
1582 # No framework, use the Python app as bundle-loader
1583 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1584 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1585 fi
1586 fi
1587 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001588 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001589 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001590 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001591 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001592 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001593 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001594 else
1595 LDSHARED="ld -Bshareable ${LDFLAGS}"
1596 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001597 OpenBSD*)
1598 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1599 then
1600 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1601 else
1602 case `uname -r` in
1603 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1604 LDSHARED="ld -Bshareable ${LDFLAGS}"
1605 ;;
1606 *)
1607 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1608 ;;
1609 esac
1610 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001611 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001612 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001613 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001614 then LDSHARED='$(CC) -shared'
1615 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001616 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001617 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001618 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001619 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001620 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001621 *) LDSHARED="ld";;
1622 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001623fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001624AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001625BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001626# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001627# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001628AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001629if test -z "$CCSHARED"
1630then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001631 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001632 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001633 then CCSHARED="-fPIC";
1634 elif test `uname -p` = sparc;
1635 then CCSHARED="-xcode=pic32";
1636 else CCSHARED="-Kpic";
1637 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001638 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001639 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001640 else CCSHARED="+z";
1641 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001642 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001643 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001644 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001645 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001646 if test "$GCC" = "yes"
1647 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001648 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001649 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001650 SCO_SV*)
1651 if test "$GCC" = "yes"
1652 then CCSHARED="-fPIC"
1653 else CCSHARED="-Kpic -belf"
1654 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001655 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001656 IRIX*/6*) case $CC in
1657 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001658 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001659 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001660 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001661 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001662fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001663AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001664# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001665# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001666AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001667if test -z "$LINKFORSHARED"
1668then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001669 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001670 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001671 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001672 LINKFORSHARED="-Wl,-E -Wl,+s";;
1673# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001674 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001675 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001676 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001677 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001678 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1679 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001680 # not used by the core itself but which needs to be in the core so
1681 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001682 # -prebind is no longer used, because it actually seems to give a
1683 # slowdown in stead of a speedup, maybe due to the large number of
1684 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001685
1686 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001687 if test "$enable_framework"
1688 then
Jack Jansenda49e192005-01-07 13:08:22 +00001689 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001690 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001691 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001692 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001693 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001694 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001695 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001696 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1697 then
1698 LINKFORSHARED="-Wl,--export-dynamic"
1699 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001700 SunOS/5*) case $CC in
1701 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001702 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001703 then
1704 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001705 fi;;
1706 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001707 CYGWIN*)
1708 if test $enable_shared = "no"
1709 then
1710 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1711 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001712 QNX*)
1713 # -Wl,-E causes the symbols to be added to the dynamic
1714 # symbol table so that they can be found when a module
1715 # is loaded. -N 2048K causes the stack size to be set
1716 # to 2048 kilobytes so that the stack doesn't overflow
1717 # when running test_compile.py.
1718 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001719 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001720fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001721AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001722
Neil Schemenauer61c51152001-01-26 16:18:16 +00001723AC_SUBST(CFLAGSFORSHARED)
1724AC_MSG_CHECKING(CFLAGSFORSHARED)
1725if test ! "$LIBRARY" = "$LDLIBRARY"
1726then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001727 case $ac_sys_system in
1728 CYGWIN*)
1729 # Cygwin needs CCSHARED when building extension DLLs
1730 # but not when building the interpreter DLL.
1731 CFLAGSFORSHARED='';;
1732 *)
1733 CFLAGSFORSHARED='$(CCSHARED)'
1734 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001735fi
1736AC_MSG_RESULT($CFLAGSFORSHARED)
1737
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001738# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1739# library (with --enable-shared).
1740# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001741# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1742# if it is not required, since it creates a dependency of the shared library
1743# to LIBS. This, in turn, means that applications linking the shared libpython
1744# don't need to link LIBS explicitly. The default should be only changed
1745# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001746AC_SUBST(SHLIBS)
1747AC_MSG_CHECKING(SHLIBS)
1748case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001749 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001750 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001751esac
1752AC_MSG_RESULT($SHLIBS)
1753
1754
Guido van Rossum627b2d71993-12-24 10:39:16 +00001755# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001756AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1757AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001758
1759# only check for sem_ini if thread support is requested
1760if test "$with_threads" = "yes" -o -z "$with_threads"; then
1761 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1762 # posix4 on Solaris 2.6
1763 # pthread (first!) on Linux
1764fi
1765
Martin v. Löwis19d17342003-06-14 21:03:05 +00001766# check if we need libintl for locale functions
1767AC_CHECK_LIB(intl, textdomain,
1768 AC_DEFINE(WITH_LIBINTL, 1,
1769 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001770
1771# checks for system dependent C++ extensions support
1772case "$ac_sys_system" in
1773 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1774 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1775 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001776 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1777 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1778 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001779 AC_MSG_RESULT(yes)],
1780 [AC_MSG_RESULT(no)]);;
1781 *) ;;
1782esac
1783
Guido van Rossum70c7f481998-03-26 18:44:10 +00001784# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001785# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001786AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001787AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001788
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001789case "$ac_sys_system" in
1790BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001791AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1792;;
1793esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001794
Guido van Rossumc5a39031996-07-31 17:35:03 +00001795AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001796AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001797 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1798[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001799AC_MSG_RESULT($withval)
1800LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001801],
1802[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001803
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001804# Check for use of the system libffi library
1805AC_MSG_CHECKING(for --with-system-ffi)
1806AC_ARG_WITH(system_ffi,
1807 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1808
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001809AC_MSG_RESULT($with_system_ffi)
1810
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001811# Determine if signalmodule should be used.
1812AC_SUBST(USE_SIGNAL_MODULE)
1813AC_SUBST(SIGNAL_OBJS)
1814AC_MSG_CHECKING(for --with-signal-module)
1815AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001816 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001817
1818if test -z "$with_signal_module"
1819then with_signal_module="yes"
1820fi
1821AC_MSG_RESULT($with_signal_module)
1822
1823if test "${with_signal_module}" = "yes"; then
1824 USE_SIGNAL_MODULE=""
1825 SIGNAL_OBJS=""
1826else
1827 USE_SIGNAL_MODULE="#"
1828 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1829fi
1830
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001831# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001832AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001833USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001834
Guido van Rossum54d93d41997-01-22 20:51:58 +00001835AC_MSG_CHECKING(for --with-dec-threads)
1836AC_SUBST(LDLAST)
1837AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001838 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1839[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001840AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001841LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001842if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001843 with_thread="$withval";
1844fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001845[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001846
Martin v. Löwis11437992002-04-12 09:54:03 +00001847# Templates for things AC_DEFINEd more than once.
1848# For a single AC_DEFINE, no template is needed.
1849AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1850AH_TEMPLATE(_REENTRANT,
1851 [Define to force use of thread-safe errno, h_errno, and other functions])
1852AH_TEMPLATE(WITH_THREAD,
1853 [Define if you want to compile in rudimentary thread support])
1854
Guido van Rossum54d93d41997-01-22 20:51:58 +00001855AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001856dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001857AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001858 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001859
Barry Warsawc0d24d82000-06-29 16:12:00 +00001860# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001861dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001862AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001863 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1864 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001865
1866if test -z "$with_threads"
1867then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001868fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001869AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001870
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001871AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001872if test "$with_threads" = "no"
1873then
1874 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001875elif test "$ac_cv_pthread_is_default" = yes
1876then
1877 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001878 # Defining _REENTRANT on system with POSIX threads should not hurt.
1879 AC_DEFINE(_REENTRANT)
1880 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001881 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001882elif test "$ac_cv_kpthread" = "yes"
1883then
1884 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001885 if test "$ac_cv_cxx_thread" = "yes"; then
1886 CXX="$CXX -Kpthread"
1887 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001888 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001889 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001890 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001891elif test "$ac_cv_kthread" = "yes"
1892then
1893 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001894 if test "$ac_cv_cxx_thread" = "yes"; then
1895 CXX="$CXX -Kthread"
1896 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001897 AC_DEFINE(WITH_THREAD)
1898 posix_threads=yes
1899 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001900elif test "$ac_cv_pthread" = "yes"
1901then
1902 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001903 if test "$ac_cv_cxx_thread" = "yes"; then
1904 CXX="$CXX -pthread"
1905 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001906 AC_DEFINE(WITH_THREAD)
1907 posix_threads=yes
1908 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001909else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001910 if test ! -z "$with_threads" -a -d "$with_threads"
1911 then LDFLAGS="$LDFLAGS -L$with_threads"
1912 fi
1913 if test ! -z "$withval" -a -d "$withval"
1914 then LDFLAGS="$LDFLAGS -L$withval"
1915 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001916
1917 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001918 # define _POSIX_THREADS in unistd.h. Some apparently don't
1919 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001920 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1921 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001922 [
1923#include <unistd.h>
1924#ifdef _POSIX_THREADS
1925yes
1926#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001927 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1928 AC_MSG_RESULT($unistd_defines_pthreads)
1929
Martin v. Löwis130fb172001-07-19 11:00:41 +00001930 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001931 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1932 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001933 AC_DEFINE(HURD_C_THREADS, 1,
1934 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001935 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001936 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001937 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1938 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001939 AC_DEFINE(MACH_C_THREADS, 1,
1940 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001941 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001942 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001943 AC_ARG_WITH([pth],
1944 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1945 [AC_MSG_RESULT($withval)
1946 AC_DEFINE([WITH_THREAD])
1947 AC_DEFINE([HAVE_PTH], 1,
1948 [Define if you have GNU PTH threads.])
1949 LIBS="-lpth $LIBS"
1950 THREADOBJ="Python/thread.o"],
1951 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001952
1953 # Just looking for pthread_create in libpthread is not enough:
1954 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1955 # So we really have to include pthread.h, and then link.
1956 _libs=$LIBS
1957 LIBS="$LIBS -lpthread"
1958 AC_MSG_CHECKING([for pthread_create in -lpthread])
1959 AC_TRY_LINK([#include <pthread.h>
1960
1961void * start_routine (void *arg) { exit (0); }], [
1962pthread_create (NULL, NULL, start_routine, NULL)], [
1963 AC_MSG_RESULT(yes)
1964 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001965 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001966 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001967 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001968 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001969 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001970 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001971 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1972 AC_DEFINE(ATHEOS_THREADS, 1,
1973 [Define this if you have AtheOS threads.])
1974 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001975 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001976 AC_DEFINE(BEOS_THREADS, 1,
1977 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001978 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001979 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001980 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001981 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001982 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001983 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001984 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001985 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001986 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001987 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001988 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001989 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001990 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001991 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001992 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001993 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001994 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001995 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001996 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001997
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001998 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1999 LIBS="$LIBS -lmpc"
2000 THREADOBJ="Python/thread.o"
2001 USE_THREAD_MODULE=""])
2002
2003 if test "$posix_threads" != "yes"; then
2004 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2005 LIBS="$LIBS -lthread"
2006 THREADOBJ="Python/thread.o"
2007 USE_THREAD_MODULE=""])
2008 fi
2009
2010 if test "$USE_THREAD_MODULE" != "#"
2011 then
2012 # If the above checks didn't disable threads, (at least) OSF1
2013 # needs this '-threads' argument during linking.
2014 case $ac_sys_system in
2015 OSF1) LDLAST=-threads;;
2016 esac
2017 fi
2018fi
2019
2020if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002021 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002022 AC_DEFINE(_POSIX_THREADS, 1,
2023 [Define if you have POSIX threads,
2024 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002025 fi
2026
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002027 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2028 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002029 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2030 Defined for Solaris 2.6 bug in pthread header.)
2031 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002032 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002033 Define if the Posix semaphores do not work on your system)
2034 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002035 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2036 Define if the Posix semaphores do not work on your system)
2037 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002038 esac
2039
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002040 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2041 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2042 [AC_TRY_RUN([#include <pthread.h>
2043 void *foo(void *parm) {
2044 return NULL;
2045 }
2046 main() {
2047 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002048 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002049 if (pthread_attr_init(&attr)) exit(-1);
2050 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002051 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002052 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002053 }],
2054 ac_cv_pthread_system_supported=yes,
2055 ac_cv_pthread_system_supported=no,
2056 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002057 ])
2058 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2059 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002060 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002061 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002062 AC_CHECK_FUNCS(pthread_sigmask,
2063 [case $ac_sys_system in
2064 CYGWIN*)
2065 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2066 [Define if pthread_sigmask() does not work on your system.])
2067 ;;
2068 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002069fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002070
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002071
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002072# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002073AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002074AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002075AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002076[ --enable-ipv6 Enable ipv6 (with ipv4) support
2077 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002078[ case "$enableval" in
2079 no)
2080 AC_MSG_RESULT(no)
2081 ipv6=no
2082 ;;
2083 *) AC_MSG_RESULT(yes)
2084 AC_DEFINE(ENABLE_IPV6)
2085 ipv6=yes
2086 ;;
2087 esac ],
2088
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002089[
2090dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002091 AC_TRY_RUN([ /* AF_INET6 available check */
2092#include <sys/types.h>
2093#include <sys/socket.h>
2094main()
2095{
2096 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2097 exit(1);
2098 else
2099 exit(0);
2100}
2101],
2102 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002103 ipv6=yes,
2104 AC_MSG_RESULT(no)
2105 ipv6=no,
2106 AC_MSG_RESULT(no)
2107 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002108)
2109
2110if test "$ipv6" = "yes"; then
2111 AC_MSG_CHECKING(if RFC2553 API is available)
2112 AC_TRY_COMPILE([#include <sys/types.h>
2113#include <netinet/in.h>],
2114 [struct sockaddr_in6 x;
2115x.sin6_scope_id;],
2116 AC_MSG_RESULT(yes)
2117 ipv6=yes,
2118 AC_MSG_RESULT(no, IPv6 disabled)
2119 ipv6=no)
2120fi
2121
2122if test "$ipv6" = "yes"; then
2123 AC_DEFINE(ENABLE_IPV6)
2124fi
2125])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002126
2127ipv6type=unknown
2128ipv6lib=none
2129ipv6trylibc=no
2130
2131if test "$ipv6" = "yes"; then
2132 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002133 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2134 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002135 case $i in
2136 inria)
2137 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002138 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002139#include <netinet/in.h>
2140#ifdef IPV6_INRIA_VERSION
2141yes
2142#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002143 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002144 ;;
2145 kame)
2146 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002147 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002148#include <netinet/in.h>
2149#ifdef __KAME__
2150yes
2151#endif],
2152 [ipv6type=$i;
2153 ipv6lib=inet6
2154 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002155 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002156 ;;
2157 linux-glibc)
2158 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002159 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002160#include <features.h>
2161#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2162yes
2163#endif],
2164 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002165 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002166 ;;
2167 linux-inet6)
2168 dnl http://www.v6.linux.or.jp/
2169 if test -d /usr/inet6; then
2170 ipv6type=$i
2171 ipv6lib=inet6
2172 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002173 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002174 fi
2175 ;;
2176 solaris)
2177 if test -f /etc/netconfig; then
2178 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2179 ipv6type=$i
2180 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002181 fi
2182 fi
2183 ;;
2184 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002185 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002186#include <sys/param.h>
2187#ifdef _TOSHIBA_INET6
2188yes
2189#endif],
2190 [ipv6type=$i;
2191 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002192 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002193 ;;
2194 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002195 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002196#include </usr/local/v6/include/sys/v6config.h>
2197#ifdef __V6D__
2198yes
2199#endif],
2200 [ipv6type=$i;
2201 ipv6lib=v6;
2202 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002203 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002204 ;;
2205 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002206 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002207#include <sys/param.h>
2208#ifdef _ZETA_MINAMI_INET6
2209yes
2210#endif],
2211 [ipv6type=$i;
2212 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002213 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002214 ;;
2215 esac
2216 if test "$ipv6type" != "unknown"; then
2217 break
2218 fi
2219 done
2220 AC_MSG_RESULT($ipv6type)
2221fi
2222
2223if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2224 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2225 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2226 echo "using lib$ipv6lib"
2227 else
2228 if test $ipv6trylibc = "yes"; then
2229 echo "using libc"
2230 else
2231 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2232 echo "You need to fetch lib$ipv6lib.a from appropriate"
2233 echo 'ipv6 kit and compile beforehand.'
2234 exit 1
2235 fi
2236 fi
2237fi
2238
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002239# Check for --with-doc-strings
2240AC_MSG_CHECKING(for --with-doc-strings)
2241AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002242 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002243
2244if test -z "$with_doc_strings"
2245then with_doc_strings="yes"
2246fi
2247if test "$with_doc_strings" != "no"
2248then
2249 AC_DEFINE(WITH_DOC_STRINGS, 1,
2250 [Define if you want documentation strings in extension modules])
2251fi
2252AC_MSG_RESULT($with_doc_strings)
2253
Neil Schemenauera35c6882001-02-27 04:45:05 +00002254# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002255AC_MSG_CHECKING(for --with-tsc)
2256AC_ARG_WITH(tsc,
2257[ --with(out)-tsc enable/disable timestamp counter profile], [
2258if test "$withval" != no
2259then
2260 AC_DEFINE(WITH_TSC, 1,
2261 [Define to profile with the Pentium timestamp counter])
2262 AC_MSG_RESULT(yes)
2263else AC_MSG_RESULT(no)
2264fi],
2265[AC_MSG_RESULT(no)])
2266
2267# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002268AC_MSG_CHECKING(for --with-pymalloc)
2269AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002270 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002271
2272if test -z "$with_pymalloc"
2273then with_pymalloc="yes"
2274fi
2275if test "$with_pymalloc" != "no"
2276then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002277 AC_DEFINE(WITH_PYMALLOC, 1,
2278 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002279fi
2280AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002281
Barry Warsawef82cd72000-06-30 16:21:01 +00002282# Check for --with-wctype-functions
2283AC_MSG_CHECKING(for --with-wctype-functions)
2284AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002285 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2286[
Barry Warsawef82cd72000-06-30 16:21:01 +00002287if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002288then
2289 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2290 [Define if you want wctype.h functions to be used instead of the
2291 one supplied by Python itself. (see Include/unicodectype.h).])
2292 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002293else AC_MSG_RESULT(no)
2294fi],
2295[AC_MSG_RESULT(no)])
2296
Guido van Rossum68242b51996-05-28 22:53:03 +00002297# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002298AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002299DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002300
Guido van Rossume97ee181999-12-20 21:27:22 +00002301# the dlopen() function means we might want to use dynload_shlib.o. some
2302# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002303AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002304
2305# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2306# loading of modules.
2307AC_SUBST(DYNLOADFILE)
2308AC_MSG_CHECKING(DYNLOADFILE)
2309if test -z "$DYNLOADFILE"
2310then
2311 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002312 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2313 if test "$ac_cv_func_dlopen" = yes
2314 then DYNLOADFILE="dynload_shlib.o"
2315 else DYNLOADFILE="dynload_aix.o"
2316 fi
2317 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002318 BeOS*) DYNLOADFILE="dynload_beos.o";;
2319 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002320 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2321 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002322 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002323 *)
2324 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2325 # out any dynamic loading
2326 if test "$ac_cv_func_dlopen" = yes
2327 then DYNLOADFILE="dynload_shlib.o"
2328 else DYNLOADFILE="dynload_stub.o"
2329 fi
2330 ;;
2331 esac
2332fi
2333AC_MSG_RESULT($DYNLOADFILE)
2334if test "$DYNLOADFILE" != "dynload_stub.o"
2335then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002336 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2337 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002338fi
2339
Jack Jansenc49e5b72001-06-19 15:00:23 +00002340# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2341
2342AC_SUBST(MACHDEP_OBJS)
2343AC_MSG_CHECKING(MACHDEP_OBJS)
2344if test -z "$MACHDEP_OBJS"
2345then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002346 MACHDEP_OBJS=$extra_machdep_objs
2347else
2348 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002349fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002350AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002351
Guido van Rossum627b2d71993-12-24 10:39:16 +00002352# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002353AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2354 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002355 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002356 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002357 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002358 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002359 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002360 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002361 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002362 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002363 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002364 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002365
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002366# For some functions, having a definition is not sufficient, since
2367# we want to take their address.
2368AC_MSG_CHECKING(for chroot)
2369AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2370 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2371 AC_MSG_RESULT(yes),
2372 AC_MSG_RESULT(no)
2373)
2374AC_MSG_CHECKING(for link)
2375AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2376 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2377 AC_MSG_RESULT(yes),
2378 AC_MSG_RESULT(no)
2379)
2380AC_MSG_CHECKING(for symlink)
2381AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2382 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2383 AC_MSG_RESULT(yes),
2384 AC_MSG_RESULT(no)
2385)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002386AC_MSG_CHECKING(for fchdir)
2387AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2388 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2389 AC_MSG_RESULT(yes),
2390 AC_MSG_RESULT(no)
2391)
2392AC_MSG_CHECKING(for fsync)
2393AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002394 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002395 AC_MSG_RESULT(yes),
2396 AC_MSG_RESULT(no)
2397)
2398AC_MSG_CHECKING(for fdatasync)
2399AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2400 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2401 AC_MSG_RESULT(yes),
2402 AC_MSG_RESULT(no)
2403)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002404AC_MSG_CHECKING(for epoll)
2405AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2406 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2407 AC_MSG_RESULT(yes),
2408 AC_MSG_RESULT(no)
2409)
2410AC_MSG_CHECKING(for kqueue)
2411AC_TRY_COMPILE([
2412#include <sys/types.h>
2413#include <sys/event.h>
2414 ], int x=kqueue(),
2415 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2416 AC_MSG_RESULT(yes),
2417 AC_MSG_RESULT(no)
2418)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002419# On some systems (eg. FreeBSD 5), we would find a definition of the
2420# functions ctermid_r, setgroups in the library, but no prototype
2421# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2422# address to avoid compiler warnings and potential miscompilations
2423# because of the missing prototypes.
2424
2425AC_MSG_CHECKING(for ctermid_r)
2426AC_TRY_COMPILE([
2427#include "confdefs.h"
2428#include <stdio.h>
2429], void* p = ctermid_r,
2430 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2431 AC_MSG_RESULT(yes),
2432 AC_MSG_RESULT(no)
2433)
2434
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002435AC_MSG_CHECKING(for flock)
2436AC_TRY_COMPILE([
2437#include "confdefs.h"
2438#include <sys/file.h>
2439], void* p = flock,
2440 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2441 AC_MSG_RESULT(yes),
2442 AC_MSG_RESULT(no)
2443)
2444
2445AC_MSG_CHECKING(for getpagesize)
2446AC_TRY_COMPILE([
2447#include "confdefs.h"
2448#include <unistd.h>
2449], void* p = getpagesize,
2450 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2451 AC_MSG_RESULT(yes),
2452 AC_MSG_RESULT(no)
2453)
2454
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002455dnl check for true
2456AC_CHECK_PROGS(TRUE, true, /bin/true)
2457
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002458dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2459dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002460AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002461 AC_CHECK_LIB(resolv, inet_aton)
2462)
2463
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002464# On Tru64, chflags seems to be present, but calling it will
2465# exit Python
2466AC_MSG_CHECKING(for chflags)
2467AC_TRY_RUN([
2468#include <sys/stat.h>
2469#include <unistd.h>
2470int main(int argc, char*argv[])
2471{
2472 if(chflags(argv[0], 0) != 0)
2473 return 1;
2474 return 0;
2475}
2476],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2477 AC_MSG_RESULT(yes),
2478 AC_MSG_RESULT(no)
2479)
2480
2481AC_MSG_CHECKING(for lchflags)
2482AC_TRY_RUN([
2483#include <sys/stat.h>
2484#include <unistd.h>
2485int main(int argc, char*argv[])
2486{
2487 if(lchflags(argv[0], 0) != 0)
2488 return 1;
2489 return 0;
2490}
2491],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2492 AC_MSG_RESULT(yes),
2493 AC_MSG_RESULT(no)
2494)
2495
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002496dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002497dnl
2498dnl On MacOSX the linker will search for dylibs on the entire linker path
2499dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2500dnl to revert to a more traditional unix behaviour and make it possible to
2501dnl override the system libz with a local static library of libz. Temporarily
2502dnl add that flag to our CFLAGS as well to ensure that we check the version
2503dnl of libz that will be used by setup.py.
2504dnl The -L/usr/local/lib is needed as wel to get the same compilation
2505dnl environment as setup.py (and leaving it out can cause configure to use the
2506dnl wrong version of the library)
2507case $ac_sys_system/$ac_sys_release in
2508Darwin/*)
2509 _CUR_CFLAGS="${CFLAGS}"
2510 _CUR_LDFLAGS="${LDFLAGS}"
2511 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2512 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2513 ;;
2514esac
2515
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002516AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2517
Ronald Oussorenf8752642006-07-06 10:13:35 +00002518case $ac_sys_system/$ac_sys_release in
2519Darwin/*)
2520 CFLAGS="${_CUR_CFLAGS}"
2521 LDFLAGS="${_CUR_LDFLAGS}"
2522 ;;
2523esac
2524
Martin v. Löwise9416172003-05-03 10:12:45 +00002525AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002526AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002527#include "confdefs.h"
2528#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002529], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002530 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2531 AC_MSG_RESULT(yes),
2532 AC_MSG_RESULT(no)
2533)
2534
2535AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002536AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002537#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002538#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002539#include <sys/socket.h>
2540#include <netinet/in.h>
2541#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002542], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002543 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2544 AC_MSG_RESULT(yes),
2545 AC_MSG_RESULT(no)
2546)
2547
2548AC_MSG_CHECKING(for inet_pton)
2549AC_TRY_COMPILE([
2550#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002551#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002552#include <sys/socket.h>
2553#include <netinet/in.h>
2554#include <arpa/inet.h>
2555], void* p = inet_pton,
2556 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2557 AC_MSG_RESULT(yes),
2558 AC_MSG_RESULT(no)
2559)
2560
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002561# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002562AC_MSG_CHECKING(for setgroups)
2563AC_TRY_COMPILE([
2564#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002565#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002566#ifdef HAVE_GRP_H
2567#include <grp.h>
2568#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002569],
2570void* p = setgroups,
2571 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2572 AC_MSG_RESULT(yes),
2573 AC_MSG_RESULT(no)
2574)
2575
Fred Drake8cef4cf2000-06-28 16:40:38 +00002576# check for openpty and forkpty
2577
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002578AC_CHECK_FUNCS(openpty,,
2579 AC_CHECK_LIB(util,openpty,
2580 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2581 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2582 )
2583)
2584AC_CHECK_FUNCS(forkpty,,
2585 AC_CHECK_LIB(util,forkpty,
2586 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2587 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2588 )
2589)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002590
Brett Cannonaa5778d2008-03-18 04:09:00 +00002591# Stuff for expat.
2592AC_CHECK_FUNCS(memmove)
2593
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002594# check for long file support functions
2595AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2596
Brett Cannonaa5778d2008-03-18 04:09:00 +00002597AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002598AC_CHECK_FUNCS(getpgrp,
2599 AC_TRY_COMPILE([#include <unistd.h>],
2600 [getpgrp(0);],
2601 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2602 [Define if getpgrp() must be called as getpgrp(0).])
2603 )
2604)
Jack Jansen150753c2003-03-29 22:07:47 +00002605AC_CHECK_FUNCS(setpgrp,
2606 AC_TRY_COMPILE([#include <unistd.h>],
2607 [setpgrp(0,0);],
2608 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2609 [Define if setpgrp() must be called as setpgrp(0, 0).])
2610 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002611)
2612AC_CHECK_FUNCS(gettimeofday,
2613 AC_TRY_COMPILE([#include <sys/time.h>],
2614 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2615 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2616 [Define if gettimeofday() does not have second (timezone) argument
2617 This is the case on Motorola V4 (R40V4.2)])
2618 )
2619)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002620
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002621AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002622AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002623#if defined(MAJOR_IN_MKDEV)
2624#include <sys/mkdev.h>
2625#elif defined(MAJOR_IN_SYSMACROS)
2626#include <sys/sysmacros.h>
2627#else
2628#include <sys/types.h>
2629#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002630],[
2631 makedev(major(0),minor(0));
2632],[
2633 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2634 [Define to 1 if you have the device macros.])
2635 AC_MSG_RESULT(yes)
2636],[
2637 AC_MSG_RESULT(no)
2638])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002639
2640# On OSF/1 V5.1, getaddrinfo is available, but a define
2641# for [no]getaddrinfo in netdb.h.
2642AC_MSG_CHECKING(for getaddrinfo)
2643AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002644#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002645#include <sys/socket.h>
2646#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002647#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002648],[
2649getaddrinfo(NULL, NULL, NULL, NULL);
2650], [
2651AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002652AC_MSG_CHECKING(getaddrinfo bug)
2653AC_TRY_RUN([
2654#include <sys/types.h>
2655#include <netdb.h>
2656#include <string.h>
2657#include <sys/socket.h>
2658#include <netinet/in.h>
2659
2660main()
2661{
2662 int passive, gaierr, inet4 = 0, inet6 = 0;
2663 struct addrinfo hints, *ai, *aitop;
2664 char straddr[INET6_ADDRSTRLEN], strport[16];
2665
2666 for (passive = 0; passive <= 1; passive++) {
2667 memset(&hints, 0, sizeof(hints));
2668 hints.ai_family = AF_UNSPEC;
2669 hints.ai_flags = passive ? AI_PASSIVE : 0;
2670 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002671 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002672 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2673 (void)gai_strerror(gaierr);
2674 goto bad;
2675 }
2676 for (ai = aitop; ai; ai = ai->ai_next) {
2677 if (ai->ai_addr == NULL ||
2678 ai->ai_addrlen == 0 ||
2679 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2680 straddr, sizeof(straddr), strport, sizeof(strport),
2681 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2682 goto bad;
2683 }
2684 switch (ai->ai_family) {
2685 case AF_INET:
2686 if (strcmp(strport, "54321") != 0) {
2687 goto bad;
2688 }
2689 if (passive) {
2690 if (strcmp(straddr, "0.0.0.0") != 0) {
2691 goto bad;
2692 }
2693 } else {
2694 if (strcmp(straddr, "127.0.0.1") != 0) {
2695 goto bad;
2696 }
2697 }
2698 inet4++;
2699 break;
2700 case AF_INET6:
2701 if (strcmp(strport, "54321") != 0) {
2702 goto bad;
2703 }
2704 if (passive) {
2705 if (strcmp(straddr, "::") != 0) {
2706 goto bad;
2707 }
2708 } else {
2709 if (strcmp(straddr, "::1") != 0) {
2710 goto bad;
2711 }
2712 }
2713 inet6++;
2714 break;
2715 case AF_UNSPEC:
2716 goto bad;
2717 break;
2718 default:
2719 /* another family support? */
2720 break;
2721 }
2722 }
2723 }
2724
2725 if (!(inet4 == 0 || inet4 == 2))
2726 goto bad;
2727 if (!(inet6 == 0 || inet6 == 2))
2728 goto bad;
2729
2730 if (aitop)
2731 freeaddrinfo(aitop);
2732 exit(0);
2733
2734 bad:
2735 if (aitop)
2736 freeaddrinfo(aitop);
2737 exit(1);
2738}
2739],
2740AC_MSG_RESULT(good)
2741buggygetaddrinfo=no,
2742AC_MSG_RESULT(buggy)
2743buggygetaddrinfo=yes,
2744AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002745buggygetaddrinfo=yes)], [
2746AC_MSG_RESULT(no)
2747buggygetaddrinfo=yes
2748])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002749
2750if test "$buggygetaddrinfo" = "yes"; then
2751 if test "$ipv6" = "yes"; then
2752 echo 'Fatal: You must get working getaddrinfo() function.'
2753 echo ' or you can specify "--disable-ipv6"'.
2754 exit 1
2755 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002756else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002757 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002758fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002759AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002760
Guido van Rossum627b2d71993-12-24 10:39:16 +00002761# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002762AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002763AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002764AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002765AC_CHECK_MEMBERS([struct stat.st_rdev])
2766AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002767AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002768AC_CHECK_MEMBERS([struct stat.st_gen])
2769AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002770AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002771
2772AC_MSG_CHECKING(for time.h that defines altzone)
2773AC_CACHE_VAL(ac_cv_header_time_altzone,
2774[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2775 ac_cv_header_time_altzone=yes,
2776 ac_cv_header_time_altzone=no)])
2777AC_MSG_RESULT($ac_cv_header_time_altzone)
2778if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002779 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002780fi
2781
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002782was_it_defined=no
2783AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002784AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002785#include <sys/types.h>
2786#include <sys/select.h>
2787#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002788], [;], [
2789 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2790 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2791 (which you can't on SCO ODT 3.0).])
2792 was_it_defined=yes
2793])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002794AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002795
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002796AC_MSG_CHECKING(for addrinfo)
2797AC_CACHE_VAL(ac_cv_struct_addrinfo,
2798AC_TRY_COMPILE([
2799# include <netdb.h>],
2800 [struct addrinfo a],
2801 ac_cv_struct_addrinfo=yes,
2802 ac_cv_struct_addrinfo=no))
2803AC_MSG_RESULT($ac_cv_struct_addrinfo)
2804if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002805 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002806fi
2807
2808AC_MSG_CHECKING(for sockaddr_storage)
2809AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2810AC_TRY_COMPILE([
2811# include <sys/types.h>
2812# include <sys/socket.h>],
2813 [struct sockaddr_storage s],
2814 ac_cv_struct_sockaddr_storage=yes,
2815 ac_cv_struct_sockaddr_storage=no))
2816AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2817if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002818 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002819fi
2820
Guido van Rossum627b2d71993-12-24 10:39:16 +00002821# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002822
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002823AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002824AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002825
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002826works=no
2827AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002828AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2829 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2830)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002831AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002832
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002833works=no
2834AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002835AC_TRY_COMPILE([], [signed char c;], works=yes,
2836 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2837)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002838AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002839
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002840have_prototypes=no
2841AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002842AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2843 AC_DEFINE(HAVE_PROTOTYPES, 1,
2844 [Define if your compiler supports function prototype])
2845 have_prototypes=yes
2846])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002847AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002848
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002849works=no
2850AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002851AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002852#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002853int foo(int x, ...) {
2854 va_list va;
2855 va_start(va, x);
2856 va_arg(va, int);
2857 va_arg(va, char *);
2858 va_arg(va, double);
2859 return 0;
2860}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002861], [return foo(10, "", 3.14);], [
2862 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2863 [Define if your compiler supports variable length function prototypes
2864 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2865 works=yes
2866])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002867AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002868
Dave Cole331708b2004-08-09 04:51:41 +00002869# check for socketpair
2870AC_MSG_CHECKING(for socketpair)
2871AC_TRY_COMPILE([
2872#include <sys/types.h>
2873#include <sys/socket.h>
2874], void *x=socketpair,
2875 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2876 AC_MSG_RESULT(yes),
2877 AC_MSG_RESULT(no)
2878)
2879
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002880# check if sockaddr has sa_len member
2881AC_MSG_CHECKING(if sockaddr has sa_len member)
2882AC_TRY_COMPILE([#include <sys/types.h>
2883#include <sys/socket.h>],
2884[struct sockaddr x;
2885x.sa_len = 0;],
2886 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002887 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002888 AC_MSG_RESULT(no))
2889
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002890va_list_is_array=no
2891AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002892AC_TRY_COMPILE([
2893#ifdef HAVE_STDARG_PROTOTYPES
2894#include <stdarg.h>
2895#else
2896#include <varargs.h>
2897#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002898], [va_list list1, list2; list1 = list2;], , [
2899 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2900 va_list_is_array=yes
2901])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002902AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002903
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002904# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002905AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2906 [Define this if you have some version of gethostbyname_r()])
2907
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002908AC_CHECK_FUNC(gethostbyname_r, [
2909 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2910 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2911 OLD_CFLAGS=$CFLAGS
2912 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2913 AC_TRY_COMPILE([
2914# include <netdb.h>
2915 ], [
2916 char *name;
2917 struct hostent *he, *res;
2918 char buffer[2048];
2919 int buflen = 2048;
2920 int h_errnop;
2921
2922 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2923 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002924 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002925 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2926 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002927 AC_MSG_RESULT(yes)
2928 ], [
2929 AC_MSG_RESULT(no)
2930 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2931 AC_TRY_COMPILE([
2932# include <netdb.h>
2933 ], [
2934 char *name;
2935 struct hostent *he;
2936 char buffer[2048];
2937 int buflen = 2048;
2938 int h_errnop;
2939
2940 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
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_5_ARG, 1,
2944 [Define this if you have the 5-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 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2949 AC_TRY_COMPILE([
2950# include <netdb.h>
2951 ], [
2952 char *name;
2953 struct hostent *he;
2954 struct hostent_data data;
2955
2956 (void) gethostbyname_r(name, he, &data);
2957 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002958 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002959 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2960 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002961 AC_MSG_RESULT(yes)
2962 ], [
2963 AC_MSG_RESULT(no)
2964 ])
2965 ])
2966 ])
2967 CFLAGS=$OLD_CFLAGS
2968], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002969 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002970])
2971AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2972AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2973AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002974AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002975AC_SUBST(HAVE_GETHOSTBYNAME)
2976
Guido van Rossum627b2d71993-12-24 10:39:16 +00002977# checks for system services
2978# (none yet)
2979
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002980# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002981AC_CHECK_FUNC(__fpu_control,
2982 [],
2983 [AC_CHECK_LIB(ieee, __fpu_control)
2984])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002985
Guido van Rossum93274221997-05-09 02:42:00 +00002986# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002987AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002988AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002989 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2990[
Guido van Rossum93274221997-05-09 02:42:00 +00002991if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002992then
2993 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2994 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2995 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002996else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002997fi],
2998[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002999
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003000# check for --with-libm=...
3001AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003002case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003003Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003004BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003005*) LIBM=-lm
3006esac
Guido van Rossum93274221997-05-09 02:42:00 +00003007AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003008AC_ARG_WITH(libm,
3009 AC_HELP_STRING(--with-libm=STRING, math library),
3010[
Guido van Rossum93274221997-05-09 02:42:00 +00003011if test "$withval" = no
3012then LIBM=
3013 AC_MSG_RESULT(force LIBM empty)
3014elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003015then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003016 AC_MSG_RESULT(set LIBM="$withval")
3017else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003018fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003019[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003020
3021# check for --with-libc=...
3022AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003023AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003024AC_ARG_WITH(libc,
3025 AC_HELP_STRING(--with-libc=STRING, C library),
3026[
Guido van Rossum93274221997-05-09 02:42:00 +00003027if test "$withval" = no
3028then LIBC=
3029 AC_MSG_RESULT(force LIBC empty)
3030elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003031then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003032 AC_MSG_RESULT(set LIBC="$withval")
3033else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003034fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003035[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003036
Christian Heimes0a8143f2007-12-18 23:22:54 +00003037# ************************************
3038# * Check for mathematical functions *
3039# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003040
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003041LIBS_SAVE=$LIBS
3042LIBS="$LIBS $LIBM"
3043
Mark Dickinson265d7382008-04-21 22:32:24 +00003044# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3045# -0. on some architectures.
3046AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3047AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3048AC_TRY_RUN([
3049#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003050#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003051int main() {
3052 /* return 0 if either negative zeros don't exist
3053 on this platform or if negative zeros exist
3054 and tanh(-0.) == -0. */
3055 if (atan2(0., -1.) == atan2(-0., -1.) ||
3056 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3057 else exit(1);
3058}
3059],
3060ac_cv_tanh_preserves_zero_sign=yes,
3061ac_cv_tanh_preserves_zero_sign=no,
3062ac_cv_tanh_preserves_zero_sign=no)])
3063AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3064if test "$ac_cv_tanh_preserves_zero_sign" = yes
3065then
3066 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3067 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3068fi
3069
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003070AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003071
Christian Heimes48723512008-01-20 14:28:28 +00003072AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003073
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003074LIBS=$LIBS_SAVE
3075
Guido van Rossumef2255b2000-03-10 22:30:29 +00003076# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003077AC_CHECK_HEADER(wchar.h, [
3078 AC_DEFINE(HAVE_WCHAR_H, 1,
3079 [Define if the compiler provides a wchar.h header file.])
3080 wchar_h="yes"
3081],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003082wchar_h="no"
3083)
3084
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003085# determine wchar_t size
3086if test "$wchar_h" = yes
3087then
Guido van Rossum67b26592001-10-20 14:21:45 +00003088 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003089fi
3090
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003091AC_MSG_CHECKING(for UCS-4 tcl)
3092have_ucs4_tcl=no
3093AC_TRY_COMPILE([
3094#include <tcl.h>
3095#if TCL_UTF_MAX != 6
3096# error "NOT UCS4_TCL"
3097#endif], [], [
3098 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3099 have_ucs4_tcl=yes
3100])
3101AC_MSG_RESULT($have_ucs4_tcl)
3102
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003103# check whether wchar_t is signed or not
3104if test "$wchar_h" = yes
3105then
3106 # check whether wchar_t is signed or not
3107 AC_MSG_CHECKING(whether wchar_t is signed)
3108 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3109 AC_TRY_RUN([
3110 #include <wchar.h>
3111 int main()
3112 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003113 /* Success: exit code 0 */
3114 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003115 }
3116 ],
3117 ac_cv_wchar_t_signed=yes,
3118 ac_cv_wchar_t_signed=no,
3119 ac_cv_wchar_t_signed=yes)])
3120 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3121fi
3122
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003123AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003124dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003125AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003126 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3127 [],
3128 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003129
3130if test $enable_unicode = yes
3131then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003132 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003133 case "$have_ucs4_tcl" in
3134 yes) enable_unicode="ucs4"
3135 ;;
3136 *) enable_unicode="ucs2"
3137 ;;
3138 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003139fi
3140
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003141AH_TEMPLATE(Py_UNICODE_SIZE,
3142 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003143case "$enable_unicode" in
3144ucs2) unicode_size="2"
3145 AC_DEFINE(Py_UNICODE_SIZE,2)
3146 ;;
3147ucs4) unicode_size="4"
3148 AC_DEFINE(Py_UNICODE_SIZE,4)
3149 ;;
3150esac
3151
Martin v. Löwis11437992002-04-12 09:54:03 +00003152AH_TEMPLATE(PY_UNICODE_TYPE,
3153 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003154
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003155AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003156if test "$enable_unicode" = "no"
3157then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003158 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003159 AC_MSG_RESULT(not used)
3160else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003161 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003162 AC_DEFINE(Py_USING_UNICODE, 1,
3163 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003164
3165 # wchar_t is only usable if it maps to an unsigned type
3166 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003167 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003168 then
3169 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003170 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3171 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003172 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003173 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003174 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3175 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3176 then
3177 PY_UNICODE_TYPE="unsigned short"
3178 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3179 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3180 then
3181 PY_UNICODE_TYPE="unsigned long"
3182 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3183 else
3184 PY_UNICODE_TYPE="no type found"
3185 fi
3186 AC_MSG_RESULT($PY_UNICODE_TYPE)
3187fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003188
3189# check for endianness
3190AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003191AH_VERBATIM([WORDS_BIGENDIAN],
3192[
3193 /* Define to 1 if your processor stores words with the most significant byte
3194 first (like Motorola and SPARC, unlike Intel and VAX).
3195
3196 The block below does compile-time checking for endianness on platforms
3197 that use GCC and therefore allows compiling fat binaries on OSX by using
3198 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3199 such that the configure-result is used on systems that don't use GCC.
3200 */
3201#ifdef __BIG_ENDIAN__
3202#define WORDS_BIGENDIAN 1
3203#else
3204#ifndef __LITTLE_ENDIAN__
3205#undef WORDS_BIGENDIAN
3206#endif
3207#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003208
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003209# Check whether right shifting a negative integer extends the sign bit
3210# or fills with zeros (like the Cray J90, according to Tim Peters).
3211AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003212AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003213AC_TRY_RUN([
3214int main()
3215{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003216 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003217}
Guido van Rossum3065c942001-09-17 04:03:14 +00003218],
3219ac_cv_rshift_extends_sign=yes,
3220ac_cv_rshift_extends_sign=no,
3221ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003222AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3223if test "$ac_cv_rshift_extends_sign" = no
3224then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003225 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3226 [Define if i>>j for signed int i does not extend the sign bit
3227 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003228fi
3229
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003230# check for getc_unlocked and related locking functions
3231AC_MSG_CHECKING(for getc_unlocked() and friends)
3232AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3233AC_TRY_LINK([#include <stdio.h>],[
3234 FILE *f = fopen("/dev/null", "r");
3235 flockfile(f);
3236 getc_unlocked(f);
3237 funlockfile(f);
3238], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3239AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3240if test "$ac_cv_have_getc_unlocked" = yes
3241then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003242 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3243 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003244fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003245
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003246# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003247# save the value of LIBS so we don't actually link Python with readline
3248LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003249AC_CHECK_LIB(readline, readline)
3250if test "$ac_cv_have_readline_readline" = no
3251then
3252 AC_CHECK_LIB(termcap, readline)
3253fi
3254
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003255# check for readline 2.1
3256AC_CHECK_LIB(readline, rl_callback_handler_install,
3257 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003258 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003259
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003260# check for readline 2.2
3261AC_TRY_CPP([#include <readline/readline.h>],
3262have_readline=yes, have_readline=no)
3263if test $have_readline = yes
3264then
3265 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3266 [readline/readline.h],
3267 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3268 [Define if you have readline 2.2]), )
3269fi
3270
Martin v. Löwis0daad592001-09-30 21:09:59 +00003271# check for readline 4.0
3272AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003273 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003274 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003275
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003276# also in 4.0
3277AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3278 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3279 [Define if you have readline 4.0]), , )
3280
Guido van Rossum353ae582001-07-10 16:45:32 +00003281# check for readline 4.2
3282AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003283 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003284 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003285
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003286# also in readline 4.2
3287AC_TRY_CPP([#include <readline/readline.h>],
3288have_readline=yes, have_readline=no)
3289if test $have_readline = yes
3290then
3291 AC_EGREP_HEADER([extern int rl_catch_signals;],
3292 [readline/readline.h],
3293 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3294 [Define if you can turn off readline's signal handling.]), )
3295fi
3296
Martin v. Löwis82bca632006-02-10 20:49:30 +00003297# End of readline checks: restore LIBS
3298LIBS=$LIBS_no_readline
3299
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003300AC_MSG_CHECKING(for broken nice())
3301AC_CACHE_VAL(ac_cv_broken_nice, [
3302AC_TRY_RUN([
3303int main()
3304{
3305 int val1 = nice(1);
3306 if (val1 != -1 && val1 == nice(2))
3307 exit(0);
3308 exit(1);
3309}
Guido van Rossum3065c942001-09-17 04:03:14 +00003310],
3311ac_cv_broken_nice=yes,
3312ac_cv_broken_nice=no,
3313ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003314AC_MSG_RESULT($ac_cv_broken_nice)
3315if test "$ac_cv_broken_nice" = yes
3316then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003317 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3318 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003319fi
3320
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003321AC_MSG_CHECKING(for broken poll())
3322AC_TRY_RUN([
3323#include <poll.h>
3324
3325int main (void)
3326 {
3327 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3328
3329 close (42);
3330
3331 int poll_test = poll (&poll_struct, 1, 0);
3332
3333 if (poll_test < 0)
3334 {
3335 exit(0);
3336 }
3337 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3338 {
3339 exit(0);
3340 }
3341 else
3342 {
3343 exit(1);
3344 }
3345 }
3346],
3347ac_cv_broken_poll=yes,
3348ac_cv_broken_poll=no,
3349ac_cv_broken_poll=no)
3350AC_MSG_RESULT($ac_cv_broken_poll)
3351if test "$ac_cv_broken_poll" = yes
3352then
3353 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3354 [Define if poll() sets errno on invalid file descriptors.])
3355fi
3356
Brett Cannon43802422005-02-10 20:48:03 +00003357# Before we can test tzset, we need to check if struct tm has a tm_zone
3358# (which is not required by ISO C or UNIX spec) and/or if we support
3359# tzname[]
3360AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003361
Brett Cannon43802422005-02-10 20:48:03 +00003362# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003363AC_MSG_CHECKING(for working tzset())
3364AC_CACHE_VAL(ac_cv_working_tzset, [
3365AC_TRY_RUN([
3366#include <stdlib.h>
3367#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003368#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003369
3370#if HAVE_TZNAME
3371extern char *tzname[];
3372#endif
3373
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003374int main()
3375{
Brett Cannon18367812003-09-19 00:59:16 +00003376 /* Note that we need to ensure that not only does tzset(3)
3377 do 'something' with localtime, but it works as documented
3378 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003379 This includes making sure that tzname is set properly if
3380 tm->tm_zone does not exist since it is the alternative way
3381 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003382
3383 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003384 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003385 */
3386
Brett Cannon43802422005-02-10 20:48:03 +00003387 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003388 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3389
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003390 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003391 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003392 if (localtime(&groundhogday)->tm_hour != 0)
3393 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003394#if HAVE_TZNAME
3395 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3396 if (strcmp(tzname[0], "UTC") ||
3397 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3398 exit(1);
3399#endif
Brett Cannon18367812003-09-19 00:59:16 +00003400
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003401 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003402 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003403 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003404 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003405#if HAVE_TZNAME
3406 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3407 exit(1);
3408#endif
Brett Cannon18367812003-09-19 00:59:16 +00003409
3410 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3411 tzset();
3412 if (localtime(&groundhogday)->tm_hour != 11)
3413 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003414#if HAVE_TZNAME
3415 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3416 exit(1);
3417#endif
3418
3419#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003420 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3421 exit(1);
3422 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3423 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003424#endif
Brett Cannon18367812003-09-19 00:59:16 +00003425
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003426 exit(0);
3427}
3428],
3429ac_cv_working_tzset=yes,
3430ac_cv_working_tzset=no,
3431ac_cv_working_tzset=no)])
3432AC_MSG_RESULT($ac_cv_working_tzset)
3433if test "$ac_cv_working_tzset" = yes
3434then
3435 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3436 [Define if tzset() actually switches the local timezone in a meaningful way.])
3437fi
3438
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003439# Look for subsecond timestamps in struct stat
3440AC_MSG_CHECKING(for tv_nsec in struct stat)
3441AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3442AC_TRY_COMPILE([#include <sys/stat.h>], [
3443struct stat st;
3444st.st_mtim.tv_nsec = 1;
3445],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003446ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003447ac_cv_stat_tv_nsec=no,
3448ac_cv_stat_tv_nsec=no))
3449AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3450if test "$ac_cv_stat_tv_nsec" = yes
3451then
3452 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3453 [Define if you have struct stat.st_mtim.tv_nsec])
3454fi
3455
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003456# Look for BSD style subsecond timestamps in struct stat
3457AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3458AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3459AC_TRY_COMPILE([#include <sys/stat.h>], [
3460struct stat st;
3461st.st_mtimespec.tv_nsec = 1;
3462],
3463ac_cv_stat_tv_nsec2=yes,
3464ac_cv_stat_tv_nsec2=no,
3465ac_cv_stat_tv_nsec2=no))
3466AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3467if test "$ac_cv_stat_tv_nsec2" = yes
3468then
3469 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3470 [Define if you have struct stat.st_mtimensec])
3471fi
3472
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003473# On HP/UX 11.0, mvwdelch is a block with a return statement
3474AC_MSG_CHECKING(whether mvwdelch is an expression)
3475AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3476AC_TRY_COMPILE([#include <curses.h>], [
3477 int rtn;
3478 rtn = mvwdelch(0,0,0);
3479], ac_cv_mvwdelch_is_expression=yes,
3480 ac_cv_mvwdelch_is_expression=no,
3481 ac_cv_mvwdelch_is_expression=yes))
3482AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3483
3484if test "$ac_cv_mvwdelch_is_expression" = yes
3485then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003486 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3487 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003488fi
3489
3490AC_MSG_CHECKING(whether WINDOW has _flags)
3491AC_CACHE_VAL(ac_cv_window_has_flags,
3492AC_TRY_COMPILE([#include <curses.h>], [
3493 WINDOW *w;
3494 w->_flags = 0;
3495], ac_cv_window_has_flags=yes,
3496 ac_cv_window_has_flags=no,
3497 ac_cv_window_has_flags=no))
3498AC_MSG_RESULT($ac_cv_window_has_flags)
3499
3500
3501if test "$ac_cv_window_has_flags" = yes
3502then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003503 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3504 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003505fi
3506
Walter Dörwald4994d952006-06-19 08:07:50 +00003507AC_MSG_CHECKING(for is_term_resized)
3508AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3509 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3510 AC_MSG_RESULT(yes),
3511 AC_MSG_RESULT(no)
3512)
3513
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003514AC_MSG_CHECKING(for resize_term)
3515AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3516 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003517 AC_MSG_RESULT(yes),
3518 AC_MSG_RESULT(no)
3519)
3520
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003521AC_MSG_CHECKING(for resizeterm)
3522AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3523 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003524 AC_MSG_RESULT(yes),
3525 AC_MSG_RESULT(no)
3526)
3527
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003528AC_MSG_CHECKING(for /dev/ptmx)
3529
3530if test -r /dev/ptmx
3531then
3532 AC_MSG_RESULT(yes)
3533 AC_DEFINE(HAVE_DEV_PTMX, 1,
3534 [Define if we have /dev/ptmx.])
3535else
3536 AC_MSG_RESULT(no)
3537fi
3538
3539AC_MSG_CHECKING(for /dev/ptc)
3540
3541if test -r /dev/ptc
3542then
3543 AC_MSG_RESULT(yes)
3544 AC_DEFINE(HAVE_DEV_PTC, 1,
3545 [Define if we have /dev/ptc.])
3546else
3547 AC_MSG_RESULT(no)
3548fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003549
Brett Cannon09d12362006-05-11 05:11:33 +00003550AC_MSG_CHECKING(for %zd printf() format support)
3551AC_TRY_RUN([#include <stdio.h>
3552#include <stddef.h>
3553#include <string.h>
3554
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003555#ifdef HAVE_SYS_TYPES_H
3556#include <sys/types.h>
3557#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003558
3559#ifdef HAVE_SSIZE_T
3560typedef ssize_t Py_ssize_t;
3561#elif SIZEOF_VOID_P == SIZEOF_LONG
3562typedef long Py_ssize_t;
3563#else
3564typedef int Py_ssize_t;
3565#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003566
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003567int main()
3568{
3569 char buffer[256];
3570
Brett Cannon09d12362006-05-11 05:11:33 +00003571 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3572 return 1;
3573
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003574 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003575 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003576
3577 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3578 return 1;
3579
3580 if (strcmp(buffer, "-123"))
3581 return 1;
3582
Brett Cannon09d12362006-05-11 05:11:33 +00003583 return 0;
3584}],
3585[AC_MSG_RESULT(yes)
3586 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3587 AC_MSG_RESULT(no))
3588
Martin v. Löwis01c04012002-11-11 14:58:44 +00003589AC_CHECK_TYPE(socklen_t,,
3590 AC_DEFINE(socklen_t,int,
3591 Define to `int' if <sys/socket.h> does not define.),[
3592#ifdef HAVE_SYS_TYPES_H
3593#include <sys/types.h>
3594#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003595#ifdef HAVE_SYS_SOCKET_H
3596#include <sys/socket.h>
3597#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003598])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003599
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003600AC_SUBST(THREADHEADERS)
3601
3602for h in `(cd $srcdir;echo Python/thread_*.h)`
3603do
3604 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3605done
3606
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003607AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003608SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003609AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003610for dir in $SRCDIRS; do
3611 if test ! -d $dir; then
3612 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003613 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003614done
3615AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003616
Guido van Rossum627b2d71993-12-24 10:39:16 +00003617# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003618AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3619AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003620
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003621echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003622if test ! -f Modules/Setup
3623then
3624 cp $srcdir/Modules/Setup.dist Modules/Setup
3625fi
3626
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003627echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003628if test ! -f Modules/Setup.local
3629then
3630 echo "# Edit this file for local setup changes" >Modules/Setup.local
3631fi
3632
3633echo "creating Makefile"
3634$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3635 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003636 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003637
3638case $ac_sys_system in
3639BeOS)
3640 AC_MSG_WARN([
3641
3642 Support for BeOS is deprecated as of Python 2.6.
3643 See PEP 11 for the gory details.
3644 ])
3645 ;;
3646*) ;;
3647esac
3648
Neil Schemenauer66252162001-02-19 04:47:42 +00003649mv config.c Modules