blob: 9c7a4b27a1eb8ca21b5555707306200ef4a76573 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
4dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
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)
Guido van Rossum0c4eb622006-03-30 16:19:24 +00007m4_define(PYTHON_VERSION, 3.0)
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
Martin v. Löwise981a4e2002-11-11 13:26:51 +000060define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000061
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000062# Arguments passed to configure.
63AC_SUBST(CONFIG_ARGS)
64CONFIG_ARGS="$ac_configure_args"
65
Thomas Wouters477c8d52006-05-27 19:21:47 +000066AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000067 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000068[
69 case $enableval in
70 yes)
71 enableval=/Developer/SDKs/MacOSX10.4u.sdk
72 ;;
73 esac
74 case $enableval in
75 no)
76 UNIVERSALSDK=
77 enable_universalsdk=
78 ;;
79 *)
80 UNIVERSALSDK=$enableval
81 ;;
82 esac
83],[
84 UNIVERSALSDK=
85 enable_universalsdk=
86])
87AC_SUBST(UNIVERSALSDK)
88
Christian Heimes81ee3ef2008-05-04 22:42:01 +000089AC_ARG_WITH(framework-name,
90 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
91 specify an alternate name of the framework built with --enable-framework),
92[
93 PYTHONFRAMEWORK=${withval}
94 PYTHONFRAMEWORKDIR=${withval}.framework
95 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
96 ],[
97 PYTHONFRAMEWORK=Python
98 PYTHONFRAMEWORKDIR=Python.framework
99 PYTHONFRAMEWORKIDENTIFIER=org.python.python
100])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000101dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000102AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000103 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
104[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000105 case $enableval in
106 yes)
107 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000108 esac
109 case $enableval in
110 no)
111 PYTHONFRAMEWORK=
112 PYTHONFRAMEWORKDIR=no-framework
113 PYTHONFRAMEWORKPREFIX=
114 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000115 FRAMEWORKINSTALLFIRST=
116 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000117 FRAMEWORKALTINSTALLFIRST=
118 FRAMEWORKALTINSTALLLAST=
119 if test "x${prefix}" = "xNONE"; then
120 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
121 else
122 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
123 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000124 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125 ;;
126 *)
127 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000128 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000129 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
130 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000131 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
132 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
133 if test "x${prefix}" = "xNONE" ; then
134 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
135 else
136 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
137 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000138 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000139
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000140 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000141 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000142 AC_CONFIG_FILES(Mac/Makefile)
143 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
144 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
146 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000148 ],[
149 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000150 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000151 PYTHONFRAMEWORKPREFIX=
152 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000153 FRAMEWORKINSTALLFIRST=
154 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000155 FRAMEWORKALTINSTALLFIRST=
156 FRAMEWORKALTINSTALLLAST=
157 if test "x${prefix}" = "xNONE" ; then
158 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
159 else
160 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
161 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000162 enable_framework=
163])
164AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000165AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000166AC_SUBST(PYTHONFRAMEWORKDIR)
167AC_SUBST(PYTHONFRAMEWORKPREFIX)
168AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169AC_SUBST(FRAMEWORKINSTALLFIRST)
170AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000171AC_SUBST(FRAMEWORKALTINSTALLFIRST)
172AC_SUBST(FRAMEWORKALTINSTALLLAST)
173AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000174
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000175##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000176## AC_HELP_STRING(--with-dyld,
177## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000178##
Guido van Rossumb418f891996-07-30 18:06:02 +0000179# Set name for machine-dependent library files
180AC_SUBST(MACHDEP)
181AC_MSG_CHECKING(MACHDEP)
182if test -z "$MACHDEP"
183then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000184 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000185 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
186 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000187 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000188 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000189 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000190 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000191 ac_md_system=`echo $ac_sys_system |
192 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
193 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000194 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000195 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000196
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000197 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000198 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000199 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000200 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000201 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000202 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000203 esac
204fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000205
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000206# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
207# disable features if it is defined, without any means to access these
208# features as extensions. For these systems, we skip the definition of
209# _XOPEN_SOURCE. Before adding a system to the list to gain access to
210# some feature, make sure there is no alternative way to access this
211# feature. Also, when using wildcards, make sure you have verified the
212# need for not defining _XOPEN_SOURCE on all systems matching the
213# wildcard, and that the wildcard does not include future systems
214# (which may remove their limitations).
215dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
216case $ac_sys_system/$ac_sys_release in
217 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
218 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000219 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Thomas Wouters89f507f2006-12-13 04:49:30 +0000220 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000221 define_xopen_source=no
222 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
223 # also defined. This can be overridden by defining _BSD_SOURCE
224 # As this has a different meaning on Linux, only define it on OpenBSD
225 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
226 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000227 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
228 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
229 # Marc Recht
230 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 +0000231 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000232 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
233 # of union __?sigval. Reported by Stuart Bishop.
234 SunOS/5.6)
235 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000236 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
237 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000238 # Reconfirmed for 7.1.4 by Martin v. Loewis.
239 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000240 define_xopen_source=no;;
241 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000242 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000243 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000244 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000245 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
246 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
247 # this is fixed in 10.3, which identifies itself as Darwin/7.*
248 # This should hopefully be fixed in FreeBSD 4.9
249 FreeBSD/4.8* | Darwin/6* )
250 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000251 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
252 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
253 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000254 AIX/4)
255 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000256 AIX/5)
257 if test `uname -r` -eq 1; then
258 define_xopen_source=no
259 fi
260 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000261 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
262 # disables platform specific features beyond repair.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000263 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000264 # has no effect, don't bother defining them
265 Darwin/@<:@789@:>@.*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000266 define_xopen_source=no
267 ;;
268
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000269esac
270
271if test $define_xopen_source = yes
272then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000273 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
274 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000275 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
276 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000277 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000278 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000279 AC_DEFINE(_XOPEN_SOURCE, 500,
280 Define to the level of X/Open that your system supports)
281 ;;
282 *)
283 AC_DEFINE(_XOPEN_SOURCE, 600,
284 Define to the level of X/Open that your system supports)
285 ;;
286 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000287
288 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
289 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
290 # several APIs are not declared. Since this is also needed in some
291 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000292 # except for Solaris 10, where it must not be defined,
293 # as it implies XPG4.2
294 case $ac_sys_system/$ac_sys_release in
295 SunOS/5.10)
296 ;;
297 *)
298 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
299 Define to activate Unix95-and-earlier features)
300 ;;
301 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000302
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000303 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
304
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000305fi
306
Guido van Rossum91922671997-10-09 20:24:13 +0000307#
308# SGI compilers allow the specification of the both the ABI and the
309# ISA on the command line. Depending on the values of these switches,
310# different and often incompatable code will be generated.
311#
312# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
313# thus supply support for various ABI/ISA combinations. The MACHDEP
314# variable is also adjusted.
315#
316AC_SUBST(SGI_ABI)
317if test ! -z "$SGI_ABI"
318then
319 CC="cc $SGI_ABI"
320 LDFLAGS="$SGI_ABI $LDFLAGS"
321 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
322fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000323AC_MSG_RESULT($MACHDEP)
324
Jack Jansen83f898c2002-12-30 22:23:40 +0000325# And add extra plat-mac for darwin
326AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000327AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000328AC_MSG_CHECKING(EXTRAPLATDIR)
329if test -z "$EXTRAPLATDIR"
330then
331 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000332 darwin)
333 EXTRAPLATDIR="\$(PLATMACDIRS)"
334 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
335 ;;
336 *)
337 EXTRAPLATDIR=""
338 EXTRAMACHDEPPATH=""
339 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000340 esac
341fi
342AC_MSG_RESULT($EXTRAPLATDIR)
343
Jack Jansen6b08a402004-06-03 12:41:45 +0000344# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
345# it may influence the way we can build extensions, so distutils
346# needs to check it
347AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000348AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000349CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000350EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000351
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000352AC_MSG_CHECKING(machine type as reported by uname -m)
353ac_sys_machine=`uname -m`
354AC_MSG_RESULT($ac_sys_machine)
355
Guido van Rossum627b2d71993-12-24 10:39:16 +0000356# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000357
358# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
359# for debug/optimization stuff. BASECFLAGS is for flags that are required
360# just to get things to compile and link. Users are free to override OPT
361# when running configure or make. The build should not break if they do.
362# BASECFLAGS should generally not be messed with, however.
363
364# XXX shouldn't some/most/all of this code be merged with the stuff later
365# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000366AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000367AC_ARG_WITH(gcc,
368 AC_HELP_STRING(--without-gcc,never use gcc),
369[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000370 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000371 no) CC=cc
372 without_gcc=yes;;
373 yes) CC=gcc
374 without_gcc=no;;
375 *) CC=$withval
376 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000377 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000378 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000379 AIX*) CC=cc_r
380 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000381 Monterey*)
382 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000383 without_gcc=;;
384 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000385 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000386AC_MSG_RESULT($without_gcc)
387
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000388# If the user switches compilers, we can't believe the cache
389if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
390then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000391 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
392(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000393fi
394
Guido van Rossum627b2d71993-12-24 10:39:16 +0000395AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000396
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000397AC_SUBST(CXX)
398AC_SUBST(MAINCC)
399AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
400AC_ARG_WITH(cxx_main,
401 AC_HELP_STRING([--with-cxx-main=<compiler>],
402 [compile main() and link python executable with C++ compiler]),
403[
404
405 case $withval in
406 no) with_cxx_main=no
407 MAINCC='$(CC)';;
408 yes) with_cxx_main=yes
409 MAINCC='$(CXX)';;
410 *) with_cxx_main=yes
411 MAINCC=$withval
412 if test -z "$CXX"
413 then
414 CXX=$withval
415 fi;;
416 esac], [
417 with_cxx_main=no
418 MAINCC='$(CC)'
419])
420AC_MSG_RESULT($with_cxx_main)
421
422preset_cxx="$CXX"
423if test -z "$CXX"
424then
425 case "$CC" in
426 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
427 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
428 esac
429 if test "$CXX" = "notfound"
430 then
431 CXX=""
432 fi
433fi
434if test -z "$CXX"
435then
436 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
437 if test "$CXX" = "notfound"
438 then
439 CXX=""
440 fi
441fi
442if test "$preset_cxx" != "$CXX"
443then
444 AC_MSG_WARN([
445
446 By default, distutils will build C++ extension modules with "$CXX".
447 If this is not intended, then set CXX on the configure command line.
448 ])
449fi
450
451
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000452# checks for UNIX variants that set C preprocessor variables
453AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000454
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000455# Check for unsupported systems
456case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000457atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000458 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
459 echo See README for details.
460 exit 1;;
461esac
462
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000463AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000464AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000465AC_ARG_WITH(suffix,
466 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
467[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000468 case $withval in
469 no) EXEEXT=;;
470 yes) EXEEXT=.exe;;
471 *) EXEEXT=$withval;;
472 esac])
473AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000474
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000475# Test whether we're running on a non-case-sensitive system, in which
476# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000477AC_SUBST(BUILDEXEEXT)
478AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000479if test ! -d CaseSensitiveTestDir; then
480mkdir CaseSensitiveTestDir
481fi
482
483if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000484then
Jack Jansen1999ef42001-12-06 21:47:20 +0000485 AC_MSG_RESULT(yes)
486 BUILDEXEEXT=.exe
487else
488 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000489 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000490fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000491rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000492
Guido van Rossumdd997f71998-10-07 19:58:26 +0000493case $MACHDEP in
494bsdos*)
495 case $CC in
496 gcc) CC="$CC -D_HAVE_BSDI";;
497 esac;;
498esac
499
Guido van Rossum84561611997-08-21 00:08:11 +0000500case $ac_sys_system in
501hp*|HP*)
502 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000503 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000504 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000505Monterey*)
506 case $CC in
507 cc) CC="$CC -Wl,-Bexport";;
508 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000509SunOS*)
510 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000511 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000512 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000513esac
514
Martin v. Löwise8964d42001-03-06 12:09:07 +0000515
Neil Schemenauer61c51152001-01-26 16:18:16 +0000516AC_SUBST(LIBRARY)
517AC_MSG_CHECKING(LIBRARY)
518if test -z "$LIBRARY"
519then
520 LIBRARY='libpython$(VERSION).a'
521fi
522AC_MSG_RESULT($LIBRARY)
523
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000524# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000525# name of the library into which to insert object files). BLDLIBRARY is also
526# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
527# is blank as the main program is not linked directly against LDLIBRARY.
528# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
529# systems without shared libraries, LDLIBRARY is the same as LIBRARY
530# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
531# DLLLIBRARY is the shared (i.e., DLL) library.
532#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000533# RUNSHARED is used to run shared python without installed libraries
534#
535# INSTSONAME is the name of the shared library that will be use to install
536# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000537AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000538AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000539AC_SUBST(BLDLIBRARY)
540AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000541AC_SUBST(INSTSONAME)
542AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000543LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000544BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000545INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000546DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000547LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000548RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000549
Guido van Rossumfb842551997-08-06 23:42:07 +0000550# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000551# If CXX is set, and if it is needed to link a main function that was
552# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
553# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000554# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000555# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000556AC_SUBST(LINKCC)
557AC_MSG_CHECKING(LINKCC)
558if test -z "$LINKCC"
559then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000560 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000561 case $ac_sys_system in
562 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000563 exp_extra="\"\""
564 if test $ac_sys_release -ge 5 -o \
565 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
566 exp_extra="."
567 fi
568 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000569 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000570 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000571 esac
572fi
573AC_MSG_RESULT($LINKCC)
574
Martin v. Löwis1142de32002-03-29 16:28:31 +0000575AC_MSG_CHECKING(for --enable-shared)
576AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000577 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000578
Martin v. Löwis1142de32002-03-29 16:28:31 +0000579if test -z "$enable_shared"
580then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000581 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000582 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000583 enable_shared="yes";;
584 *)
585 enable_shared="no";;
586 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000587fi
588AC_MSG_RESULT($enable_shared)
589
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000590AC_MSG_CHECKING(for --enable-profiling)
591AC_ARG_ENABLE(profiling,
592 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
593[ac_save_cc="$CC"
594 CC="$CC -pg"
595 AC_TRY_RUN([int main() { return 0; }],
596 ac_enable_profiling="yes",
597 ac_enable_profiling="no",
598 ac_enable_profiling="no")
599 CC="$ac_save_cc"])
600AC_MSG_RESULT($ac_enable_profiling)
601
602case "$ac_enable_profiling" in
603 "yes")
604 BASECFLAGS="-pg $BASECFLAGS"
605 LDFLAGS="-pg $LDFLAGS"
606 ;;
607esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000608
609AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000610
Guido van Rossumb8552162001-09-05 14:58:11 +0000611# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
612# library that we build, but we do not want to link against it (we
613# will find it with a -framework option). For this reason there is an
614# extra variable BLDLIBRARY against which Python and the extension
615# modules are linked, BLDLIBRARY. This is normally the same as
616# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000617if test "$enable_framework"
618then
619 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000620 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000621 BLDLIBRARY=''
622else
623 BLDLIBRARY='$(LDLIBRARY)'
624fi
625
Martin v. Löwis1142de32002-03-29 16:28:31 +0000626# Other platforms follow
627if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000628 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000629 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630 CYGWIN*)
631 LDLIBRARY='libpython$(VERSION).dll.a'
632 DLLLIBRARY='libpython$(VERSION).dll'
633 ;;
634 SunOS*)
635 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000636 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000637 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000638 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000639 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000640 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000641 LDLIBRARY='libpython$(VERSION).so'
642 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000643 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000644 case $ac_sys_system in
645 FreeBSD*)
646 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
647 ;;
648 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000649 INSTSONAME="$LDLIBRARY".$SOVERSION
650 ;;
651 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000652 case `uname -m` in
653 ia64)
654 LDLIBRARY='libpython$(VERSION).so'
655 ;;
656 *)
657 LDLIBRARY='libpython$(VERSION).sl'
658 ;;
659 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000660 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000661 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000662 ;;
663 OSF*)
664 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000665 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000666 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000667 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000668 atheos*)
669 LDLIBRARY='libpython$(VERSION).so'
670 BLDLIBRARY='-L. -lpython$(VERSION)'
671 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
672 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000673 esac
Jason Tishler30765592003-09-04 11:04:06 +0000674else # shared is disabled
675 case $ac_sys_system in
676 CYGWIN*)
677 BLDLIBRARY='$(LIBRARY)'
678 LDLIBRARY='libpython$(VERSION).dll.a'
679 ;;
680 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681fi
682
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000683AC_MSG_RESULT($LDLIBRARY)
684
Guido van Rossum627b2d71993-12-24 10:39:16 +0000685AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000686AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000687AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000688
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000689AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000690AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000691if test $SVNVERSION = found
692then
693 SVNVERSION="svnversion \$(srcdir)"
694else
695 SVNVERSION="echo exported"
696fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000697
Neil Schemenauera42c8272001-03-31 00:01:55 +0000698case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000699bsdos*|hp*|HP*)
700 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000701 if test -z "$INSTALL"
702 then
703 INSTALL="${srcdir}/install-sh -c"
704 fi
705esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000706AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000707
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000708# Not every filesystem supports hard links
709AC_SUBST(LN)
710if test -z "$LN" ; then
711 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000712 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000713 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000714 *) LN=ln;;
715 esac
716fi
717
Fred Drake9f715822001-07-11 06:27:00 +0000718# Check for --with-pydebug
719AC_MSG_CHECKING(for --with-pydebug)
720AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000721 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
722[
Fred Drake9f715822001-07-11 06:27:00 +0000723if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000724then
725 AC_DEFINE(Py_DEBUG, 1,
726 [Define if you want to build an interpreter with many run-time checks.])
727 AC_MSG_RESULT(yes);
728 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000729else AC_MSG_RESULT(no); Py_DEBUG='false'
730fi],
731[AC_MSG_RESULT(no)])
732
Skip Montanarodecc6a42003-01-01 20:07:49 +0000733# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
734# merged with this chunk of code?
735
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000736# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000737# ------------------------
738# (The following bit of code is complicated enough - please keep things
739# indented properly. Just pretend you're editing Python code. ;-)
740
741# There are two parallel sets of case statements below, one that checks to
742# see if OPT was set and one that does BASECFLAGS setting based upon
743# compiler and platform. BASECFLAGS tweaks need to be made even if the
744# user set OPT.
745
746# tweak OPT based on compiler and platform, only if the user didn't set
747# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000748AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000749if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000750then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751 case $GCC in
752 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000753 if test "$CC" != 'g++' ; then
754 STRICT_PROTO="-Wstrict-prototypes"
755 fi
Christian Heimes38053212007-12-14 01:24:44 +0000756 # For gcc 4.x we need to use -fwrapv so lets check if its supported
757 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
758 WRAP="-fwrapv"
759 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000760 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000761 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000762 if test "$Py_DEBUG" = 'true' ; then
763 # Optimization messes up debuggers, so turn it off for
764 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000765 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000766 else
Christian Heimes38053212007-12-14 01:24:44 +0000767 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768 fi
769 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000770 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000771 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000772 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000773 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000774 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000775 SCO_SV*) OPT="$OPT -m486 -DSCO5"
776 ;;
777 esac
Fred Drake9f715822001-07-11 06:27:00 +0000778 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000779
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000780 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000781 OPT="-O"
782 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000783 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000784
785 # The current (beta) Monterey compiler dies with optimizations
786 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000787 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000788 Monterey*)
789 OPT=""
790 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000791 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000792
Guido van Rossum4e8af441994-08-19 15:33:54 +0000793fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000794
Skip Montanarodecc6a42003-01-01 20:07:49 +0000795AC_SUBST(BASECFLAGS)
796# tweak BASECFLAGS based on compiler and platform
797case $GCC in
798yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000799 # Python violates C99 rules, by casting between incompatible
800 # pointer types. GCC may generate bad code as a result of that,
801 # so use -fno-strict-aliasing if supported.
802 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
803 ac_save_cc="$CC"
804 CC="$CC -fno-strict-aliasing"
805 AC_TRY_RUN([int main() { return 0; }],
806 ac_cv_no_strict_aliasing_ok=yes,
807 ac_cv_no_strict_aliasing_ok=no,
808 ac_cv_no_strict_aliasing_ok=no)
809 CC="$ac_save_cc"
810 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
811 if test $ac_cv_no_strict_aliasing_ok = yes
812 then
813 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
814 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000815
816 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
817 # support. Without this, treatment of subnormals doesn't follow
818 # the standard.
819 case $ac_sys_machine in
820 alpha*)
821 BASECFLAGS="$BASECFLAGS -mieee"
822 ;;
823 esac
824
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $ac_sys_system in
826 SCO_SV*)
827 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
828 ;;
829 # is there any other compiler on Darwin besides gcc?
830 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000831 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
832 # used to be here, but non-Apple gcc doesn't accept them.
Thomas Wouters477c8d52006-05-27 19:21:47 +0000833 if test "${enable_universalsdk}"; then
834 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
835 fi
836
Skip Montanarodecc6a42003-01-01 20:07:49 +0000837 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000838 OSF*)
839 BASECFLAGS="$BASECFLAGS -mieee"
840 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000841 esac
842 ;;
843
844*)
845 case $ac_sys_system in
846 OpenUNIX*|UnixWare*)
847 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
848 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000849 OSF*)
850 BASECFLAGS="$BASECFLAGS -ieee -std"
851 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852 SCO_SV*)
853 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
854 ;;
855 esac
856 ;;
857esac
858
Fred Drakee1ceaa02001-12-04 20:55:47 +0000859if test "$Py_DEBUG" = 'true'; then
860 :
861else
862 OPT="-DNDEBUG $OPT"
863fi
864
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000865if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000866then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000868fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000869
Neal Norwitz020c46a2006-01-07 21:39:28 +0000870# disable check for icc since it seems to pass, but generates a warning
871if test "$CC" = icc
872then
873 ac_cv_opt_olimit_ok=no
874fi
875
Guido van Rossum91922671997-10-09 20:24:13 +0000876AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
877AC_CACHE_VAL(ac_cv_opt_olimit_ok,
878[ac_save_cc="$CC"
879CC="$CC -OPT:Olimit=0"
880AC_TRY_RUN([int main() { return 0; }],
881 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000882 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000883 ac_cv_opt_olimit_ok=no)
884CC="$ac_save_cc"])
885AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000886if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000887 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
889 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
890 # environment?
891 Darwin*)
892 ;;
893 *)
894 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
895 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000896 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000897else
898 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
899 AC_CACHE_VAL(ac_cv_olimit_ok,
900 [ac_save_cc="$CC"
901 CC="$CC -Olimit 1500"
902 AC_TRY_RUN([int main() { return 0; }],
903 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000904 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000905 ac_cv_olimit_ok=no)
906 CC="$ac_save_cc"])
907 AC_MSG_RESULT($ac_cv_olimit_ok)
908 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000909 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000910 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000911fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000912
Thomas Wouters89f507f2006-12-13 04:49:30 +0000913# Check whether GCC supports PyArg_ParseTuple format
914if test "$GCC" = "yes"
915then
916 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
917 save_CFLAGS=$CFLAGS
918 CFLAGS="$CFLAGS -Werror"
919 AC_TRY_COMPILE([
920 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
921 ],,
922 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
923 AC_MSG_RESULT(yes),
924 AC_MSG_RESULT(no)
925 )
926 CFLAGS=$save_CFLAGS
927fi
928
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000929# On some compilers, pthreads are available without further options
930# (e.g. MacOS X). On some of these systems, the compiler will not
931# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
932# So we have to see first whether pthreads are available without
933# options before we can check whether -Kpthread improves anything.
934AC_MSG_CHECKING(whether pthreads are available without options)
935AC_CACHE_VAL(ac_cv_pthread_is_default,
936[AC_TRY_RUN([
937#include <pthread.h>
938
939void* routine(void* p){return NULL;}
940
941int main(){
942 pthread_t p;
943 if(pthread_create(&p,NULL,routine,NULL)!=0)
944 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000945 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000946 return 0;
947}
948],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000949[
950 ac_cv_pthread_is_default=yes
951 ac_cv_kthread=no
952 ac_cv_pthread=no
953],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000954 ac_cv_pthread_is_default=no,
955 ac_cv_pthread_is_default=no)
956])
957AC_MSG_RESULT($ac_cv_pthread_is_default)
958
959
960if test $ac_cv_pthread_is_default = yes
961then
962 ac_cv_kpthread=no
963else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000964# -Kpthread, if available, provides the right #defines
965# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000966# Some compilers won't report that they do not support -Kpthread,
967# so we need to run a program to see whether it really made the
968# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000969AC_MSG_CHECKING(whether $CC accepts -Kpthread)
970AC_CACHE_VAL(ac_cv_kpthread,
971[ac_save_cc="$CC"
972CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000973AC_TRY_RUN([
974#include <pthread.h>
975
976void* routine(void* p){return NULL;}
977
978int main(){
979 pthread_t p;
980 if(pthread_create(&p,NULL,routine,NULL)!=0)
981 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000982 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000983 return 0;
984}
985],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000986 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000987 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000988 ac_cv_kpthread=no)
989CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000990AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000991fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000992
Skip Montanarod8d39a02003-07-10 20:44:10 +0000993if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000994then
995# -Kthread, if available, provides the right #defines
996# and linker options to make pthread_create available
997# Some compilers won't report that they do not support -Kthread,
998# so we need to run a program to see whether it really made the
999# function available.
1000AC_MSG_CHECKING(whether $CC accepts -Kthread)
1001AC_CACHE_VAL(ac_cv_kthread,
1002[ac_save_cc="$CC"
1003CC="$CC -Kthread"
1004AC_TRY_RUN([
1005#include <pthread.h>
1006
1007void* routine(void* p){return NULL;}
1008
1009int main(){
1010 pthread_t p;
1011 if(pthread_create(&p,NULL,routine,NULL)!=0)
1012 return 1;
1013 (void)pthread_detach(p);
1014 return 0;
1015}
1016],
1017 ac_cv_kthread=yes,
1018 ac_cv_kthread=no,
1019 ac_cv_kthread=no)
1020CC="$ac_save_cc"])
1021AC_MSG_RESULT($ac_cv_kthread)
1022fi
1023
Skip Montanarod8d39a02003-07-10 20:44:10 +00001024if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001025then
1026# -pthread, if available, provides the right #defines
1027# and linker options to make pthread_create available
1028# Some compilers won't report that they do not support -pthread,
1029# so we need to run a program to see whether it really made the
1030# function available.
1031AC_MSG_CHECKING(whether $CC accepts -pthread)
1032AC_CACHE_VAL(ac_cv_thread,
1033[ac_save_cc="$CC"
1034CC="$CC -pthread"
1035AC_TRY_RUN([
1036#include <pthread.h>
1037
1038void* routine(void* p){return NULL;}
1039
1040int main(){
1041 pthread_t p;
1042 if(pthread_create(&p,NULL,routine,NULL)!=0)
1043 return 1;
1044 (void)pthread_detach(p);
1045 return 0;
1046}
1047],
1048 ac_cv_pthread=yes,
1049 ac_cv_pthread=no,
1050 ac_cv_pthread=no)
1051CC="$ac_save_cc"])
1052AC_MSG_RESULT($ac_cv_pthread)
1053fi
1054
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001055# If we have set a CC compiler flag for thread support then
1056# check if it works for CXX, too.
1057ac_cv_cxx_thread=no
1058if test ! -z "$CXX"
1059then
1060AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1061ac_save_cxx="$CXX"
1062
1063if test "$ac_cv_kpthread" = "yes"
1064then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001065 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001066 ac_cv_cxx_thread=yes
1067elif test "$ac_cv_kthread" = "yes"
1068then
1069 CXX="$CXX -Kthread"
1070 ac_cv_cxx_thread=yes
1071elif test "$ac_cv_pthread" = "yes"
1072then
1073 CXX="$CXX -pthread"
1074 ac_cv_cxx_thread=yes
1075fi
1076
1077if test $ac_cv_cxx_thread = yes
1078then
1079 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1080 $CXX -c conftest.$ac_ext 2>&5
1081 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1082 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1083 then
1084 ac_cv_cxx_thread=yes
1085 else
1086 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001087 fi
1088 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001089fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001090AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001091fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001092CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001093
Fred Drakece81d592000-07-09 14:39:29 +00001094dnl # check for ANSI or K&R ("traditional") preprocessor
1095dnl AC_MSG_CHECKING(for C preprocessor type)
1096dnl AC_TRY_COMPILE([
1097dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1098dnl int foo;
1099dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1100dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1101dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001102
Guido van Rossum627b2d71993-12-24 10:39:16 +00001103# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001104AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001105AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1106fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001107ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001108shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001109unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001110sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1111sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001112sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1113sys/time.h \
1114sys/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 +00001115sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001116bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001117AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001118AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001119
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001120# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001121AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001122#ifdef HAVE_CURSES_H
1123#include <curses.h>
1124#endif
1125])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001126
Martin v. Löwis11017b12006-01-14 18:12:57 +00001127# On Linux, netlink.h requires asm/types.h
1128AC_CHECK_HEADERS(linux/netlink.h,,,[
1129#ifdef HAVE_ASM_TYPES_H
1130#include <asm/types.h>
1131#endif
1132#ifdef HAVE_SYS_SOCKET_H
1133#include <sys/socket.h>
1134#endif
1135])
1136
Guido van Rossum627b2d71993-12-24 10:39:16 +00001137# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001138was_it_defined=no
1139AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001140AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1141 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1142])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001143AC_MSG_RESULT($was_it_defined)
1144
Neal Norwitz11690112002-07-30 01:08:28 +00001145# Check whether using makedev requires defining _OSF_SOURCE
1146AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001147AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001148 [ makedev(0, 0) ],
1149 ac_cv_has_makedev=yes,
1150 ac_cv_has_makedev=no)
1151if test "$ac_cv_has_makedev" = "no"; then
1152 # we didn't link, try if _OSF_SOURCE will allow us to link
1153 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001154#define _OSF_SOURCE 1
1155#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001156 ],
1157 [ makedev(0, 0) ],
1158 ac_cv_has_makedev=yes,
1159 ac_cv_has_makedev=no)
1160 if test "$ac_cv_has_makedev" = "yes"; then
1161 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1162 fi
1163fi
1164AC_MSG_RESULT($ac_cv_has_makedev)
1165if test "$ac_cv_has_makedev" = "yes"; then
1166 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1167fi
1168
Martin v. Löwis399a6892002-10-04 10:22:02 +00001169# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1170# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1171# defined, but the compiler does not support pragma redefine_extname,
1172# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1173# structures (such as rlimit64) without declaring them. As a
1174# work-around, disable LFS on such configurations
1175
1176use_lfs=yes
1177AC_MSG_CHECKING(Solaris LFS bug)
1178AC_TRY_COMPILE([
1179#define _LARGEFILE_SOURCE 1
1180#define _FILE_OFFSET_BITS 64
1181#include <sys/resource.h>
1182],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1183AC_MSG_RESULT($sol_lfs_bug)
1184if test "$sol_lfs_bug" = "yes"; then
1185 use_lfs=no
1186fi
1187
1188if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001189# Two defines needed to enable largefile support on various platforms
1190# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001191AC_DEFINE(_LARGEFILE_SOURCE, 1,
1192[This must be defined on some systems to enable large file support.])
1193AC_DEFINE(_FILE_OFFSET_BITS, 64,
1194[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001195fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001196
Guido van Rossum300fda71996-08-19 21:58:16 +00001197# Add some code to confdefs.h so that the test for off_t works on SCO
1198cat >> confdefs.h <<\EOF
1199#if defined(SCO_DS)
1200#undef _OFF_T
1201#endif
1202EOF
1203
Guido van Rossumef2255b2000-03-10 22:30:29 +00001204# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001205AC_TYPE_MODE_T
1206AC_TYPE_OFF_T
1207AC_TYPE_PID_T
1208AC_TYPE_SIGNAL
1209AC_TYPE_SIZE_T
1210AC_TYPE_UID_T
Christian Heimes400adb02008-02-01 08:12:03 +00001211AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001212 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001213
Guido van Rossumef2255b2000-03-10 22:30:29 +00001214# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001215# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001216AC_CHECK_SIZEOF(int, 4)
1217AC_CHECK_SIZEOF(long, 4)
1218AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001219AC_CHECK_SIZEOF(short, 2)
1220AC_CHECK_SIZEOF(float, 4)
1221AC_CHECK_SIZEOF(double, 8)
1222AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001223AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001224AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001225
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001226AC_MSG_CHECKING(for long long support)
1227have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001228AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1229 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1230 have_long_long=yes
1231])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001232AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001233if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001234AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001235fi
1236
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001237AC_MSG_CHECKING(for long double support)
1238have_long_double=no
1239AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1240 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1241 have_long_double=yes
1242])
1243AC_MSG_RESULT($have_long_double)
1244if test "$have_long_double" = yes ; then
1245AC_CHECK_SIZEOF(long double, 16)
1246fi
1247
1248
Thomas Woutersb2137042007-02-01 18:02:27 +00001249AC_MSG_CHECKING(for _Bool support)
1250have_c99_bool=no
1251AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1252 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1253 have_c99_bool=yes
1254])
1255AC_MSG_RESULT($have_c99_bool)
1256if test "$have_c99_bool" = yes ; then
1257AC_CHECK_SIZEOF(_Bool, 1)
1258fi
1259
Thomas Wouters89f507f2006-12-13 04:49:30 +00001260AC_CHECK_TYPES(uintptr_t,
1261 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1262 [], [#ifdef HAVE_STDINT_H
1263 #include <stdint.h>
1264 #endif])
1265
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001266
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001267# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1268AC_MSG_CHECKING(size of off_t)
1269AC_CACHE_VAL(ac_cv_sizeof_off_t,
1270[AC_TRY_RUN([#include <stdio.h>
1271#include <sys/types.h>
1272main()
1273{
1274 FILE *f=fopen("conftestval", "w");
1275 if (!f) exit(1);
1276 fprintf(f, "%d\n", sizeof(off_t));
1277 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001278}],
1279ac_cv_sizeof_off_t=`cat conftestval`,
1280ac_cv_sizeof_off_t=0,
1281ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001282])
1283AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001284AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1285[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001286
1287AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001288if test "$have_long_long" = yes -a \
1289 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1290 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001291 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1292 [Defined to enable large file support when an off_t is bigger than a long
1293 and long long is available and at least as big as an off_t. You may need
1294 to add some flags for configuration and compilation to enable this mode.
1295 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001296 AC_MSG_RESULT(yes)
1297else
1298 AC_MSG_RESULT(no)
1299fi
1300
Fred Drakea3f6e912000-06-29 20:44:47 +00001301# AC_CHECK_SIZEOF() doesn't include <time.h>.
1302AC_MSG_CHECKING(size of time_t)
1303AC_CACHE_VAL(ac_cv_sizeof_time_t,
1304[AC_TRY_RUN([#include <stdio.h>
1305#include <time.h>
1306main()
1307{
1308 FILE *f=fopen("conftestval", "w");
1309 if (!f) exit(1);
1310 fprintf(f, "%d\n", sizeof(time_t));
1311 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001312}],
1313ac_cv_sizeof_time_t=`cat conftestval`,
1314ac_cv_sizeof_time_t=0,
1315ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001316])
1317AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001318AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1319[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001320
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001321
Trent Mick635f6fb2000-08-23 21:33:05 +00001322# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001323ac_save_cc="$CC"
1324if test "$ac_cv_kpthread" = "yes"
1325then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001326elif test "$ac_cv_kthread" = "yes"
1327then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001328elif test "$ac_cv_pthread" = "yes"
1329then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001330fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001331AC_MSG_CHECKING(for pthread_t)
1332have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001333AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001334AC_MSG_RESULT($have_pthread_t)
1335if test "$have_pthread_t" = yes ; then
1336 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1337 AC_MSG_CHECKING(size of pthread_t)
1338 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1339 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001340#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001341 main()
1342 {
1343 FILE *f=fopen("conftestval", "w");
1344 if (!f) exit(1);
1345 fprintf(f, "%d\n", sizeof(pthread_t));
1346 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001347 }],
1348 ac_cv_sizeof_pthread_t=`cat conftestval`,
1349 ac_cv_sizeof_pthread_t=0,
1350 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001351 ])
1352 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001353 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1354 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001355fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001356CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001357
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001358
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001359AC_SUBST(OTHER_LIBTOOL_OPT)
1360case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001361 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001362 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1363 ;;
1364 Darwin/*)
1365 OTHER_LIBTOOL_OPT=""
1366 ;;
1367esac
1368
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001369AC_SUBST(LIBTOOL_CRUFT)
1370case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001371 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001372 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1373 if test "${enable_universalsdk}"; then
1374 :
1375 else
1376 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1377 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001378 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001379 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001380 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001381 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1382 if test ${gcc_version} '<' 4.0
1383 then
1384 LIBTOOL_CRUFT="-lcc_dynamic"
1385 else
1386 LIBTOOL_CRUFT=""
1387 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001388 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001389 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001390 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391esac
1392
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001393AC_MSG_CHECKING(for --enable-framework)
1394if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001395then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001396 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001397 # -F. is needed to allow linking to the framework while
1398 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001399 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1400 [Define if you want to produce an OpenStep/Rhapsody framework
1401 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001402 AC_MSG_RESULT(yes)
1403else
1404 AC_MSG_RESULT(no)
1405fi
1406
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001407AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001408case $ac_sys_system/$ac_sys_release in
1409 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001410 AC_DEFINE(WITH_DYLD, 1,
1411 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1412 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1413 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001414 AC_MSG_RESULT(always on for Darwin)
1415 ;;
1416 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001417 AC_MSG_RESULT(no)
1418 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001419esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001420
Guido van Rossumac405f61994-09-12 10:56:06 +00001421# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001422AC_SUBST(SO)
1423AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001424AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001425AC_SUBST(CCSHARED)
1426AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001427# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001428# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001429AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001430if test -z "$SO"
1431then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001432 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001433 hp*|HP*)
1434 case `uname -m` in
1435 ia64) SO=.so;;
1436 *) SO=.sl;;
1437 esac
1438 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001439 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001440 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001441 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001442else
1443 # this might also be a termcap variable, see #610332
1444 echo
1445 echo '====================================================================='
1446 echo '+ +'
1447 echo '+ WARNING: You have set SO in your environment. +'
1448 echo '+ Do you really mean to change the extension for shared libraries? +'
1449 echo '+ Continuing in 10 seconds to let you to ponder. +'
1450 echo '+ +'
1451 echo '====================================================================='
1452 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001453fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001454AC_MSG_RESULT($SO)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001455AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001456# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001457# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001458# (Shared libraries in this instance are shared modules to be loaded into
1459# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001460AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001461if test -z "$LDSHARED"
1462then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001463 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001464 AIX*)
1465 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001466 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001467 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001468 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001469 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001470 SunOS/5*)
1471 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001472 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001473 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001474 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001475 hp*|HP*)
1476 if test "$GCC" = "yes"
1477 then LDSHARED='$(CC) -shared'
1478 else LDSHARED='ld -b';
1479 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001480 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001481 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001482 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1483 if test "$enable_framework" ; then
1484 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001485 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1486 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001487 else
1488 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001489 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001490 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001491 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001492 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1493 if test "$enable_framework" ; then
1494 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001495 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1496 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001497 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001498 # No framework, use the Python app as bundle-loader
1499 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001500 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001501 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001502 Darwin/*)
1503 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1504 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001505 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Thomas Wouters477c8d52006-05-27 19:21:47 +00001506 if test ${cur_target} '>' 10.2; then
1507 cur_target=10.3
1508 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001509 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Thomas Wouters89d996e2007-09-08 17:39:28 +00001510
1511 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1512 # environment with a value that is the same as what we'll use
1513 # in the Makefile to ensure that we'll get the same compiler
1514 # environment during configure and build time.
1515 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1516 export MACOSX_DEPLOYMENT_TARGET
1517
Thomas Wouters477c8d52006-05-27 19:21:47 +00001518 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001519 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001520 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001521 if test "${enable_universalsdk}"; then
1522 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1523 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001524 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1525 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001526 else
1527 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1528 if test "$enable_framework" ; then
1529 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001530 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1531 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001532 else
1533 # No framework, use the Python app as bundle-loader
1534 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1535 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1536 fi
1537 fi
1538 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001539 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001540 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001541 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001542 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001543 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001544 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001545 else
1546 LDSHARED="ld -Bshareable ${LDFLAGS}"
1547 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001548 OpenBSD*)
1549 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1550 then
1551 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1552 else
1553 case `uname -r` in
1554 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1555 LDSHARED="ld -Bshareable ${LDFLAGS}"
1556 ;;
1557 *)
1558 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1559 ;;
1560 esac
1561 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001562 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001563 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001564 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001565 then LDSHARED='$(CC) -shared'
1566 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001567 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001568 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001569 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001570 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001571 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001572 *) LDSHARED="ld";;
1573 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001574fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001575AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001576BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001577# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001578# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001579AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001580if test -z "$CCSHARED"
1581then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001582 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001583 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001584 then CCSHARED="-fPIC";
1585 elif test `uname -p` = sparc;
1586 then CCSHARED="-xcode=pic32";
1587 else CCSHARED="-Kpic";
1588 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001589 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001590 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001591 else CCSHARED="+z";
1592 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001593 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001594 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001595 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001596 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001597 if test "$GCC" = "yes"
1598 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001599 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001600 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001601 SCO_SV*)
1602 if test "$GCC" = "yes"
1603 then CCSHARED="-fPIC"
1604 else CCSHARED="-Kpic -belf"
1605 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001606 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001607 IRIX*/6*) case $CC in
1608 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001609 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001610 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001611 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001612 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001613fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001614AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001615# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001616# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001617AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001618if test -z "$LINKFORSHARED"
1619then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001620 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001621 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001622 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001623 LINKFORSHARED="-Wl,-E -Wl,+s";;
1624# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001625 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001626 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001627 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001628 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001629 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1630 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001631 # not used by the core itself but which needs to be in the core so
1632 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001633 # -prebind is no longer used, because it actually seems to give a
1634 # slowdown in stead of a speedup, maybe due to the large number of
1635 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001636
1637 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001638 if test "$enable_framework"
1639 then
Jack Jansenda49e192005-01-07 13:08:22 +00001640 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001641 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001642 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001643 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001644 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001645 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001646 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001647 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1648 then
1649 LINKFORSHARED="-Wl,--export-dynamic"
1650 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001651 SunOS/5*) case $CC in
1652 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001653 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001654 then
1655 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001656 fi;;
1657 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001658 CYGWIN*)
1659 if test $enable_shared = "no"
1660 then
1661 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1662 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001663 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001664fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001665AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001666
Neil Schemenauer61c51152001-01-26 16:18:16 +00001667AC_SUBST(CFLAGSFORSHARED)
1668AC_MSG_CHECKING(CFLAGSFORSHARED)
1669if test ! "$LIBRARY" = "$LDLIBRARY"
1670then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001671 case $ac_sys_system in
1672 CYGWIN*)
1673 # Cygwin needs CCSHARED when building extension DLLs
1674 # but not when building the interpreter DLL.
1675 CFLAGSFORSHARED='';;
1676 *)
1677 CFLAGSFORSHARED='$(CCSHARED)'
1678 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001679fi
1680AC_MSG_RESULT($CFLAGSFORSHARED)
1681
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001682# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1683# library (with --enable-shared).
1684# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001685# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1686# if it is not required, since it creates a dependency of the shared library
1687# to LIBS. This, in turn, means that applications linking the shared libpython
1688# don't need to link LIBS explicitly. The default should be only changed
1689# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001690AC_SUBST(SHLIBS)
1691AC_MSG_CHECKING(SHLIBS)
1692case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001693 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001694 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001695esac
1696AC_MSG_RESULT($SHLIBS)
1697
1698
Guido van Rossum627b2d71993-12-24 10:39:16 +00001699# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001700AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1701AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001702
1703# only check for sem_ini if thread support is requested
1704if test "$with_threads" = "yes" -o -z "$with_threads"; then
1705 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1706 # posix4 on Solaris 2.6
1707 # pthread (first!) on Linux
1708fi
1709
Martin v. Löwis19d17342003-06-14 21:03:05 +00001710# check if we need libintl for locale functions
1711AC_CHECK_LIB(intl, textdomain,
1712 AC_DEFINE(WITH_LIBINTL, 1,
1713 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001714
1715# checks for system dependent C++ extensions support
1716case "$ac_sys_system" in
1717 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1718 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1719 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001720 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1721 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1722 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001723 AC_MSG_RESULT(yes)],
1724 [AC_MSG_RESULT(no)]);;
1725 *) ;;
1726esac
1727
Guido van Rossum70c7f481998-03-26 18:44:10 +00001728# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001729AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001730AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001731
Guido van Rossumc5a39031996-07-31 17:35:03 +00001732AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001733AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001734 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1735[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001736AC_MSG_RESULT($withval)
1737LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001738],
1739[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001740
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001741# Check for use of the system libffi library
1742AC_MSG_CHECKING(for --with-system-ffi)
1743AC_ARG_WITH(system_ffi,
1744 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1745
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001746AC_MSG_RESULT($with_system_ffi)
1747
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001748# Determine if signalmodule should be used.
1749AC_SUBST(USE_SIGNAL_MODULE)
1750AC_SUBST(SIGNAL_OBJS)
1751AC_MSG_CHECKING(for --with-signal-module)
1752AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001753 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001754
1755if test -z "$with_signal_module"
1756then with_signal_module="yes"
1757fi
1758AC_MSG_RESULT($with_signal_module)
1759
1760if test "${with_signal_module}" = "yes"; then
1761 USE_SIGNAL_MODULE=""
1762 SIGNAL_OBJS=""
1763else
1764 USE_SIGNAL_MODULE="#"
1765 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1766fi
1767
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001768# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001769AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001770USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001771
Guido van Rossum54d93d41997-01-22 20:51:58 +00001772AC_MSG_CHECKING(for --with-dec-threads)
1773AC_SUBST(LDLAST)
1774AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001775 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1776[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001777AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001778LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001779if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001780 with_thread="$withval";
1781fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001782[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001783
Martin v. Löwis11437992002-04-12 09:54:03 +00001784# Templates for things AC_DEFINEd more than once.
1785# For a single AC_DEFINE, no template is needed.
1786AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1787AH_TEMPLATE(_REENTRANT,
1788 [Define to force use of thread-safe errno, h_errno, and other functions])
1789AH_TEMPLATE(WITH_THREAD,
1790 [Define if you want to compile in rudimentary thread support])
1791
Guido van Rossum54d93d41997-01-22 20:51:58 +00001792AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001793dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001794AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001795 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001796
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001797# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001798dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001799AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001800 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1801 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001802
1803if test -z "$with_threads"
1804then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001805fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001806AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001807
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001808AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001809if test "$with_threads" = "no"
1810then
1811 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001812elif test "$ac_cv_pthread_is_default" = yes
1813then
1814 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001815 # Defining _REENTRANT on system with POSIX threads should not hurt.
1816 AC_DEFINE(_REENTRANT)
1817 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001818 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001819elif test "$ac_cv_kpthread" = "yes"
1820then
1821 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001822 if test "$ac_cv_cxx_thread" = "yes"; then
1823 CXX="$CXX -Kpthread"
1824 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001825 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001826 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001827 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001828elif test "$ac_cv_kthread" = "yes"
1829then
1830 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001831 if test "$ac_cv_cxx_thread" = "yes"; then
1832 CXX="$CXX -Kthread"
1833 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001834 AC_DEFINE(WITH_THREAD)
1835 posix_threads=yes
1836 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001837elif test "$ac_cv_pthread" = "yes"
1838then
1839 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001840 if test "$ac_cv_cxx_thread" = "yes"; then
1841 CXX="$CXX -pthread"
1842 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001843 AC_DEFINE(WITH_THREAD)
1844 posix_threads=yes
1845 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001846else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001847 if test ! -z "$with_threads" -a -d "$with_threads"
1848 then LDFLAGS="$LDFLAGS -L$with_threads"
1849 fi
1850 if test ! -z "$withval" -a -d "$withval"
1851 then LDFLAGS="$LDFLAGS -L$withval"
1852 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001853
1854 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001855 # define _POSIX_THREADS in unistd.h. Some apparently don't
1856 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001857 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1858 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001859 [
1860#include <unistd.h>
1861#ifdef _POSIX_THREADS
1862yes
1863#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001864 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1865 AC_MSG_RESULT($unistd_defines_pthreads)
1866
Martin v. Löwis130fb172001-07-19 11:00:41 +00001867 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001868 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1869 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001870 AC_DEFINE(HURD_C_THREADS, 1,
1871 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001872 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001873 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001874 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1875 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001876 AC_DEFINE(MACH_C_THREADS, 1,
1877 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001878 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001879 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001880 AC_ARG_WITH([pth],
1881 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1882 [AC_MSG_RESULT($withval)
1883 AC_DEFINE([WITH_THREAD])
1884 AC_DEFINE([HAVE_PTH], 1,
1885 [Define if you have GNU PTH threads.])
1886 LIBS="-lpth $LIBS"
1887 THREADOBJ="Python/thread.o"],
1888 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001889
1890 # Just looking for pthread_create in libpthread is not enough:
1891 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1892 # So we really have to include pthread.h, and then link.
1893 _libs=$LIBS
1894 LIBS="$LIBS -lpthread"
1895 AC_MSG_CHECKING([for pthread_create in -lpthread])
1896 AC_TRY_LINK([#include <pthread.h>
1897
1898void * start_routine (void *arg) { exit (0); }], [
1899pthread_create (NULL, NULL, start_routine, NULL)], [
1900 AC_MSG_RESULT(yes)
1901 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001902 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001903 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001904 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001905 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001906 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001907 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001908 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1909 AC_DEFINE(ATHEOS_THREADS, 1,
1910 [Define this if you have AtheOS threads.])
1911 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001912 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001913 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001914 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001915 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001916 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001917 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001918 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001919 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001920 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001921 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001922 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001923 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001924 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001925 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001926 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001927 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001928 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00001929 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001930
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001931 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1932 LIBS="$LIBS -lmpc"
1933 THREADOBJ="Python/thread.o"
1934 USE_THREAD_MODULE=""])
1935
1936 if test "$posix_threads" != "yes"; then
1937 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1938 LIBS="$LIBS -lthread"
1939 THREADOBJ="Python/thread.o"
1940 USE_THREAD_MODULE=""])
1941 fi
1942
1943 if test "$USE_THREAD_MODULE" != "#"
1944 then
1945 # If the above checks didn't disable threads, (at least) OSF1
1946 # needs this '-threads' argument during linking.
1947 case $ac_sys_system in
1948 OSF1) LDLAST=-threads;;
1949 esac
1950 fi
1951fi
1952
1953if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001954 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001955 AC_DEFINE(_POSIX_THREADS, 1,
1956 [Define if you have POSIX threads,
1957 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001958 fi
1959
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001960 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1961 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001962 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1963 Defined for Solaris 2.6 bug in pthread header.)
1964 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001965 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001966 Define if the Posix semaphores do not work on your system)
1967 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00001968 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
1969 Define if the Posix semaphores do not work on your system)
1970 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001971 esac
1972
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001973 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1974 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1975 [AC_TRY_RUN([#include <pthread.h>
1976 void *foo(void *parm) {
1977 return NULL;
1978 }
1979 main() {
1980 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001981 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001982 if (pthread_attr_init(&attr)) exit(-1);
1983 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001984 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001985 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001986 }],
1987 ac_cv_pthread_system_supported=yes,
1988 ac_cv_pthread_system_supported=no,
1989 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001990 ])
1991 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1992 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001993 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001994 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001995 AC_CHECK_FUNCS(pthread_sigmask,
1996 [case $ac_sys_system in
1997 CYGWIN*)
1998 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1999 [Define if pthread_sigmask() does not work on your system.])
2000 ;;
2001 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002002fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002003
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002004
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002005# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002006AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002007AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002008AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002009[ --enable-ipv6 Enable ipv6 (with ipv4) support
2010 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002011[ case "$enableval" in
2012 no)
2013 AC_MSG_RESULT(no)
2014 ipv6=no
2015 ;;
2016 *) AC_MSG_RESULT(yes)
2017 AC_DEFINE(ENABLE_IPV6)
2018 ipv6=yes
2019 ;;
2020 esac ],
2021
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002022[
2023dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002024 AC_TRY_RUN([ /* AF_INET6 available check */
2025#include <sys/types.h>
2026#include <sys/socket.h>
2027main()
2028{
2029 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2030 exit(1);
2031 else
2032 exit(0);
2033}
2034],
2035 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002036 ipv6=yes,
2037 AC_MSG_RESULT(no)
2038 ipv6=no,
2039 AC_MSG_RESULT(no)
2040 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002041)
2042
2043if test "$ipv6" = "yes"; then
2044 AC_MSG_CHECKING(if RFC2553 API is available)
2045 AC_TRY_COMPILE([#include <sys/types.h>
2046#include <netinet/in.h>],
2047 [struct sockaddr_in6 x;
2048x.sin6_scope_id;],
2049 AC_MSG_RESULT(yes)
2050 ipv6=yes,
2051 AC_MSG_RESULT(no, IPv6 disabled)
2052 ipv6=no)
2053fi
2054
2055if test "$ipv6" = "yes"; then
2056 AC_DEFINE(ENABLE_IPV6)
2057fi
2058])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002059
2060ipv6type=unknown
2061ipv6lib=none
2062ipv6trylibc=no
2063
2064if test "$ipv6" = "yes"; then
2065 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002066 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2067 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002068 case $i in
2069 inria)
2070 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002071 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002072#include <netinet/in.h>
2073#ifdef IPV6_INRIA_VERSION
2074yes
2075#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002076 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002077 ;;
2078 kame)
2079 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002080 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002081#include <netinet/in.h>
2082#ifdef __KAME__
2083yes
2084#endif],
2085 [ipv6type=$i;
2086 ipv6lib=inet6
2087 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002088 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002089 ;;
2090 linux-glibc)
2091 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002092 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002093#include <features.h>
2094#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2095yes
2096#endif],
2097 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002098 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002099 ;;
2100 linux-inet6)
2101 dnl http://www.v6.linux.or.jp/
2102 if test -d /usr/inet6; then
2103 ipv6type=$i
2104 ipv6lib=inet6
2105 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002106 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002107 fi
2108 ;;
2109 solaris)
2110 if test -f /etc/netconfig; then
2111 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2112 ipv6type=$i
2113 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002114 fi
2115 fi
2116 ;;
2117 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002118 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002119#include <sys/param.h>
2120#ifdef _TOSHIBA_INET6
2121yes
2122#endif],
2123 [ipv6type=$i;
2124 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002125 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002126 ;;
2127 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002128 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002129#include </usr/local/v6/include/sys/v6config.h>
2130#ifdef __V6D__
2131yes
2132#endif],
2133 [ipv6type=$i;
2134 ipv6lib=v6;
2135 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002136 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002137 ;;
2138 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002139 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002140#include <sys/param.h>
2141#ifdef _ZETA_MINAMI_INET6
2142yes
2143#endif],
2144 [ipv6type=$i;
2145 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002146 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002147 ;;
2148 esac
2149 if test "$ipv6type" != "unknown"; then
2150 break
2151 fi
2152 done
2153 AC_MSG_RESULT($ipv6type)
2154fi
2155
2156if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2157 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2158 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2159 echo "using lib$ipv6lib"
2160 else
2161 if test $ipv6trylibc = "yes"; then
2162 echo "using libc"
2163 else
2164 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2165 echo "You need to fetch lib$ipv6lib.a from appropriate"
2166 echo 'ipv6 kit and compile beforehand.'
2167 exit 1
2168 fi
2169 fi
2170fi
2171
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002172# Check for --with-doc-strings
2173AC_MSG_CHECKING(for --with-doc-strings)
2174AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002175 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002176
2177if test -z "$with_doc_strings"
2178then with_doc_strings="yes"
2179fi
2180if test "$with_doc_strings" != "no"
2181then
2182 AC_DEFINE(WITH_DOC_STRINGS, 1,
2183 [Define if you want documentation strings in extension modules])
2184fi
2185AC_MSG_RESULT($with_doc_strings)
2186
Neil Schemenauera35c6882001-02-27 04:45:05 +00002187# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002188AC_MSG_CHECKING(for --with-tsc)
2189AC_ARG_WITH(tsc,
2190[ --with(out)-tsc enable/disable timestamp counter profile], [
2191if test "$withval" != no
2192then
2193 AC_DEFINE(WITH_TSC, 1,
2194 [Define to profile with the Pentium timestamp counter])
2195 AC_MSG_RESULT(yes)
2196else AC_MSG_RESULT(no)
2197fi],
2198[AC_MSG_RESULT(no)])
2199
2200# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002201AC_MSG_CHECKING(for --with-pymalloc)
2202AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002203 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002204
2205if test -z "$with_pymalloc"
2206then with_pymalloc="yes"
2207fi
2208if test "$with_pymalloc" != "no"
2209then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002210 AC_DEFINE(WITH_PYMALLOC, 1,
2211 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002212fi
2213AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002214
Barry Warsawef82cd72000-06-30 16:21:01 +00002215# Check for --with-wctype-functions
2216AC_MSG_CHECKING(for --with-wctype-functions)
2217AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002218 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2219[
Barry Warsawef82cd72000-06-30 16:21:01 +00002220if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002221then
2222 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2223 [Define if you want wctype.h functions to be used instead of the
2224 one supplied by Python itself. (see Include/unicodectype.h).])
2225 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002226else AC_MSG_RESULT(no)
2227fi],
2228[AC_MSG_RESULT(no)])
2229
Guido van Rossum68242b51996-05-28 22:53:03 +00002230# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002231AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002232DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002233
Guido van Rossume97ee181999-12-20 21:27:22 +00002234# the dlopen() function means we might want to use dynload_shlib.o. some
2235# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002236AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002237
2238# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2239# loading of modules.
2240AC_SUBST(DYNLOADFILE)
2241AC_MSG_CHECKING(DYNLOADFILE)
2242if test -z "$DYNLOADFILE"
2243then
2244 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002245 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2246 if test "$ac_cv_func_dlopen" = yes
2247 then DYNLOADFILE="dynload_shlib.o"
2248 else DYNLOADFILE="dynload_aix.o"
2249 fi
2250 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002251 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002252 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2253 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002254 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002255 *)
2256 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2257 # out any dynamic loading
2258 if test "$ac_cv_func_dlopen" = yes
2259 then DYNLOADFILE="dynload_shlib.o"
2260 else DYNLOADFILE="dynload_stub.o"
2261 fi
2262 ;;
2263 esac
2264fi
2265AC_MSG_RESULT($DYNLOADFILE)
2266if test "$DYNLOADFILE" != "dynload_stub.o"
2267then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002268 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2269 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002270fi
2271
Jack Jansenc49e5b72001-06-19 15:00:23 +00002272# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2273
2274AC_SUBST(MACHDEP_OBJS)
2275AC_MSG_CHECKING(MACHDEP_OBJS)
2276if test -z "$MACHDEP_OBJS"
2277then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002278 MACHDEP_OBJS=$extra_machdep_objs
2279else
2280 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002281fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002282AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002283
Guido van Rossum627b2d71993-12-24 10:39:16 +00002284# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002285AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2286 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002287 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002288 getpriority getpwent getspnam getspent getsid getwd \
Christian Heimesd0764e22007-12-04 15:00:33 +00002289 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002290 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002291 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002292 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002293 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002294 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002295 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis92fab752008-03-08 10:40:41 +00002296 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002297
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002298# For some functions, having a definition is not sufficient, since
2299# we want to take their address.
2300AC_MSG_CHECKING(for chroot)
2301AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2302 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2303 AC_MSG_RESULT(yes),
2304 AC_MSG_RESULT(no)
2305)
2306AC_MSG_CHECKING(for link)
2307AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2308 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2309 AC_MSG_RESULT(yes),
2310 AC_MSG_RESULT(no)
2311)
2312AC_MSG_CHECKING(for symlink)
2313AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2314 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2315 AC_MSG_RESULT(yes),
2316 AC_MSG_RESULT(no)
2317)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002318AC_MSG_CHECKING(for fchdir)
2319AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2320 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2321 AC_MSG_RESULT(yes),
2322 AC_MSG_RESULT(no)
2323)
2324AC_MSG_CHECKING(for fsync)
2325AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002326 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002327 AC_MSG_RESULT(yes),
2328 AC_MSG_RESULT(no)
2329)
2330AC_MSG_CHECKING(for fdatasync)
2331AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2332 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2333 AC_MSG_RESULT(yes),
2334 AC_MSG_RESULT(no)
2335)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002336AC_MSG_CHECKING(for epoll)
2337AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2338 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2339 AC_MSG_RESULT(yes),
2340 AC_MSG_RESULT(no)
2341)
2342AC_MSG_CHECKING(for kqueue)
2343AC_TRY_COMPILE([
2344#include <sys/types.h>
2345#include <sys/event.h>
2346 ], int x=kqueue(),
2347 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2348 AC_MSG_RESULT(yes),
2349 AC_MSG_RESULT(no)
2350)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002351# On some systems (eg. FreeBSD 5), we would find a definition of the
2352# functions ctermid_r, setgroups in the library, but no prototype
2353# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2354# address to avoid compiler warnings and potential miscompilations
2355# because of the missing prototypes.
2356
2357AC_MSG_CHECKING(for ctermid_r)
2358AC_TRY_COMPILE([
2359#include "confdefs.h"
2360#include <stdio.h>
2361], void* p = ctermid_r,
2362 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2363 AC_MSG_RESULT(yes),
2364 AC_MSG_RESULT(no)
2365)
2366
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002367AC_MSG_CHECKING(for flock)
2368AC_TRY_COMPILE([
2369#include "confdefs.h"
2370#include <sys/file.h>
2371], void* p = flock,
2372 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2373 AC_MSG_RESULT(yes),
2374 AC_MSG_RESULT(no)
2375)
2376
2377AC_MSG_CHECKING(for getpagesize)
2378AC_TRY_COMPILE([
2379#include "confdefs.h"
2380#include <unistd.h>
2381], void* p = getpagesize,
2382 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2383 AC_MSG_RESULT(yes),
2384 AC_MSG_RESULT(no)
2385)
2386
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002387dnl check for true
2388AC_CHECK_PROGS(TRUE, true, /bin/true)
2389
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002390dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2391dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002392AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002393 AC_CHECK_LIB(resolv, inet_aton)
2394)
2395
Christian Heimesd0764e22007-12-04 15:00:33 +00002396# On Tru64, chflags seems to be present, but calling it will
2397# exit Python
2398AC_MSG_CHECKING(for chflags)
2399AC_TRY_RUN([
2400#include <sys/stat.h>
2401#include <unistd.h>
2402int main(int argc, char*argv[])
2403{
2404 if(chflags(argv[0], 0) != 0)
2405 return 1;
2406 return 0;
2407}
2408],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2409 AC_MSG_RESULT(yes),
2410 AC_MSG_RESULT(no)
2411)
2412
2413AC_MSG_CHECKING(for lchflags)
2414AC_TRY_RUN([
2415#include <sys/stat.h>
2416#include <unistd.h>
2417int main(int argc, char*argv[])
2418{
2419 if(lchflags(argv[0], 0) != 0)
2420 return 1;
2421 return 0;
2422}
2423],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2424 AC_MSG_RESULT(yes),
2425 AC_MSG_RESULT(no)
2426)
2427
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002428dnl Check if system zlib has *Copy() functions
2429dnl
2430dnl On MacOSX the linker will search for dylibs on the entire linker path
2431dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2432dnl to revert to a more traditional unix behaviour and make it possible to
2433dnl override the system libz with a local static library of libz. Temporarily
2434dnl add that flag to our CFLAGS as well to ensure that we check the version
2435dnl of libz that will be used by setup.py.
2436dnl The -L/usr/local/lib is needed as wel to get the same compilation
2437dnl environment as setup.py (and leaving it out can cause configure to use the
2438dnl wrong version of the library)
2439case $ac_sys_system/$ac_sys_release in
2440Darwin/*)
2441 _CUR_CFLAGS="${CFLAGS}"
2442 _CUR_LDFLAGS="${LDFLAGS}"
2443 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2444 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2445 ;;
2446esac
2447
2448AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2449
2450case $ac_sys_system/$ac_sys_release in
2451Darwin/*)
2452 CFLAGS="${_CUR_CFLAGS}"
2453 LDFLAGS="${_CUR_LDFLAGS}"
2454 ;;
2455esac
2456
Martin v. Löwise9416172003-05-03 10:12:45 +00002457AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002458AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002459#include "confdefs.h"
2460#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002461], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002462 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2463 AC_MSG_RESULT(yes),
2464 AC_MSG_RESULT(no)
2465)
2466
2467AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002468AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002469#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002470#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002471#include <sys/socket.h>
2472#include <netinet/in.h>
2473#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002474], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002475 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2476 AC_MSG_RESULT(yes),
2477 AC_MSG_RESULT(no)
2478)
2479
2480AC_MSG_CHECKING(for inet_pton)
2481AC_TRY_COMPILE([
2482#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002483#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002484#include <sys/socket.h>
2485#include <netinet/in.h>
2486#include <arpa/inet.h>
2487], void* p = inet_pton,
2488 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2489 AC_MSG_RESULT(yes),
2490 AC_MSG_RESULT(no)
2491)
2492
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002493# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002494AC_MSG_CHECKING(for setgroups)
2495AC_TRY_COMPILE([
2496#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002497#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002498#ifdef HAVE_GRP_H
2499#include <grp.h>
2500#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002501],
2502void* p = setgroups,
2503 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2504 AC_MSG_RESULT(yes),
2505 AC_MSG_RESULT(no)
2506)
2507
Fred Drake8cef4cf2000-06-28 16:40:38 +00002508# check for openpty and forkpty
2509
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002510AC_CHECK_FUNCS(openpty,,
2511 AC_CHECK_LIB(util,openpty,
2512 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2513 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2514 )
2515)
2516AC_CHECK_FUNCS(forkpty,,
2517 AC_CHECK_LIB(util,forkpty,
2518 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2519 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2520 )
2521)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002522
Christian Heimesb186d002008-03-18 15:15:01 +00002523# Stuff for expat.
2524AC_CHECK_FUNCS(memmove)
2525
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002526# check for long file support functions
2527AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2528
Christian Heimesb186d002008-03-18 15:15:01 +00002529AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002530AC_CHECK_FUNCS(getpgrp,
2531 AC_TRY_COMPILE([#include <unistd.h>],
2532 [getpgrp(0);],
2533 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2534 [Define if getpgrp() must be called as getpgrp(0).])
2535 )
2536)
Jack Jansen150753c2003-03-29 22:07:47 +00002537AC_CHECK_FUNCS(setpgrp,
2538 AC_TRY_COMPILE([#include <unistd.h>],
2539 [setpgrp(0,0);],
2540 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2541 [Define if setpgrp() must be called as setpgrp(0, 0).])
2542 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002543)
2544AC_CHECK_FUNCS(gettimeofday,
2545 AC_TRY_COMPILE([#include <sys/time.h>],
2546 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2547 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2548 [Define if gettimeofday() does not have second (timezone) argument
2549 This is the case on Motorola V4 (R40V4.2)])
2550 )
2551)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002552
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002553AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002554AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002555#if defined(MAJOR_IN_MKDEV)
2556#include <sys/mkdev.h>
2557#elif defined(MAJOR_IN_SYSMACROS)
2558#include <sys/sysmacros.h>
2559#else
2560#include <sys/types.h>
2561#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002562],[
2563 makedev(major(0),minor(0));
2564],[
2565 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2566 [Define to 1 if you have the device macros.])
2567 AC_MSG_RESULT(yes)
2568],[
2569 AC_MSG_RESULT(no)
2570])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002571
2572# On OSF/1 V5.1, getaddrinfo is available, but a define
2573# for [no]getaddrinfo in netdb.h.
2574AC_MSG_CHECKING(for getaddrinfo)
2575AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002576#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002577#include <sys/socket.h>
2578#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002579#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002580],[
2581getaddrinfo(NULL, NULL, NULL, NULL);
2582], [
2583AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002584AC_MSG_CHECKING(getaddrinfo bug)
2585AC_TRY_RUN([
2586#include <sys/types.h>
2587#include <netdb.h>
2588#include <string.h>
2589#include <sys/socket.h>
2590#include <netinet/in.h>
2591
2592main()
2593{
2594 int passive, gaierr, inet4 = 0, inet6 = 0;
2595 struct addrinfo hints, *ai, *aitop;
2596 char straddr[INET6_ADDRSTRLEN], strport[16];
2597
2598 for (passive = 0; passive <= 1; passive++) {
2599 memset(&hints, 0, sizeof(hints));
2600 hints.ai_family = AF_UNSPEC;
2601 hints.ai_flags = passive ? AI_PASSIVE : 0;
2602 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002603 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002604 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2605 (void)gai_strerror(gaierr);
2606 goto bad;
2607 }
2608 for (ai = aitop; ai; ai = ai->ai_next) {
2609 if (ai->ai_addr == NULL ||
2610 ai->ai_addrlen == 0 ||
2611 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2612 straddr, sizeof(straddr), strport, sizeof(strport),
2613 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2614 goto bad;
2615 }
2616 switch (ai->ai_family) {
2617 case AF_INET:
2618 if (strcmp(strport, "54321") != 0) {
2619 goto bad;
2620 }
2621 if (passive) {
2622 if (strcmp(straddr, "0.0.0.0") != 0) {
2623 goto bad;
2624 }
2625 } else {
2626 if (strcmp(straddr, "127.0.0.1") != 0) {
2627 goto bad;
2628 }
2629 }
2630 inet4++;
2631 break;
2632 case AF_INET6:
2633 if (strcmp(strport, "54321") != 0) {
2634 goto bad;
2635 }
2636 if (passive) {
2637 if (strcmp(straddr, "::") != 0) {
2638 goto bad;
2639 }
2640 } else {
2641 if (strcmp(straddr, "::1") != 0) {
2642 goto bad;
2643 }
2644 }
2645 inet6++;
2646 break;
2647 case AF_UNSPEC:
2648 goto bad;
2649 break;
2650 default:
2651 /* another family support? */
2652 break;
2653 }
2654 }
2655 }
2656
2657 if (!(inet4 == 0 || inet4 == 2))
2658 goto bad;
2659 if (!(inet6 == 0 || inet6 == 2))
2660 goto bad;
2661
2662 if (aitop)
2663 freeaddrinfo(aitop);
2664 exit(0);
2665
2666 bad:
2667 if (aitop)
2668 freeaddrinfo(aitop);
2669 exit(1);
2670}
2671],
2672AC_MSG_RESULT(good)
2673buggygetaddrinfo=no,
2674AC_MSG_RESULT(buggy)
2675buggygetaddrinfo=yes,
2676AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002677buggygetaddrinfo=yes)], [
2678AC_MSG_RESULT(no)
2679buggygetaddrinfo=yes
2680])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002681
2682if test "$buggygetaddrinfo" = "yes"; then
2683 if test "$ipv6" = "yes"; then
2684 echo 'Fatal: You must get working getaddrinfo() function.'
2685 echo ' or you can specify "--disable-ipv6"'.
2686 exit 1
2687 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002688else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002689 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002690fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002691AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002692
Guido van Rossum627b2d71993-12-24 10:39:16 +00002693# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002694AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002695AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002696AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002697AC_CHECK_MEMBERS([struct stat.st_rdev])
2698AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002699AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002700AC_CHECK_MEMBERS([struct stat.st_gen])
2701AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002702AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002703
2704AC_MSG_CHECKING(for time.h that defines altzone)
2705AC_CACHE_VAL(ac_cv_header_time_altzone,
2706[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2707 ac_cv_header_time_altzone=yes,
2708 ac_cv_header_time_altzone=no)])
2709AC_MSG_RESULT($ac_cv_header_time_altzone)
2710if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002711 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002712fi
2713
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002714was_it_defined=no
2715AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002716AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002717#include <sys/types.h>
2718#include <sys/select.h>
2719#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002720], [;], [
2721 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2722 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2723 (which you can't on SCO ODT 3.0).])
2724 was_it_defined=yes
2725])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002726AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002727
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002728AC_MSG_CHECKING(for addrinfo)
2729AC_CACHE_VAL(ac_cv_struct_addrinfo,
2730AC_TRY_COMPILE([
2731# include <netdb.h>],
2732 [struct addrinfo a],
2733 ac_cv_struct_addrinfo=yes,
2734 ac_cv_struct_addrinfo=no))
2735AC_MSG_RESULT($ac_cv_struct_addrinfo)
2736if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002737 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002738fi
2739
2740AC_MSG_CHECKING(for sockaddr_storage)
2741AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2742AC_TRY_COMPILE([
2743# include <sys/types.h>
2744# include <sys/socket.h>],
2745 [struct sockaddr_storage s],
2746 ac_cv_struct_sockaddr_storage=yes,
2747 ac_cv_struct_sockaddr_storage=no))
2748AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2749if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002750 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002751fi
2752
Guido van Rossum627b2d71993-12-24 10:39:16 +00002753# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002754
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002755AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002756AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002757
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002758works=no
2759AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002760AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2761 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2762)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002763AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002764
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002765works=no
2766AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002767AC_TRY_COMPILE([], [signed char c;], works=yes,
2768 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2769)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002770AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002771
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002772have_prototypes=no
2773AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002774AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2775 AC_DEFINE(HAVE_PROTOTYPES, 1,
2776 [Define if your compiler supports function prototype])
2777 have_prototypes=yes
2778])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002779AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002780
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002781works=no
2782AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002783AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002784#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002785int foo(int x, ...) {
2786 va_list va;
2787 va_start(va, x);
2788 va_arg(va, int);
2789 va_arg(va, char *);
2790 va_arg(va, double);
2791 return 0;
2792}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002793], [return foo(10, "", 3.14);], [
2794 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2795 [Define if your compiler supports variable length function prototypes
2796 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2797 works=yes
2798])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002799AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002800
Dave Cole331708b2004-08-09 04:51:41 +00002801# check for socketpair
2802AC_MSG_CHECKING(for socketpair)
2803AC_TRY_COMPILE([
2804#include <sys/types.h>
2805#include <sys/socket.h>
2806], void *x=socketpair,
2807 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2808 AC_MSG_RESULT(yes),
2809 AC_MSG_RESULT(no)
2810)
2811
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002812# check if sockaddr has sa_len member
2813AC_MSG_CHECKING(if sockaddr has sa_len member)
2814AC_TRY_COMPILE([#include <sys/types.h>
2815#include <sys/socket.h>],
2816[struct sockaddr x;
2817x.sa_len = 0;],
2818 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002819 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002820 AC_MSG_RESULT(no))
2821
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002822va_list_is_array=no
2823AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002824AC_TRY_COMPILE([
2825#ifdef HAVE_STDARG_PROTOTYPES
2826#include <stdarg.h>
2827#else
2828#include <varargs.h>
2829#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002830], [va_list list1, list2; list1 = list2;], , [
2831 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2832 va_list_is_array=yes
2833])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002834AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002835
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002836# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002837AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2838 [Define this if you have some version of gethostbyname_r()])
2839
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002840AC_CHECK_FUNC(gethostbyname_r, [
2841 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2842 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2843 OLD_CFLAGS=$CFLAGS
2844 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2845 AC_TRY_COMPILE([
2846# include <netdb.h>
2847 ], [
2848 char *name;
2849 struct hostent *he, *res;
2850 char buffer[2048];
2851 int buflen = 2048;
2852 int h_errnop;
2853
2854 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2855 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002856 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002857 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2858 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002859 AC_MSG_RESULT(yes)
2860 ], [
2861 AC_MSG_RESULT(no)
2862 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2863 AC_TRY_COMPILE([
2864# include <netdb.h>
2865 ], [
2866 char *name;
2867 struct hostent *he;
2868 char buffer[2048];
2869 int buflen = 2048;
2870 int h_errnop;
2871
2872 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2873 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002874 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002875 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2876 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002877 AC_MSG_RESULT(yes)
2878 ], [
2879 AC_MSG_RESULT(no)
2880 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2881 AC_TRY_COMPILE([
2882# include <netdb.h>
2883 ], [
2884 char *name;
2885 struct hostent *he;
2886 struct hostent_data data;
2887
2888 (void) gethostbyname_r(name, he, &data);
2889 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002890 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002891 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2892 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002893 AC_MSG_RESULT(yes)
2894 ], [
2895 AC_MSG_RESULT(no)
2896 ])
2897 ])
2898 ])
2899 CFLAGS=$OLD_CFLAGS
2900], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002901 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002902])
2903AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2904AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2905AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002906AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002907AC_SUBST(HAVE_GETHOSTBYNAME)
2908
Guido van Rossum627b2d71993-12-24 10:39:16 +00002909# checks for system services
2910# (none yet)
2911
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002912# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002913AC_CHECK_FUNC(__fpu_control,
2914 [],
2915 [AC_CHECK_LIB(ieee, __fpu_control)
2916])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002917
Guido van Rossum93274221997-05-09 02:42:00 +00002918# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002919AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002920AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002921 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2922[
Guido van Rossum93274221997-05-09 02:42:00 +00002923if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002924then
2925 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2926 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2927 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002928else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002929fi],
2930[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002931
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002932# check for --with-libm=...
2933AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002934case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002935Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002936*) LIBM=-lm
2937esac
Guido van Rossum93274221997-05-09 02:42:00 +00002938AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002939AC_ARG_WITH(libm,
2940 AC_HELP_STRING(--with-libm=STRING, math library),
2941[
Guido van Rossum93274221997-05-09 02:42:00 +00002942if test "$withval" = no
2943then LIBM=
2944 AC_MSG_RESULT(force LIBM empty)
2945elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002946then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002947 AC_MSG_RESULT(set LIBM="$withval")
2948else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002949fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002950[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002951
2952# check for --with-libc=...
2953AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002954AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002955AC_ARG_WITH(libc,
2956 AC_HELP_STRING(--with-libc=STRING, C library),
2957[
Guido van Rossum93274221997-05-09 02:42:00 +00002958if test "$withval" = no
2959then LIBC=
2960 AC_MSG_RESULT(force LIBC empty)
2961elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002962then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002963 AC_MSG_RESULT(set LIBC="$withval")
2964else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002965fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002966[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002967
Christian Heimes99170a52007-12-19 02:07:34 +00002968# ************************************
2969# * Check for mathematical functions *
2970# ************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002971
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002972LIBS_SAVE=$LIBS
2973LIBS="$LIBS $LIBM"
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002974
2975# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
2976# -0. on some architectures.
2977AC_MSG_CHECKING(whether tanh preserves the sign of zero)
2978AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
2979AC_TRY_RUN([
2980#include <math.h>
2981#include <stdlib.h>
2982int main() {
2983 /* return 0 if either negative zeros don't exist
2984 on this platform or if negative zeros exist
2985 and tanh(-0.) == -0. */
2986 if (atan2(0., -1.) == atan2(-0., -1.) ||
2987 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
2988 else exit(1);
2989}
2990],
2991ac_cv_tanh_preserves_zero_sign=yes,
2992ac_cv_tanh_preserves_zero_sign=no,
2993ac_cv_tanh_preserves_zero_sign=no)])
2994AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
2995if test "$ac_cv_tanh_preserves_zero_sign" = yes
2996then
2997 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
2998 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
2999fi
3000
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003001AC_REPLACE_FUNCS(hypot)
Christian Heimes99170a52007-12-19 02:07:34 +00003002
Christian Heimes9bd667a2008-01-20 15:14:11 +00003003AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes99170a52007-12-19 02:07:34 +00003004
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003005LIBS=$LIBS_SAVE
3006
Guido van Rossumef2255b2000-03-10 22:30:29 +00003007# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003008AC_CHECK_HEADER(wchar.h, [
3009 AC_DEFINE(HAVE_WCHAR_H, 1,
3010 [Define if the compiler provides a wchar.h header file.])
3011 wchar_h="yes"
3012],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003013wchar_h="no"
3014)
3015
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003016# determine wchar_t size
3017if test "$wchar_h" = yes
3018then
Guido van Rossum67b26592001-10-20 14:21:45 +00003019 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003020fi
3021
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003022AC_MSG_CHECKING(for UCS-4 tcl)
3023have_ucs4_tcl=no
3024AC_TRY_COMPILE([
3025#include <tcl.h>
3026#if TCL_UTF_MAX != 6
3027# error "NOT UCS4_TCL"
3028#endif], [], [
3029 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3030 have_ucs4_tcl=yes
3031])
3032AC_MSG_RESULT($have_ucs4_tcl)
3033
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003034# check whether wchar_t is signed or not
3035if test "$wchar_h" = yes
3036then
3037 # check whether wchar_t is signed or not
3038 AC_MSG_CHECKING(whether wchar_t is signed)
3039 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3040 AC_TRY_RUN([
3041 #include <wchar.h>
3042 int main()
3043 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003044 /* Success: exit code 0 */
3045 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003046 }
3047 ],
3048 ac_cv_wchar_t_signed=yes,
3049 ac_cv_wchar_t_signed=no,
3050 ac_cv_wchar_t_signed=yes)])
3051 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3052fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003053
Georg Brandl52d168a2008-01-07 18:10:24 +00003054AC_MSG_CHECKING(what type to use for str)
3055AC_ARG_WITH(wide-unicode,
3056 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3057[
3058if test "$withval" != no
3059then unicode_size="4"
3060else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003061fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003062],
3063[
3064case "$have_ucs4_tcl" in
3065 yes) unicode_size="4" ;;
3066 *) unicode_size="2" ;;
3067esac
3068])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003069
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003070AH_TEMPLATE(Py_UNICODE_SIZE,
3071 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003072case "$unicode_size" in
3073 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3074 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003075esac
3076
Martin v. Löwis11437992002-04-12 09:54:03 +00003077AH_TEMPLATE(PY_UNICODE_TYPE,
3078 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003079
Georg Brandl52d168a2008-01-07 18:10:24 +00003080# wchar_t is only usable if it maps to an unsigned type
3081if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003082 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003083then
3084 PY_UNICODE_TYPE="wchar_t"
3085 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3086 [Define if you have a useable wchar_t type defined in wchar.h; useable
3087 means wchar_t must be an unsigned type with at least 16 bits. (see
3088 Include/unicodeobject.h).])
3089 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3090elif test "$ac_cv_sizeof_short" = "$unicode_size"
3091then
3092 PY_UNICODE_TYPE="unsigned short"
3093 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3094elif test "$ac_cv_sizeof_long" = "$unicode_size"
3095then
3096 PY_UNICODE_TYPE="unsigned long"
3097 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3098else
3099 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003100fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003101AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003102
3103# check for endianness
3104AC_C_BIGENDIAN
Thomas Wouters477c8d52006-05-27 19:21:47 +00003105AH_VERBATIM([WORDS_BIGENDIAN],
3106[
3107 /* Define to 1 if your processor stores words with the most significant byte
3108 first (like Motorola and SPARC, unlike Intel and VAX).
3109
3110 The block below does compile-time checking for endianness on platforms
3111 that use GCC and therefore allows compiling fat binaries on OSX by using
3112 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3113 such that the configure-result is used on systems that don't use GCC.
3114 */
3115#ifdef __BIG_ENDIAN__
3116#define WORDS_BIGENDIAN 1
3117#else
3118#ifndef __LITTLE_ENDIAN__
3119#undef WORDS_BIGENDIAN
3120#endif
3121#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003122
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003123# Check whether right shifting a negative integer extends the sign bit
3124# or fills with zeros (like the Cray J90, according to Tim Peters).
3125AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003126AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003127AC_TRY_RUN([
3128int main()
3129{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003130 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003131}
Guido van Rossum3065c942001-09-17 04:03:14 +00003132],
3133ac_cv_rshift_extends_sign=yes,
3134ac_cv_rshift_extends_sign=no,
3135ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003136AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3137if test "$ac_cv_rshift_extends_sign" = no
3138then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003139 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3140 [Define if i>>j for signed int i does not extend the sign bit
3141 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003142fi
3143
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003144# check for getc_unlocked and related locking functions
3145AC_MSG_CHECKING(for getc_unlocked() and friends)
3146AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3147AC_TRY_LINK([#include <stdio.h>],[
3148 FILE *f = fopen("/dev/null", "r");
3149 flockfile(f);
3150 getc_unlocked(f);
3151 funlockfile(f);
3152], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3153AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3154if test "$ac_cv_have_getc_unlocked" = yes
3155then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003156 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3157 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003158fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003159
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003160# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003161# save the value of LIBS so we don't actually link Python with readline
3162LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003163AC_CHECK_LIB(readline, readline)
3164if test "$ac_cv_have_readline_readline" = no
3165then
3166 AC_CHECK_LIB(termcap, readline)
3167fi
3168
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003169# check for readline 2.1
3170AC_CHECK_LIB(readline, rl_callback_handler_install,
3171 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003172 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003173
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003174# check for readline 2.2
3175AC_TRY_CPP([#include <readline/readline.h>],
3176have_readline=yes, have_readline=no)
3177if test $have_readline = yes
3178then
3179 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3180 [readline/readline.h],
3181 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3182 [Define if you have readline 2.2]), )
3183fi
3184
Martin v. Löwis0daad592001-09-30 21:09:59 +00003185# check for readline 4.0
3186AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003187 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003188 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003189
Thomas Wouters89d996e2007-09-08 17:39:28 +00003190# also in 4.0
3191AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3192 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3193 [Define if you have readline 4.0]), , )
3194
Guido van Rossum353ae582001-07-10 16:45:32 +00003195# check for readline 4.2
3196AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003197 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003198 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003199
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003200# also in readline 4.2
3201AC_TRY_CPP([#include <readline/readline.h>],
3202have_readline=yes, have_readline=no)
3203if test $have_readline = yes
3204then
3205 AC_EGREP_HEADER([extern int rl_catch_signals;],
3206 [readline/readline.h],
3207 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3208 [Define if you can turn off readline's signal handling.]), )
3209fi
3210
Martin v. Löwis82bca632006-02-10 20:49:30 +00003211# End of readline checks: restore LIBS
3212LIBS=$LIBS_no_readline
3213
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003214AC_MSG_CHECKING(for broken nice())
3215AC_CACHE_VAL(ac_cv_broken_nice, [
3216AC_TRY_RUN([
3217int main()
3218{
3219 int val1 = nice(1);
3220 if (val1 != -1 && val1 == nice(2))
3221 exit(0);
3222 exit(1);
3223}
Guido van Rossum3065c942001-09-17 04:03:14 +00003224],
3225ac_cv_broken_nice=yes,
3226ac_cv_broken_nice=no,
3227ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003228AC_MSG_RESULT($ac_cv_broken_nice)
3229if test "$ac_cv_broken_nice" = yes
3230then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003231 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3232 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003233fi
3234
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003235AC_MSG_CHECKING(for broken poll())
3236AC_TRY_RUN([
3237#include <poll.h>
3238
3239int main (void)
3240 {
3241 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3242
3243 close (42);
3244
3245 int poll_test = poll (&poll_struct, 1, 0);
3246
3247 if (poll_test < 0)
3248 {
3249 exit(0);
3250 }
3251 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3252 {
3253 exit(0);
3254 }
3255 else
3256 {
3257 exit(1);
3258 }
3259 }
3260],
3261ac_cv_broken_poll=yes,
3262ac_cv_broken_poll=no,
3263ac_cv_broken_poll=no)
3264AC_MSG_RESULT($ac_cv_broken_poll)
3265if test "$ac_cv_broken_poll" = yes
3266then
3267 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3268 [Define if poll() sets errno on invalid file descriptors.])
3269fi
3270
Brett Cannon43802422005-02-10 20:48:03 +00003271# Before we can test tzset, we need to check if struct tm has a tm_zone
3272# (which is not required by ISO C or UNIX spec) and/or if we support
3273# tzname[]
3274AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003275
Brett Cannon43802422005-02-10 20:48:03 +00003276# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003277AC_MSG_CHECKING(for working tzset())
3278AC_CACHE_VAL(ac_cv_working_tzset, [
3279AC_TRY_RUN([
3280#include <stdlib.h>
3281#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003282#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003283
3284#if HAVE_TZNAME
3285extern char *tzname[];
3286#endif
3287
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003288int main()
3289{
Brett Cannon18367812003-09-19 00:59:16 +00003290 /* Note that we need to ensure that not only does tzset(3)
3291 do 'something' with localtime, but it works as documented
3292 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003293 This includes making sure that tzname is set properly if
3294 tm->tm_zone does not exist since it is the alternative way
3295 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003296
3297 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003298 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003299 */
3300
Brett Cannon43802422005-02-10 20:48:03 +00003301 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003302 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3303
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003304 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003305 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003306 if (localtime(&groundhogday)->tm_hour != 0)
3307 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003308#if HAVE_TZNAME
3309 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3310 if (strcmp(tzname[0], "UTC") ||
3311 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3312 exit(1);
3313#endif
Brett Cannon18367812003-09-19 00:59:16 +00003314
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003315 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003316 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003317 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003318 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003319#if HAVE_TZNAME
3320 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3321 exit(1);
3322#endif
Brett Cannon18367812003-09-19 00:59:16 +00003323
3324 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3325 tzset();
3326 if (localtime(&groundhogday)->tm_hour != 11)
3327 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003328#if HAVE_TZNAME
3329 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3330 exit(1);
3331#endif
3332
3333#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003334 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3335 exit(1);
3336 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3337 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003338#endif
Brett Cannon18367812003-09-19 00:59:16 +00003339
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003340 exit(0);
3341}
3342],
3343ac_cv_working_tzset=yes,
3344ac_cv_working_tzset=no,
3345ac_cv_working_tzset=no)])
3346AC_MSG_RESULT($ac_cv_working_tzset)
3347if test "$ac_cv_working_tzset" = yes
3348then
3349 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3350 [Define if tzset() actually switches the local timezone in a meaningful way.])
3351fi
3352
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003353# Look for subsecond timestamps in struct stat
3354AC_MSG_CHECKING(for tv_nsec in struct stat)
3355AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3356AC_TRY_COMPILE([#include <sys/stat.h>], [
3357struct stat st;
3358st.st_mtim.tv_nsec = 1;
3359],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003360ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003361ac_cv_stat_tv_nsec=no,
3362ac_cv_stat_tv_nsec=no))
3363AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3364if test "$ac_cv_stat_tv_nsec" = yes
3365then
3366 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3367 [Define if you have struct stat.st_mtim.tv_nsec])
3368fi
3369
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003370# Look for BSD style subsecond timestamps in struct stat
3371AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3372AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3373AC_TRY_COMPILE([#include <sys/stat.h>], [
3374struct stat st;
3375st.st_mtimespec.tv_nsec = 1;
3376],
3377ac_cv_stat_tv_nsec2=yes,
3378ac_cv_stat_tv_nsec2=no,
3379ac_cv_stat_tv_nsec2=no))
3380AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3381if test "$ac_cv_stat_tv_nsec2" = yes
3382then
3383 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3384 [Define if you have struct stat.st_mtimensec])
3385fi
3386
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003387# On HP/UX 11.0, mvwdelch is a block with a return statement
3388AC_MSG_CHECKING(whether mvwdelch is an expression)
3389AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3390AC_TRY_COMPILE([#include <curses.h>], [
3391 int rtn;
3392 rtn = mvwdelch(0,0,0);
3393], ac_cv_mvwdelch_is_expression=yes,
3394 ac_cv_mvwdelch_is_expression=no,
3395 ac_cv_mvwdelch_is_expression=yes))
3396AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3397
3398if test "$ac_cv_mvwdelch_is_expression" = yes
3399then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003400 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3401 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003402fi
3403
3404AC_MSG_CHECKING(whether WINDOW has _flags)
3405AC_CACHE_VAL(ac_cv_window_has_flags,
3406AC_TRY_COMPILE([#include <curses.h>], [
3407 WINDOW *w;
3408 w->_flags = 0;
3409], ac_cv_window_has_flags=yes,
3410 ac_cv_window_has_flags=no,
3411 ac_cv_window_has_flags=no))
3412AC_MSG_RESULT($ac_cv_window_has_flags)
3413
3414
3415if test "$ac_cv_window_has_flags" = yes
3416then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003417 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3418 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003419fi
3420
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003421AC_MSG_CHECKING(for is_term_resized)
3422AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3423 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3424 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003425 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003426)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003427
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003428AC_MSG_CHECKING(for resize_term)
3429AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3430 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3431 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003432 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003433)
3434
3435AC_MSG_CHECKING(for resizeterm)
3436AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3437 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3438 AC_MSG_RESULT(yes),
3439 AC_MSG_RESULT(no)
3440)
3441
Thomas Wouters89f507f2006-12-13 04:49:30 +00003442AC_MSG_CHECKING(for /dev/ptmx)
3443
3444if test -r /dev/ptmx
3445then
3446 AC_MSG_RESULT(yes)
3447 AC_DEFINE(HAVE_DEV_PTMX, 1,
3448 [Define if we have /dev/ptmx.])
3449else
3450 AC_MSG_RESULT(no)
3451fi
3452
3453AC_MSG_CHECKING(for /dev/ptc)
3454
3455if test -r /dev/ptc
3456then
3457 AC_MSG_RESULT(yes)
3458 AC_DEFINE(HAVE_DEV_PTC, 1,
3459 [Define if we have /dev/ptc.])
3460else
3461 AC_MSG_RESULT(no)
3462fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003463
Thomas Wouters477c8d52006-05-27 19:21:47 +00003464AC_MSG_CHECKING(for %zd printf() format support)
3465AC_TRY_RUN([#include <stdio.h>
3466#include <stddef.h>
3467#include <string.h>
3468
Christian Heimes2c181612007-12-17 20:04:13 +00003469#ifdef HAVE_SYS_TYPES_H
3470#include <sys/types.h>
3471#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003472
3473#ifdef HAVE_SSIZE_T
3474typedef ssize_t Py_ssize_t;
3475#elif SIZEOF_VOID_P == SIZEOF_LONG
3476typedef long Py_ssize_t;
3477#else
3478typedef int Py_ssize_t;
3479#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003480
Christian Heimes2c181612007-12-17 20:04:13 +00003481int main()
3482{
3483 char buffer[256];
3484
Thomas Wouters477c8d52006-05-27 19:21:47 +00003485 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3486 return 1;
3487
Thomas Wouters89f507f2006-12-13 04:49:30 +00003488 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003489 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003490
3491 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3492 return 1;
3493
3494 if (strcmp(buffer, "-123"))
3495 return 1;
3496
Thomas Wouters477c8d52006-05-27 19:21:47 +00003497 return 0;
3498}],
3499[AC_MSG_RESULT(yes)
3500 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3501 AC_MSG_RESULT(no))
3502
Martin v. Löwis01c04012002-11-11 14:58:44 +00003503AC_CHECK_TYPE(socklen_t,,
3504 AC_DEFINE(socklen_t,int,
3505 Define to `int' if <sys/socket.h> does not define.),[
3506#ifdef HAVE_SYS_TYPES_H
3507#include <sys/types.h>
3508#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003509#ifdef HAVE_SYS_SOCKET_H
3510#include <sys/socket.h>
3511#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003512])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003513
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003514AC_SUBST(THREADHEADERS)
3515
3516for h in `(cd $srcdir;echo Python/thread_*.h)`
3517do
3518 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3519done
3520
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003521AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003522SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003523AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003524for dir in $SRCDIRS; do
3525 if test ! -d $dir; then
3526 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003527 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003528done
3529AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003530
Guido van Rossum627b2d71993-12-24 10:39:16 +00003531# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003532AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3533AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003534
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003535echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003536if test ! -f Modules/Setup
3537then
3538 cp $srcdir/Modules/Setup.dist Modules/Setup
3539fi
3540
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003541echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003542if test ! -f Modules/Setup.local
3543then
3544 echo "# Edit this file for local setup changes" >Modules/Setup.local
3545fi
3546
3547echo "creating Makefile"
3548$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3549 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003550 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003551mv config.c Modules