blob: a7c50bd013d782257637644114cff6a7536c5e4e [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00004m4_define(PYTHON_VERSION, 2.5)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis4ddc78a2006-01-29 09:53:44 +00007AC_PREREQ(2.59)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
64 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
65[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
100 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000101 ;;
102 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000103 PYTHONFRAMEWORK=Python
104 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000105 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000106 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
107 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000108
109 # Add makefiles for Mac specific code to the list of output
110 # files:
111 AC_CONFIG_FILES(Mac/OSX/Makefile)
112 AC_CONFIG_FILES(Mac/OSX/PythonLauncher/Makefile)
113 AC_CONFIG_FILES(Mac/OSX/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000115 ],[
116 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000117 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000118 PYTHONFRAMEWORKPREFIX=
119 PYTHONFRAMEWORKINSTALLDIR=
120 enable_framework=
121])
122AC_SUBST(PYTHONFRAMEWORK)
123AC_SUBST(PYTHONFRAMEWORKDIR)
124AC_SUBST(PYTHONFRAMEWORKPREFIX)
125AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000126
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000127##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000128## AC_HELP_STRING(--with-dyld,
129## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000130##
Guido van Rossumb418f891996-07-30 18:06:02 +0000131# Set name for machine-dependent library files
132AC_SUBST(MACHDEP)
133AC_MSG_CHECKING(MACHDEP)
134if test -z "$MACHDEP"
135then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000136 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000137 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
138 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000139 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000140 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000141 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000142 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000143 ac_md_system=`echo $ac_sys_system |
144 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
145 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000146 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000147 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000148
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000149 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000150 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000151 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000152 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000153 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000154 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000155 esac
156fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000157
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000158# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
159# disable features if it is defined, without any means to access these
160# features as extensions. For these systems, we skip the definition of
161# _XOPEN_SOURCE. Before adding a system to the list to gain access to
162# some feature, make sure there is no alternative way to access this
163# feature. Also, when using wildcards, make sure you have verified the
164# need for not defining _XOPEN_SOURCE on all systems matching the
165# wildcard, and that the wildcard does not include future systems
166# (which may remove their limitations).
167dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
168case $ac_sys_system/$ac_sys_release in
169 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
170 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000171 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz671b9e32006-01-09 07:07:12 +0000172 OpenBSD/2.* | OpenBSD/3.@<:@012345678@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000173 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000174 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
175 # of union __?sigval. Reported by Stuart Bishop.
176 SunOS/5.6)
177 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000178 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
179 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000180 # Reconfirmed for 7.1.4 by Martin v. Loewis.
181 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000182 define_xopen_source=no;;
183 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000184 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000185 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000186 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000187 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
188 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
189 # this is fixed in 10.3, which identifies itself as Darwin/7.*
190 # This should hopefully be fixed in FreeBSD 4.9
191 FreeBSD/4.8* | Darwin/6* )
192 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000193 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
194 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
195 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000196 AIX/4)
197 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000198 AIX/5)
199 if test `uname -r` -eq 1; then
200 define_xopen_source=no
201 fi
202 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000203 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
204 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000205 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
206 # has no effect, don't bother defineing them
207 Darwin/@<:@78@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000208 define_xopen_source=no
209 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000210
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000211esac
212
213if test $define_xopen_source = yes
214then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000215 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
216 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000217 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
218 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000219 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000220 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000221 AC_DEFINE(_XOPEN_SOURCE, 500,
222 Define to the level of X/Open that your system supports)
223 ;;
224 *)
225 AC_DEFINE(_XOPEN_SOURCE, 600,
226 Define to the level of X/Open that your system supports)
227 ;;
228 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000229
230 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
231 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
232 # several APIs are not declared. Since this is also needed in some
233 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000234 # except for Solaris 10, where it must not be defined,
235 # as it implies XPG4.2
236 case $ac_sys_system/$ac_sys_release in
237 SunOS/5.10)
238 ;;
239 *)
240 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
241 Define to activate Unix95-and-earlier features)
242 ;;
243 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000244
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000245 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
246
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000247fi
248
Guido van Rossum91922671997-10-09 20:24:13 +0000249#
250# SGI compilers allow the specification of the both the ABI and the
251# ISA on the command line. Depending on the values of these switches,
252# different and often incompatable code will be generated.
253#
254# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
255# thus supply support for various ABI/ISA combinations. The MACHDEP
256# variable is also adjusted.
257#
258AC_SUBST(SGI_ABI)
259if test ! -z "$SGI_ABI"
260then
261 CC="cc $SGI_ABI"
262 LDFLAGS="$SGI_ABI $LDFLAGS"
263 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
264fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000265AC_MSG_RESULT($MACHDEP)
266
Jack Jansen83f898c2002-12-30 22:23:40 +0000267# And add extra plat-mac for darwin
268AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000269AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000270AC_MSG_CHECKING(EXTRAPLATDIR)
271if test -z "$EXTRAPLATDIR"
272then
273 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000274 darwin)
275 EXTRAPLATDIR="\$(PLATMACDIRS)"
276 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
277 ;;
278 *)
279 EXTRAPLATDIR=""
280 EXTRAMACHDEPPATH=""
281 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000282 esac
283fi
284AC_MSG_RESULT($EXTRAPLATDIR)
285
Jack Jansen6b08a402004-06-03 12:41:45 +0000286# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
287# it may influence the way we can build extensions, so distutils
288# needs to check it
289AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000290AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000291CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000292EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000293
Guido van Rossum627b2d71993-12-24 10:39:16 +0000294# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000295
296# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
297# for debug/optimization stuff. BASECFLAGS is for flags that are required
298# just to get things to compile and link. Users are free to override OPT
299# when running configure or make. The build should not break if they do.
300# BASECFLAGS should generally not be messed with, however.
301
302# XXX shouldn't some/most/all of this code be merged with the stuff later
303# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000304AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000305AC_ARG_WITH(gcc,
306 AC_HELP_STRING(--without-gcc,never use gcc),
307[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000308 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000309 no) CC=cc
310 without_gcc=yes;;
311 yes) CC=gcc
312 without_gcc=no;;
313 *) CC=$withval
314 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000315 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000316 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000317 AIX*) CC=cc_r
318 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000319 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000320 case $BE_HOST_CPU in
321 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000322 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000323 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000324 BASECFLAGS="$BASECFLAGS -export pragma"
325 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000326 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000327 ;;
328 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000329 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000330 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000331 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000332 ;;
333 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000334 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000335 ;;
336 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000337 AR="\$(srcdir)/Modules/ar_beos"
338 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000339 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000340 Monterey*)
341 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000342 without_gcc=;;
343 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000344 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000345AC_MSG_RESULT($without_gcc)
346
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000347# If the user switches compilers, we can't believe the cache
348if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
349then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000350 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
351(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000352fi
353
Guido van Rossum627b2d71993-12-24 10:39:16 +0000354AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000355
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000356AC_SUBST(CXX)
357AC_SUBST(MAINCC)
358AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
359AC_ARG_WITH(cxx_main,
360 AC_HELP_STRING([--with-cxx-main=<compiler>],
361 [compile main() and link python executable with C++ compiler]),
362[
363
364 case $withval in
365 no) with_cxx_main=no
366 MAINCC='$(CC)';;
367 yes) with_cxx_main=yes
368 MAINCC='$(CXX)';;
369 *) with_cxx_main=yes
370 MAINCC=$withval
371 if test -z "$CXX"
372 then
373 CXX=$withval
374 fi;;
375 esac], [
376 with_cxx_main=no
377 MAINCC='$(CC)'
378])
379AC_MSG_RESULT($with_cxx_main)
380
381preset_cxx="$CXX"
382if test -z "$CXX"
383then
384 case "$CC" in
385 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
386 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
387 esac
388 if test "$CXX" = "notfound"
389 then
390 CXX=""
391 fi
392fi
393if test -z "$CXX"
394then
395 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
396 if test "$CXX" = "notfound"
397 then
398 CXX=""
399 fi
400fi
401if test "$preset_cxx" != "$CXX"
402then
403 AC_MSG_WARN([
404
405 By default, distutils will build C++ extension modules with "$CXX".
406 If this is not intended, then set CXX on the configure command line.
407 ])
408fi
409
410
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000411# checks for UNIX variants that set C preprocessor variables
412AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000413
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000414# Check for unsupported systems
415case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000416Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000417 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
418 echo See README for details.
419 exit 1;;
420esac
421
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000422AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000423AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000424AC_ARG_WITH(suffix,
425 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
426[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000427 case $withval in
428 no) EXEEXT=;;
429 yes) EXEEXT=.exe;;
430 *) EXEEXT=$withval;;
431 esac])
432AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000433
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000434# Test whether we're running on a non-case-sensitive system, in which
435# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000436AC_SUBST(BUILDEXEEXT)
437AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000438if test ! -d CaseSensitiveTestDir; then
439mkdir CaseSensitiveTestDir
440fi
441
442if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000443then
Jack Jansen1999ef42001-12-06 21:47:20 +0000444 AC_MSG_RESULT(yes)
445 BUILDEXEEXT=.exe
446else
447 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000448 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000449fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000450rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000451
Guido van Rossumdd997f71998-10-07 19:58:26 +0000452case $MACHDEP in
453bsdos*)
454 case $CC in
455 gcc) CC="$CC -D_HAVE_BSDI";;
456 esac;;
457esac
458
Guido van Rossum84561611997-08-21 00:08:11 +0000459case $ac_sys_system in
460hp*|HP*)
461 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000462 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000463 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000464Monterey*)
465 case $CC in
466 cc) CC="$CC -Wl,-Bexport";;
467 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000468SunOS*)
469 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000470 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000471 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000472esac
473
Martin v. Löwise8964d42001-03-06 12:09:07 +0000474
Neil Schemenauer61c51152001-01-26 16:18:16 +0000475AC_SUBST(LIBRARY)
476AC_MSG_CHECKING(LIBRARY)
477if test -z "$LIBRARY"
478then
479 LIBRARY='libpython$(VERSION).a'
480fi
481AC_MSG_RESULT($LIBRARY)
482
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000483# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000484# name of the library into which to insert object files). BLDLIBRARY is also
485# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
486# is blank as the main program is not linked directly against LDLIBRARY.
487# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
488# systems without shared libraries, LDLIBRARY is the same as LIBRARY
489# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
490# DLLLIBRARY is the shared (i.e., DLL) library.
491#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000492# RUNSHARED is used to run shared python without installed libraries
493#
494# INSTSONAME is the name of the shared library that will be use to install
495# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000496AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000497AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000498AC_SUBST(BLDLIBRARY)
499AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000500AC_SUBST(INSTSONAME)
501AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000502LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000503BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000504INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000505DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000506LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000507RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000508
Guido van Rossumfb842551997-08-06 23:42:07 +0000509# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000510# If CXX is set, and if it is needed to link a main function that was
511# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
512# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000513# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000514# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000515AC_SUBST(LINKCC)
516AC_MSG_CHECKING(LINKCC)
517if test -z "$LINKCC"
518then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000519 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000520 case $ac_sys_system in
521 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000522 exp_extra="\"\""
523 if test $ac_sys_release -ge 5 -o \
524 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
525 exp_extra="."
526 fi
527 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000528 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000529 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000530 esac
531fi
532AC_MSG_RESULT($LINKCC)
533
Martin v. Löwis1142de32002-03-29 16:28:31 +0000534AC_MSG_CHECKING(for --enable-shared)
535AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000536 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000537
Martin v. Löwis1142de32002-03-29 16:28:31 +0000538if test -z "$enable_shared"
539then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000540 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000541 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000542 enable_shared="yes";;
543 *)
544 enable_shared="no";;
545 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546fi
547AC_MSG_RESULT($enable_shared)
548
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000549AC_MSG_CHECKING(for --enable-profiling)
550AC_ARG_ENABLE(profiling,
551 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
552[ac_save_cc="$CC"
553 CC="$CC -pg"
554 AC_TRY_RUN([int main() { return 0; }],
555 ac_enable_profiling="yes",
556 ac_enable_profiling="no",
557 ac_enable_profiling="no")
558 CC="$ac_save_cc"])
559AC_MSG_RESULT($ac_enable_profiling)
560
561case "$ac_enable_profiling" in
562 "yes")
563 BASECFLAGS="-pg $BASECFLAGS"
564 LDFLAGS="-pg $LDFLAGS"
565 ;;
566esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000567
568AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000569
Guido van Rossumb8552162001-09-05 14:58:11 +0000570# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
571# library that we build, but we do not want to link against it (we
572# will find it with a -framework option). For this reason there is an
573# extra variable BLDLIBRARY against which Python and the extension
574# modules are linked, BLDLIBRARY. This is normally the same as
575# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000576if test "$enable_framework"
577then
578 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000579 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000580 BLDLIBRARY=''
581else
582 BLDLIBRARY='$(LDLIBRARY)'
583fi
584
Martin v. Löwis1142de32002-03-29 16:28:31 +0000585# Other platforms follow
586if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000587 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588 case $ac_sys_system in
589 BeOS*)
590 LDLIBRARY='libpython$(VERSION).so'
591 ;;
592 CYGWIN*)
593 LDLIBRARY='libpython$(VERSION).dll.a'
594 DLLLIBRARY='libpython$(VERSION).dll'
595 ;;
596 SunOS*)
597 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000598 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000599 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000600 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000602 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000603 LDLIBRARY='libpython$(VERSION).so'
604 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000605 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000606 case $ac_sys_system in
607 FreeBSD*)
608 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
609 ;;
610 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000611 INSTSONAME="$LDLIBRARY".$SOVERSION
612 ;;
613 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000614 case `uname -m` in
615 ia64)
616 LDLIBRARY='libpython$(VERSION).so'
617 ;;
618 *)
619 LDLIBRARY='libpython$(VERSION).sl'
620 ;;
621 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000622 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000623 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000624 ;;
625 OSF*)
626 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000627 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000628 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000629 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000630 atheos*)
631 LDLIBRARY='libpython$(VERSION).so'
632 BLDLIBRARY='-L. -lpython$(VERSION)'
633 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
634 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635 esac
Jason Tishler30765592003-09-04 11:04:06 +0000636else # shared is disabled
637 case $ac_sys_system in
638 CYGWIN*)
639 BLDLIBRARY='$(LIBRARY)'
640 LDLIBRARY='libpython$(VERSION).dll.a'
641 ;;
642 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643fi
644
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000645AC_MSG_RESULT($LDLIBRARY)
646
Guido van Rossum627b2d71993-12-24 10:39:16 +0000647AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000648AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000649AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000650
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000651AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000652AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000653if test $SVNVERSION = found
654then
655 SVNVERSION="svnversion \$(srcdir)"
656else
657 SVNVERSION="echo exported"
658fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000659
Neil Schemenauera42c8272001-03-31 00:01:55 +0000660case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000661bsdos*|hp*|HP*)
662 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000663 if test -z "$INSTALL"
664 then
665 INSTALL="${srcdir}/install-sh -c"
666 fi
667esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000668AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000669
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000670# Not every filesystem supports hard links
671AC_SUBST(LN)
672if test -z "$LN" ; then
673 case $ac_sys_system in
674 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000675 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000676 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000677 *) LN=ln;;
678 esac
679fi
680
Fred Drake9f715822001-07-11 06:27:00 +0000681# Check for --with-pydebug
682AC_MSG_CHECKING(for --with-pydebug)
683AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000684 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
685[
Fred Drake9f715822001-07-11 06:27:00 +0000686if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000687then
688 AC_DEFINE(Py_DEBUG, 1,
689 [Define if you want to build an interpreter with many run-time checks.])
690 AC_MSG_RESULT(yes);
691 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000692else AC_MSG_RESULT(no); Py_DEBUG='false'
693fi],
694[AC_MSG_RESULT(no)])
695
Skip Montanarodecc6a42003-01-01 20:07:49 +0000696# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
697# merged with this chunk of code?
698
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000699# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000700# ------------------------
701# (The following bit of code is complicated enough - please keep things
702# indented properly. Just pretend you're editing Python code. ;-)
703
704# There are two parallel sets of case statements below, one that checks to
705# see if OPT was set and one that does BASECFLAGS setting based upon
706# compiler and platform. BASECFLAGS tweaks need to be made even if the
707# user set OPT.
708
709# tweak OPT based on compiler and platform, only if the user didn't set
710# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000711AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000712if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000713then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000714 case $GCC in
715 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000716 if test "$CC" != 'g++' ; then
717 STRICT_PROTO="-Wstrict-prototypes"
718 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000719 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000720 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000721 if test "$Py_DEBUG" = 'true' ; then
722 # Optimization messes up debuggers, so turn it off for
723 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000724 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000725 else
Skip Montanaro288a5be2006-04-13 02:00:56 +0000726 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 fi
728 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000729 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000730 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000731 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000732 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000733 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000734 SCO_SV*) OPT="$OPT -m486 -DSCO5"
735 ;;
736 esac
Fred Drake9f715822001-07-11 06:27:00 +0000737 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000738
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000739 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000740 OPT="-O"
741 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000742 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000743
744 # The current (beta) Monterey compiler dies with optimizations
745 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000746 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000747 Monterey*)
748 OPT=""
749 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000750 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751
Guido van Rossum4e8af441994-08-19 15:33:54 +0000752fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000753
Skip Montanarodecc6a42003-01-01 20:07:49 +0000754AC_SUBST(BASECFLAGS)
755# tweak BASECFLAGS based on compiler and platform
756case $GCC in
757yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000758 # Python violates C99 rules, by casting between incompatible
759 # pointer types. GCC may generate bad code as a result of that,
760 # so use -fno-strict-aliasing if supported.
761 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
762 ac_save_cc="$CC"
763 CC="$CC -fno-strict-aliasing"
764 AC_TRY_RUN([int main() { return 0; }],
765 ac_cv_no_strict_aliasing_ok=yes,
766 ac_cv_no_strict_aliasing_ok=no,
767 ac_cv_no_strict_aliasing_ok=no)
768 CC="$ac_save_cc"
769 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
770 if test $ac_cv_no_strict_aliasing_ok = yes
771 then
772 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
773 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000774 case $ac_sys_system in
775 SCO_SV*)
776 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
777 ;;
778 # is there any other compiler on Darwin besides gcc?
779 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000780 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000781 if test "${enable_universalsdk}"; then
782 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
783 fi
784
Skip Montanarodecc6a42003-01-01 20:07:49 +0000785 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000786 OSF*)
787 BASECFLAGS="$BASECFLAGS -mieee"
788 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000789 esac
790 ;;
791
792*)
793 case $ac_sys_system in
794 OpenUNIX*|UnixWare*)
795 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
796 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000797 OSF*)
798 BASECFLAGS="$BASECFLAGS -ieee -std"
799 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000800 SCO_SV*)
801 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
802 ;;
803 esac
804 ;;
805esac
806
Fred Drakee1ceaa02001-12-04 20:55:47 +0000807if test "$Py_DEBUG" = 'true'; then
808 :
809else
810 OPT="-DNDEBUG $OPT"
811fi
812
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000813if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000814then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000815 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000816fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000817
Neal Norwitz020c46a2006-01-07 21:39:28 +0000818# disable check for icc since it seems to pass, but generates a warning
819if test "$CC" = icc
820then
821 ac_cv_opt_olimit_ok=no
822fi
823
Guido van Rossum91922671997-10-09 20:24:13 +0000824AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
825AC_CACHE_VAL(ac_cv_opt_olimit_ok,
826[ac_save_cc="$CC"
827CC="$CC -OPT:Olimit=0"
828AC_TRY_RUN([int main() { return 0; }],
829 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000830 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000831 ac_cv_opt_olimit_ok=no)
832CC="$ac_save_cc"])
833AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000834if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000835 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000836 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
837 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
838 # environment?
839 Darwin*)
840 ;;
841 *)
842 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
843 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000844 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000845else
846 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
847 AC_CACHE_VAL(ac_cv_olimit_ok,
848 [ac_save_cc="$CC"
849 CC="$CC -Olimit 1500"
850 AC_TRY_RUN([int main() { return 0; }],
851 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000852 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000853 ac_cv_olimit_ok=no)
854 CC="$ac_save_cc"])
855 AC_MSG_RESULT($ac_cv_olimit_ok)
856 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000858 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000859fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000860
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000861# On some compilers, pthreads are available without further options
862# (e.g. MacOS X). On some of these systems, the compiler will not
863# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
864# So we have to see first whether pthreads are available without
865# options before we can check whether -Kpthread improves anything.
866AC_MSG_CHECKING(whether pthreads are available without options)
867AC_CACHE_VAL(ac_cv_pthread_is_default,
868[AC_TRY_RUN([
869#include <pthread.h>
870
871void* routine(void* p){return NULL;}
872
873int main(){
874 pthread_t p;
875 if(pthread_create(&p,NULL,routine,NULL)!=0)
876 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000877 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000878 return 0;
879}
880],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000881[
882 ac_cv_pthread_is_default=yes
883 ac_cv_kthread=no
884 ac_cv_pthread=no
885],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000886 ac_cv_pthread_is_default=no,
887 ac_cv_pthread_is_default=no)
888])
889AC_MSG_RESULT($ac_cv_pthread_is_default)
890
891
892if test $ac_cv_pthread_is_default = yes
893then
894 ac_cv_kpthread=no
895else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000896# -Kpthread, if available, provides the right #defines
897# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000898# Some compilers won't report that they do not support -Kpthread,
899# so we need to run a program to see whether it really made the
900# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000901AC_MSG_CHECKING(whether $CC accepts -Kpthread)
902AC_CACHE_VAL(ac_cv_kpthread,
903[ac_save_cc="$CC"
904CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000905AC_TRY_RUN([
906#include <pthread.h>
907
908void* routine(void* p){return NULL;}
909
910int main(){
911 pthread_t p;
912 if(pthread_create(&p,NULL,routine,NULL)!=0)
913 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000914 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000915 return 0;
916}
917],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000918 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000919 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000920 ac_cv_kpthread=no)
921CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000922AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000923fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000924
Skip Montanarod8d39a02003-07-10 20:44:10 +0000925if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000926then
927# -Kthread, if available, provides the right #defines
928# and linker options to make pthread_create available
929# Some compilers won't report that they do not support -Kthread,
930# so we need to run a program to see whether it really made the
931# function available.
932AC_MSG_CHECKING(whether $CC accepts -Kthread)
933AC_CACHE_VAL(ac_cv_kthread,
934[ac_save_cc="$CC"
935CC="$CC -Kthread"
936AC_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;
945 (void)pthread_detach(p);
946 return 0;
947}
948],
949 ac_cv_kthread=yes,
950 ac_cv_kthread=no,
951 ac_cv_kthread=no)
952CC="$ac_save_cc"])
953AC_MSG_RESULT($ac_cv_kthread)
954fi
955
Skip Montanarod8d39a02003-07-10 20:44:10 +0000956if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000957then
958# -pthread, if available, provides the right #defines
959# and linker options to make pthread_create available
960# Some compilers won't report that they do not support -pthread,
961# so we need to run a program to see whether it really made the
962# function available.
963AC_MSG_CHECKING(whether $CC accepts -pthread)
964AC_CACHE_VAL(ac_cv_thread,
965[ac_save_cc="$CC"
966CC="$CC -pthread"
967AC_TRY_RUN([
968#include <pthread.h>
969
970void* routine(void* p){return NULL;}
971
972int main(){
973 pthread_t p;
974 if(pthread_create(&p,NULL,routine,NULL)!=0)
975 return 1;
976 (void)pthread_detach(p);
977 return 0;
978}
979],
980 ac_cv_pthread=yes,
981 ac_cv_pthread=no,
982 ac_cv_pthread=no)
983CC="$ac_save_cc"])
984AC_MSG_RESULT($ac_cv_pthread)
985fi
986
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000987# If we have set a CC compiler flag for thread support then
988# check if it works for CXX, too.
989ac_cv_cxx_thread=no
990if test ! -z "$CXX"
991then
992AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
993ac_save_cxx="$CXX"
994
995if test "$ac_cv_kpthread" = "yes"
996then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000997 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000998 ac_cv_cxx_thread=yes
999elif test "$ac_cv_kthread" = "yes"
1000then
1001 CXX="$CXX -Kthread"
1002 ac_cv_cxx_thread=yes
1003elif test "$ac_cv_pthread" = "yes"
1004then
1005 CXX="$CXX -pthread"
1006 ac_cv_cxx_thread=yes
1007fi
1008
1009if test $ac_cv_cxx_thread = yes
1010then
1011 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1012 $CXX -c conftest.$ac_ext 2>&5
1013 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1014 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1015 then
1016 ac_cv_cxx_thread=yes
1017 else
1018 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001019 fi
1020 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001021fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001022AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001023fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001024CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001025
Fred Drakece81d592000-07-09 14:39:29 +00001026dnl # check for ANSI or K&R ("traditional") preprocessor
1027dnl AC_MSG_CHECKING(for C preprocessor type)
1028dnl AC_TRY_COMPILE([
1029dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1030dnl int foo;
1031dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1032dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1033dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001034
Guido van Rossum627b2d71993-12-24 10:39:16 +00001035# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001036AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001037AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1038shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001039stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001040unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001041sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1042sys/modem.h \
Martin v. Löwis5f5d99c2006-05-16 07:05:37 +00001043sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/time.h \
1044sys/times.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001045sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1046bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001047AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001048AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001049
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001050# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001051AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001052#ifdef HAVE_CURSES_H
1053#include <curses.h>
1054#endif
1055])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001056
Martin v. Löwis11017b12006-01-14 18:12:57 +00001057# On Linux, netlink.h requires asm/types.h
1058AC_CHECK_HEADERS(linux/netlink.h,,,[
1059#ifdef HAVE_ASM_TYPES_H
1060#include <asm/types.h>
1061#endif
1062#ifdef HAVE_SYS_SOCKET_H
1063#include <sys/socket.h>
1064#endif
1065])
1066
Guido van Rossum627b2d71993-12-24 10:39:16 +00001067# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001068was_it_defined=no
1069AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001070AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1071 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1072])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001073AC_MSG_RESULT($was_it_defined)
1074
Neal Norwitz11690112002-07-30 01:08:28 +00001075# Check whether using makedev requires defining _OSF_SOURCE
1076AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001077AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001078 [ makedev(0, 0) ],
1079 ac_cv_has_makedev=yes,
1080 ac_cv_has_makedev=no)
1081if test "$ac_cv_has_makedev" = "no"; then
1082 # we didn't link, try if _OSF_SOURCE will allow us to link
1083 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001084#define _OSF_SOURCE 1
1085#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001086 ],
1087 [ makedev(0, 0) ],
1088 ac_cv_has_makedev=yes,
1089 ac_cv_has_makedev=no)
1090 if test "$ac_cv_has_makedev" = "yes"; then
1091 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1092 fi
1093fi
1094AC_MSG_RESULT($ac_cv_has_makedev)
1095if test "$ac_cv_has_makedev" = "yes"; then
1096 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1097fi
1098
Martin v. Löwis399a6892002-10-04 10:22:02 +00001099# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1100# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1101# defined, but the compiler does not support pragma redefine_extname,
1102# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1103# structures (such as rlimit64) without declaring them. As a
1104# work-around, disable LFS on such configurations
1105
1106use_lfs=yes
1107AC_MSG_CHECKING(Solaris LFS bug)
1108AC_TRY_COMPILE([
1109#define _LARGEFILE_SOURCE 1
1110#define _FILE_OFFSET_BITS 64
1111#include <sys/resource.h>
1112],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1113AC_MSG_RESULT($sol_lfs_bug)
1114if test "$sol_lfs_bug" = "yes"; then
1115 use_lfs=no
1116fi
1117
1118if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001119# Two defines needed to enable largefile support on various platforms
1120# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001121AC_DEFINE(_LARGEFILE_SOURCE, 1,
1122[This must be defined on some systems to enable large file support.])
1123AC_DEFINE(_FILE_OFFSET_BITS, 64,
1124[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001125fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001126
Guido van Rossum300fda71996-08-19 21:58:16 +00001127# Add some code to confdefs.h so that the test for off_t works on SCO
1128cat >> confdefs.h <<\EOF
1129#if defined(SCO_DS)
1130#undef _OFF_T
1131#endif
1132EOF
1133
Guido van Rossumef2255b2000-03-10 22:30:29 +00001134# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001135AC_TYPE_MODE_T
1136AC_TYPE_OFF_T
1137AC_TYPE_PID_T
1138AC_TYPE_SIGNAL
1139AC_TYPE_SIZE_T
1140AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001141AC_CHECK_TYPE(ssize_t,
1142 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001143
Guido van Rossumef2255b2000-03-10 22:30:29 +00001144# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001145# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001146AC_CHECK_SIZEOF(int, 4)
1147AC_CHECK_SIZEOF(long, 4)
1148AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001149AC_CHECK_SIZEOF(short, 2)
1150AC_CHECK_SIZEOF(float, 4)
1151AC_CHECK_SIZEOF(double, 8)
1152AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001153AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001154
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001155AC_MSG_CHECKING(for long long support)
1156have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001157AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1158 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1159 have_long_long=yes
1160])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001161AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001162if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001163AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001164fi
1165
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001166AC_MSG_CHECKING(for uintptr_t support)
1167have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001168AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1169 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1170 have_uintptr_t=yes
1171])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001172AC_MSG_RESULT($have_uintptr_t)
1173if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001174AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001175fi
1176
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001177# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1178AC_MSG_CHECKING(size of off_t)
1179AC_CACHE_VAL(ac_cv_sizeof_off_t,
1180[AC_TRY_RUN([#include <stdio.h>
1181#include <sys/types.h>
1182main()
1183{
1184 FILE *f=fopen("conftestval", "w");
1185 if (!f) exit(1);
1186 fprintf(f, "%d\n", sizeof(off_t));
1187 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001188}],
1189ac_cv_sizeof_off_t=`cat conftestval`,
1190ac_cv_sizeof_off_t=0,
1191ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001192])
1193AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001194AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1195[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001196
1197AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001198if test "$have_long_long" = yes -a \
1199 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1200 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001201 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1202 [Defined to enable large file support when an off_t is bigger than a long
1203 and long long is available and at least as big as an off_t. You may need
1204 to add some flags for configuration and compilation to enable this mode.
1205 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001206 AC_MSG_RESULT(yes)
1207else
1208 AC_MSG_RESULT(no)
1209fi
1210
Fred Drakea3f6e912000-06-29 20:44:47 +00001211# AC_CHECK_SIZEOF() doesn't include <time.h>.
1212AC_MSG_CHECKING(size of time_t)
1213AC_CACHE_VAL(ac_cv_sizeof_time_t,
1214[AC_TRY_RUN([#include <stdio.h>
1215#include <time.h>
1216main()
1217{
1218 FILE *f=fopen("conftestval", "w");
1219 if (!f) exit(1);
1220 fprintf(f, "%d\n", sizeof(time_t));
1221 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001222}],
1223ac_cv_sizeof_time_t=`cat conftestval`,
1224ac_cv_sizeof_time_t=0,
1225ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001226])
1227AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001228AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1229[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001230
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001231
Trent Mick635f6fb2000-08-23 21:33:05 +00001232# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001233ac_save_cc="$CC"
1234if test "$ac_cv_kpthread" = "yes"
1235then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001236elif test "$ac_cv_kthread" = "yes"
1237then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001238elif test "$ac_cv_pthread" = "yes"
1239then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001240fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001241AC_MSG_CHECKING(for pthread_t)
1242have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001243AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001244AC_MSG_RESULT($have_pthread_t)
1245if test "$have_pthread_t" = yes ; then
1246 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1247 AC_MSG_CHECKING(size of pthread_t)
1248 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1249 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001250#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001251 main()
1252 {
1253 FILE *f=fopen("conftestval", "w");
1254 if (!f) exit(1);
1255 fprintf(f, "%d\n", sizeof(pthread_t));
1256 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001257 }],
1258 ac_cv_sizeof_pthread_t=`cat conftestval`,
1259 ac_cv_sizeof_pthread_t=0,
1260 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001261 ])
1262 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001263 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1264 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001265fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001266CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001267
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001268AC_MSG_CHECKING(for --enable-toolbox-glue)
1269AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001270 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001271
1272if test -z "$enable_toolbox_glue"
1273then
1274 case $ac_sys_system/$ac_sys_release in
1275 Darwin/*)
1276 enable_toolbox_glue="yes";;
1277 *)
1278 enable_toolbox_glue="no";;
1279 esac
1280fi
1281case "$enable_toolbox_glue" in
1282yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001283 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001284 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001285 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1286 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001287 ;;
1288*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001289 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001290 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001291 ;;
1292esac
1293AC_MSG_RESULT($enable_toolbox_glue)
1294
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001295AC_SUBST(OTHER_LIBTOOL_OPT)
1296case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001297 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001298 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1299 ;;
1300 Darwin/*)
1301 OTHER_LIBTOOL_OPT=""
1302 ;;
1303esac
1304
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001305AC_SUBST(LIBTOOL_CRUFT)
1306case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001307 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001308 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1309 if test "${enable_universalsdk}"; then
1310 :
1311 else
1312 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1313 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001314 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001315 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001316 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001317 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1318 if test ${gcc_version} '<' 4.0
1319 then
1320 LIBTOOL_CRUFT="-lcc_dynamic"
1321 else
1322 LIBTOOL_CRUFT=""
1323 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001324 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001325 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001326 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001327esac
1328
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001329AC_MSG_CHECKING(for --enable-framework)
1330if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001331then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001332 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001333 # -F. is needed to allow linking to the framework while
1334 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001335 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1336 [Define if you want to produce an OpenStep/Rhapsody framework
1337 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001338 AC_MSG_RESULT(yes)
1339else
1340 AC_MSG_RESULT(no)
1341fi
1342
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001343AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001344case $ac_sys_system/$ac_sys_release in
1345 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001346 AC_DEFINE(WITH_DYLD, 1,
1347 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1348 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1349 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001350 AC_MSG_RESULT(always on for Darwin)
1351 ;;
1352 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001353 AC_MSG_RESULT(no)
1354 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001355esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001356
Guido van Rossumac405f61994-09-12 10:56:06 +00001357# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001358AC_SUBST(SO)
1359AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001360AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001361AC_SUBST(CCSHARED)
1362AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001363# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001364# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001365AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001366if test -z "$SO"
1367then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001368 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001369 hp*|HP*)
1370 case `uname -m` in
1371 ia64) SO=.so;;
1372 *) SO=.sl;;
1373 esac
1374 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001375 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001376 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001377 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001378else
1379 # this might also be a termcap variable, see #610332
1380 echo
1381 echo '====================================================================='
1382 echo '+ +'
1383 echo '+ WARNING: You have set SO in your environment. +'
1384 echo '+ Do you really mean to change the extension for shared libraries? +'
1385 echo '+ Continuing in 10 seconds to let you to ponder. +'
1386 echo '+ +'
1387 echo '====================================================================='
1388 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001389fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001390AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001391AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001392# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001393# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001394# (Shared libraries in this instance are shared modules to be loaded into
1395# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001396AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001397if test -z "$LDSHARED"
1398then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001399 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001400 AIX*)
1401 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001402 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001403 ;;
1404 BeOS*)
1405 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001406 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001407 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001408 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001409 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001410 SunOS/5*)
1411 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001412 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001413 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001414 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001415 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001416 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001417 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001418 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1419 if test "$enable_framework" ; then
1420 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001421 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1422 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001423 else
1424 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001425 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001426 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001427 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001428 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1429 if test "$enable_framework" ; then
1430 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001431 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1432 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001433 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001434 # No framework, use the Python app as bundle-loader
1435 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001436 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001437 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001438 Darwin/*)
1439 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1440 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001441 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001442 if test ${cur_target} '>' 10.2; then
1443 cur_target=10.3
1444 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001445 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren988117f2006-04-29 11:31:35 +00001446 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001447 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001448 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001449 if test "${enable_universalsdk}"; then
1450 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1451 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001452 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1453 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001454 else
1455 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1456 if test "$enable_framework" ; then
1457 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001458 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1459 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001460 else
1461 # No framework, use the Python app as bundle-loader
1462 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1463 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1464 fi
1465 fi
1466 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001467 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001468 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001469 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001470 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001471 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001472 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001473 else
1474 LDSHARED="ld -Bshareable ${LDFLAGS}"
1475 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001476 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001477 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001478 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001479 then LDSHARED='$(CC) -shared'
1480 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001481 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001482 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001483 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001484 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001485 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001486 *) LDSHARED="ld";;
1487 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001488fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001489AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001490BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001491# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001492# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001493AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001494if test -z "$CCSHARED"
1495then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001496 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001497 SunOS*) if test "$GCC" = yes;
1498 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001499 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001500 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001501 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001502 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001503 else CCSHARED="+z";
1504 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001505 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001506 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001507 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001508 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001509 if test "$GCC" = "yes"
1510 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001511 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001512 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001513 SCO_SV*)
1514 if test "$GCC" = "yes"
1515 then CCSHARED="-fPIC"
1516 else CCSHARED="-Kpic -belf"
1517 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001518 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001519 IRIX*/6*) case $CC in
1520 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001521 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001522 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001523 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001524 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001525fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001526AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001527# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001528# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001529AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001530if test -z "$LINKFORSHARED"
1531then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001532 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001533 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001534 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001535 LINKFORSHARED="-Wl,-E -Wl,+s";;
1536# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001537 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001538 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001539 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001540 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001541 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1542 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001543 # not used by the core itself but which needs to be in the core so
1544 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001545 # -prebind is no longer used, because it actually seems to give a
1546 # slowdown in stead of a speedup, maybe due to the large number of
1547 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001548
1549 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001550 if test "$enable_framework"
1551 then
Jack Jansenda49e192005-01-07 13:08:22 +00001552 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001553 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001554 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001555 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001556 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001557 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001558 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001559 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1560 then
1561 LINKFORSHARED="-Wl,--export-dynamic"
1562 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001563 SunOS/5*) case $CC in
1564 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001565 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001566 then
1567 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001568 fi;;
1569 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001570 CYGWIN*)
1571 if test $enable_shared = "no"
1572 then
1573 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1574 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001575 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001576fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001577AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001578
Neil Schemenauer61c51152001-01-26 16:18:16 +00001579AC_SUBST(CFLAGSFORSHARED)
1580AC_MSG_CHECKING(CFLAGSFORSHARED)
1581if test ! "$LIBRARY" = "$LDLIBRARY"
1582then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001583 case $ac_sys_system in
1584 CYGWIN*)
1585 # Cygwin needs CCSHARED when building extension DLLs
1586 # but not when building the interpreter DLL.
1587 CFLAGSFORSHARED='';;
1588 *)
1589 CFLAGSFORSHARED='$(CCSHARED)'
1590 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001591fi
1592AC_MSG_RESULT($CFLAGSFORSHARED)
1593
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001594# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1595# library (with --enable-shared).
1596# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001597# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1598# if it is not required, since it creates a dependency of the shared library
1599# to LIBS. This, in turn, means that applications linking the shared libpython
1600# don't need to link LIBS explicitly. The default should be only changed
1601# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001602AC_SUBST(SHLIBS)
1603AC_MSG_CHECKING(SHLIBS)
1604case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001605 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001606 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001607esac
1608AC_MSG_RESULT($SHLIBS)
1609
1610
Guido van Rossum627b2d71993-12-24 10:39:16 +00001611# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001612AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1613AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001614
1615# only check for sem_ini if thread support is requested
1616if test "$with_threads" = "yes" -o -z "$with_threads"; then
1617 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1618 # posix4 on Solaris 2.6
1619 # pthread (first!) on Linux
1620fi
1621
Martin v. Löwis19d17342003-06-14 21:03:05 +00001622# check if we need libintl for locale functions
1623AC_CHECK_LIB(intl, textdomain,
1624 AC_DEFINE(WITH_LIBINTL, 1,
1625 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001626
1627# checks for system dependent C++ extensions support
1628case "$ac_sys_system" in
1629 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1630 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1631 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001632 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1633 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1634 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001635 AC_MSG_RESULT(yes)],
1636 [AC_MSG_RESULT(no)]);;
1637 *) ;;
1638esac
1639
Guido van Rossum70c7f481998-03-26 18:44:10 +00001640# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001641# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001642AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001643AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001644
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001645case "$ac_sys_system" in
1646BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001647AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1648;;
1649esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001650
Guido van Rossumc5a39031996-07-31 17:35:03 +00001651AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001652AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001653 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1654[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001655AC_MSG_RESULT($withval)
1656LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001657],
1658[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001659
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001660# Check for use of the system libffi library
1661AC_MSG_CHECKING(for --with-system-ffi)
1662AC_ARG_WITH(system_ffi,
1663 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1664
1665if test -z "$with_system_ffi"
1666then with_system_ffi="no"
1667fi
1668AC_MSG_RESULT($with_system_ffi)
1669
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001670# Determine if signalmodule should be used.
1671AC_SUBST(USE_SIGNAL_MODULE)
1672AC_SUBST(SIGNAL_OBJS)
1673AC_MSG_CHECKING(for --with-signal-module)
1674AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001675 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001676
1677if test -z "$with_signal_module"
1678then with_signal_module="yes"
1679fi
1680AC_MSG_RESULT($with_signal_module)
1681
1682if test "${with_signal_module}" = "yes"; then
1683 USE_SIGNAL_MODULE=""
1684 SIGNAL_OBJS=""
1685else
1686 USE_SIGNAL_MODULE="#"
1687 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1688fi
1689
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001690# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001691AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001692USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001693
Guido van Rossum54d93d41997-01-22 20:51:58 +00001694AC_MSG_CHECKING(for --with-dec-threads)
1695AC_SUBST(LDLAST)
1696AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001697 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1698[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001699AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001700LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001701if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001702 with_thread="$withval";
1703fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001704[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001705
Martin v. Löwis11437992002-04-12 09:54:03 +00001706# Templates for things AC_DEFINEd more than once.
1707# For a single AC_DEFINE, no template is needed.
1708AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1709AH_TEMPLATE(_REENTRANT,
1710 [Define to force use of thread-safe errno, h_errno, and other functions])
1711AH_TEMPLATE(WITH_THREAD,
1712 [Define if you want to compile in rudimentary thread support])
1713
Guido van Rossum54d93d41997-01-22 20:51:58 +00001714AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001715dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001716AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001717 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001718
Barry Warsawc0d24d82000-06-29 16:12:00 +00001719# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001720dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001721AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001722 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1723 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001724
1725if test -z "$with_threads"
1726then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001727fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001728AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001729
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001730AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001731if test "$with_threads" = "no"
1732then
1733 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001734elif test "$ac_cv_pthread_is_default" = yes
1735then
1736 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001737 # Defining _REENTRANT on system with POSIX threads should not hurt.
1738 AC_DEFINE(_REENTRANT)
1739 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001740 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001741elif test "$ac_cv_kpthread" = "yes"
1742then
1743 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001744 if test "$ac_cv_cxx_thread" = "yes"; then
1745 CXX="$CXX -Kpthread"
1746 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001747 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001748 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001749 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001750elif test "$ac_cv_kthread" = "yes"
1751then
1752 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001753 if test "$ac_cv_cxx_thread" = "yes"; then
1754 CXX="$CXX -Kthread"
1755 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001756 AC_DEFINE(WITH_THREAD)
1757 posix_threads=yes
1758 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001759elif test "$ac_cv_pthread" = "yes"
1760then
1761 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001762 if test "$ac_cv_cxx_thread" = "yes"; then
1763 CXX="$CXX -pthread"
1764 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001765 AC_DEFINE(WITH_THREAD)
1766 posix_threads=yes
1767 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001768else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001769 if test ! -z "$with_threads" -a -d "$with_threads"
1770 then LDFLAGS="$LDFLAGS -L$with_threads"
1771 fi
1772 if test ! -z "$withval" -a -d "$withval"
1773 then LDFLAGS="$LDFLAGS -L$withval"
1774 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001775
1776 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001777 # define _POSIX_THREADS in unistd.h. Some apparently don't
1778 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001779 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1780 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001781 [
1782#include <unistd.h>
1783#ifdef _POSIX_THREADS
1784yes
1785#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001786 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1787 AC_MSG_RESULT($unistd_defines_pthreads)
1788
Martin v. Löwis130fb172001-07-19 11:00:41 +00001789 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001790 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1791 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001792 AC_DEFINE(HURD_C_THREADS, 1,
1793 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001794 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001795 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001796 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1797 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001798 AC_DEFINE(MACH_C_THREADS, 1,
1799 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001800 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001801 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001802 AC_ARG_WITH([pth],
1803 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1804 [AC_MSG_RESULT($withval)
1805 AC_DEFINE([WITH_THREAD])
1806 AC_DEFINE([HAVE_PTH], 1,
1807 [Define if you have GNU PTH threads.])
1808 LIBS="-lpth $LIBS"
1809 THREADOBJ="Python/thread.o"],
1810 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001811
1812 # Just looking for pthread_create in libpthread is not enough:
1813 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1814 # So we really have to include pthread.h, and then link.
1815 _libs=$LIBS
1816 LIBS="$LIBS -lpthread"
1817 AC_MSG_CHECKING([for pthread_create in -lpthread])
1818 AC_TRY_LINK([#include <pthread.h>
1819
1820void * start_routine (void *arg) { exit (0); }], [
1821pthread_create (NULL, NULL, start_routine, NULL)], [
1822 AC_MSG_RESULT(yes)
1823 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001824 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001825 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001826 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001827 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001828 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001829 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001830 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1831 AC_DEFINE(ATHEOS_THREADS, 1,
1832 [Define this if you have AtheOS threads.])
1833 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001834 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001835 AC_DEFINE(BEOS_THREADS, 1,
1836 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001837 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001838 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001839 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001840 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001841 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001842 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001843 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001844 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001845 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001846 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001847 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001848 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001849 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001850 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001851 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001852 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001853 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001854 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001855 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001856
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001857 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1858 LIBS="$LIBS -lmpc"
1859 THREADOBJ="Python/thread.o"
1860 USE_THREAD_MODULE=""])
1861
1862 if test "$posix_threads" != "yes"; then
1863 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1864 LIBS="$LIBS -lthread"
1865 THREADOBJ="Python/thread.o"
1866 USE_THREAD_MODULE=""])
1867 fi
1868
1869 if test "$USE_THREAD_MODULE" != "#"
1870 then
1871 # If the above checks didn't disable threads, (at least) OSF1
1872 # needs this '-threads' argument during linking.
1873 case $ac_sys_system in
1874 OSF1) LDLAST=-threads;;
1875 esac
1876 fi
1877fi
1878
1879if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001880 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001881 AC_DEFINE(_POSIX_THREADS, 1,
1882 [Define if you have POSIX threads,
1883 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001884 fi
1885
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001886 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1887 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001888 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1889 Defined for Solaris 2.6 bug in pthread header.)
1890 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001891 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001892 Define if the Posix semaphores do not work on your system)
1893 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001894 esac
1895
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001896 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1897 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1898 [AC_TRY_RUN([#include <pthread.h>
1899 void *foo(void *parm) {
1900 return NULL;
1901 }
1902 main() {
1903 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001904 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001905 if (pthread_attr_init(&attr)) exit(-1);
1906 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001907 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001908 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001909 }],
1910 ac_cv_pthread_system_supported=yes,
1911 ac_cv_pthread_system_supported=no,
1912 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001913 ])
1914 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1915 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001916 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001917 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001918 AC_CHECK_FUNCS(pthread_sigmask,
1919 [case $ac_sys_system in
1920 CYGWIN*)
1921 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1922 [Define if pthread_sigmask() does not work on your system.])
1923 ;;
1924 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001925fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001926
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001927
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001928# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001929AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001930AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001931AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001932[ --enable-ipv6 Enable ipv6 (with ipv4) support
1933 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001934[ case "$enableval" in
1935 no)
1936 AC_MSG_RESULT(no)
1937 ipv6=no
1938 ;;
1939 *) AC_MSG_RESULT(yes)
1940 AC_DEFINE(ENABLE_IPV6)
1941 ipv6=yes
1942 ;;
1943 esac ],
1944
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001945[
1946dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001947 AC_TRY_RUN([ /* AF_INET6 available check */
1948#include <sys/types.h>
1949#include <sys/socket.h>
1950main()
1951{
1952 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1953 exit(1);
1954 else
1955 exit(0);
1956}
1957],
1958 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001959 ipv6=yes,
1960 AC_MSG_RESULT(no)
1961 ipv6=no,
1962 AC_MSG_RESULT(no)
1963 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001964)
1965
1966if test "$ipv6" = "yes"; then
1967 AC_MSG_CHECKING(if RFC2553 API is available)
1968 AC_TRY_COMPILE([#include <sys/types.h>
1969#include <netinet/in.h>],
1970 [struct sockaddr_in6 x;
1971x.sin6_scope_id;],
1972 AC_MSG_RESULT(yes)
1973 ipv6=yes,
1974 AC_MSG_RESULT(no, IPv6 disabled)
1975 ipv6=no)
1976fi
1977
1978if test "$ipv6" = "yes"; then
1979 AC_DEFINE(ENABLE_IPV6)
1980fi
1981])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001982
1983ipv6type=unknown
1984ipv6lib=none
1985ipv6trylibc=no
1986
1987if test "$ipv6" = "yes"; then
1988 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001989 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1990 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001991 case $i in
1992 inria)
1993 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001994 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001995#include <netinet/in.h>
1996#ifdef IPV6_INRIA_VERSION
1997yes
1998#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001999 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002000 ;;
2001 kame)
2002 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002003 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002004#include <netinet/in.h>
2005#ifdef __KAME__
2006yes
2007#endif],
2008 [ipv6type=$i;
2009 ipv6lib=inet6
2010 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002011 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002012 ;;
2013 linux-glibc)
2014 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002015 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002016#include <features.h>
2017#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2018yes
2019#endif],
2020 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002021 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002022 ;;
2023 linux-inet6)
2024 dnl http://www.v6.linux.or.jp/
2025 if test -d /usr/inet6; then
2026 ipv6type=$i
2027 ipv6lib=inet6
2028 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002029 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002030 fi
2031 ;;
2032 solaris)
2033 if test -f /etc/netconfig; then
2034 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2035 ipv6type=$i
2036 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002037 fi
2038 fi
2039 ;;
2040 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002041 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002042#include <sys/param.h>
2043#ifdef _TOSHIBA_INET6
2044yes
2045#endif],
2046 [ipv6type=$i;
2047 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002048 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002049 ;;
2050 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002051 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002052#include </usr/local/v6/include/sys/v6config.h>
2053#ifdef __V6D__
2054yes
2055#endif],
2056 [ipv6type=$i;
2057 ipv6lib=v6;
2058 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002059 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002060 ;;
2061 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002062 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002063#include <sys/param.h>
2064#ifdef _ZETA_MINAMI_INET6
2065yes
2066#endif],
2067 [ipv6type=$i;
2068 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002069 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002070 ;;
2071 esac
2072 if test "$ipv6type" != "unknown"; then
2073 break
2074 fi
2075 done
2076 AC_MSG_RESULT($ipv6type)
2077fi
2078
2079if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2080 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2081 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2082 echo "using lib$ipv6lib"
2083 else
2084 if test $ipv6trylibc = "yes"; then
2085 echo "using libc"
2086 else
2087 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2088 echo "You need to fetch lib$ipv6lib.a from appropriate"
2089 echo 'ipv6 kit and compile beforehand.'
2090 exit 1
2091 fi
2092 fi
2093fi
2094
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002095# Check for --with-doc-strings
2096AC_MSG_CHECKING(for --with-doc-strings)
2097AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002098 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002099
2100if test -z "$with_doc_strings"
2101then with_doc_strings="yes"
2102fi
2103if test "$with_doc_strings" != "no"
2104then
2105 AC_DEFINE(WITH_DOC_STRINGS, 1,
2106 [Define if you want documentation strings in extension modules])
2107fi
2108AC_MSG_RESULT($with_doc_strings)
2109
Neil Schemenauera35c6882001-02-27 04:45:05 +00002110# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002111AC_MSG_CHECKING(for --with-tsc)
2112AC_ARG_WITH(tsc,
2113[ --with(out)-tsc enable/disable timestamp counter profile], [
2114if test "$withval" != no
2115then
2116 AC_DEFINE(WITH_TSC, 1,
2117 [Define to profile with the Pentium timestamp counter])
2118 AC_MSG_RESULT(yes)
2119else AC_MSG_RESULT(no)
2120fi],
2121[AC_MSG_RESULT(no)])
2122
2123# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002124AC_MSG_CHECKING(for --with-pymalloc)
2125AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002126 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002127
2128if test -z "$with_pymalloc"
2129then with_pymalloc="yes"
2130fi
2131if test "$with_pymalloc" != "no"
2132then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002133 AC_DEFINE(WITH_PYMALLOC, 1,
2134 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002135fi
2136AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002137
Barry Warsawef82cd72000-06-30 16:21:01 +00002138# Check for --with-wctype-functions
2139AC_MSG_CHECKING(for --with-wctype-functions)
2140AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002141 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2142[
Barry Warsawef82cd72000-06-30 16:21:01 +00002143if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002144then
2145 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2146 [Define if you want wctype.h functions to be used instead of the
2147 one supplied by Python itself. (see Include/unicodectype.h).])
2148 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002149else AC_MSG_RESULT(no)
2150fi],
2151[AC_MSG_RESULT(no)])
2152
Guido van Rossum68242b51996-05-28 22:53:03 +00002153# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002154AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002155DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002156
Guido van Rossume97ee181999-12-20 21:27:22 +00002157# the dlopen() function means we might want to use dynload_shlib.o. some
2158# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002159AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002160
2161# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2162# loading of modules.
2163AC_SUBST(DYNLOADFILE)
2164AC_MSG_CHECKING(DYNLOADFILE)
2165if test -z "$DYNLOADFILE"
2166then
2167 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002168 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2169 if test "$ac_cv_func_dlopen" = yes
2170 then DYNLOADFILE="dynload_shlib.o"
2171 else DYNLOADFILE="dynload_aix.o"
2172 fi
2173 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002174 BeOS*) DYNLOADFILE="dynload_beos.o";;
2175 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002176 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2177 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002178 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002179 *)
2180 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2181 # out any dynamic loading
2182 if test "$ac_cv_func_dlopen" = yes
2183 then DYNLOADFILE="dynload_shlib.o"
2184 else DYNLOADFILE="dynload_stub.o"
2185 fi
2186 ;;
2187 esac
2188fi
2189AC_MSG_RESULT($DYNLOADFILE)
2190if test "$DYNLOADFILE" != "dynload_stub.o"
2191then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002192 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2193 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002194fi
2195
Jack Jansenc49e5b72001-06-19 15:00:23 +00002196# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2197
2198AC_SUBST(MACHDEP_OBJS)
2199AC_MSG_CHECKING(MACHDEP_OBJS)
2200if test -z "$MACHDEP_OBJS"
2201then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002202 MACHDEP_OBJS=$extra_machdep_objs
2203else
2204 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002205fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002206AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002207
Guido van Rossum627b2d71993-12-24 10:39:16 +00002208# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002209AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2210 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002211 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002212 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002213 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002214 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002215 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002216 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002217 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002218 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002219 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002220 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002221
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002222# For some functions, having a definition is not sufficient, since
2223# we want to take their address.
2224AC_MSG_CHECKING(for chroot)
2225AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2226 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2227 AC_MSG_RESULT(yes),
2228 AC_MSG_RESULT(no)
2229)
2230AC_MSG_CHECKING(for link)
2231AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2232 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2233 AC_MSG_RESULT(yes),
2234 AC_MSG_RESULT(no)
2235)
2236AC_MSG_CHECKING(for symlink)
2237AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2238 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2239 AC_MSG_RESULT(yes),
2240 AC_MSG_RESULT(no)
2241)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002242AC_MSG_CHECKING(for fchdir)
2243AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2244 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2245 AC_MSG_RESULT(yes),
2246 AC_MSG_RESULT(no)
2247)
2248AC_MSG_CHECKING(for fsync)
2249AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002250 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002251 AC_MSG_RESULT(yes),
2252 AC_MSG_RESULT(no)
2253)
2254AC_MSG_CHECKING(for fdatasync)
2255AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2256 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2257 AC_MSG_RESULT(yes),
2258 AC_MSG_RESULT(no)
2259)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002260
Martin v. Löwisd5843682002-11-21 20:41:28 +00002261# On some systems (eg. FreeBSD 5), we would find a definition of the
2262# functions ctermid_r, setgroups in the library, but no prototype
2263# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2264# address to avoid compiler warnings and potential miscompilations
2265# because of the missing prototypes.
2266
2267AC_MSG_CHECKING(for ctermid_r)
2268AC_TRY_COMPILE([
2269#include "confdefs.h"
2270#include <stdio.h>
2271], void* p = ctermid_r,
2272 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2273 AC_MSG_RESULT(yes),
2274 AC_MSG_RESULT(no)
2275)
2276
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002277AC_MSG_CHECKING(for flock)
2278AC_TRY_COMPILE([
2279#include "confdefs.h"
2280#include <sys/file.h>
2281], void* p = flock,
2282 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2283 AC_MSG_RESULT(yes),
2284 AC_MSG_RESULT(no)
2285)
2286
2287AC_MSG_CHECKING(for getpagesize)
2288AC_TRY_COMPILE([
2289#include "confdefs.h"
2290#include <unistd.h>
2291], void* p = getpagesize,
2292 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2293 AC_MSG_RESULT(yes),
2294 AC_MSG_RESULT(no)
2295)
2296
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002297dnl check for true
2298AC_CHECK_PROGS(TRUE, true, /bin/true)
2299
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002300dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2301dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002302AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002303 AC_CHECK_LIB(resolv, inet_aton)
2304)
2305
Martin v. Löwise9416172003-05-03 10:12:45 +00002306AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002307AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002308#include "confdefs.h"
2309#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002310], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002311 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2312 AC_MSG_RESULT(yes),
2313 AC_MSG_RESULT(no)
2314)
2315
2316AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002317AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002318#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002319#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002320#include <sys/socket.h>
2321#include <netinet/in.h>
2322#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002323], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002324 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2325 AC_MSG_RESULT(yes),
2326 AC_MSG_RESULT(no)
2327)
2328
2329AC_MSG_CHECKING(for inet_pton)
2330AC_TRY_COMPILE([
2331#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002332#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002333#include <sys/socket.h>
2334#include <netinet/in.h>
2335#include <arpa/inet.h>
2336], void* p = inet_pton,
2337 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2338 AC_MSG_RESULT(yes),
2339 AC_MSG_RESULT(no)
2340)
2341
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002342# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002343AC_MSG_CHECKING(for setgroups)
2344AC_TRY_COMPILE([
2345#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002346#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002347#ifdef HAVE_GRP_H
2348#include <grp.h>
2349#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002350],
2351void* p = setgroups,
2352 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2353 AC_MSG_RESULT(yes),
2354 AC_MSG_RESULT(no)
2355)
2356
Fred Drake8cef4cf2000-06-28 16:40:38 +00002357# check for openpty and forkpty
2358
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002359AC_CHECK_FUNCS(openpty,,
2360 AC_CHECK_LIB(util,openpty,
2361 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2362 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2363 )
2364)
2365AC_CHECK_FUNCS(forkpty,,
2366 AC_CHECK_LIB(util,forkpty,
2367 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2368 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2369 )
2370)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002371
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002372# check for long file support functions
2373AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2374
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002375AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002376AC_CHECK_FUNCS(getpgrp,
2377 AC_TRY_COMPILE([#include <unistd.h>],
2378 [getpgrp(0);],
2379 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2380 [Define if getpgrp() must be called as getpgrp(0).])
2381 )
2382)
Jack Jansen150753c2003-03-29 22:07:47 +00002383AC_CHECK_FUNCS(setpgrp,
2384 AC_TRY_COMPILE([#include <unistd.h>],
2385 [setpgrp(0,0);],
2386 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2387 [Define if setpgrp() must be called as setpgrp(0, 0).])
2388 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002389)
2390AC_CHECK_FUNCS(gettimeofday,
2391 AC_TRY_COMPILE([#include <sys/time.h>],
2392 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2393 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2394 [Define if gettimeofday() does not have second (timezone) argument
2395 This is the case on Motorola V4 (R40V4.2)])
2396 )
2397)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002398
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002399AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002400AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002401#if defined(MAJOR_IN_MKDEV)
2402#include <sys/mkdev.h>
2403#elif defined(MAJOR_IN_SYSMACROS)
2404#include <sys/sysmacros.h>
2405#else
2406#include <sys/types.h>
2407#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002408],[
2409 makedev(major(0),minor(0));
2410],[
2411 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2412 [Define to 1 if you have the device macros.])
2413 AC_MSG_RESULT(yes)
2414],[
2415 AC_MSG_RESULT(no)
2416])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002417
2418# On OSF/1 V5.1, getaddrinfo is available, but a define
2419# for [no]getaddrinfo in netdb.h.
2420AC_MSG_CHECKING(for getaddrinfo)
2421AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002422#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002423#include <sys/socket.h>
2424#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002425#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002426],[
2427getaddrinfo(NULL, NULL, NULL, NULL);
2428], [
2429AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002430AC_MSG_CHECKING(getaddrinfo bug)
2431AC_TRY_RUN([
2432#include <sys/types.h>
2433#include <netdb.h>
2434#include <string.h>
2435#include <sys/socket.h>
2436#include <netinet/in.h>
2437
2438main()
2439{
2440 int passive, gaierr, inet4 = 0, inet6 = 0;
2441 struct addrinfo hints, *ai, *aitop;
2442 char straddr[INET6_ADDRSTRLEN], strport[16];
2443
2444 for (passive = 0; passive <= 1; passive++) {
2445 memset(&hints, 0, sizeof(hints));
2446 hints.ai_family = AF_UNSPEC;
2447 hints.ai_flags = passive ? AI_PASSIVE : 0;
2448 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002449 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002450 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2451 (void)gai_strerror(gaierr);
2452 goto bad;
2453 }
2454 for (ai = aitop; ai; ai = ai->ai_next) {
2455 if (ai->ai_addr == NULL ||
2456 ai->ai_addrlen == 0 ||
2457 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2458 straddr, sizeof(straddr), strport, sizeof(strport),
2459 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2460 goto bad;
2461 }
2462 switch (ai->ai_family) {
2463 case AF_INET:
2464 if (strcmp(strport, "54321") != 0) {
2465 goto bad;
2466 }
2467 if (passive) {
2468 if (strcmp(straddr, "0.0.0.0") != 0) {
2469 goto bad;
2470 }
2471 } else {
2472 if (strcmp(straddr, "127.0.0.1") != 0) {
2473 goto bad;
2474 }
2475 }
2476 inet4++;
2477 break;
2478 case AF_INET6:
2479 if (strcmp(strport, "54321") != 0) {
2480 goto bad;
2481 }
2482 if (passive) {
2483 if (strcmp(straddr, "::") != 0) {
2484 goto bad;
2485 }
2486 } else {
2487 if (strcmp(straddr, "::1") != 0) {
2488 goto bad;
2489 }
2490 }
2491 inet6++;
2492 break;
2493 case AF_UNSPEC:
2494 goto bad;
2495 break;
2496 default:
2497 /* another family support? */
2498 break;
2499 }
2500 }
2501 }
2502
2503 if (!(inet4 == 0 || inet4 == 2))
2504 goto bad;
2505 if (!(inet6 == 0 || inet6 == 2))
2506 goto bad;
2507
2508 if (aitop)
2509 freeaddrinfo(aitop);
2510 exit(0);
2511
2512 bad:
2513 if (aitop)
2514 freeaddrinfo(aitop);
2515 exit(1);
2516}
2517],
2518AC_MSG_RESULT(good)
2519buggygetaddrinfo=no,
2520AC_MSG_RESULT(buggy)
2521buggygetaddrinfo=yes,
2522AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002523buggygetaddrinfo=yes)], [
2524AC_MSG_RESULT(no)
2525buggygetaddrinfo=yes
2526])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002527
2528if test "$buggygetaddrinfo" = "yes"; then
2529 if test "$ipv6" = "yes"; then
2530 echo 'Fatal: You must get working getaddrinfo() function.'
2531 echo ' or you can specify "--disable-ipv6"'.
2532 exit 1
2533 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002534else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002535 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002536fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002537AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002538
Guido van Rossum627b2d71993-12-24 10:39:16 +00002539# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002540AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002541AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002542AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002543AC_CHECK_MEMBERS([struct stat.st_rdev])
2544AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002545AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002546AC_CHECK_MEMBERS([struct stat.st_gen])
2547AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002548AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002549
2550AC_MSG_CHECKING(for time.h that defines altzone)
2551AC_CACHE_VAL(ac_cv_header_time_altzone,
2552[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2553 ac_cv_header_time_altzone=yes,
2554 ac_cv_header_time_altzone=no)])
2555AC_MSG_RESULT($ac_cv_header_time_altzone)
2556if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002557 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002558fi
2559
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002560was_it_defined=no
2561AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002562AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002563#include <sys/types.h>
2564#include <sys/select.h>
2565#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002566], [;], [
2567 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2568 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2569 (which you can't on SCO ODT 3.0).])
2570 was_it_defined=yes
2571])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002572AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002573
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002574AC_MSG_CHECKING(for addrinfo)
2575AC_CACHE_VAL(ac_cv_struct_addrinfo,
2576AC_TRY_COMPILE([
2577# include <netdb.h>],
2578 [struct addrinfo a],
2579 ac_cv_struct_addrinfo=yes,
2580 ac_cv_struct_addrinfo=no))
2581AC_MSG_RESULT($ac_cv_struct_addrinfo)
2582if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002583 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002584fi
2585
2586AC_MSG_CHECKING(for sockaddr_storage)
2587AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2588AC_TRY_COMPILE([
2589# include <sys/types.h>
2590# include <sys/socket.h>],
2591 [struct sockaddr_storage s],
2592 ac_cv_struct_sockaddr_storage=yes,
2593 ac_cv_struct_sockaddr_storage=no))
2594AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2595if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002596 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002597fi
2598
Guido van Rossum627b2d71993-12-24 10:39:16 +00002599# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002600
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002601AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002602AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002603
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002604works=no
2605AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002606AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2607 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2608)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002609AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002610
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002611works=no
2612AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002613AC_TRY_COMPILE([], [signed char c;], works=yes,
2614 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2615)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002616AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002617
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002618have_prototypes=no
2619AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002620AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2621 AC_DEFINE(HAVE_PROTOTYPES, 1,
2622 [Define if your compiler supports function prototype])
2623 have_prototypes=yes
2624])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002625AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002626
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002627works=no
2628AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002629AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002630#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002631int foo(int x, ...) {
2632 va_list va;
2633 va_start(va, x);
2634 va_arg(va, int);
2635 va_arg(va, char *);
2636 va_arg(va, double);
2637 return 0;
2638}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002639], [return foo(10, "", 3.14);], [
2640 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2641 [Define if your compiler supports variable length function prototypes
2642 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2643 works=yes
2644])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002645AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002646
Dave Cole331708b2004-08-09 04:51:41 +00002647# check for socketpair
2648AC_MSG_CHECKING(for socketpair)
2649AC_TRY_COMPILE([
2650#include <sys/types.h>
2651#include <sys/socket.h>
2652], void *x=socketpair,
2653 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2654 AC_MSG_RESULT(yes),
2655 AC_MSG_RESULT(no)
2656)
2657
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002658# check if sockaddr has sa_len member
2659AC_MSG_CHECKING(if sockaddr has sa_len member)
2660AC_TRY_COMPILE([#include <sys/types.h>
2661#include <sys/socket.h>],
2662[struct sockaddr x;
2663x.sa_len = 0;],
2664 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002665 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002666 AC_MSG_RESULT(no))
2667
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002668va_list_is_array=no
2669AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002670AC_TRY_COMPILE([
2671#ifdef HAVE_STDARG_PROTOTYPES
2672#include <stdarg.h>
2673#else
2674#include <varargs.h>
2675#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002676], [va_list list1, list2; list1 = list2;], , [
2677 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2678 va_list_is_array=yes
2679])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002680AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002681
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002682# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002683AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2684 [Define this if you have some version of gethostbyname_r()])
2685
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002686AC_CHECK_FUNC(gethostbyname_r, [
2687 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2688 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2689 OLD_CFLAGS=$CFLAGS
2690 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2691 AC_TRY_COMPILE([
2692# include <netdb.h>
2693 ], [
2694 char *name;
2695 struct hostent *he, *res;
2696 char buffer[2048];
2697 int buflen = 2048;
2698 int h_errnop;
2699
2700 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2701 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002702 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002703 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2704 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002705 AC_MSG_RESULT(yes)
2706 ], [
2707 AC_MSG_RESULT(no)
2708 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2709 AC_TRY_COMPILE([
2710# include <netdb.h>
2711 ], [
2712 char *name;
2713 struct hostent *he;
2714 char buffer[2048];
2715 int buflen = 2048;
2716 int h_errnop;
2717
2718 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2719 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002720 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002721 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2722 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002723 AC_MSG_RESULT(yes)
2724 ], [
2725 AC_MSG_RESULT(no)
2726 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2727 AC_TRY_COMPILE([
2728# include <netdb.h>
2729 ], [
2730 char *name;
2731 struct hostent *he;
2732 struct hostent_data data;
2733
2734 (void) gethostbyname_r(name, he, &data);
2735 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002736 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002737 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2738 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002739 AC_MSG_RESULT(yes)
2740 ], [
2741 AC_MSG_RESULT(no)
2742 ])
2743 ])
2744 ])
2745 CFLAGS=$OLD_CFLAGS
2746], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002747 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002748])
2749AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2750AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2751AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002752AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002753AC_SUBST(HAVE_GETHOSTBYNAME)
2754
Guido van Rossum627b2d71993-12-24 10:39:16 +00002755# checks for system services
2756# (none yet)
2757
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002758# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002759AC_CHECK_FUNC(__fpu_control,
2760 [],
2761 [AC_CHECK_LIB(ieee, __fpu_control)
2762])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002763
Guido van Rossum93274221997-05-09 02:42:00 +00002764# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002765AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002766AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002767 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2768[
Guido van Rossum93274221997-05-09 02:42:00 +00002769if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002770then
2771 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2772 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2773 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002774else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002775fi],
2776[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002777
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002778# check for --with-libm=...
2779AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002780case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002781Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002782BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002783*) LIBM=-lm
2784esac
Guido van Rossum93274221997-05-09 02:42:00 +00002785AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002786AC_ARG_WITH(libm,
2787 AC_HELP_STRING(--with-libm=STRING, math library),
2788[
Guido van Rossum93274221997-05-09 02:42:00 +00002789if test "$withval" = no
2790then LIBM=
2791 AC_MSG_RESULT(force LIBM empty)
2792elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002793then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002794 AC_MSG_RESULT(set LIBM="$withval")
2795else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002796fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002797[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002798
2799# check for --with-libc=...
2800AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002801AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002802AC_ARG_WITH(libc,
2803 AC_HELP_STRING(--with-libc=STRING, C library),
2804[
Guido van Rossum93274221997-05-09 02:42:00 +00002805if test "$withval" = no
2806then LIBC=
2807 AC_MSG_RESULT(force LIBC empty)
2808elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002809then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002810 AC_MSG_RESULT(set LIBC="$withval")
2811else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002812fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002813[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002814
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002815# check for hypot() in math library
2816LIBS_SAVE=$LIBS
2817LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002818AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002819LIBS=$LIBS_SAVE
2820
Guido van Rossumef2255b2000-03-10 22:30:29 +00002821# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002822AC_CHECK_HEADER(wchar.h, [
2823 AC_DEFINE(HAVE_WCHAR_H, 1,
2824 [Define if the compiler provides a wchar.h header file.])
2825 wchar_h="yes"
2826],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002827wchar_h="no"
2828)
2829
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002830# determine wchar_t size
2831if test "$wchar_h" = yes
2832then
Guido van Rossum67b26592001-10-20 14:21:45 +00002833 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002834fi
2835
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002836AC_MSG_CHECKING(for UCS-4 tcl)
2837have_ucs4_tcl=no
2838AC_TRY_COMPILE([
2839#include <tcl.h>
2840#if TCL_UTF_MAX != 6
2841# error "NOT UCS4_TCL"
2842#endif], [], [
2843 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2844 have_ucs4_tcl=yes
2845])
2846AC_MSG_RESULT($have_ucs4_tcl)
2847
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002848# check whether wchar_t is signed or not
2849if test "$wchar_h" = yes
2850then
2851 # check whether wchar_t is signed or not
2852 AC_MSG_CHECKING(whether wchar_t is signed)
2853 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2854 AC_TRY_RUN([
2855 #include <wchar.h>
2856 int main()
2857 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002858 /* Success: exit code 0 */
2859 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002860 }
2861 ],
2862 ac_cv_wchar_t_signed=yes,
2863 ac_cv_wchar_t_signed=no,
2864 ac_cv_wchar_t_signed=yes)])
2865 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2866fi
2867
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002868AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002869dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002870AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002871 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2872 [],
2873 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002874
2875if test $enable_unicode = yes
2876then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002877 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002878 case "$have_ucs4_tcl" in
2879 yes) enable_unicode="ucs4"
2880 ;;
2881 *) enable_unicode="ucs2"
2882 ;;
2883 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002884fi
2885
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002886AH_TEMPLATE(Py_UNICODE_SIZE,
2887 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002888case "$enable_unicode" in
2889ucs2) unicode_size="2"
2890 AC_DEFINE(Py_UNICODE_SIZE,2)
2891 ;;
2892ucs4) unicode_size="4"
2893 AC_DEFINE(Py_UNICODE_SIZE,4)
2894 ;;
2895esac
2896
Martin v. Löwis11437992002-04-12 09:54:03 +00002897AH_TEMPLATE(PY_UNICODE_TYPE,
2898 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002899
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002900AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002901if test "$enable_unicode" = "no"
2902then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002903 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002904 AC_MSG_RESULT(not used)
2905else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002906 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002907 AC_DEFINE(Py_USING_UNICODE, 1,
2908 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002909
2910 # wchar_t is only usable if it maps to an unsigned type
2911 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002912 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002913 then
2914 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002915 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2916 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002917 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002918 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002919 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2920 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2921 then
2922 PY_UNICODE_TYPE="unsigned short"
2923 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2924 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2925 then
2926 PY_UNICODE_TYPE="unsigned long"
2927 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2928 else
2929 PY_UNICODE_TYPE="no type found"
2930 fi
2931 AC_MSG_RESULT($PY_UNICODE_TYPE)
2932fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002933
2934# check for endianness
2935AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00002936AH_VERBATIM([WORDS_BIGENDIAN],
2937[
2938 /* Define to 1 if your processor stores words with the most significant byte
2939 first (like Motorola and SPARC, unlike Intel and VAX).
2940
2941 The block below does compile-time checking for endianness on platforms
2942 that use GCC and therefore allows compiling fat binaries on OSX by using
2943 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
2944 such that the configure-result is used on systems that don't use GCC.
2945 */
2946#ifdef __BIG_ENDIAN__
2947#define WORDS_BIGENDIAN 1
2948#else
2949#ifndef __LITTLE_ENDIAN__
2950#undef WORDS_BIGENDIAN
2951#endif
2952#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00002953
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002954# Check whether right shifting a negative integer extends the sign bit
2955# or fills with zeros (like the Cray J90, according to Tim Peters).
2956AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002957AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002958AC_TRY_RUN([
2959int main()
2960{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002961 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002962}
Guido van Rossum3065c942001-09-17 04:03:14 +00002963],
2964ac_cv_rshift_extends_sign=yes,
2965ac_cv_rshift_extends_sign=no,
2966ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002967AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2968if test "$ac_cv_rshift_extends_sign" = no
2969then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002970 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2971 [Define if i>>j for signed int i does not extend the sign bit
2972 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002973fi
2974
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002975# check for getc_unlocked and related locking functions
2976AC_MSG_CHECKING(for getc_unlocked() and friends)
2977AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2978AC_TRY_LINK([#include <stdio.h>],[
2979 FILE *f = fopen("/dev/null", "r");
2980 flockfile(f);
2981 getc_unlocked(f);
2982 funlockfile(f);
2983], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2984AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2985if test "$ac_cv_have_getc_unlocked" = yes
2986then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002987 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2988 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002989fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002990
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002991# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002992# save the value of LIBS so we don't actually link Python with readline
2993LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002994AC_CHECK_LIB(readline, readline)
2995if test "$ac_cv_have_readline_readline" = no
2996then
2997 AC_CHECK_LIB(termcap, readline)
2998fi
2999
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003000# check for readline 2.1
3001AC_CHECK_LIB(readline, rl_callback_handler_install,
3002 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003003 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003004
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003005# check for readline 2.2
3006AC_TRY_CPP([#include <readline/readline.h>],
3007have_readline=yes, have_readline=no)
3008if test $have_readline = yes
3009then
3010 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3011 [readline/readline.h],
3012 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3013 [Define if you have readline 2.2]), )
3014fi
3015
Martin v. Löwis0daad592001-09-30 21:09:59 +00003016# check for readline 4.0
3017AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003018 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003019 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003020
Guido van Rossum353ae582001-07-10 16:45:32 +00003021# check for readline 4.2
3022AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003023 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003024 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003025
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003026# also in readline 4.2
3027AC_TRY_CPP([#include <readline/readline.h>],
3028have_readline=yes, have_readline=no)
3029if test $have_readline = yes
3030then
3031 AC_EGREP_HEADER([extern int rl_catch_signals;],
3032 [readline/readline.h],
3033 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3034 [Define if you can turn off readline's signal handling.]), )
3035fi
3036
Martin v. Löwis82bca632006-02-10 20:49:30 +00003037# End of readline checks: restore LIBS
3038LIBS=$LIBS_no_readline
3039
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003040AC_MSG_CHECKING(for broken nice())
3041AC_CACHE_VAL(ac_cv_broken_nice, [
3042AC_TRY_RUN([
3043int main()
3044{
3045 int val1 = nice(1);
3046 if (val1 != -1 && val1 == nice(2))
3047 exit(0);
3048 exit(1);
3049}
Guido van Rossum3065c942001-09-17 04:03:14 +00003050],
3051ac_cv_broken_nice=yes,
3052ac_cv_broken_nice=no,
3053ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003054AC_MSG_RESULT($ac_cv_broken_nice)
3055if test "$ac_cv_broken_nice" = yes
3056then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003057 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3058 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003059fi
3060
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003061AC_MSG_CHECKING(for broken poll())
3062AC_TRY_RUN([
3063#include <poll.h>
3064
3065int main (void)
3066 {
3067 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3068
3069 close (42);
3070
3071 int poll_test = poll (&poll_struct, 1, 0);
3072
3073 if (poll_test < 0)
3074 {
3075 exit(0);
3076 }
3077 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3078 {
3079 exit(0);
3080 }
3081 else
3082 {
3083 exit(1);
3084 }
3085 }
3086],
3087ac_cv_broken_poll=yes,
3088ac_cv_broken_poll=no,
3089ac_cv_broken_poll=no)
3090AC_MSG_RESULT($ac_cv_broken_poll)
3091if test "$ac_cv_broken_poll" = yes
3092then
3093 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3094 [Define if poll() sets errno on invalid file descriptors.])
3095fi
3096
Brett Cannon43802422005-02-10 20:48:03 +00003097# Before we can test tzset, we need to check if struct tm has a tm_zone
3098# (which is not required by ISO C or UNIX spec) and/or if we support
3099# tzname[]
3100AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003101
Brett Cannon43802422005-02-10 20:48:03 +00003102# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003103AC_MSG_CHECKING(for working tzset())
3104AC_CACHE_VAL(ac_cv_working_tzset, [
3105AC_TRY_RUN([
3106#include <stdlib.h>
3107#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003108#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003109
3110#if HAVE_TZNAME
3111extern char *tzname[];
3112#endif
3113
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003114int main()
3115{
Brett Cannon18367812003-09-19 00:59:16 +00003116 /* Note that we need to ensure that not only does tzset(3)
3117 do 'something' with localtime, but it works as documented
3118 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003119 This includes making sure that tzname is set properly if
3120 tm->tm_zone does not exist since it is the alternative way
3121 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003122
3123 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003124 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003125 */
3126
Brett Cannon43802422005-02-10 20:48:03 +00003127 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003128 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3129
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003130 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003131 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003132 if (localtime(&groundhogday)->tm_hour != 0)
3133 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003134#if HAVE_TZNAME
3135 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3136 if (strcmp(tzname[0], "UTC") ||
3137 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3138 exit(1);
3139#endif
Brett Cannon18367812003-09-19 00:59:16 +00003140
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003141 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003142 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003143 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003144 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003145#if HAVE_TZNAME
3146 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3147 exit(1);
3148#endif
Brett Cannon18367812003-09-19 00:59:16 +00003149
3150 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3151 tzset();
3152 if (localtime(&groundhogday)->tm_hour != 11)
3153 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003154#if HAVE_TZNAME
3155 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3156 exit(1);
3157#endif
3158
3159#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003160 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3161 exit(1);
3162 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3163 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003164#endif
Brett Cannon18367812003-09-19 00:59:16 +00003165
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003166 exit(0);
3167}
3168],
3169ac_cv_working_tzset=yes,
3170ac_cv_working_tzset=no,
3171ac_cv_working_tzset=no)])
3172AC_MSG_RESULT($ac_cv_working_tzset)
3173if test "$ac_cv_working_tzset" = yes
3174then
3175 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3176 [Define if tzset() actually switches the local timezone in a meaningful way.])
3177fi
3178
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003179# Look for subsecond timestamps in struct stat
3180AC_MSG_CHECKING(for tv_nsec in struct stat)
3181AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3182AC_TRY_COMPILE([#include <sys/stat.h>], [
3183struct stat st;
3184st.st_mtim.tv_nsec = 1;
3185],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003186ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003187ac_cv_stat_tv_nsec=no,
3188ac_cv_stat_tv_nsec=no))
3189AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3190if test "$ac_cv_stat_tv_nsec" = yes
3191then
3192 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3193 [Define if you have struct stat.st_mtim.tv_nsec])
3194fi
3195
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003196# Look for BSD style subsecond timestamps in struct stat
3197AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3198AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3199AC_TRY_COMPILE([#include <sys/stat.h>], [
3200struct stat st;
3201st.st_mtimespec.tv_nsec = 1;
3202],
3203ac_cv_stat_tv_nsec2=yes,
3204ac_cv_stat_tv_nsec2=no,
3205ac_cv_stat_tv_nsec2=no))
3206AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3207if test "$ac_cv_stat_tv_nsec2" = yes
3208then
3209 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3210 [Define if you have struct stat.st_mtimensec])
3211fi
3212
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003213# On HP/UX 11.0, mvwdelch is a block with a return statement
3214AC_MSG_CHECKING(whether mvwdelch is an expression)
3215AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3216AC_TRY_COMPILE([#include <curses.h>], [
3217 int rtn;
3218 rtn = mvwdelch(0,0,0);
3219], ac_cv_mvwdelch_is_expression=yes,
3220 ac_cv_mvwdelch_is_expression=no,
3221 ac_cv_mvwdelch_is_expression=yes))
3222AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3223
3224if test "$ac_cv_mvwdelch_is_expression" = yes
3225then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003226 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3227 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003228fi
3229
3230AC_MSG_CHECKING(whether WINDOW has _flags)
3231AC_CACHE_VAL(ac_cv_window_has_flags,
3232AC_TRY_COMPILE([#include <curses.h>], [
3233 WINDOW *w;
3234 w->_flags = 0;
3235], ac_cv_window_has_flags=yes,
3236 ac_cv_window_has_flags=no,
3237 ac_cv_window_has_flags=no))
3238AC_MSG_RESULT($ac_cv_window_has_flags)
3239
3240
3241if test "$ac_cv_window_has_flags" = yes
3242then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003243 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3244 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003245fi
3246
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003247AC_MSG_CHECKING(for /dev/ptmx)
3248
3249if test -e /dev/ptmx
3250then
3251 AC_MSG_RESULT(yes)
3252 AC_DEFINE(HAVE_DEV_PTMX, 1,
3253 [Define if we have /dev/ptmx.])
3254else
3255 AC_MSG_RESULT(no)
3256fi
3257
Neal Norwitz865400f2003-03-21 01:42:58 +00003258AC_MSG_CHECKING(for /dev/ptc)
3259
3260if test -e /dev/ptc
3261then
3262 AC_MSG_RESULT(yes)
3263 AC_DEFINE(HAVE_DEV_PTC, 1,
3264 [Define if we have /dev/ptc.])
3265else
3266 AC_MSG_RESULT(no)
3267fi
3268
Brett Cannon09d12362006-05-11 05:11:33 +00003269AC_MSG_CHECKING(for %zd printf() format support)
3270AC_TRY_RUN([#include <stdio.h>
3271#include <stddef.h>
3272#include <string.h>
3273
3274int main()
3275{
3276 char buffer[4];
3277
3278 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3279 return 1;
3280
3281 if (strncmp(buffer, "123", 3))
3282 return 1;
3283
3284 return 0;
3285}],
3286[AC_MSG_RESULT(yes)
3287 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3288 AC_MSG_RESULT(no))
3289
Martin v. Löwis01c04012002-11-11 14:58:44 +00003290AC_CHECK_TYPE(socklen_t,,
3291 AC_DEFINE(socklen_t,int,
3292 Define to `int' if <sys/socket.h> does not define.),[
3293#ifdef HAVE_SYS_TYPES_H
3294#include <sys/types.h>
3295#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003296#ifdef HAVE_SYS_SOCKET_H
3297#include <sys/socket.h>
3298#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003299])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003300
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003301AC_SUBST(THREADHEADERS)
3302
3303for h in `(cd $srcdir;echo Python/thread_*.h)`
3304do
3305 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3306done
3307
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003308AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003309SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003310AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003311for dir in $SRCDIRS; do
3312 if test ! -d $dir; then
3313 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003314 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003315done
3316AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003317
Guido van Rossum627b2d71993-12-24 10:39:16 +00003318# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003319AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3320AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003321
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003322echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003323if test ! -f Modules/Setup
3324then
3325 cp $srcdir/Modules/Setup.dist Modules/Setup
3326fi
3327
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003328echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003329if test ! -f Modules/Setup.local
3330then
3331 echo "# Edit this file for local setup changes" >Modules/Setup.local
3332fi
3333
3334echo "creating Makefile"
3335$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3336 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003337 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003338mv config.c Modules