blob: bf064583411b992615b90d52000d9a2b5d7d303b [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Christian Heimes70e5cab2008-12-03 18:18:23 +00007m4_define(PYTHON_VERSION, 3.1)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Georg Brandlfcaf9102008-07-16 02:17:56 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Thomas Wouters477c8d52006-05-27 19:21:47 +000072AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Benjamin Peterson6794aa32008-07-16 20:33:37 +000095ARCH_RUN_32BIT=
96AC_SUBST(ARCH_RUN_32BIT)
97
Georg Brandlfcaf9102008-07-16 02:17:56 +000098UNIVERSAL_ARCHS="32-bit"
99AC_MSG_CHECKING(for --with-universal-archs)
100AC_ARG_WITH(universal-archs,
101 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
102[
103 AC_MSG_RESULT($withval)
104 UNIVERSAL_ARCHS="$withval"
105],
106[
107 AC_MSG_RESULT(32-bit)
108])
109
110
111
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000112AC_ARG_WITH(framework-name,
113 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
114 specify an alternate name of the framework built with --enable-framework),
115[
116 PYTHONFRAMEWORK=${withval}
117 PYTHONFRAMEWORKDIR=${withval}.framework
118 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
119 ],[
120 PYTHONFRAMEWORK=Python
121 PYTHONFRAMEWORKDIR=Python.framework
122 PYTHONFRAMEWORKIDENTIFIER=org.python.python
123])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000124dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000126 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
127[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000128 case $enableval in
129 yes)
130 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000131 esac
132 case $enableval in
133 no)
134 PYTHONFRAMEWORK=
135 PYTHONFRAMEWORKDIR=no-framework
136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
142 if test "x${prefix}" = "xNONE"; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000147 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000148 ;;
149 *)
150 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000151 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000152 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000153 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
154 if test "$UNIVERSAL_ARCHS" = "all"
155 then
156 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
157 else
158 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
159 fi
160
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000161 if test "x${prefix}" = "xNONE" ; then
162 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
163 else
164 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
165 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000166 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000167
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000168 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000170 AC_CONFIG_FILES(Mac/Makefile)
171 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000172 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
173 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000174 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000175 ],[
176 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000177 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000178 PYTHONFRAMEWORKPREFIX=
179 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000180 FRAMEWORKINSTALLFIRST=
181 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000182 FRAMEWORKALTINSTALLFIRST=
183 FRAMEWORKALTINSTALLLAST=
184 if test "x${prefix}" = "xNONE" ; then
185 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
186 else
187 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
188 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000189 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000190
191 if test "$UNIVERSAL_ARCHS" = "all"
192 then
193 FRAMEWORKINSTALLLAST=update4wayuniversal
194 FRAMEWORKALTINSTALLLAST=update4wayuniversal
195 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000196])
197AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000198AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000199AC_SUBST(PYTHONFRAMEWORKDIR)
200AC_SUBST(PYTHONFRAMEWORKPREFIX)
201AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000202AC_SUBST(FRAMEWORKINSTALLFIRST)
203AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000204AC_SUBST(FRAMEWORKALTINSTALLFIRST)
205AC_SUBST(FRAMEWORKALTINSTALLLAST)
206AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000207
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000208##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000209## AC_HELP_STRING(--with-dyld,
210## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000211##
Guido van Rossumb418f891996-07-30 18:06:02 +0000212# Set name for machine-dependent library files
213AC_SUBST(MACHDEP)
214AC_MSG_CHECKING(MACHDEP)
215if test -z "$MACHDEP"
216then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000217 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000218 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
219 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000220 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000221 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000222 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000223 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000224 ac_md_system=`echo $ac_sys_system |
225 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
226 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000227 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000228 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000229
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000230 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000231 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000232 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000233 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000234 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000235 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000236 esac
237fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000238
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000239# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
240# disable features if it is defined, without any means to access these
241# features as extensions. For these systems, we skip the definition of
242# _XOPEN_SOURCE. Before adding a system to the list to gain access to
243# some feature, make sure there is no alternative way to access this
244# feature. Also, when using wildcards, make sure you have verified the
245# need for not defining _XOPEN_SOURCE on all systems matching the
246# wildcard, and that the wildcard does not include future systems
247# (which may remove their limitations).
248dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
249case $ac_sys_system/$ac_sys_release in
250 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
251 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000252 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000253 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000254 define_xopen_source=no
255 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
256 # also defined. This can be overridden by defining _BSD_SOURCE
257 # As this has a different meaning on Linux, only define it on OpenBSD
258 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
259 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000260 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
261 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
262 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000263 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000264 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000265 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
266 # of union __?sigval. Reported by Stuart Bishop.
267 SunOS/5.6)
268 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000269 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
270 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000271 # Reconfirmed for 7.1.4 by Martin v. Loewis.
272 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000273 define_xopen_source=no;;
274 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000275 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000276 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000277 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000278 # On FreeBSD 4, the math functions C89 does not cover are never defined
279 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
280 FreeBSD/4.*)
281 define_xopen_source=no;;
282 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
283 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
284 # identifies itself as Darwin/7.*
285 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
286 # disables platform specific features beyond repair.
287 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
288 # has no effect, don't bother defining them
289 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000290 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000291 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
292 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
293 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000294 AIX/4)
295 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000296 AIX/5)
297 if test `uname -r` -eq 1; then
298 define_xopen_source=no
299 fi
300 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000301 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
302 # defining NI_NUMERICHOST.
303 QNX/6.3.2)
304 define_xopen_source=no
305 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000306
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000307esac
308
309if test $define_xopen_source = yes
310then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000311 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
312 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000313 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
314 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000315 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000316 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000317 AC_DEFINE(_XOPEN_SOURCE, 500,
318 Define to the level of X/Open that your system supports)
319 ;;
320 *)
321 AC_DEFINE(_XOPEN_SOURCE, 600,
322 Define to the level of X/Open that your system supports)
323 ;;
324 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000325
326 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
327 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
328 # several APIs are not declared. Since this is also needed in some
329 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000330 # except for Solaris 10, where it must not be defined,
331 # as it implies XPG4.2
332 case $ac_sys_system/$ac_sys_release in
333 SunOS/5.10)
334 ;;
335 *)
336 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
337 Define to activate Unix95-and-earlier features)
338 ;;
339 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000340
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000341 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
342
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000343fi
344
Guido van Rossum91922671997-10-09 20:24:13 +0000345#
346# SGI compilers allow the specification of the both the ABI and the
347# ISA on the command line. Depending on the values of these switches,
348# different and often incompatable code will be generated.
349#
350# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
351# thus supply support for various ABI/ISA combinations. The MACHDEP
352# variable is also adjusted.
353#
354AC_SUBST(SGI_ABI)
355if test ! -z "$SGI_ABI"
356then
357 CC="cc $SGI_ABI"
358 LDFLAGS="$SGI_ABI $LDFLAGS"
359 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
360fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000361AC_MSG_RESULT($MACHDEP)
362
Jack Jansen6b08a402004-06-03 12:41:45 +0000363# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
364# it may influence the way we can build extensions, so distutils
365# needs to check it
366AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000367AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000368CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000369EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000370
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000371AC_MSG_CHECKING(machine type as reported by uname -m)
372ac_sys_machine=`uname -m`
373AC_MSG_RESULT($ac_sys_machine)
374
Guido van Rossum627b2d71993-12-24 10:39:16 +0000375# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000376
377# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
378# for debug/optimization stuff. BASECFLAGS is for flags that are required
379# just to get things to compile and link. Users are free to override OPT
380# when running configure or make. The build should not break if they do.
381# BASECFLAGS should generally not be messed with, however.
382
383# XXX shouldn't some/most/all of this code be merged with the stuff later
384# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000385AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000386AC_ARG_WITH(gcc,
387 AC_HELP_STRING(--without-gcc,never use gcc),
388[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000389 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000390 no) CC=cc
391 without_gcc=yes;;
392 yes) CC=gcc
393 without_gcc=no;;
394 *) CC=$withval
395 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000396 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000397 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000398 AIX*) CC=cc_r
399 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000400 Monterey*)
401 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000402 without_gcc=;;
403 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000404 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000405AC_MSG_RESULT($without_gcc)
406
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000407# If the user switches compilers, we can't believe the cache
408if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
409then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000410 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
411(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000412fi
413
Guido van Rossum627b2d71993-12-24 10:39:16 +0000414AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000415
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000416AC_SUBST(CXX)
417AC_SUBST(MAINCC)
418AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
419AC_ARG_WITH(cxx_main,
420 AC_HELP_STRING([--with-cxx-main=<compiler>],
421 [compile main() and link python executable with C++ compiler]),
422[
423
424 case $withval in
425 no) with_cxx_main=no
426 MAINCC='$(CC)';;
427 yes) with_cxx_main=yes
428 MAINCC='$(CXX)';;
429 *) with_cxx_main=yes
430 MAINCC=$withval
431 if test -z "$CXX"
432 then
433 CXX=$withval
434 fi;;
435 esac], [
436 with_cxx_main=no
437 MAINCC='$(CC)'
438])
439AC_MSG_RESULT($with_cxx_main)
440
441preset_cxx="$CXX"
442if test -z "$CXX"
443then
444 case "$CC" in
445 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
446 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
447 esac
448 if test "$CXX" = "notfound"
449 then
450 CXX=""
451 fi
452fi
453if test -z "$CXX"
454then
455 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
456 if test "$CXX" = "notfound"
457 then
458 CXX=""
459 fi
460fi
461if test "$preset_cxx" != "$CXX"
462then
463 AC_MSG_WARN([
464
465 By default, distutils will build C++ extension modules with "$CXX".
466 If this is not intended, then set CXX on the configure command line.
467 ])
468fi
469
470
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000471# checks for UNIX variants that set C preprocessor variables
472AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000473
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000474# Check for unsupported systems
475case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000476atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000477 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
478 echo See README for details.
479 exit 1;;
480esac
481
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000482AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000483AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000484AC_ARG_WITH(suffix,
485 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
486[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000487 case $withval in
488 no) EXEEXT=;;
489 yes) EXEEXT=.exe;;
490 *) EXEEXT=$withval;;
491 esac])
492AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000493
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000494# Test whether we're running on a non-case-sensitive system, in which
495# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000496AC_SUBST(BUILDEXEEXT)
497AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000498if test ! -d CaseSensitiveTestDir; then
499mkdir CaseSensitiveTestDir
500fi
501
502if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000503then
Jack Jansen1999ef42001-12-06 21:47:20 +0000504 AC_MSG_RESULT(yes)
505 BUILDEXEEXT=.exe
506else
507 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000508 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000509fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000510rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000511
Guido van Rossumdd997f71998-10-07 19:58:26 +0000512case $MACHDEP in
513bsdos*)
514 case $CC in
515 gcc) CC="$CC -D_HAVE_BSDI";;
516 esac;;
517esac
518
Guido van Rossum84561611997-08-21 00:08:11 +0000519case $ac_sys_system in
520hp*|HP*)
521 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000522 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000523 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000524Monterey*)
525 case $CC in
526 cc) CC="$CC -Wl,-Bexport";;
527 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000528SunOS*)
529 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000530 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000531 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000532esac
533
Martin v. Löwise8964d42001-03-06 12:09:07 +0000534
Neil Schemenauer61c51152001-01-26 16:18:16 +0000535AC_SUBST(LIBRARY)
536AC_MSG_CHECKING(LIBRARY)
537if test -z "$LIBRARY"
538then
539 LIBRARY='libpython$(VERSION).a'
540fi
541AC_MSG_RESULT($LIBRARY)
542
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000543# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000544# name of the library into which to insert object files). BLDLIBRARY is also
545# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
546# is blank as the main program is not linked directly against LDLIBRARY.
547# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
548# systems without shared libraries, LDLIBRARY is the same as LIBRARY
549# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
550# DLLLIBRARY is the shared (i.e., DLL) library.
551#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000552# RUNSHARED is used to run shared python without installed libraries
553#
554# INSTSONAME is the name of the shared library that will be use to install
555# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000556AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000557AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000558AC_SUBST(BLDLIBRARY)
559AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000560AC_SUBST(INSTSONAME)
561AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000562LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000563BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000564INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000565DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000566LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000567RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000568
Guido van Rossumfb842551997-08-06 23:42:07 +0000569# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000570# If CXX is set, and if it is needed to link a main function that was
571# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
572# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000573# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000574# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000575AC_SUBST(LINKCC)
576AC_MSG_CHECKING(LINKCC)
577if test -z "$LINKCC"
578then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000579 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000580 case $ac_sys_system in
581 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000582 exp_extra="\"\""
583 if test $ac_sys_release -ge 5 -o \
584 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
585 exp_extra="."
586 fi
587 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000588 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000589 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000590 QNX*)
591 # qcc must be used because the other compilers do not
592 # support -N.
593 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000594 esac
595fi
596AC_MSG_RESULT($LINKCC)
597
Martin v. Löwis1142de32002-03-29 16:28:31 +0000598AC_MSG_CHECKING(for --enable-shared)
599AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000600 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000601
Martin v. Löwis1142de32002-03-29 16:28:31 +0000602if test -z "$enable_shared"
603then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000604 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000605 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000606 enable_shared="yes";;
607 *)
608 enable_shared="no";;
609 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000610fi
611AC_MSG_RESULT($enable_shared)
612
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000613AC_MSG_CHECKING(for --enable-profiling)
614AC_ARG_ENABLE(profiling,
615 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
616[ac_save_cc="$CC"
617 CC="$CC -pg"
618 AC_TRY_RUN([int main() { return 0; }],
619 ac_enable_profiling="yes",
620 ac_enable_profiling="no",
621 ac_enable_profiling="no")
622 CC="$ac_save_cc"])
623AC_MSG_RESULT($ac_enable_profiling)
624
625case "$ac_enable_profiling" in
626 "yes")
627 BASECFLAGS="-pg $BASECFLAGS"
628 LDFLAGS="-pg $LDFLAGS"
629 ;;
630esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000631
632AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000633
Guido van Rossumb8552162001-09-05 14:58:11 +0000634# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
635# library that we build, but we do not want to link against it (we
636# will find it with a -framework option). For this reason there is an
637# extra variable BLDLIBRARY against which Python and the extension
638# modules are linked, BLDLIBRARY. This is normally the same as
639# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000640if test "$enable_framework"
641then
642 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000643 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000644 BLDLIBRARY=''
645else
646 BLDLIBRARY='$(LDLIBRARY)'
647fi
648
Martin v. Löwis1142de32002-03-29 16:28:31 +0000649# Other platforms follow
650if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000651 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000652 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000653 CYGWIN*)
654 LDLIBRARY='libpython$(VERSION).dll.a'
655 DLLLIBRARY='libpython$(VERSION).dll'
656 ;;
657 SunOS*)
658 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000659 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000660 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000661 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000662 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000663 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664 LDLIBRARY='libpython$(VERSION).so'
665 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000666 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000667 case $ac_sys_system in
668 FreeBSD*)
669 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
670 ;;
671 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000672 INSTSONAME="$LDLIBRARY".$SOVERSION
673 ;;
674 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000675 case `uname -m` in
676 ia64)
677 LDLIBRARY='libpython$(VERSION).so'
678 ;;
679 *)
680 LDLIBRARY='libpython$(VERSION).sl'
681 ;;
682 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000683 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000684 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000685 ;;
686 OSF*)
687 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000688 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000689 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000691 atheos*)
692 LDLIBRARY='libpython$(VERSION).so'
693 BLDLIBRARY='-L. -lpython$(VERSION)'
694 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
695 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000696 esac
Jason Tishler30765592003-09-04 11:04:06 +0000697else # shared is disabled
698 case $ac_sys_system in
699 CYGWIN*)
700 BLDLIBRARY='$(LIBRARY)'
701 LDLIBRARY='libpython$(VERSION).dll.a'
702 ;;
703 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000704fi
705
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000706AC_MSG_RESULT($LDLIBRARY)
707
Guido van Rossum627b2d71993-12-24 10:39:16 +0000708AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000709AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000710AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000711
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000712AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000713AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000714if test $SVNVERSION = found
715then
716 SVNVERSION="svnversion \$(srcdir)"
717else
718 SVNVERSION="echo exported"
719fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000720
Neil Schemenauera42c8272001-03-31 00:01:55 +0000721case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000722bsdos*|hp*|HP*)
723 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000724 if test -z "$INSTALL"
725 then
726 INSTALL="${srcdir}/install-sh -c"
727 fi
728esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000729AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000730
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000731# Not every filesystem supports hard links
732AC_SUBST(LN)
733if test -z "$LN" ; then
734 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000735 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000736 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000737 *) LN=ln;;
738 esac
739fi
740
Fred Drake9f715822001-07-11 06:27:00 +0000741# Check for --with-pydebug
742AC_MSG_CHECKING(for --with-pydebug)
743AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000744 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
745[
Fred Drake9f715822001-07-11 06:27:00 +0000746if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000747then
748 AC_DEFINE(Py_DEBUG, 1,
749 [Define if you want to build an interpreter with many run-time checks.])
750 AC_MSG_RESULT(yes);
751 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000752else AC_MSG_RESULT(no); Py_DEBUG='false'
753fi],
754[AC_MSG_RESULT(no)])
755
Skip Montanarodecc6a42003-01-01 20:07:49 +0000756# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
757# merged with this chunk of code?
758
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000759# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000760# ------------------------
761# (The following bit of code is complicated enough - please keep things
762# indented properly. Just pretend you're editing Python code. ;-)
763
764# There are two parallel sets of case statements below, one that checks to
765# see if OPT was set and one that does BASECFLAGS setting based upon
766# compiler and platform. BASECFLAGS tweaks need to be made even if the
767# user set OPT.
768
769# tweak OPT based on compiler and platform, only if the user didn't set
770# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000771AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000772if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000773then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000774 case $GCC in
775 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000776 if test "$CC" != 'g++' ; then
777 STRICT_PROTO="-Wstrict-prototypes"
778 fi
Christian Heimes38053212007-12-14 01:24:44 +0000779 # For gcc 4.x we need to use -fwrapv so lets check if its supported
780 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
781 WRAP="-fwrapv"
782 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000783 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000784 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000785 if test "$Py_DEBUG" = 'true' ; then
786 # Optimization messes up debuggers, so turn it off for
787 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000788 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000789 else
Christian Heimes38053212007-12-14 01:24:44 +0000790 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000791 fi
792 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000793 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000794 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000795 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000796 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000797 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000798 SCO_SV*) OPT="$OPT -m486 -DSCO5"
799 ;;
800 esac
Fred Drake9f715822001-07-11 06:27:00 +0000801 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000803 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000804 OPT="-O"
805 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000806 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000807
808 # The current (beta) Monterey compiler dies with optimizations
809 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000810 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000811 Monterey*)
812 OPT=""
813 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000814 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000815
Guido van Rossum4e8af441994-08-19 15:33:54 +0000816fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000817
Skip Montanarodecc6a42003-01-01 20:07:49 +0000818AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000819
820# The -arch flags for universal builds on OSX
821UNIVERSAL_ARCH_FLAGS=
822AC_SUBST(UNIVERSAL_ARCH_FLAGS)
823
Skip Montanarodecc6a42003-01-01 20:07:49 +0000824# tweak BASECFLAGS based on compiler and platform
825case $GCC in
826yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000827 # Python violates C99 rules, by casting between incompatible
828 # pointer types. GCC may generate bad code as a result of that,
829 # so use -fno-strict-aliasing if supported.
830 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
831 ac_save_cc="$CC"
832 CC="$CC -fno-strict-aliasing"
833 AC_TRY_RUN([int main() { return 0; }],
834 ac_cv_no_strict_aliasing_ok=yes,
835 ac_cv_no_strict_aliasing_ok=no,
836 ac_cv_no_strict_aliasing_ok=no)
837 CC="$ac_save_cc"
838 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
839 if test $ac_cv_no_strict_aliasing_ok = yes
840 then
841 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
842 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000843
844 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
845 # support. Without this, treatment of subnormals doesn't follow
846 # the standard.
847 case $ac_sys_machine in
848 alpha*)
849 BASECFLAGS="$BASECFLAGS -mieee"
850 ;;
851 esac
852
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853 case $ac_sys_system in
854 SCO_SV*)
855 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
856 ;;
857 # is there any other compiler on Darwin besides gcc?
858 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000859 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
860 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000861
862
Thomas Wouters477c8d52006-05-27 19:21:47 +0000863 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000864 UNIVERSAL_ARCH_FLAGS=""
865 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
866 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000867 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000868
869 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
870 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
871
872 elif test "$UNIVERSAL_ARCHS" = "all" ; then
873 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000874 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000875
876 else
877 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
878
879 fi
880
881
882 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000883 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000884 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
885 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
886 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000887 fi
888
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000889 # Calculate the right deployment target for this build.
890 #
891 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
892 if test ${cur_target} '>' 10.2; then
893 cur_target=10.3
894 fi
895 if test "${UNIVERSAL_ARCHS}" = "all"; then
896 # Ensure that the default platform for a 4-way
897 # universal build is OSX 10.5, that's the first
898 # OS release where 4-way builds make sense.
899 cur_target='10.5'
900 fi
901 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
902
903 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
904 # environment with a value that is the same as what we'll use
905 # in the Makefile to ensure that we'll get the same compiler
906 # environment during configure and build time.
907 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
908 export MACOSX_DEPLOYMENT_TARGET
909 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
910
Skip Montanarodecc6a42003-01-01 20:07:49 +0000911 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000912 OSF*)
913 BASECFLAGS="$BASECFLAGS -mieee"
914 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000915 esac
916 ;;
917
918*)
919 case $ac_sys_system in
920 OpenUNIX*|UnixWare*)
921 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
922 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000923 OSF*)
924 BASECFLAGS="$BASECFLAGS -ieee -std"
925 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000926 SCO_SV*)
927 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
928 ;;
929 esac
930 ;;
931esac
932
Fred Drakee1ceaa02001-12-04 20:55:47 +0000933if test "$Py_DEBUG" = 'true'; then
934 :
935else
936 OPT="-DNDEBUG $OPT"
937fi
938
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000939if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000940then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000941 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000942fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000943
Neal Norwitz020c46a2006-01-07 21:39:28 +0000944# disable check for icc since it seems to pass, but generates a warning
945if test "$CC" = icc
946then
947 ac_cv_opt_olimit_ok=no
948fi
949
Guido van Rossum91922671997-10-09 20:24:13 +0000950AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
951AC_CACHE_VAL(ac_cv_opt_olimit_ok,
952[ac_save_cc="$CC"
953CC="$CC -OPT:Olimit=0"
954AC_TRY_RUN([int main() { return 0; }],
955 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000956 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000957 ac_cv_opt_olimit_ok=no)
958CC="$ac_save_cc"])
959AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000960if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000961 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000962 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
963 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
964 # environment?
965 Darwin*)
966 ;;
967 *)
968 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
969 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000970 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000971else
972 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
973 AC_CACHE_VAL(ac_cv_olimit_ok,
974 [ac_save_cc="$CC"
975 CC="$CC -Olimit 1500"
976 AC_TRY_RUN([int main() { return 0; }],
977 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000978 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000979 ac_cv_olimit_ok=no)
980 CC="$ac_save_cc"])
981 AC_MSG_RESULT($ac_cv_olimit_ok)
982 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000983 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000984 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000985fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000986
Thomas Wouters89f507f2006-12-13 04:49:30 +0000987# Check whether GCC supports PyArg_ParseTuple format
988if test "$GCC" = "yes"
989then
990 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
991 save_CFLAGS=$CFLAGS
992 CFLAGS="$CFLAGS -Werror"
993 AC_TRY_COMPILE([
994 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
995 ],,
996 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
997 AC_MSG_RESULT(yes),
998 AC_MSG_RESULT(no)
999 )
1000 CFLAGS=$save_CFLAGS
1001fi
1002
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001003# On some compilers, pthreads are available without further options
1004# (e.g. MacOS X). On some of these systems, the compiler will not
1005# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1006# So we have to see first whether pthreads are available without
1007# options before we can check whether -Kpthread improves anything.
1008AC_MSG_CHECKING(whether pthreads are available without options)
1009AC_CACHE_VAL(ac_cv_pthread_is_default,
1010[AC_TRY_RUN([
1011#include <pthread.h>
1012
1013void* routine(void* p){return NULL;}
1014
1015int main(){
1016 pthread_t p;
1017 if(pthread_create(&p,NULL,routine,NULL)!=0)
1018 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001019 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001020 return 0;
1021}
1022],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001023[
1024 ac_cv_pthread_is_default=yes
1025 ac_cv_kthread=no
1026 ac_cv_pthread=no
1027],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001028 ac_cv_pthread_is_default=no,
1029 ac_cv_pthread_is_default=no)
1030])
1031AC_MSG_RESULT($ac_cv_pthread_is_default)
1032
1033
1034if test $ac_cv_pthread_is_default = yes
1035then
1036 ac_cv_kpthread=no
1037else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001038# -Kpthread, if available, provides the right #defines
1039# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001040# Some compilers won't report that they do not support -Kpthread,
1041# so we need to run a program to see whether it really made the
1042# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001043AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1044AC_CACHE_VAL(ac_cv_kpthread,
1045[ac_save_cc="$CC"
1046CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001047AC_TRY_RUN([
1048#include <pthread.h>
1049
1050void* routine(void* p){return NULL;}
1051
1052int main(){
1053 pthread_t p;
1054 if(pthread_create(&p,NULL,routine,NULL)!=0)
1055 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001056 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001057 return 0;
1058}
1059],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001060 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001061 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001062 ac_cv_kpthread=no)
1063CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001064AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001065fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001066
Skip Montanarod8d39a02003-07-10 20:44:10 +00001067if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001068then
1069# -Kthread, if available, provides the right #defines
1070# and linker options to make pthread_create available
1071# Some compilers won't report that they do not support -Kthread,
1072# so we need to run a program to see whether it really made the
1073# function available.
1074AC_MSG_CHECKING(whether $CC accepts -Kthread)
1075AC_CACHE_VAL(ac_cv_kthread,
1076[ac_save_cc="$CC"
1077CC="$CC -Kthread"
1078AC_TRY_RUN([
1079#include <pthread.h>
1080
1081void* routine(void* p){return NULL;}
1082
1083int main(){
1084 pthread_t p;
1085 if(pthread_create(&p,NULL,routine,NULL)!=0)
1086 return 1;
1087 (void)pthread_detach(p);
1088 return 0;
1089}
1090],
1091 ac_cv_kthread=yes,
1092 ac_cv_kthread=no,
1093 ac_cv_kthread=no)
1094CC="$ac_save_cc"])
1095AC_MSG_RESULT($ac_cv_kthread)
1096fi
1097
Skip Montanarod8d39a02003-07-10 20:44:10 +00001098if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001099then
1100# -pthread, if available, provides the right #defines
1101# and linker options to make pthread_create available
1102# Some compilers won't report that they do not support -pthread,
1103# so we need to run a program to see whether it really made the
1104# function available.
1105AC_MSG_CHECKING(whether $CC accepts -pthread)
1106AC_CACHE_VAL(ac_cv_thread,
1107[ac_save_cc="$CC"
1108CC="$CC -pthread"
1109AC_TRY_RUN([
1110#include <pthread.h>
1111
1112void* routine(void* p){return NULL;}
1113
1114int main(){
1115 pthread_t p;
1116 if(pthread_create(&p,NULL,routine,NULL)!=0)
1117 return 1;
1118 (void)pthread_detach(p);
1119 return 0;
1120}
1121],
1122 ac_cv_pthread=yes,
1123 ac_cv_pthread=no,
1124 ac_cv_pthread=no)
1125CC="$ac_save_cc"])
1126AC_MSG_RESULT($ac_cv_pthread)
1127fi
1128
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001129# If we have set a CC compiler flag for thread support then
1130# check if it works for CXX, too.
1131ac_cv_cxx_thread=no
1132if test ! -z "$CXX"
1133then
1134AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1135ac_save_cxx="$CXX"
1136
1137if test "$ac_cv_kpthread" = "yes"
1138then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001139 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001140 ac_cv_cxx_thread=yes
1141elif test "$ac_cv_kthread" = "yes"
1142then
1143 CXX="$CXX -Kthread"
1144 ac_cv_cxx_thread=yes
1145elif test "$ac_cv_pthread" = "yes"
1146then
1147 CXX="$CXX -pthread"
1148 ac_cv_cxx_thread=yes
1149fi
1150
1151if test $ac_cv_cxx_thread = yes
1152then
1153 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1154 $CXX -c conftest.$ac_ext 2>&5
1155 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1156 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1157 then
1158 ac_cv_cxx_thread=yes
1159 else
1160 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001161 fi
1162 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001163fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001164AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001165fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001166CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001167
Fred Drakece81d592000-07-09 14:39:29 +00001168dnl # check for ANSI or K&R ("traditional") preprocessor
1169dnl AC_MSG_CHECKING(for C preprocessor type)
1170dnl AC_TRY_COMPILE([
1171dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1172dnl int foo;
1173dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1174dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1175dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001176
Guido van Rossum627b2d71993-12-24 10:39:16 +00001177# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001178AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001179AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1180fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001181ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001182shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001183unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001184sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1185sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001186sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001187sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001188sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001189sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001190bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001191AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001192AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001193
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001194# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001195AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001196#ifdef HAVE_CURSES_H
1197#include <curses.h>
1198#endif
1199])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001200
Martin v. Löwis11017b12006-01-14 18:12:57 +00001201# On Linux, netlink.h requires asm/types.h
1202AC_CHECK_HEADERS(linux/netlink.h,,,[
1203#ifdef HAVE_ASM_TYPES_H
1204#include <asm/types.h>
1205#endif
1206#ifdef HAVE_SYS_SOCKET_H
1207#include <sys/socket.h>
1208#endif
1209])
1210
Guido van Rossum627b2d71993-12-24 10:39:16 +00001211# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001212was_it_defined=no
1213AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001214AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1215 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1216])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001217AC_MSG_RESULT($was_it_defined)
1218
Neal Norwitz11690112002-07-30 01:08:28 +00001219# Check whether using makedev requires defining _OSF_SOURCE
1220AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001221AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001222 [ makedev(0, 0) ],
1223 ac_cv_has_makedev=yes,
1224 ac_cv_has_makedev=no)
1225if test "$ac_cv_has_makedev" = "no"; then
1226 # we didn't link, try if _OSF_SOURCE will allow us to link
1227 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001228#define _OSF_SOURCE 1
1229#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001230 ],
1231 [ makedev(0, 0) ],
1232 ac_cv_has_makedev=yes,
1233 ac_cv_has_makedev=no)
1234 if test "$ac_cv_has_makedev" = "yes"; then
1235 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1236 fi
1237fi
1238AC_MSG_RESULT($ac_cv_has_makedev)
1239if test "$ac_cv_has_makedev" = "yes"; then
1240 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1241fi
1242
Martin v. Löwis399a6892002-10-04 10:22:02 +00001243# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1244# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1245# defined, but the compiler does not support pragma redefine_extname,
1246# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1247# structures (such as rlimit64) without declaring them. As a
1248# work-around, disable LFS on such configurations
1249
1250use_lfs=yes
1251AC_MSG_CHECKING(Solaris LFS bug)
1252AC_TRY_COMPILE([
1253#define _LARGEFILE_SOURCE 1
1254#define _FILE_OFFSET_BITS 64
1255#include <sys/resource.h>
1256],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1257AC_MSG_RESULT($sol_lfs_bug)
1258if test "$sol_lfs_bug" = "yes"; then
1259 use_lfs=no
1260fi
1261
1262if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001263# Two defines needed to enable largefile support on various platforms
1264# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001265AC_DEFINE(_LARGEFILE_SOURCE, 1,
1266[This must be defined on some systems to enable large file support.])
1267AC_DEFINE(_FILE_OFFSET_BITS, 64,
1268[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001269fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001270
Guido van Rossum300fda71996-08-19 21:58:16 +00001271# Add some code to confdefs.h so that the test for off_t works on SCO
1272cat >> confdefs.h <<\EOF
1273#if defined(SCO_DS)
1274#undef _OFF_T
1275#endif
1276EOF
1277
Guido van Rossumef2255b2000-03-10 22:30:29 +00001278# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001279AC_TYPE_MODE_T
1280AC_TYPE_OFF_T
1281AC_TYPE_PID_T
1282AC_TYPE_SIGNAL
1283AC_TYPE_SIZE_T
1284AC_TYPE_UID_T
Christian Heimes400adb02008-02-01 08:12:03 +00001285AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001286 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001287
Guido van Rossumef2255b2000-03-10 22:30:29 +00001288# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001289# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001290AC_CHECK_SIZEOF(int, 4)
1291AC_CHECK_SIZEOF(long, 4)
1292AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001293AC_CHECK_SIZEOF(short, 2)
1294AC_CHECK_SIZEOF(float, 4)
1295AC_CHECK_SIZEOF(double, 8)
1296AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001297AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001298AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001299
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001300AC_MSG_CHECKING(for long long support)
1301have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001302AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1303 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1304 have_long_long=yes
1305])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001306AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001307if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001308AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001309fi
1310
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001311AC_MSG_CHECKING(for long double support)
1312have_long_double=no
1313AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1314 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1315 have_long_double=yes
1316])
1317AC_MSG_RESULT($have_long_double)
1318if test "$have_long_double" = yes ; then
1319AC_CHECK_SIZEOF(long double, 16)
1320fi
1321
1322
Thomas Woutersb2137042007-02-01 18:02:27 +00001323AC_MSG_CHECKING(for _Bool support)
1324have_c99_bool=no
1325AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1326 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1327 have_c99_bool=yes
1328])
1329AC_MSG_RESULT($have_c99_bool)
1330if test "$have_c99_bool" = yes ; then
1331AC_CHECK_SIZEOF(_Bool, 1)
1332fi
1333
Thomas Wouters89f507f2006-12-13 04:49:30 +00001334AC_CHECK_TYPES(uintptr_t,
1335 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1336 [], [#ifdef HAVE_STDINT_H
1337 #include <stdint.h>
1338 #endif])
1339
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001340
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001341# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1342AC_MSG_CHECKING(size of off_t)
1343AC_CACHE_VAL(ac_cv_sizeof_off_t,
1344[AC_TRY_RUN([#include <stdio.h>
1345#include <sys/types.h>
1346main()
1347{
1348 FILE *f=fopen("conftestval", "w");
1349 if (!f) exit(1);
1350 fprintf(f, "%d\n", sizeof(off_t));
1351 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001352}],
1353ac_cv_sizeof_off_t=`cat conftestval`,
1354ac_cv_sizeof_off_t=0,
1355ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001356])
1357AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001358AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1359[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001360
1361AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001362if test "$have_long_long" = yes -a \
1363 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1364 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001365 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1366 [Defined to enable large file support when an off_t is bigger than a long
1367 and long long is available and at least as big as an off_t. You may need
1368 to add some flags for configuration and compilation to enable this mode.
1369 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001370 AC_MSG_RESULT(yes)
1371else
1372 AC_MSG_RESULT(no)
1373fi
1374
Fred Drakea3f6e912000-06-29 20:44:47 +00001375# AC_CHECK_SIZEOF() doesn't include <time.h>.
1376AC_MSG_CHECKING(size of time_t)
1377AC_CACHE_VAL(ac_cv_sizeof_time_t,
1378[AC_TRY_RUN([#include <stdio.h>
1379#include <time.h>
1380main()
1381{
1382 FILE *f=fopen("conftestval", "w");
1383 if (!f) exit(1);
1384 fprintf(f, "%d\n", sizeof(time_t));
1385 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001386}],
1387ac_cv_sizeof_time_t=`cat conftestval`,
1388ac_cv_sizeof_time_t=0,
1389ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001390])
1391AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001392AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1393[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001394
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001395
Trent Mick635f6fb2000-08-23 21:33:05 +00001396# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001397ac_save_cc="$CC"
1398if test "$ac_cv_kpthread" = "yes"
1399then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001400elif test "$ac_cv_kthread" = "yes"
1401then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001402elif test "$ac_cv_pthread" = "yes"
1403then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001404fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001405AC_MSG_CHECKING(for pthread_t)
1406have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001407AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001408AC_MSG_RESULT($have_pthread_t)
1409if test "$have_pthread_t" = yes ; then
1410 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1411 AC_MSG_CHECKING(size of pthread_t)
1412 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1413 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001414#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001415 main()
1416 {
1417 FILE *f=fopen("conftestval", "w");
1418 if (!f) exit(1);
1419 fprintf(f, "%d\n", sizeof(pthread_t));
1420 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001421 }],
1422 ac_cv_sizeof_pthread_t=`cat conftestval`,
1423 ac_cv_sizeof_pthread_t=0,
1424 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001425 ])
1426 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001427 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1428 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001429fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001430CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001431
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001432
Georg Brandl93de2162008-07-16 02:21:06 +00001433
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001434AC_SUBST(OTHER_LIBTOOL_OPT)
1435case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001436 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001437 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1438 ;;
1439 Darwin/*)
1440 OTHER_LIBTOOL_OPT=""
1441 ;;
1442esac
1443
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001444AC_SUBST(LIBTOOL_CRUFT)
1445case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001446 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001447 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1448 if test "${enable_universalsdk}"; then
1449 :
1450 else
1451 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1452 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001453 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001454 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001455 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001456 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1457 if test ${gcc_version} '<' 4.0
1458 then
1459 LIBTOOL_CRUFT="-lcc_dynamic"
1460 else
1461 LIBTOOL_CRUFT=""
1462 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001463 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001464 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001465 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001466esac
1467
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001468AC_MSG_CHECKING(for --enable-framework)
1469if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001470then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001471 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001472 # -F. is needed to allow linking to the framework while
1473 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001474 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1475 [Define if you want to produce an OpenStep/Rhapsody framework
1476 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001477 AC_MSG_RESULT(yes)
1478else
1479 AC_MSG_RESULT(no)
1480fi
1481
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001482AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001483case $ac_sys_system/$ac_sys_release in
1484 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001485 AC_DEFINE(WITH_DYLD, 1,
1486 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1487 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1488 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001489 AC_MSG_RESULT(always on for Darwin)
1490 ;;
1491 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001492 AC_MSG_RESULT(no)
1493 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001494esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001495
Guido van Rossumac405f61994-09-12 10:56:06 +00001496# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001497AC_SUBST(SO)
1498AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001499AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001500AC_SUBST(CCSHARED)
1501AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001502# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001503# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001504AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001505if test -z "$SO"
1506then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001507 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001508 hp*|HP*)
1509 case `uname -m` in
1510 ia64) SO=.so;;
1511 *) SO=.sl;;
1512 esac
1513 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001514 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001515 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001516 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001517else
1518 # this might also be a termcap variable, see #610332
1519 echo
1520 echo '====================================================================='
1521 echo '+ +'
1522 echo '+ WARNING: You have set SO in your environment. +'
1523 echo '+ Do you really mean to change the extension for shared libraries? +'
1524 echo '+ Continuing in 10 seconds to let you to ponder. +'
1525 echo '+ +'
1526 echo '====================================================================='
1527 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001528fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001529AC_MSG_RESULT($SO)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001530AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001531# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001532# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001533# (Shared libraries in this instance are shared modules to be loaded into
1534# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001535AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001536if test -z "$LDSHARED"
1537then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001538 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001539 AIX*)
1540 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001541 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001542 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001543 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001544 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001545 SunOS/5*)
1546 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001547 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001548 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001549 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001550 hp*|HP*)
1551 if test "$GCC" = "yes"
1552 then LDSHARED='$(CC) -shared'
1553 else LDSHARED='ld -b';
1554 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001555 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001556 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001557 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1558 if test "$enable_framework" ; then
1559 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001560 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1561 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001562 else
1563 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001564 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001565 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001566 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001567 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1568 if test "$enable_framework" ; then
1569 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001570 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1571 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001572 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001573 # No framework, use the Python app as bundle-loader
1574 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001575 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001576 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001577 Darwin/*)
1578 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1579 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001580
Georg Brandlfcaf9102008-07-16 02:17:56 +00001581 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001582 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001583 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001584 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001585 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001586 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1587 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001588 else
1589 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1590 if test "$enable_framework" ; then
1591 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001592 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1593 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001594 else
1595 # No framework, use the Python app as bundle-loader
1596 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1597 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1598 fi
1599 fi
1600 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001601 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001602 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001603 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001604 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001605 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001606 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001607 else
1608 LDSHARED="ld -Bshareable ${LDFLAGS}"
1609 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001610 OpenBSD*)
1611 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1612 then
1613 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1614 else
1615 case `uname -r` in
1616 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1617 LDSHARED="ld -Bshareable ${LDFLAGS}"
1618 ;;
1619 *)
1620 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1621 ;;
1622 esac
1623 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001624 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001625 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001626 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001627 then LDSHARED='$(CC) -shared'
1628 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001629 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001630 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001631 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001632 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001633 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001634 *) LDSHARED="ld";;
1635 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001636fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001637AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001638BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001639# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001640# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001641AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001642if test -z "$CCSHARED"
1643then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001644 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001645 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001646 then CCSHARED="-fPIC";
1647 elif test `uname -p` = sparc;
1648 then CCSHARED="-xcode=pic32";
1649 else CCSHARED="-Kpic";
1650 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001651 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001652 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001653 else CCSHARED="+z";
1654 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001655 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001656 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001657 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001658 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001659 if test "$GCC" = "yes"
1660 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001661 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001662 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001663 SCO_SV*)
1664 if test "$GCC" = "yes"
1665 then CCSHARED="-fPIC"
1666 else CCSHARED="-Kpic -belf"
1667 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001668 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001669 IRIX*/6*) case $CC in
1670 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001671 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001672 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001673 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001674 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001675fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001676AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001677# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001678# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001679AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001680if test -z "$LINKFORSHARED"
1681then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001682 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001683 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001684 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001685 LINKFORSHARED="-Wl,-E -Wl,+s";;
1686# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001687 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001688 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001689 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001690 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001691 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1692 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001693 # not used by the core itself but which needs to be in the core so
1694 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001695 # -prebind is no longer used, because it actually seems to give a
1696 # slowdown in stead of a speedup, maybe due to the large number of
1697 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001698
1699 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001700 if test "$enable_framework"
1701 then
Jack Jansenda49e192005-01-07 13:08:22 +00001702 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001703 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001704 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001705 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001706 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001707 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001708 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001709 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1710 then
1711 LINKFORSHARED="-Wl,--export-dynamic"
1712 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001713 SunOS/5*) case $CC in
1714 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001715 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001716 then
1717 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001718 fi;;
1719 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001720 CYGWIN*)
1721 if test $enable_shared = "no"
1722 then
1723 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1724 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001725 QNX*)
1726 # -Wl,-E causes the symbols to be added to the dynamic
1727 # symbol table so that they can be found when a module
1728 # is loaded. -N 2048K causes the stack size to be set
1729 # to 2048 kilobytes so that the stack doesn't overflow
1730 # when running test_compile.py.
1731 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001732 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001733fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001734AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001735
Georg Brandl93de2162008-07-16 02:21:06 +00001736
Neil Schemenauer61c51152001-01-26 16:18:16 +00001737AC_SUBST(CFLAGSFORSHARED)
1738AC_MSG_CHECKING(CFLAGSFORSHARED)
1739if test ! "$LIBRARY" = "$LDLIBRARY"
1740then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001741 case $ac_sys_system in
1742 CYGWIN*)
1743 # Cygwin needs CCSHARED when building extension DLLs
1744 # but not when building the interpreter DLL.
1745 CFLAGSFORSHARED='';;
1746 *)
1747 CFLAGSFORSHARED='$(CCSHARED)'
1748 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001749fi
1750AC_MSG_RESULT($CFLAGSFORSHARED)
1751
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001752# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1753# library (with --enable-shared).
1754# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001755# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1756# if it is not required, since it creates a dependency of the shared library
1757# to LIBS. This, in turn, means that applications linking the shared libpython
1758# don't need to link LIBS explicitly. The default should be only changed
1759# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001760AC_SUBST(SHLIBS)
1761AC_MSG_CHECKING(SHLIBS)
1762case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001763 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001764 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001765esac
1766AC_MSG_RESULT($SHLIBS)
1767
1768
Guido van Rossum627b2d71993-12-24 10:39:16 +00001769# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001770AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1771AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001772
1773# only check for sem_ini if thread support is requested
1774if test "$with_threads" = "yes" -o -z "$with_threads"; then
1775 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1776 # posix4 on Solaris 2.6
1777 # pthread (first!) on Linux
1778fi
1779
Martin v. Löwis19d17342003-06-14 21:03:05 +00001780# check if we need libintl for locale functions
1781AC_CHECK_LIB(intl, textdomain,
1782 AC_DEFINE(WITH_LIBINTL, 1,
1783 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001784
1785# checks for system dependent C++ extensions support
1786case "$ac_sys_system" in
1787 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1788 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1789 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001790 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1791 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1792 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001793 AC_MSG_RESULT(yes)],
1794 [AC_MSG_RESULT(no)]);;
1795 *) ;;
1796esac
1797
Guido van Rossum70c7f481998-03-26 18:44:10 +00001798# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001799AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001800AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001801
Guido van Rossumc5a39031996-07-31 17:35:03 +00001802AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001803AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001804 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1805[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001806AC_MSG_RESULT($withval)
1807LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001808],
1809[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001810
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001811# Check for use of the system libffi library
1812AC_MSG_CHECKING(for --with-system-ffi)
1813AC_ARG_WITH(system_ffi,
1814 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1815
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001816AC_MSG_RESULT($with_system_ffi)
1817
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001818# Determine if signalmodule should be used.
1819AC_SUBST(USE_SIGNAL_MODULE)
1820AC_SUBST(SIGNAL_OBJS)
1821AC_MSG_CHECKING(for --with-signal-module)
1822AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001823 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001824
1825if test -z "$with_signal_module"
1826then with_signal_module="yes"
1827fi
1828AC_MSG_RESULT($with_signal_module)
1829
1830if test "${with_signal_module}" = "yes"; then
1831 USE_SIGNAL_MODULE=""
1832 SIGNAL_OBJS=""
1833else
1834 USE_SIGNAL_MODULE="#"
1835 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1836fi
1837
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001838# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001839AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001840USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001841
Guido van Rossum54d93d41997-01-22 20:51:58 +00001842AC_MSG_CHECKING(for --with-dec-threads)
1843AC_SUBST(LDLAST)
1844AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001845 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1846[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001847AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001848LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001849if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001850 with_thread="$withval";
1851fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001852[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001853
Martin v. Löwis11437992002-04-12 09:54:03 +00001854# Templates for things AC_DEFINEd more than once.
1855# For a single AC_DEFINE, no template is needed.
1856AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1857AH_TEMPLATE(_REENTRANT,
1858 [Define to force use of thread-safe errno, h_errno, and other functions])
1859AH_TEMPLATE(WITH_THREAD,
1860 [Define if you want to compile in rudimentary thread support])
1861
Guido van Rossum54d93d41997-01-22 20:51:58 +00001862AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001863dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001864AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001865 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001866
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001867# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001868dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001869AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001870 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1871 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001872
1873if test -z "$with_threads"
1874then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001875fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001876AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001877
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001878AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001879if test "$with_threads" = "no"
1880then
1881 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001882elif test "$ac_cv_pthread_is_default" = yes
1883then
1884 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001885 # Defining _REENTRANT on system with POSIX threads should not hurt.
1886 AC_DEFINE(_REENTRANT)
1887 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001888 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001889elif test "$ac_cv_kpthread" = "yes"
1890then
1891 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001892 if test "$ac_cv_cxx_thread" = "yes"; then
1893 CXX="$CXX -Kpthread"
1894 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001895 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001896 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001897 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001898elif test "$ac_cv_kthread" = "yes"
1899then
1900 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001901 if test "$ac_cv_cxx_thread" = "yes"; then
1902 CXX="$CXX -Kthread"
1903 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001904 AC_DEFINE(WITH_THREAD)
1905 posix_threads=yes
1906 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001907elif test "$ac_cv_pthread" = "yes"
1908then
1909 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001910 if test "$ac_cv_cxx_thread" = "yes"; then
1911 CXX="$CXX -pthread"
1912 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001913 AC_DEFINE(WITH_THREAD)
1914 posix_threads=yes
1915 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001916else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001917 if test ! -z "$with_threads" -a -d "$with_threads"
1918 then LDFLAGS="$LDFLAGS -L$with_threads"
1919 fi
1920 if test ! -z "$withval" -a -d "$withval"
1921 then LDFLAGS="$LDFLAGS -L$withval"
1922 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001923
1924 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001925 # define _POSIX_THREADS in unistd.h. Some apparently don't
1926 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001927 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1928 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001929 [
1930#include <unistd.h>
1931#ifdef _POSIX_THREADS
1932yes
1933#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001934 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1935 AC_MSG_RESULT($unistd_defines_pthreads)
1936
Martin v. Löwis130fb172001-07-19 11:00:41 +00001937 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001938 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1939 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001940 AC_DEFINE(HURD_C_THREADS, 1,
1941 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001942 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001943 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001944 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1945 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001946 AC_DEFINE(MACH_C_THREADS, 1,
1947 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001948 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001949 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001950 AC_ARG_WITH([pth],
1951 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1952 [AC_MSG_RESULT($withval)
1953 AC_DEFINE([WITH_THREAD])
1954 AC_DEFINE([HAVE_PTH], 1,
1955 [Define if you have GNU PTH threads.])
1956 LIBS="-lpth $LIBS"
1957 THREADOBJ="Python/thread.o"],
1958 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001959
1960 # Just looking for pthread_create in libpthread is not enough:
1961 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1962 # So we really have to include pthread.h, and then link.
1963 _libs=$LIBS
1964 LIBS="$LIBS -lpthread"
1965 AC_MSG_CHECKING([for pthread_create in -lpthread])
1966 AC_TRY_LINK([#include <pthread.h>
1967
1968void * start_routine (void *arg) { exit (0); }], [
1969pthread_create (NULL, NULL, start_routine, NULL)], [
1970 AC_MSG_RESULT(yes)
1971 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001972 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001973 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001974 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001975 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001976 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001977 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001978 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1979 AC_DEFINE(ATHEOS_THREADS, 1,
1980 [Define this if you have AtheOS threads.])
1981 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001982 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001983 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001984 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001985 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001986 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001987 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001988 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001989 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001990 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001991 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001992 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001993 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001994 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001995 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001996 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001997 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001998 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00001999 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002000
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002001 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2002 LIBS="$LIBS -lmpc"
2003 THREADOBJ="Python/thread.o"
2004 USE_THREAD_MODULE=""])
2005
2006 if test "$posix_threads" != "yes"; then
2007 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2008 LIBS="$LIBS -lthread"
2009 THREADOBJ="Python/thread.o"
2010 USE_THREAD_MODULE=""])
2011 fi
2012
2013 if test "$USE_THREAD_MODULE" != "#"
2014 then
2015 # If the above checks didn't disable threads, (at least) OSF1
2016 # needs this '-threads' argument during linking.
2017 case $ac_sys_system in
2018 OSF1) LDLAST=-threads;;
2019 esac
2020 fi
2021fi
2022
2023if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002024 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002025 AC_DEFINE(_POSIX_THREADS, 1,
2026 [Define if you have POSIX threads,
2027 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002028 fi
2029
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002030 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2031 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002032 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2033 Defined for Solaris 2.6 bug in pthread header.)
2034 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002035 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002036 Define if the Posix semaphores do not work on your system)
2037 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002038 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2039 Define if the Posix semaphores do not work on your system)
2040 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002041 esac
2042
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002043 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2044 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2045 [AC_TRY_RUN([#include <pthread.h>
2046 void *foo(void *parm) {
2047 return NULL;
2048 }
2049 main() {
2050 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002051 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002052 if (pthread_attr_init(&attr)) exit(-1);
2053 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002054 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002055 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002056 }],
2057 ac_cv_pthread_system_supported=yes,
2058 ac_cv_pthread_system_supported=no,
2059 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002060 ])
2061 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2062 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002063 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002064 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002065 AC_CHECK_FUNCS(pthread_sigmask,
2066 [case $ac_sys_system in
2067 CYGWIN*)
2068 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2069 [Define if pthread_sigmask() does not work on your system.])
2070 ;;
2071 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002072fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002073
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002074
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002075# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002076AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002077AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002078AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002079[ --enable-ipv6 Enable ipv6 (with ipv4) support
2080 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002081[ case "$enableval" in
2082 no)
2083 AC_MSG_RESULT(no)
2084 ipv6=no
2085 ;;
2086 *) AC_MSG_RESULT(yes)
2087 AC_DEFINE(ENABLE_IPV6)
2088 ipv6=yes
2089 ;;
2090 esac ],
2091
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002092[
2093dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002094 AC_TRY_RUN([ /* AF_INET6 available check */
2095#include <sys/types.h>
2096#include <sys/socket.h>
2097main()
2098{
2099 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2100 exit(1);
2101 else
2102 exit(0);
2103}
2104],
2105 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002106 ipv6=yes,
2107 AC_MSG_RESULT(no)
2108 ipv6=no,
2109 AC_MSG_RESULT(no)
2110 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002111)
2112
2113if test "$ipv6" = "yes"; then
2114 AC_MSG_CHECKING(if RFC2553 API is available)
2115 AC_TRY_COMPILE([#include <sys/types.h>
2116#include <netinet/in.h>],
2117 [struct sockaddr_in6 x;
2118x.sin6_scope_id;],
2119 AC_MSG_RESULT(yes)
2120 ipv6=yes,
2121 AC_MSG_RESULT(no, IPv6 disabled)
2122 ipv6=no)
2123fi
2124
2125if test "$ipv6" = "yes"; then
2126 AC_DEFINE(ENABLE_IPV6)
2127fi
2128])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002129
2130ipv6type=unknown
2131ipv6lib=none
2132ipv6trylibc=no
2133
2134if test "$ipv6" = "yes"; then
2135 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002136 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2137 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002138 case $i in
2139 inria)
2140 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002141 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002142#include <netinet/in.h>
2143#ifdef IPV6_INRIA_VERSION
2144yes
2145#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002146 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002147 ;;
2148 kame)
2149 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002150 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002151#include <netinet/in.h>
2152#ifdef __KAME__
2153yes
2154#endif],
2155 [ipv6type=$i;
2156 ipv6lib=inet6
2157 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002158 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002159 ;;
2160 linux-glibc)
2161 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002162 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002163#include <features.h>
2164#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2165yes
2166#endif],
2167 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002168 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002169 ;;
2170 linux-inet6)
2171 dnl http://www.v6.linux.or.jp/
2172 if test -d /usr/inet6; then
2173 ipv6type=$i
2174 ipv6lib=inet6
2175 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002176 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002177 fi
2178 ;;
2179 solaris)
2180 if test -f /etc/netconfig; then
2181 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2182 ipv6type=$i
2183 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002184 fi
2185 fi
2186 ;;
2187 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002188 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002189#include <sys/param.h>
2190#ifdef _TOSHIBA_INET6
2191yes
2192#endif],
2193 [ipv6type=$i;
2194 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002195 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002196 ;;
2197 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002198 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002199#include </usr/local/v6/include/sys/v6config.h>
2200#ifdef __V6D__
2201yes
2202#endif],
2203 [ipv6type=$i;
2204 ipv6lib=v6;
2205 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002206 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002207 ;;
2208 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002209 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002210#include <sys/param.h>
2211#ifdef _ZETA_MINAMI_INET6
2212yes
2213#endif],
2214 [ipv6type=$i;
2215 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002216 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002217 ;;
2218 esac
2219 if test "$ipv6type" != "unknown"; then
2220 break
2221 fi
2222 done
2223 AC_MSG_RESULT($ipv6type)
2224fi
2225
2226if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2227 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2228 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2229 echo "using lib$ipv6lib"
2230 else
2231 if test $ipv6trylibc = "yes"; then
2232 echo "using libc"
2233 else
2234 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2235 echo "You need to fetch lib$ipv6lib.a from appropriate"
2236 echo 'ipv6 kit and compile beforehand.'
2237 exit 1
2238 fi
2239 fi
2240fi
2241
Georg Brandl93de2162008-07-16 02:21:06 +00002242AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2243AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2244 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2245 AC_MSG_RESULT(yes),
2246 AC_MSG_RESULT(no)
2247)
2248
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002249# Check for --with-doc-strings
2250AC_MSG_CHECKING(for --with-doc-strings)
2251AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002252 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002253
2254if test -z "$with_doc_strings"
2255then with_doc_strings="yes"
2256fi
2257if test "$with_doc_strings" != "no"
2258then
2259 AC_DEFINE(WITH_DOC_STRINGS, 1,
2260 [Define if you want documentation strings in extension modules])
2261fi
2262AC_MSG_RESULT($with_doc_strings)
2263
Neil Schemenauera35c6882001-02-27 04:45:05 +00002264# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002265AC_MSG_CHECKING(for --with-tsc)
2266AC_ARG_WITH(tsc,
2267[ --with(out)-tsc enable/disable timestamp counter profile], [
2268if test "$withval" != no
2269then
2270 AC_DEFINE(WITH_TSC, 1,
2271 [Define to profile with the Pentium timestamp counter])
2272 AC_MSG_RESULT(yes)
2273else AC_MSG_RESULT(no)
2274fi],
2275[AC_MSG_RESULT(no)])
2276
2277# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002278AC_MSG_CHECKING(for --with-pymalloc)
2279AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002280 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002281
2282if test -z "$with_pymalloc"
2283then with_pymalloc="yes"
2284fi
2285if test "$with_pymalloc" != "no"
2286then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002287 AC_DEFINE(WITH_PYMALLOC, 1,
2288 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002289fi
2290AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002291
Barry Warsawef82cd72000-06-30 16:21:01 +00002292# Check for --with-wctype-functions
2293AC_MSG_CHECKING(for --with-wctype-functions)
2294AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002295 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2296[
Barry Warsawef82cd72000-06-30 16:21:01 +00002297if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002298then
2299 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2300 [Define if you want wctype.h functions to be used instead of the
2301 one supplied by Python itself. (see Include/unicodectype.h).])
2302 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002303else AC_MSG_RESULT(no)
2304fi],
2305[AC_MSG_RESULT(no)])
2306
Guido van Rossum68242b51996-05-28 22:53:03 +00002307# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002308AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002309DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002310
Guido van Rossume97ee181999-12-20 21:27:22 +00002311# the dlopen() function means we might want to use dynload_shlib.o. some
2312# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002313AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002314
2315# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2316# loading of modules.
2317AC_SUBST(DYNLOADFILE)
2318AC_MSG_CHECKING(DYNLOADFILE)
2319if test -z "$DYNLOADFILE"
2320then
2321 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002322 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2323 if test "$ac_cv_func_dlopen" = yes
2324 then DYNLOADFILE="dynload_shlib.o"
2325 else DYNLOADFILE="dynload_aix.o"
2326 fi
2327 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002328 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002329 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2330 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002331 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002332 *)
2333 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2334 # out any dynamic loading
2335 if test "$ac_cv_func_dlopen" = yes
2336 then DYNLOADFILE="dynload_shlib.o"
2337 else DYNLOADFILE="dynload_stub.o"
2338 fi
2339 ;;
2340 esac
2341fi
2342AC_MSG_RESULT($DYNLOADFILE)
2343if test "$DYNLOADFILE" != "dynload_stub.o"
2344then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002345 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2346 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002347fi
2348
Jack Jansenc49e5b72001-06-19 15:00:23 +00002349# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2350
2351AC_SUBST(MACHDEP_OBJS)
2352AC_MSG_CHECKING(MACHDEP_OBJS)
2353if test -z "$MACHDEP_OBJS"
2354then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002355 MACHDEP_OBJS=$extra_machdep_objs
2356else
2357 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002358fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002359AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002360
Guido van Rossum627b2d71993-12-24 10:39:16 +00002361# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002362AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2363 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002364 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002365 getpriority getpwent getspnam getspent getsid getwd \
Christian Heimesd0764e22007-12-04 15:00:33 +00002366 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002367 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002368 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002369 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002370 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002371 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002372 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis92fab752008-03-08 10:40:41 +00002373 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002374
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002375# For some functions, having a definition is not sufficient, since
2376# we want to take their address.
2377AC_MSG_CHECKING(for chroot)
2378AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2379 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2380 AC_MSG_RESULT(yes),
2381 AC_MSG_RESULT(no)
2382)
2383AC_MSG_CHECKING(for link)
2384AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2385 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2386 AC_MSG_RESULT(yes),
2387 AC_MSG_RESULT(no)
2388)
2389AC_MSG_CHECKING(for symlink)
2390AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2391 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2392 AC_MSG_RESULT(yes),
2393 AC_MSG_RESULT(no)
2394)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002395AC_MSG_CHECKING(for fchdir)
2396AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2397 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2398 AC_MSG_RESULT(yes),
2399 AC_MSG_RESULT(no)
2400)
2401AC_MSG_CHECKING(for fsync)
2402AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002403 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002404 AC_MSG_RESULT(yes),
2405 AC_MSG_RESULT(no)
2406)
2407AC_MSG_CHECKING(for fdatasync)
2408AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2409 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2410 AC_MSG_RESULT(yes),
2411 AC_MSG_RESULT(no)
2412)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002413AC_MSG_CHECKING(for epoll)
2414AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2415 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2416 AC_MSG_RESULT(yes),
2417 AC_MSG_RESULT(no)
2418)
2419AC_MSG_CHECKING(for kqueue)
2420AC_TRY_COMPILE([
2421#include <sys/types.h>
2422#include <sys/event.h>
2423 ], int x=kqueue(),
2424 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2425 AC_MSG_RESULT(yes),
2426 AC_MSG_RESULT(no)
2427)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002428# On some systems (eg. FreeBSD 5), we would find a definition of the
2429# functions ctermid_r, setgroups in the library, but no prototype
2430# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2431# address to avoid compiler warnings and potential miscompilations
2432# because of the missing prototypes.
2433
2434AC_MSG_CHECKING(for ctermid_r)
2435AC_TRY_COMPILE([
2436#include "confdefs.h"
2437#include <stdio.h>
2438], void* p = ctermid_r,
2439 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2440 AC_MSG_RESULT(yes),
2441 AC_MSG_RESULT(no)
2442)
2443
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002444AC_MSG_CHECKING(for flock)
2445AC_TRY_COMPILE([
2446#include "confdefs.h"
2447#include <sys/file.h>
2448], void* p = flock,
2449 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2450 AC_MSG_RESULT(yes),
2451 AC_MSG_RESULT(no)
2452)
2453
2454AC_MSG_CHECKING(for getpagesize)
2455AC_TRY_COMPILE([
2456#include "confdefs.h"
2457#include <unistd.h>
2458], void* p = getpagesize,
2459 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2460 AC_MSG_RESULT(yes),
2461 AC_MSG_RESULT(no)
2462)
2463
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002464dnl check for true
2465AC_CHECK_PROGS(TRUE, true, /bin/true)
2466
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002467dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2468dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002469AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002470 AC_CHECK_LIB(resolv, inet_aton)
2471)
2472
Christian Heimesd0764e22007-12-04 15:00:33 +00002473# On Tru64, chflags seems to be present, but calling it will
2474# exit Python
2475AC_MSG_CHECKING(for chflags)
2476AC_TRY_RUN([
2477#include <sys/stat.h>
2478#include <unistd.h>
2479int main(int argc, char*argv[])
2480{
2481 if(chflags(argv[0], 0) != 0)
2482 return 1;
2483 return 0;
2484}
2485],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2486 AC_MSG_RESULT(yes),
2487 AC_MSG_RESULT(no)
2488)
2489
2490AC_MSG_CHECKING(for lchflags)
2491AC_TRY_RUN([
2492#include <sys/stat.h>
2493#include <unistd.h>
2494int main(int argc, char*argv[])
2495{
2496 if(lchflags(argv[0], 0) != 0)
2497 return 1;
2498 return 0;
2499}
2500],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2501 AC_MSG_RESULT(yes),
2502 AC_MSG_RESULT(no)
2503)
2504
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002505dnl Check if system zlib has *Copy() functions
2506dnl
2507dnl On MacOSX the linker will search for dylibs on the entire linker path
2508dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2509dnl to revert to a more traditional unix behaviour and make it possible to
2510dnl override the system libz with a local static library of libz. Temporarily
2511dnl add that flag to our CFLAGS as well to ensure that we check the version
2512dnl of libz that will be used by setup.py.
2513dnl The -L/usr/local/lib is needed as wel to get the same compilation
2514dnl environment as setup.py (and leaving it out can cause configure to use the
2515dnl wrong version of the library)
2516case $ac_sys_system/$ac_sys_release in
2517Darwin/*)
2518 _CUR_CFLAGS="${CFLAGS}"
2519 _CUR_LDFLAGS="${LDFLAGS}"
2520 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2521 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2522 ;;
2523esac
2524
2525AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2526
2527case $ac_sys_system/$ac_sys_release in
2528Darwin/*)
2529 CFLAGS="${_CUR_CFLAGS}"
2530 LDFLAGS="${_CUR_LDFLAGS}"
2531 ;;
2532esac
2533
Martin v. Löwise9416172003-05-03 10:12:45 +00002534AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002535AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002536#include "confdefs.h"
2537#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002538], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002539 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2540 AC_MSG_RESULT(yes),
2541 AC_MSG_RESULT(no)
2542)
2543
2544AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002545AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002546#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002547#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002548#include <sys/socket.h>
2549#include <netinet/in.h>
2550#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002551], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002552 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2553 AC_MSG_RESULT(yes),
2554 AC_MSG_RESULT(no)
2555)
2556
2557AC_MSG_CHECKING(for inet_pton)
2558AC_TRY_COMPILE([
2559#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002560#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002561#include <sys/socket.h>
2562#include <netinet/in.h>
2563#include <arpa/inet.h>
2564], void* p = inet_pton,
2565 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no)
2568)
2569
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002570# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002571AC_MSG_CHECKING(for setgroups)
2572AC_TRY_COMPILE([
2573#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002574#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002575#ifdef HAVE_GRP_H
2576#include <grp.h>
2577#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002578],
2579void* p = setgroups,
2580 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2581 AC_MSG_RESULT(yes),
2582 AC_MSG_RESULT(no)
2583)
2584
Fred Drake8cef4cf2000-06-28 16:40:38 +00002585# check for openpty and forkpty
2586
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002587AC_CHECK_FUNCS(openpty,,
2588 AC_CHECK_LIB(util,openpty,
2589 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2590 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2591 )
2592)
2593AC_CHECK_FUNCS(forkpty,,
2594 AC_CHECK_LIB(util,forkpty,
2595 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2596 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2597 )
2598)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002599
Christian Heimesb186d002008-03-18 15:15:01 +00002600# Stuff for expat.
2601AC_CHECK_FUNCS(memmove)
2602
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002603# check for long file support functions
2604AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2605
Christian Heimesb186d002008-03-18 15:15:01 +00002606AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002607AC_CHECK_FUNCS(getpgrp,
2608 AC_TRY_COMPILE([#include <unistd.h>],
2609 [getpgrp(0);],
2610 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2611 [Define if getpgrp() must be called as getpgrp(0).])
2612 )
2613)
Jack Jansen150753c2003-03-29 22:07:47 +00002614AC_CHECK_FUNCS(setpgrp,
2615 AC_TRY_COMPILE([#include <unistd.h>],
2616 [setpgrp(0,0);],
2617 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2618 [Define if setpgrp() must be called as setpgrp(0, 0).])
2619 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002620)
2621AC_CHECK_FUNCS(gettimeofday,
2622 AC_TRY_COMPILE([#include <sys/time.h>],
2623 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2624 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2625 [Define if gettimeofday() does not have second (timezone) argument
2626 This is the case on Motorola V4 (R40V4.2)])
2627 )
2628)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002629
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002630AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002631AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002632#if defined(MAJOR_IN_MKDEV)
2633#include <sys/mkdev.h>
2634#elif defined(MAJOR_IN_SYSMACROS)
2635#include <sys/sysmacros.h>
2636#else
2637#include <sys/types.h>
2638#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002639],[
2640 makedev(major(0),minor(0));
2641],[
2642 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2643 [Define to 1 if you have the device macros.])
2644 AC_MSG_RESULT(yes)
2645],[
2646 AC_MSG_RESULT(no)
2647])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002648
2649# On OSF/1 V5.1, getaddrinfo is available, but a define
2650# for [no]getaddrinfo in netdb.h.
2651AC_MSG_CHECKING(for getaddrinfo)
2652AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002653#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002654#include <sys/socket.h>
2655#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002656#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002657],[
2658getaddrinfo(NULL, NULL, NULL, NULL);
2659], [
2660AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002661AC_MSG_CHECKING(getaddrinfo bug)
2662AC_TRY_RUN([
2663#include <sys/types.h>
2664#include <netdb.h>
2665#include <string.h>
2666#include <sys/socket.h>
2667#include <netinet/in.h>
2668
2669main()
2670{
2671 int passive, gaierr, inet4 = 0, inet6 = 0;
2672 struct addrinfo hints, *ai, *aitop;
2673 char straddr[INET6_ADDRSTRLEN], strport[16];
2674
2675 for (passive = 0; passive <= 1; passive++) {
2676 memset(&hints, 0, sizeof(hints));
2677 hints.ai_family = AF_UNSPEC;
2678 hints.ai_flags = passive ? AI_PASSIVE : 0;
2679 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002680 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002681 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2682 (void)gai_strerror(gaierr);
2683 goto bad;
2684 }
2685 for (ai = aitop; ai; ai = ai->ai_next) {
2686 if (ai->ai_addr == NULL ||
2687 ai->ai_addrlen == 0 ||
2688 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2689 straddr, sizeof(straddr), strport, sizeof(strport),
2690 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2691 goto bad;
2692 }
2693 switch (ai->ai_family) {
2694 case AF_INET:
2695 if (strcmp(strport, "54321") != 0) {
2696 goto bad;
2697 }
2698 if (passive) {
2699 if (strcmp(straddr, "0.0.0.0") != 0) {
2700 goto bad;
2701 }
2702 } else {
2703 if (strcmp(straddr, "127.0.0.1") != 0) {
2704 goto bad;
2705 }
2706 }
2707 inet4++;
2708 break;
2709 case AF_INET6:
2710 if (strcmp(strport, "54321") != 0) {
2711 goto bad;
2712 }
2713 if (passive) {
2714 if (strcmp(straddr, "::") != 0) {
2715 goto bad;
2716 }
2717 } else {
2718 if (strcmp(straddr, "::1") != 0) {
2719 goto bad;
2720 }
2721 }
2722 inet6++;
2723 break;
2724 case AF_UNSPEC:
2725 goto bad;
2726 break;
2727 default:
2728 /* another family support? */
2729 break;
2730 }
2731 }
2732 }
2733
2734 if (!(inet4 == 0 || inet4 == 2))
2735 goto bad;
2736 if (!(inet6 == 0 || inet6 == 2))
2737 goto bad;
2738
2739 if (aitop)
2740 freeaddrinfo(aitop);
2741 exit(0);
2742
2743 bad:
2744 if (aitop)
2745 freeaddrinfo(aitop);
2746 exit(1);
2747}
2748],
2749AC_MSG_RESULT(good)
2750buggygetaddrinfo=no,
2751AC_MSG_RESULT(buggy)
2752buggygetaddrinfo=yes,
2753AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002754buggygetaddrinfo=yes)], [
2755AC_MSG_RESULT(no)
2756buggygetaddrinfo=yes
2757])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002758
2759if test "$buggygetaddrinfo" = "yes"; then
2760 if test "$ipv6" = "yes"; then
2761 echo 'Fatal: You must get working getaddrinfo() function.'
2762 echo ' or you can specify "--disable-ipv6"'.
2763 exit 1
2764 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002765else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002766 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002767fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002768AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002769
Guido van Rossum627b2d71993-12-24 10:39:16 +00002770# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002771AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002772AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002773AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002774AC_CHECK_MEMBERS([struct stat.st_rdev])
2775AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002776AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002777AC_CHECK_MEMBERS([struct stat.st_gen])
2778AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002779AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002780
2781AC_MSG_CHECKING(for time.h that defines altzone)
2782AC_CACHE_VAL(ac_cv_header_time_altzone,
2783[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2784 ac_cv_header_time_altzone=yes,
2785 ac_cv_header_time_altzone=no)])
2786AC_MSG_RESULT($ac_cv_header_time_altzone)
2787if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002788 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002789fi
2790
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002791was_it_defined=no
2792AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002793AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002794#include <sys/types.h>
2795#include <sys/select.h>
2796#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002797], [;], [
2798 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2799 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2800 (which you can't on SCO ODT 3.0).])
2801 was_it_defined=yes
2802])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002803AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002804
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002805AC_MSG_CHECKING(for addrinfo)
2806AC_CACHE_VAL(ac_cv_struct_addrinfo,
2807AC_TRY_COMPILE([
2808# include <netdb.h>],
2809 [struct addrinfo a],
2810 ac_cv_struct_addrinfo=yes,
2811 ac_cv_struct_addrinfo=no))
2812AC_MSG_RESULT($ac_cv_struct_addrinfo)
2813if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002814 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002815fi
2816
2817AC_MSG_CHECKING(for sockaddr_storage)
2818AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2819AC_TRY_COMPILE([
2820# include <sys/types.h>
2821# include <sys/socket.h>],
2822 [struct sockaddr_storage s],
2823 ac_cv_struct_sockaddr_storage=yes,
2824 ac_cv_struct_sockaddr_storage=no))
2825AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2826if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002828fi
2829
Guido van Rossum627b2d71993-12-24 10:39:16 +00002830# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002831
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002832AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002833AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002834
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002835works=no
2836AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002837AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2838 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2839)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002840AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002841
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002842works=no
2843AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002844AC_TRY_COMPILE([], [signed char c;], works=yes,
2845 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2846)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002847AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002848
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002849have_prototypes=no
2850AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002851AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2852 AC_DEFINE(HAVE_PROTOTYPES, 1,
2853 [Define if your compiler supports function prototype])
2854 have_prototypes=yes
2855])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002856AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002857
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002858works=no
2859AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002860AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002861#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002862int foo(int x, ...) {
2863 va_list va;
2864 va_start(va, x);
2865 va_arg(va, int);
2866 va_arg(va, char *);
2867 va_arg(va, double);
2868 return 0;
2869}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002870], [return foo(10, "", 3.14);], [
2871 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2872 [Define if your compiler supports variable length function prototypes
2873 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2874 works=yes
2875])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002876AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002877
Dave Cole331708b2004-08-09 04:51:41 +00002878# check for socketpair
2879AC_MSG_CHECKING(for socketpair)
2880AC_TRY_COMPILE([
2881#include <sys/types.h>
2882#include <sys/socket.h>
2883], void *x=socketpair,
2884 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2885 AC_MSG_RESULT(yes),
2886 AC_MSG_RESULT(no)
2887)
2888
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002889# check if sockaddr has sa_len member
2890AC_MSG_CHECKING(if sockaddr has sa_len member)
2891AC_TRY_COMPILE([#include <sys/types.h>
2892#include <sys/socket.h>],
2893[struct sockaddr x;
2894x.sa_len = 0;],
2895 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002896 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002897 AC_MSG_RESULT(no))
2898
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002899va_list_is_array=no
2900AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002901AC_TRY_COMPILE([
2902#ifdef HAVE_STDARG_PROTOTYPES
2903#include <stdarg.h>
2904#else
2905#include <varargs.h>
2906#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002907], [va_list list1, list2; list1 = list2;], , [
2908 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2909 va_list_is_array=yes
2910])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002911AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002912
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002913# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002914AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2915 [Define this if you have some version of gethostbyname_r()])
2916
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002917AC_CHECK_FUNC(gethostbyname_r, [
2918 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2919 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2920 OLD_CFLAGS=$CFLAGS
2921 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2922 AC_TRY_COMPILE([
2923# include <netdb.h>
2924 ], [
2925 char *name;
2926 struct hostent *he, *res;
2927 char buffer[2048];
2928 int buflen = 2048;
2929 int h_errnop;
2930
2931 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2932 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002933 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002934 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2935 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002936 AC_MSG_RESULT(yes)
2937 ], [
2938 AC_MSG_RESULT(no)
2939 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2940 AC_TRY_COMPILE([
2941# include <netdb.h>
2942 ], [
2943 char *name;
2944 struct hostent *he;
2945 char buffer[2048];
2946 int buflen = 2048;
2947 int h_errnop;
2948
2949 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2950 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002951 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002952 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2953 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002954 AC_MSG_RESULT(yes)
2955 ], [
2956 AC_MSG_RESULT(no)
2957 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2958 AC_TRY_COMPILE([
2959# include <netdb.h>
2960 ], [
2961 char *name;
2962 struct hostent *he;
2963 struct hostent_data data;
2964
2965 (void) gethostbyname_r(name, he, &data);
2966 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002967 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002968 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2969 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002970 AC_MSG_RESULT(yes)
2971 ], [
2972 AC_MSG_RESULT(no)
2973 ])
2974 ])
2975 ])
2976 CFLAGS=$OLD_CFLAGS
2977], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002978 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002979])
2980AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2981AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2982AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002983AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002984AC_SUBST(HAVE_GETHOSTBYNAME)
2985
Guido van Rossum627b2d71993-12-24 10:39:16 +00002986# checks for system services
2987# (none yet)
2988
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002989# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002990AC_CHECK_FUNC(__fpu_control,
2991 [],
2992 [AC_CHECK_LIB(ieee, __fpu_control)
2993])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002994
Guido van Rossum93274221997-05-09 02:42:00 +00002995# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002996AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002997AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002998 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2999[
Guido van Rossum93274221997-05-09 02:42:00 +00003000if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003001then
3002 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3003 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3004 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003005else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003006fi],
3007[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003008
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003009# check for --with-libm=...
3010AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003011case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003012Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003013*) LIBM=-lm
3014esac
Guido van Rossum93274221997-05-09 02:42:00 +00003015AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003016AC_ARG_WITH(libm,
3017 AC_HELP_STRING(--with-libm=STRING, math library),
3018[
Guido van Rossum93274221997-05-09 02:42:00 +00003019if test "$withval" = no
3020then LIBM=
3021 AC_MSG_RESULT(force LIBM empty)
3022elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003023then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003024 AC_MSG_RESULT(set LIBM="$withval")
3025else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003026fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003027[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003028
3029# check for --with-libc=...
3030AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003031AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003032AC_ARG_WITH(libc,
3033 AC_HELP_STRING(--with-libc=STRING, C library),
3034[
Guido van Rossum93274221997-05-09 02:42:00 +00003035if test "$withval" = no
3036then LIBC=
3037 AC_MSG_RESULT(force LIBC empty)
3038elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003039then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003040 AC_MSG_RESULT(set LIBC="$withval")
3041else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003042fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003043[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003044
Christian Heimes99170a52007-12-19 02:07:34 +00003045# ************************************
3046# * Check for mathematical functions *
3047# ************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003048
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003049LIBS_SAVE=$LIBS
3050LIBS="$LIBS $LIBM"
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003051
3052# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3053# -0. on some architectures.
3054AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3055AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3056AC_TRY_RUN([
3057#include <math.h>
3058#include <stdlib.h>
3059int main() {
3060 /* return 0 if either negative zeros don't exist
3061 on this platform or if negative zeros exist
3062 and tanh(-0.) == -0. */
3063 if (atan2(0., -1.) == atan2(-0., -1.) ||
3064 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3065 else exit(1);
3066}
3067],
3068ac_cv_tanh_preserves_zero_sign=yes,
3069ac_cv_tanh_preserves_zero_sign=no,
3070ac_cv_tanh_preserves_zero_sign=no)])
3071AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3072if test "$ac_cv_tanh_preserves_zero_sign" = yes
3073then
3074 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3075 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3076fi
3077
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003078AC_REPLACE_FUNCS(hypot)
Christian Heimes99170a52007-12-19 02:07:34 +00003079
Christian Heimes9bd667a2008-01-20 15:14:11 +00003080AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes99170a52007-12-19 02:07:34 +00003081
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003082LIBS=$LIBS_SAVE
3083
Guido van Rossumef2255b2000-03-10 22:30:29 +00003084# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003085AC_CHECK_HEADER(wchar.h, [
3086 AC_DEFINE(HAVE_WCHAR_H, 1,
3087 [Define if the compiler provides a wchar.h header file.])
3088 wchar_h="yes"
3089],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003090wchar_h="no"
3091)
3092
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003093# determine wchar_t size
3094if test "$wchar_h" = yes
3095then
Guido van Rossum67b26592001-10-20 14:21:45 +00003096 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003097fi
3098
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003099AC_MSG_CHECKING(for UCS-4 tcl)
3100have_ucs4_tcl=no
3101AC_TRY_COMPILE([
3102#include <tcl.h>
3103#if TCL_UTF_MAX != 6
3104# error "NOT UCS4_TCL"
3105#endif], [], [
3106 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3107 have_ucs4_tcl=yes
3108])
3109AC_MSG_RESULT($have_ucs4_tcl)
3110
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003111# check whether wchar_t is signed or not
3112if test "$wchar_h" = yes
3113then
3114 # check whether wchar_t is signed or not
3115 AC_MSG_CHECKING(whether wchar_t is signed)
3116 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3117 AC_TRY_RUN([
3118 #include <wchar.h>
3119 int main()
3120 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003121 /* Success: exit code 0 */
3122 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003123 }
3124 ],
3125 ac_cv_wchar_t_signed=yes,
3126 ac_cv_wchar_t_signed=no,
3127 ac_cv_wchar_t_signed=yes)])
3128 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3129fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003130
Georg Brandl52d168a2008-01-07 18:10:24 +00003131AC_MSG_CHECKING(what type to use for str)
3132AC_ARG_WITH(wide-unicode,
3133 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3134[
3135if test "$withval" != no
3136then unicode_size="4"
3137else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003138fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003139],
3140[
3141case "$have_ucs4_tcl" in
3142 yes) unicode_size="4" ;;
3143 *) unicode_size="2" ;;
3144esac
3145])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003146
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003147AH_TEMPLATE(Py_UNICODE_SIZE,
3148 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003149case "$unicode_size" in
3150 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3151 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003152esac
3153
Martin v. Löwis11437992002-04-12 09:54:03 +00003154AH_TEMPLATE(PY_UNICODE_TYPE,
3155 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003156
Georg Brandl52d168a2008-01-07 18:10:24 +00003157# wchar_t is only usable if it maps to an unsigned type
3158if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003159 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003160then
3161 PY_UNICODE_TYPE="wchar_t"
3162 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3163 [Define if you have a useable wchar_t type defined in wchar.h; useable
3164 means wchar_t must be an unsigned type with at least 16 bits. (see
3165 Include/unicodeobject.h).])
3166 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3167elif test "$ac_cv_sizeof_short" = "$unicode_size"
3168then
3169 PY_UNICODE_TYPE="unsigned short"
3170 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3171elif test "$ac_cv_sizeof_long" = "$unicode_size"
3172then
3173 PY_UNICODE_TYPE="unsigned long"
3174 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3175else
3176 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003177fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003178AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003179
3180# check for endianness
3181AC_C_BIGENDIAN
3182
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003183# Check whether right shifting a negative integer extends the sign bit
3184# or fills with zeros (like the Cray J90, according to Tim Peters).
3185AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003186AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003187AC_TRY_RUN([
3188int main()
3189{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003190 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003191}
Guido van Rossum3065c942001-09-17 04:03:14 +00003192],
3193ac_cv_rshift_extends_sign=yes,
3194ac_cv_rshift_extends_sign=no,
3195ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003196AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3197if test "$ac_cv_rshift_extends_sign" = no
3198then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003199 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3200 [Define if i>>j for signed int i does not extend the sign bit
3201 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003202fi
3203
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003204# check for getc_unlocked and related locking functions
3205AC_MSG_CHECKING(for getc_unlocked() and friends)
3206AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3207AC_TRY_LINK([#include <stdio.h>],[
3208 FILE *f = fopen("/dev/null", "r");
3209 flockfile(f);
3210 getc_unlocked(f);
3211 funlockfile(f);
3212], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3213AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3214if test "$ac_cv_have_getc_unlocked" = yes
3215then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003216 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3217 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003218fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003219
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003220# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003221# save the value of LIBS so we don't actually link Python with readline
3222LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003223
3224# On some systems we need to link readline to a termcap compatible
3225# library. NOTE: Keep the precedence of listed libraries synchronised
3226# with setup.py.
3227py_cv_lib_readline=no
3228AC_MSG_CHECKING([how to link readline libs])
3229for py_libtermcap in "" ncursesw ncurses curses termcap; do
3230 if test -z "$py_libtermcap"; then
3231 READLINE_LIBS="-lreadline"
3232 else
3233 READLINE_LIBS="-lreadline -l$py_libtermcap"
3234 fi
3235 LIBS="$READLINE_LIBS $LIBS_no_readline"
3236 AC_LINK_IFELSE(
3237 [AC_LANG_CALL([],[readline])],
3238 [py_cv_lib_readline=yes])
3239 if test $py_cv_lib_readline = yes; then
3240 break
3241 fi
3242done
3243# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3244#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003245if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003246 AC_MSG_RESULT([none])
3247else
3248 AC_MSG_RESULT([$READLINE_LIBS])
3249 AC_DEFINE(HAVE_LIBREADLINE, 1,
3250 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003251fi
3252
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003253# check for readline 2.1
3254AC_CHECK_LIB(readline, rl_callback_handler_install,
3255 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003256 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003257
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003258# check for readline 2.2
3259AC_TRY_CPP([#include <readline/readline.h>],
3260have_readline=yes, have_readline=no)
3261if test $have_readline = yes
3262then
3263 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3264 [readline/readline.h],
3265 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3266 [Define if you have readline 2.2]), )
3267fi
3268
Martin v. Löwis0daad592001-09-30 21:09:59 +00003269# check for readline 4.0
3270AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003271 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003272 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003273
Thomas Wouters89d996e2007-09-08 17:39:28 +00003274# also in 4.0
3275AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3276 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003277 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003278
Guido van Rossum353ae582001-07-10 16:45:32 +00003279# check for readline 4.2
3280AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003281 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003282 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003283
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003284# also in readline 4.2
3285AC_TRY_CPP([#include <readline/readline.h>],
3286have_readline=yes, have_readline=no)
3287if test $have_readline = yes
3288then
3289 AC_EGREP_HEADER([extern int rl_catch_signals;],
3290 [readline/readline.h],
3291 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3292 [Define if you can turn off readline's signal handling.]), )
3293fi
3294
Martin v. Löwis82bca632006-02-10 20:49:30 +00003295# End of readline checks: restore LIBS
3296LIBS=$LIBS_no_readline
3297
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003298AC_MSG_CHECKING(for broken nice())
3299AC_CACHE_VAL(ac_cv_broken_nice, [
3300AC_TRY_RUN([
3301int main()
3302{
3303 int val1 = nice(1);
3304 if (val1 != -1 && val1 == nice(2))
3305 exit(0);
3306 exit(1);
3307}
Guido van Rossum3065c942001-09-17 04:03:14 +00003308],
3309ac_cv_broken_nice=yes,
3310ac_cv_broken_nice=no,
3311ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003312AC_MSG_RESULT($ac_cv_broken_nice)
3313if test "$ac_cv_broken_nice" = yes
3314then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003315 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3316 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003317fi
3318
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003319AC_MSG_CHECKING(for broken poll())
3320AC_TRY_RUN([
3321#include <poll.h>
3322
3323int main (void)
3324 {
3325 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3326
3327 close (42);
3328
3329 int poll_test = poll (&poll_struct, 1, 0);
3330
3331 if (poll_test < 0)
3332 {
3333 exit(0);
3334 }
3335 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3336 {
3337 exit(0);
3338 }
3339 else
3340 {
3341 exit(1);
3342 }
3343 }
3344],
3345ac_cv_broken_poll=yes,
3346ac_cv_broken_poll=no,
3347ac_cv_broken_poll=no)
3348AC_MSG_RESULT($ac_cv_broken_poll)
3349if test "$ac_cv_broken_poll" = yes
3350then
3351 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3352 [Define if poll() sets errno on invalid file descriptors.])
3353fi
3354
Brett Cannon43802422005-02-10 20:48:03 +00003355# Before we can test tzset, we need to check if struct tm has a tm_zone
3356# (which is not required by ISO C or UNIX spec) and/or if we support
3357# tzname[]
3358AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003359
Brett Cannon43802422005-02-10 20:48:03 +00003360# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003361AC_MSG_CHECKING(for working tzset())
3362AC_CACHE_VAL(ac_cv_working_tzset, [
3363AC_TRY_RUN([
3364#include <stdlib.h>
3365#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003366#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003367
3368#if HAVE_TZNAME
3369extern char *tzname[];
3370#endif
3371
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003372int main()
3373{
Brett Cannon18367812003-09-19 00:59:16 +00003374 /* Note that we need to ensure that not only does tzset(3)
3375 do 'something' with localtime, but it works as documented
3376 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003377 This includes making sure that tzname is set properly if
3378 tm->tm_zone does not exist since it is the alternative way
3379 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003380
3381 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003382 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003383 */
3384
Brett Cannon43802422005-02-10 20:48:03 +00003385 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003386 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3387
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003388 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003389 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003390 if (localtime(&groundhogday)->tm_hour != 0)
3391 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003392#if HAVE_TZNAME
3393 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3394 if (strcmp(tzname[0], "UTC") ||
3395 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3396 exit(1);
3397#endif
Brett Cannon18367812003-09-19 00:59:16 +00003398
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003399 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003400 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003401 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003402 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003403#if HAVE_TZNAME
3404 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3405 exit(1);
3406#endif
Brett Cannon18367812003-09-19 00:59:16 +00003407
3408 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3409 tzset();
3410 if (localtime(&groundhogday)->tm_hour != 11)
3411 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003412#if HAVE_TZNAME
3413 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3414 exit(1);
3415#endif
3416
3417#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003418 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3419 exit(1);
3420 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3421 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003422#endif
Brett Cannon18367812003-09-19 00:59:16 +00003423
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003424 exit(0);
3425}
3426],
3427ac_cv_working_tzset=yes,
3428ac_cv_working_tzset=no,
3429ac_cv_working_tzset=no)])
3430AC_MSG_RESULT($ac_cv_working_tzset)
3431if test "$ac_cv_working_tzset" = yes
3432then
3433 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3434 [Define if tzset() actually switches the local timezone in a meaningful way.])
3435fi
3436
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003437# Look for subsecond timestamps in struct stat
3438AC_MSG_CHECKING(for tv_nsec in struct stat)
3439AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3440AC_TRY_COMPILE([#include <sys/stat.h>], [
3441struct stat st;
3442st.st_mtim.tv_nsec = 1;
3443],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003444ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003445ac_cv_stat_tv_nsec=no,
3446ac_cv_stat_tv_nsec=no))
3447AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3448if test "$ac_cv_stat_tv_nsec" = yes
3449then
3450 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3451 [Define if you have struct stat.st_mtim.tv_nsec])
3452fi
3453
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003454# Look for BSD style subsecond timestamps in struct stat
3455AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3456AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3457AC_TRY_COMPILE([#include <sys/stat.h>], [
3458struct stat st;
3459st.st_mtimespec.tv_nsec = 1;
3460],
3461ac_cv_stat_tv_nsec2=yes,
3462ac_cv_stat_tv_nsec2=no,
3463ac_cv_stat_tv_nsec2=no))
3464AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3465if test "$ac_cv_stat_tv_nsec2" = yes
3466then
3467 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3468 [Define if you have struct stat.st_mtimensec])
3469fi
3470
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003471# On HP/UX 11.0, mvwdelch is a block with a return statement
3472AC_MSG_CHECKING(whether mvwdelch is an expression)
3473AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3474AC_TRY_COMPILE([#include <curses.h>], [
3475 int rtn;
3476 rtn = mvwdelch(0,0,0);
3477], ac_cv_mvwdelch_is_expression=yes,
3478 ac_cv_mvwdelch_is_expression=no,
3479 ac_cv_mvwdelch_is_expression=yes))
3480AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3481
3482if test "$ac_cv_mvwdelch_is_expression" = yes
3483then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003484 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3485 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003486fi
3487
3488AC_MSG_CHECKING(whether WINDOW has _flags)
3489AC_CACHE_VAL(ac_cv_window_has_flags,
3490AC_TRY_COMPILE([#include <curses.h>], [
3491 WINDOW *w;
3492 w->_flags = 0;
3493], ac_cv_window_has_flags=yes,
3494 ac_cv_window_has_flags=no,
3495 ac_cv_window_has_flags=no))
3496AC_MSG_RESULT($ac_cv_window_has_flags)
3497
3498
3499if test "$ac_cv_window_has_flags" = yes
3500then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003501 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3502 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003503fi
3504
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003505AC_MSG_CHECKING(for is_term_resized)
3506AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3507 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3508 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003509 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003510)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003511
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003512AC_MSG_CHECKING(for resize_term)
3513AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3514 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3515 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003516 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003517)
3518
3519AC_MSG_CHECKING(for resizeterm)
3520AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3521 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3522 AC_MSG_RESULT(yes),
3523 AC_MSG_RESULT(no)
3524)
3525
Thomas Wouters89f507f2006-12-13 04:49:30 +00003526AC_MSG_CHECKING(for /dev/ptmx)
3527
3528if test -r /dev/ptmx
3529then
3530 AC_MSG_RESULT(yes)
3531 AC_DEFINE(HAVE_DEV_PTMX, 1,
3532 [Define if we have /dev/ptmx.])
3533else
3534 AC_MSG_RESULT(no)
3535fi
3536
3537AC_MSG_CHECKING(for /dev/ptc)
3538
3539if test -r /dev/ptc
3540then
3541 AC_MSG_RESULT(yes)
3542 AC_DEFINE(HAVE_DEV_PTC, 1,
3543 [Define if we have /dev/ptc.])
3544else
3545 AC_MSG_RESULT(no)
3546fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003547
Thomas Wouters477c8d52006-05-27 19:21:47 +00003548AC_MSG_CHECKING(for %zd printf() format support)
3549AC_TRY_RUN([#include <stdio.h>
3550#include <stddef.h>
3551#include <string.h>
3552
Christian Heimes2c181612007-12-17 20:04:13 +00003553#ifdef HAVE_SYS_TYPES_H
3554#include <sys/types.h>
3555#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003556
3557#ifdef HAVE_SSIZE_T
3558typedef ssize_t Py_ssize_t;
3559#elif SIZEOF_VOID_P == SIZEOF_LONG
3560typedef long Py_ssize_t;
3561#else
3562typedef int Py_ssize_t;
3563#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003564
Christian Heimes2c181612007-12-17 20:04:13 +00003565int main()
3566{
3567 char buffer[256];
3568
Thomas Wouters477c8d52006-05-27 19:21:47 +00003569 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3570 return 1;
3571
Thomas Wouters89f507f2006-12-13 04:49:30 +00003572 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003573 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003574
3575 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3576 return 1;
3577
3578 if (strcmp(buffer, "-123"))
3579 return 1;
3580
Thomas Wouters477c8d52006-05-27 19:21:47 +00003581 return 0;
3582}],
3583[AC_MSG_RESULT(yes)
3584 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3585 AC_MSG_RESULT(no))
3586
Martin v. Löwis01c04012002-11-11 14:58:44 +00003587AC_CHECK_TYPE(socklen_t,,
3588 AC_DEFINE(socklen_t,int,
3589 Define to `int' if <sys/socket.h> does not define.),[
3590#ifdef HAVE_SYS_TYPES_H
3591#include <sys/types.h>
3592#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003593#ifdef HAVE_SYS_SOCKET_H
3594#include <sys/socket.h>
3595#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003596])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003597
Antoine Pitroufff95302008-09-03 18:58:51 +00003598AC_MSG_CHECKING(for broken mbstowcs)
3599AC_TRY_RUN([
3600#include<stdlib.h>
3601int main() {
3602 size_t len = -1;
3603 const char *str = "text";
3604 len = mbstowcs(NULL, str, 0);
3605 return (len != 4);
3606}
3607],
3608ac_cv_broken_mbstowcs=no,
3609ac_cv_broken_mbstowcs=yes,
3610ac_cv_broken_mbstowcs=no)
3611AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3612if test "$ac_cv_broken_mbstowcs" = yes
3613then
3614 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3615 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3616 wide chars that would be converted.])
3617fi
3618
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003619AC_SUBST(THREADHEADERS)
3620
3621for h in `(cd $srcdir;echo Python/thread_*.h)`
3622do
3623 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3624done
3625
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003626AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003627SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003628AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003629for dir in $SRCDIRS; do
3630 if test ! -d $dir; then
3631 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003632 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003633done
3634AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003635
Guido van Rossum627b2d71993-12-24 10:39:16 +00003636# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003637AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3638AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003639
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003640echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003641if test ! -f Modules/Setup
3642then
3643 cp $srcdir/Modules/Setup.dist Modules/Setup
3644fi
3645
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003646echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003647if test ! -f Modules/Setup.local
3648then
3649 echo "# Edit this file for local setup changes" >Modules/Setup.local
3650fi
3651
3652echo "creating Makefile"
3653$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3654 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003655 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003656mv config.c Modules