blob: 8b82841058a27756e3e35a084b9529f7f1ba57cf [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*)
614 LDLIBRARY='libpython$(VERSION).sl'
615 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000616 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000617 ;;
618 OSF*)
619 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000620 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000621 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000622 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000623 atheos*)
624 LDLIBRARY='libpython$(VERSION).so'
625 BLDLIBRARY='-L. -lpython$(VERSION)'
626 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
627 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000628 esac
Jason Tishler30765592003-09-04 11:04:06 +0000629else # shared is disabled
630 case $ac_sys_system in
631 CYGWIN*)
632 BLDLIBRARY='$(LIBRARY)'
633 LDLIBRARY='libpython$(VERSION).dll.a'
634 ;;
635 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636fi
637
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000638AC_MSG_RESULT($LDLIBRARY)
639
Guido van Rossum627b2d71993-12-24 10:39:16 +0000640AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000641AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000642AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000643
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000644AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000645AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000646if test $SVNVERSION = found
647then
648 SVNVERSION="svnversion \$(srcdir)"
649else
650 SVNVERSION="echo exported"
651fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000652
Neil Schemenauera42c8272001-03-31 00:01:55 +0000653case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000654bsdos*|hp*|HP*)
655 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000656 if test -z "$INSTALL"
657 then
658 INSTALL="${srcdir}/install-sh -c"
659 fi
660esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000661AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000662
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000663# Not every filesystem supports hard links
664AC_SUBST(LN)
665if test -z "$LN" ; then
666 case $ac_sys_system in
667 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000668 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000669 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000670 *) LN=ln;;
671 esac
672fi
673
Fred Drake9f715822001-07-11 06:27:00 +0000674# Check for --with-pydebug
675AC_MSG_CHECKING(for --with-pydebug)
676AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000677 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
678[
Fred Drake9f715822001-07-11 06:27:00 +0000679if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000680then
681 AC_DEFINE(Py_DEBUG, 1,
682 [Define if you want to build an interpreter with many run-time checks.])
683 AC_MSG_RESULT(yes);
684 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000685else AC_MSG_RESULT(no); Py_DEBUG='false'
686fi],
687[AC_MSG_RESULT(no)])
688
Skip Montanarodecc6a42003-01-01 20:07:49 +0000689# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
690# merged with this chunk of code?
691
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000692# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000693# ------------------------
694# (The following bit of code is complicated enough - please keep things
695# indented properly. Just pretend you're editing Python code. ;-)
696
697# There are two parallel sets of case statements below, one that checks to
698# see if OPT was set and one that does BASECFLAGS setting based upon
699# compiler and platform. BASECFLAGS tweaks need to be made even if the
700# user set OPT.
701
702# tweak OPT based on compiler and platform, only if the user didn't set
703# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000704AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000705if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000706then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000707 case $GCC in
708 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000709 if test "$CC" != 'g++' ; then
710 STRICT_PROTO="-Wstrict-prototypes"
711 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000712 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000713 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000714 if test "$Py_DEBUG" = 'true' ; then
715 # Optimization messes up debuggers, so turn it off for
716 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000717 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000718 else
Skip Montanaro288a5be2006-04-13 02:00:56 +0000719 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000720 fi
721 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000722 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000723 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000724 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000725 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000726 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 SCO_SV*) OPT="$OPT -m486 -DSCO5"
728 ;;
729 esac
Fred Drake9f715822001-07-11 06:27:00 +0000730 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000731
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000732 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000733 OPT="-O"
734 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000735 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000736
737 # The current (beta) Monterey compiler dies with optimizations
738 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000739 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000740 Monterey*)
741 OPT=""
742 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000743 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000744
Guido van Rossum4e8af441994-08-19 15:33:54 +0000745fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000746
Skip Montanarodecc6a42003-01-01 20:07:49 +0000747AC_SUBST(BASECFLAGS)
748# tweak BASECFLAGS based on compiler and platform
749case $GCC in
750yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000751 # Python violates C99 rules, by casting between incompatible
752 # pointer types. GCC may generate bad code as a result of that,
753 # so use -fno-strict-aliasing if supported.
754 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
755 ac_save_cc="$CC"
756 CC="$CC -fno-strict-aliasing"
757 AC_TRY_RUN([int main() { return 0; }],
758 ac_cv_no_strict_aliasing_ok=yes,
759 ac_cv_no_strict_aliasing_ok=no,
760 ac_cv_no_strict_aliasing_ok=no)
761 CC="$ac_save_cc"
762 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
763 if test $ac_cv_no_strict_aliasing_ok = yes
764 then
765 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
766 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000767 case $ac_sys_system in
768 SCO_SV*)
769 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
770 ;;
771 # is there any other compiler on Darwin besides gcc?
772 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000773 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000774 if test "${enable_universalsdk}"; then
775 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
776 fi
777
Skip Montanarodecc6a42003-01-01 20:07:49 +0000778 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000779 OSF*)
780 BASECFLAGS="$BASECFLAGS -mieee"
781 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000782 esac
783 ;;
784
785*)
786 case $ac_sys_system in
787 OpenUNIX*|UnixWare*)
788 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
789 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000790 OSF*)
791 BASECFLAGS="$BASECFLAGS -ieee -std"
792 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000793 SCO_SV*)
794 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
795 ;;
796 esac
797 ;;
798esac
799
Fred Drakee1ceaa02001-12-04 20:55:47 +0000800if test "$Py_DEBUG" = 'true'; then
801 :
802else
803 OPT="-DNDEBUG $OPT"
804fi
805
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000806if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000807then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000809fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000810
Neal Norwitz020c46a2006-01-07 21:39:28 +0000811# disable check for icc since it seems to pass, but generates a warning
812if test "$CC" = icc
813then
814 ac_cv_opt_olimit_ok=no
815fi
816
Guido van Rossum91922671997-10-09 20:24:13 +0000817AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
818AC_CACHE_VAL(ac_cv_opt_olimit_ok,
819[ac_save_cc="$CC"
820CC="$CC -OPT:Olimit=0"
821AC_TRY_RUN([int main() { return 0; }],
822 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000823 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000824 ac_cv_opt_olimit_ok=no)
825CC="$ac_save_cc"])
826AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000827if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000828 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000829 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
830 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
831 # environment?
832 Darwin*)
833 ;;
834 *)
835 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
836 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000837 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000838else
839 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
840 AC_CACHE_VAL(ac_cv_olimit_ok,
841 [ac_save_cc="$CC"
842 CC="$CC -Olimit 1500"
843 AC_TRY_RUN([int main() { return 0; }],
844 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000845 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000846 ac_cv_olimit_ok=no)
847 CC="$ac_save_cc"])
848 AC_MSG_RESULT($ac_cv_olimit_ok)
849 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000851 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000852fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000853
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000854# On some compilers, pthreads are available without further options
855# (e.g. MacOS X). On some of these systems, the compiler will not
856# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
857# So we have to see first whether pthreads are available without
858# options before we can check whether -Kpthread improves anything.
859AC_MSG_CHECKING(whether pthreads are available without options)
860AC_CACHE_VAL(ac_cv_pthread_is_default,
861[AC_TRY_RUN([
862#include <pthread.h>
863
864void* routine(void* p){return NULL;}
865
866int main(){
867 pthread_t p;
868 if(pthread_create(&p,NULL,routine,NULL)!=0)
869 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000870 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000871 return 0;
872}
873],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000874[
875 ac_cv_pthread_is_default=yes
876 ac_cv_kthread=no
877 ac_cv_pthread=no
878],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000879 ac_cv_pthread_is_default=no,
880 ac_cv_pthread_is_default=no)
881])
882AC_MSG_RESULT($ac_cv_pthread_is_default)
883
884
885if test $ac_cv_pthread_is_default = yes
886then
887 ac_cv_kpthread=no
888else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000889# -Kpthread, if available, provides the right #defines
890# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000891# Some compilers won't report that they do not support -Kpthread,
892# so we need to run a program to see whether it really made the
893# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000894AC_MSG_CHECKING(whether $CC accepts -Kpthread)
895AC_CACHE_VAL(ac_cv_kpthread,
896[ac_save_cc="$CC"
897CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000898AC_TRY_RUN([
899#include <pthread.h>
900
901void* routine(void* p){return NULL;}
902
903int main(){
904 pthread_t p;
905 if(pthread_create(&p,NULL,routine,NULL)!=0)
906 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000907 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000908 return 0;
909}
910],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000911 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000912 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000913 ac_cv_kpthread=no)
914CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000915AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000916fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000917
Skip Montanarod8d39a02003-07-10 20:44:10 +0000918if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000919then
920# -Kthread, if available, provides the right #defines
921# and linker options to make pthread_create available
922# Some compilers won't report that they do not support -Kthread,
923# so we need to run a program to see whether it really made the
924# function available.
925AC_MSG_CHECKING(whether $CC accepts -Kthread)
926AC_CACHE_VAL(ac_cv_kthread,
927[ac_save_cc="$CC"
928CC="$CC -Kthread"
929AC_TRY_RUN([
930#include <pthread.h>
931
932void* routine(void* p){return NULL;}
933
934int main(){
935 pthread_t p;
936 if(pthread_create(&p,NULL,routine,NULL)!=0)
937 return 1;
938 (void)pthread_detach(p);
939 return 0;
940}
941],
942 ac_cv_kthread=yes,
943 ac_cv_kthread=no,
944 ac_cv_kthread=no)
945CC="$ac_save_cc"])
946AC_MSG_RESULT($ac_cv_kthread)
947fi
948
Skip Montanarod8d39a02003-07-10 20:44:10 +0000949if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000950then
951# -pthread, if available, provides the right #defines
952# and linker options to make pthread_create available
953# Some compilers won't report that they do not support -pthread,
954# so we need to run a program to see whether it really made the
955# function available.
956AC_MSG_CHECKING(whether $CC accepts -pthread)
957AC_CACHE_VAL(ac_cv_thread,
958[ac_save_cc="$CC"
959CC="$CC -pthread"
960AC_TRY_RUN([
961#include <pthread.h>
962
963void* routine(void* p){return NULL;}
964
965int main(){
966 pthread_t p;
967 if(pthread_create(&p,NULL,routine,NULL)!=0)
968 return 1;
969 (void)pthread_detach(p);
970 return 0;
971}
972],
973 ac_cv_pthread=yes,
974 ac_cv_pthread=no,
975 ac_cv_pthread=no)
976CC="$ac_save_cc"])
977AC_MSG_RESULT($ac_cv_pthread)
978fi
979
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000980# If we have set a CC compiler flag for thread support then
981# check if it works for CXX, too.
982ac_cv_cxx_thread=no
983if test ! -z "$CXX"
984then
985AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
986ac_save_cxx="$CXX"
987
988if test "$ac_cv_kpthread" = "yes"
989then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000990 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000991 ac_cv_cxx_thread=yes
992elif test "$ac_cv_kthread" = "yes"
993then
994 CXX="$CXX -Kthread"
995 ac_cv_cxx_thread=yes
996elif test "$ac_cv_pthread" = "yes"
997then
998 CXX="$CXX -pthread"
999 ac_cv_cxx_thread=yes
1000fi
1001
1002if test $ac_cv_cxx_thread = yes
1003then
1004 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1005 $CXX -c conftest.$ac_ext 2>&5
1006 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1007 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1008 then
1009 ac_cv_cxx_thread=yes
1010 else
1011 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001012 fi
1013 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001014fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001015AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001016fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001017CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001018
Fred Drakece81d592000-07-09 14:39:29 +00001019dnl # check for ANSI or K&R ("traditional") preprocessor
1020dnl AC_MSG_CHECKING(for C preprocessor type)
1021dnl AC_TRY_COMPILE([
1022dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1023dnl int foo;
1024dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1025dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1026dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001027
Guido van Rossum627b2d71993-12-24 10:39:16 +00001028# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001029AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001030AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1031shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001032stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001033unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001034sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1035sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +00001036sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001037sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001038sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1039bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001040AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001041AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001042
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001043# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001044AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001045#ifdef HAVE_CURSES_H
1046#include <curses.h>
1047#endif
1048])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001049
Martin v. Löwis11017b12006-01-14 18:12:57 +00001050# On Linux, netlink.h requires asm/types.h
1051AC_CHECK_HEADERS(linux/netlink.h,,,[
1052#ifdef HAVE_ASM_TYPES_H
1053#include <asm/types.h>
1054#endif
1055#ifdef HAVE_SYS_SOCKET_H
1056#include <sys/socket.h>
1057#endif
1058])
1059
Guido van Rossum627b2d71993-12-24 10:39:16 +00001060# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001061was_it_defined=no
1062AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001063AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1064 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1065])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001066AC_MSG_RESULT($was_it_defined)
1067
Neal Norwitz11690112002-07-30 01:08:28 +00001068# Check whether using makedev requires defining _OSF_SOURCE
1069AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001070AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001071 [ makedev(0, 0) ],
1072 ac_cv_has_makedev=yes,
1073 ac_cv_has_makedev=no)
1074if test "$ac_cv_has_makedev" = "no"; then
1075 # we didn't link, try if _OSF_SOURCE will allow us to link
1076 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001077#define _OSF_SOURCE 1
1078#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001079 ],
1080 [ makedev(0, 0) ],
1081 ac_cv_has_makedev=yes,
1082 ac_cv_has_makedev=no)
1083 if test "$ac_cv_has_makedev" = "yes"; then
1084 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1085 fi
1086fi
1087AC_MSG_RESULT($ac_cv_has_makedev)
1088if test "$ac_cv_has_makedev" = "yes"; then
1089 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1090fi
1091
Martin v. Löwis399a6892002-10-04 10:22:02 +00001092# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1093# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1094# defined, but the compiler does not support pragma redefine_extname,
1095# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1096# structures (such as rlimit64) without declaring them. As a
1097# work-around, disable LFS on such configurations
1098
1099use_lfs=yes
1100AC_MSG_CHECKING(Solaris LFS bug)
1101AC_TRY_COMPILE([
1102#define _LARGEFILE_SOURCE 1
1103#define _FILE_OFFSET_BITS 64
1104#include <sys/resource.h>
1105],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1106AC_MSG_RESULT($sol_lfs_bug)
1107if test "$sol_lfs_bug" = "yes"; then
1108 use_lfs=no
1109fi
1110
1111if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001112# Two defines needed to enable largefile support on various platforms
1113# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001114AC_DEFINE(_LARGEFILE_SOURCE, 1,
1115[This must be defined on some systems to enable large file support.])
1116AC_DEFINE(_FILE_OFFSET_BITS, 64,
1117[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001118fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001119
Guido van Rossum300fda71996-08-19 21:58:16 +00001120# Add some code to confdefs.h so that the test for off_t works on SCO
1121cat >> confdefs.h <<\EOF
1122#if defined(SCO_DS)
1123#undef _OFF_T
1124#endif
1125EOF
1126
Guido van Rossumef2255b2000-03-10 22:30:29 +00001127# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001128AC_TYPE_MODE_T
1129AC_TYPE_OFF_T
1130AC_TYPE_PID_T
1131AC_TYPE_SIGNAL
1132AC_TYPE_SIZE_T
1133AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001134AC_CHECK_TYPE(ssize_t,
1135 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001136
Guido van Rossumef2255b2000-03-10 22:30:29 +00001137# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001138# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001139AC_CHECK_SIZEOF(int, 4)
1140AC_CHECK_SIZEOF(long, 4)
1141AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001142AC_CHECK_SIZEOF(short, 2)
1143AC_CHECK_SIZEOF(float, 4)
1144AC_CHECK_SIZEOF(double, 8)
1145AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001146AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001147
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001148AC_MSG_CHECKING(for long long support)
1149have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001150AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1151 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1152 have_long_long=yes
1153])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001154AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001155if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001156AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001157fi
1158
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001159AC_MSG_CHECKING(for uintptr_t support)
1160have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001161AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1162 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1163 have_uintptr_t=yes
1164])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001165AC_MSG_RESULT($have_uintptr_t)
1166if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001167AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001168fi
1169
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001170# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1171AC_MSG_CHECKING(size of off_t)
1172AC_CACHE_VAL(ac_cv_sizeof_off_t,
1173[AC_TRY_RUN([#include <stdio.h>
1174#include <sys/types.h>
1175main()
1176{
1177 FILE *f=fopen("conftestval", "w");
1178 if (!f) exit(1);
1179 fprintf(f, "%d\n", sizeof(off_t));
1180 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001181}],
1182ac_cv_sizeof_off_t=`cat conftestval`,
1183ac_cv_sizeof_off_t=0,
1184ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001185])
1186AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001187AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1188[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001189
1190AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001191if test "$have_long_long" = yes -a \
1192 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1193 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001194 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1195 [Defined to enable large file support when an off_t is bigger than a long
1196 and long long is available and at least as big as an off_t. You may need
1197 to add some flags for configuration and compilation to enable this mode.
1198 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001199 AC_MSG_RESULT(yes)
1200else
1201 AC_MSG_RESULT(no)
1202fi
1203
Fred Drakea3f6e912000-06-29 20:44:47 +00001204# AC_CHECK_SIZEOF() doesn't include <time.h>.
1205AC_MSG_CHECKING(size of time_t)
1206AC_CACHE_VAL(ac_cv_sizeof_time_t,
1207[AC_TRY_RUN([#include <stdio.h>
1208#include <time.h>
1209main()
1210{
1211 FILE *f=fopen("conftestval", "w");
1212 if (!f) exit(1);
1213 fprintf(f, "%d\n", sizeof(time_t));
1214 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001215}],
1216ac_cv_sizeof_time_t=`cat conftestval`,
1217ac_cv_sizeof_time_t=0,
1218ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001219])
1220AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001221AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1222[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001223
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001224
Trent Mick635f6fb2000-08-23 21:33:05 +00001225# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001226ac_save_cc="$CC"
1227if test "$ac_cv_kpthread" = "yes"
1228then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001229elif test "$ac_cv_kthread" = "yes"
1230then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001231elif test "$ac_cv_pthread" = "yes"
1232then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001233fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001234AC_MSG_CHECKING(for pthread_t)
1235have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001236AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001237AC_MSG_RESULT($have_pthread_t)
1238if test "$have_pthread_t" = yes ; then
1239 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1240 AC_MSG_CHECKING(size of pthread_t)
1241 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1242 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001243#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001244 main()
1245 {
1246 FILE *f=fopen("conftestval", "w");
1247 if (!f) exit(1);
1248 fprintf(f, "%d\n", sizeof(pthread_t));
1249 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001250 }],
1251 ac_cv_sizeof_pthread_t=`cat conftestval`,
1252 ac_cv_sizeof_pthread_t=0,
1253 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001254 ])
1255 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001256 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1257 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001258fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001259CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001260
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001261AC_MSG_CHECKING(for --enable-toolbox-glue)
1262AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001263 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001264
1265if test -z "$enable_toolbox_glue"
1266then
1267 case $ac_sys_system/$ac_sys_release in
1268 Darwin/*)
1269 enable_toolbox_glue="yes";;
1270 *)
1271 enable_toolbox_glue="no";;
1272 esac
1273fi
1274case "$enable_toolbox_glue" in
1275yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001276 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001277 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001278 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1279 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001280 ;;
1281*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001282 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001283 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001284 ;;
1285esac
1286AC_MSG_RESULT($enable_toolbox_glue)
1287
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001288AC_SUBST(OTHER_LIBTOOL_OPT)
1289case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001290 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001291 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1292 ;;
1293 Darwin/*)
1294 OTHER_LIBTOOL_OPT=""
1295 ;;
1296esac
1297
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001298AC_SUBST(LIBTOOL_CRUFT)
1299case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001300 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001301 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1302 if test "${enable_universalsdk}"; then
1303 :
1304 else
1305 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1306 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001307 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001308 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001309 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001310 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1311 if test ${gcc_version} '<' 4.0
1312 then
1313 LIBTOOL_CRUFT="-lcc_dynamic"
1314 else
1315 LIBTOOL_CRUFT=""
1316 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001317 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001318 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001319 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001320esac
1321
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001322AC_MSG_CHECKING(for --enable-framework)
1323if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001324then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001325 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001326 # -F. is needed to allow linking to the framework while
1327 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001328 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1329 [Define if you want to produce an OpenStep/Rhapsody framework
1330 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001331 AC_MSG_RESULT(yes)
1332else
1333 AC_MSG_RESULT(no)
1334fi
1335
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001336AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001337case $ac_sys_system/$ac_sys_release in
1338 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001339 AC_DEFINE(WITH_DYLD, 1,
1340 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1341 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1342 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001343 AC_MSG_RESULT(always on for Darwin)
1344 ;;
1345 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001346 AC_MSG_RESULT(no)
1347 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001348esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001349
Guido van Rossumac405f61994-09-12 10:56:06 +00001350# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001351AC_SUBST(SO)
1352AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001353AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001354AC_SUBST(CCSHARED)
1355AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001356# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001357# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001358AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001359if test -z "$SO"
1360then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001361 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001362 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001363 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001364 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001365 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001366else
1367 # this might also be a termcap variable, see #610332
1368 echo
1369 echo '====================================================================='
1370 echo '+ +'
1371 echo '+ WARNING: You have set SO in your environment. +'
1372 echo '+ Do you really mean to change the extension for shared libraries? +'
1373 echo '+ Continuing in 10 seconds to let you to ponder. +'
1374 echo '+ +'
1375 echo '====================================================================='
1376 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001377fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001378AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001379# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001380# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001381# (Shared libraries in this instance are shared modules to be loaded into
1382# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001383AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001384if test -z "$LDSHARED"
1385then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001386 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001387 AIX*)
1388 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001389 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001390 ;;
1391 BeOS*)
1392 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001393 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001394 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001395 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001396 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001397 SunOS/5*)
1398 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001399 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001400 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001401 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001402 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001403 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001404 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001405 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1406 if test "$enable_framework" ; then
1407 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001408 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1409 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001410 else
1411 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001412 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001413 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001414 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001415 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1416 if test "$enable_framework" ; then
1417 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001418 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1419 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001420 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001421 # No framework, use the Python app as bundle-loader
1422 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001423 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001424 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001425 Darwin/*)
1426 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1427 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001428 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001429 if test ${cur_target} '>' 10.2; then
1430 cur_target=10.3
1431 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001432 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren988117f2006-04-29 11:31:35 +00001433 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001434 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001435 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001436 if test "${enable_universalsdk}"; then
1437 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1438 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001439 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1440 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001441 else
1442 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1443 if test "$enable_framework" ; then
1444 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001445 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1446 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001447 else
1448 # No framework, use the Python app as bundle-loader
1449 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1450 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1451 fi
1452 fi
1453 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001454 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001455 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001456 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001457 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001458 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001459 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001460 else
1461 LDSHARED="ld -Bshareable ${LDFLAGS}"
1462 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001463 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001464 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001465 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001466 then LDSHARED='$(CC) -shared'
1467 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001468 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001469 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001470 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001471 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001472 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001473 *) LDSHARED="ld";;
1474 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001475fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001476AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001477BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001478# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001479# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001480AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001481if test -z "$CCSHARED"
1482then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001483 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001484 SunOS*) if test "$GCC" = yes;
1485 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001486 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001487 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001488 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001489 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001490 else CCSHARED="+z";
1491 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001492 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001493 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001494 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001495 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001496 if test "$GCC" = "yes"
1497 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001498 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001499 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001500 SCO_SV*)
1501 if test "$GCC" = "yes"
1502 then CCSHARED="-fPIC"
1503 else CCSHARED="-Kpic -belf"
1504 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001505 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001506 IRIX*/6*) case $CC in
1507 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001508 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001509 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001510 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001511 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001512fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001513AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001514# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001515# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001516AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001517if test -z "$LINKFORSHARED"
1518then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001519 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001520 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001521 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001522 LINKFORSHARED="-Wl,-E -Wl,+s";;
1523# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001524 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001525 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001526 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001527 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001528 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1529 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001530 # not used by the core itself but which needs to be in the core so
1531 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001532 # -prebind is no longer used, because it actually seems to give a
1533 # slowdown in stead of a speedup, maybe due to the large number of
1534 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001535
1536 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001537 if test "$enable_framework"
1538 then
Jack Jansenda49e192005-01-07 13:08:22 +00001539 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001540 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001541 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001542 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001543 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001544 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001545 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001546 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1547 then
1548 LINKFORSHARED="-Wl,--export-dynamic"
1549 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001550 SunOS/5*) case $CC in
1551 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001552 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001553 then
1554 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001555 fi;;
1556 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001557 CYGWIN*)
1558 if test $enable_shared = "no"
1559 then
1560 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1561 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001562 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001563fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001564AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001565
Neil Schemenauer61c51152001-01-26 16:18:16 +00001566AC_SUBST(CFLAGSFORSHARED)
1567AC_MSG_CHECKING(CFLAGSFORSHARED)
1568if test ! "$LIBRARY" = "$LDLIBRARY"
1569then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001570 case $ac_sys_system in
1571 CYGWIN*)
1572 # Cygwin needs CCSHARED when building extension DLLs
1573 # but not when building the interpreter DLL.
1574 CFLAGSFORSHARED='';;
1575 *)
1576 CFLAGSFORSHARED='$(CCSHARED)'
1577 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001578fi
1579AC_MSG_RESULT($CFLAGSFORSHARED)
1580
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001581# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1582# library (with --enable-shared).
1583# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001584# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1585# if it is not required, since it creates a dependency of the shared library
1586# to LIBS. This, in turn, means that applications linking the shared libpython
1587# don't need to link LIBS explicitly. The default should be only changed
1588# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001589AC_SUBST(SHLIBS)
1590AC_MSG_CHECKING(SHLIBS)
1591case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001592 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001593 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001594esac
1595AC_MSG_RESULT($SHLIBS)
1596
1597
Guido van Rossum627b2d71993-12-24 10:39:16 +00001598# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001599AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1600AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001601
1602# only check for sem_ini if thread support is requested
1603if test "$with_threads" = "yes" -o -z "$with_threads"; then
1604 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1605 # posix4 on Solaris 2.6
1606 # pthread (first!) on Linux
1607fi
1608
Martin v. Löwis19d17342003-06-14 21:03:05 +00001609# check if we need libintl for locale functions
1610AC_CHECK_LIB(intl, textdomain,
1611 AC_DEFINE(WITH_LIBINTL, 1,
1612 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001613
1614# checks for system dependent C++ extensions support
1615case "$ac_sys_system" in
1616 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1617 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1618 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001619 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1620 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1621 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001622 AC_MSG_RESULT(yes)],
1623 [AC_MSG_RESULT(no)]);;
1624 *) ;;
1625esac
1626
Guido van Rossum70c7f481998-03-26 18:44:10 +00001627# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001628# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001629AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001630AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001631
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001632case "$ac_sys_system" in
1633BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001634AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1635;;
1636esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001637
Guido van Rossumc5a39031996-07-31 17:35:03 +00001638AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001639AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001640 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1641[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001642AC_MSG_RESULT($withval)
1643LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001644],
1645[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001646
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001647# Check for use of the system libffi library
1648AC_MSG_CHECKING(for --with-system-ffi)
1649AC_ARG_WITH(system_ffi,
1650 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1651
1652if test -z "$with_system_ffi"
1653then with_system_ffi="no"
1654fi
1655AC_MSG_RESULT($with_system_ffi)
1656
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001657# Determine if signalmodule should be used.
1658AC_SUBST(USE_SIGNAL_MODULE)
1659AC_SUBST(SIGNAL_OBJS)
1660AC_MSG_CHECKING(for --with-signal-module)
1661AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001662 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001663
1664if test -z "$with_signal_module"
1665then with_signal_module="yes"
1666fi
1667AC_MSG_RESULT($with_signal_module)
1668
1669if test "${with_signal_module}" = "yes"; then
1670 USE_SIGNAL_MODULE=""
1671 SIGNAL_OBJS=""
1672else
1673 USE_SIGNAL_MODULE="#"
1674 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1675fi
1676
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001677# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001678AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001679USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001680
Guido van Rossum54d93d41997-01-22 20:51:58 +00001681AC_MSG_CHECKING(for --with-dec-threads)
1682AC_SUBST(LDLAST)
1683AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001684 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1685[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001686AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001687LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001688if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001689 with_thread="$withval";
1690fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001691[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001692
Martin v. Löwis11437992002-04-12 09:54:03 +00001693# Templates for things AC_DEFINEd more than once.
1694# For a single AC_DEFINE, no template is needed.
1695AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1696AH_TEMPLATE(_REENTRANT,
1697 [Define to force use of thread-safe errno, h_errno, and other functions])
1698AH_TEMPLATE(WITH_THREAD,
1699 [Define if you want to compile in rudimentary thread support])
1700
Guido van Rossum54d93d41997-01-22 20:51:58 +00001701AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001702dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001703AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001704 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001705
Barry Warsawc0d24d82000-06-29 16:12:00 +00001706# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001707dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001708AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001709 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1710 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001711
1712if test -z "$with_threads"
1713then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001714fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001715AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001716
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001717AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001718if test "$with_threads" = "no"
1719then
1720 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001721elif test "$ac_cv_pthread_is_default" = yes
1722then
1723 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001724 # Defining _REENTRANT on system with POSIX threads should not hurt.
1725 AC_DEFINE(_REENTRANT)
1726 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001727 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001728elif test "$ac_cv_kpthread" = "yes"
1729then
1730 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001731 if test "$ac_cv_cxx_thread" = "yes"; then
1732 CXX="$CXX -Kpthread"
1733 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001734 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001735 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001736 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001737elif test "$ac_cv_kthread" = "yes"
1738then
1739 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001740 if test "$ac_cv_cxx_thread" = "yes"; then
1741 CXX="$CXX -Kthread"
1742 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001743 AC_DEFINE(WITH_THREAD)
1744 posix_threads=yes
1745 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001746elif test "$ac_cv_pthread" = "yes"
1747then
1748 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001749 if test "$ac_cv_cxx_thread" = "yes"; then
1750 CXX="$CXX -pthread"
1751 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001752 AC_DEFINE(WITH_THREAD)
1753 posix_threads=yes
1754 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001755else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001756 if test ! -z "$with_threads" -a -d "$with_threads"
1757 then LDFLAGS="$LDFLAGS -L$with_threads"
1758 fi
1759 if test ! -z "$withval" -a -d "$withval"
1760 then LDFLAGS="$LDFLAGS -L$withval"
1761 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001762
1763 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001764 # define _POSIX_THREADS in unistd.h. Some apparently don't
1765 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001766 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1767 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001768 [
1769#include <unistd.h>
1770#ifdef _POSIX_THREADS
1771yes
1772#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001773 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1774 AC_MSG_RESULT($unistd_defines_pthreads)
1775
Martin v. Löwis130fb172001-07-19 11:00:41 +00001776 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001777 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1778 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001779 AC_DEFINE(HURD_C_THREADS, 1,
1780 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001781 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001782 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001783 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1784 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001785 AC_DEFINE(MACH_C_THREADS, 1,
1786 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001787 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001788 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001789 AC_ARG_WITH([pth],
1790 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1791 [AC_MSG_RESULT($withval)
1792 AC_DEFINE([WITH_THREAD])
1793 AC_DEFINE([HAVE_PTH], 1,
1794 [Define if you have GNU PTH threads.])
1795 LIBS="-lpth $LIBS"
1796 THREADOBJ="Python/thread.o"],
1797 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001798
1799 # Just looking for pthread_create in libpthread is not enough:
1800 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1801 # So we really have to include pthread.h, and then link.
1802 _libs=$LIBS
1803 LIBS="$LIBS -lpthread"
1804 AC_MSG_CHECKING([for pthread_create in -lpthread])
1805 AC_TRY_LINK([#include <pthread.h>
1806
1807void * start_routine (void *arg) { exit (0); }], [
1808pthread_create (NULL, NULL, start_routine, NULL)], [
1809 AC_MSG_RESULT(yes)
1810 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001811 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001812 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001813 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001814 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001815 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001816 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001817 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1818 AC_DEFINE(ATHEOS_THREADS, 1,
1819 [Define this if you have AtheOS threads.])
1820 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001821 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001822 AC_DEFINE(BEOS_THREADS, 1,
1823 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001824 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001825 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001826 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001827 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001828 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001829 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001830 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001831 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001832 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001833 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001834 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001836 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001837 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001838 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001839 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001840 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001841 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001842 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001843
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001844 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1845 LIBS="$LIBS -lmpc"
1846 THREADOBJ="Python/thread.o"
1847 USE_THREAD_MODULE=""])
1848
1849 if test "$posix_threads" != "yes"; then
1850 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1851 LIBS="$LIBS -lthread"
1852 THREADOBJ="Python/thread.o"
1853 USE_THREAD_MODULE=""])
1854 fi
1855
1856 if test "$USE_THREAD_MODULE" != "#"
1857 then
1858 # If the above checks didn't disable threads, (at least) OSF1
1859 # needs this '-threads' argument during linking.
1860 case $ac_sys_system in
1861 OSF1) LDLAST=-threads;;
1862 esac
1863 fi
1864fi
1865
1866if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001867 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001868 AC_DEFINE(_POSIX_THREADS, 1,
1869 [Define if you have POSIX threads,
1870 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001871 fi
1872
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001873 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1874 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001875 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1876 Defined for Solaris 2.6 bug in pthread header.)
1877 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001878 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001879 Define if the Posix semaphores do not work on your system)
1880 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001881 esac
1882
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001883 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1884 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1885 [AC_TRY_RUN([#include <pthread.h>
1886 void *foo(void *parm) {
1887 return NULL;
1888 }
1889 main() {
1890 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001891 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001892 if (pthread_attr_init(&attr)) exit(-1);
1893 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001894 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001895 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001896 }],
1897 ac_cv_pthread_system_supported=yes,
1898 ac_cv_pthread_system_supported=no,
1899 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001900 ])
1901 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1902 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001903 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001904 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001905 AC_CHECK_FUNCS(pthread_sigmask,
1906 [case $ac_sys_system in
1907 CYGWIN*)
1908 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1909 [Define if pthread_sigmask() does not work on your system.])
1910 ;;
1911 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001912fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001913
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001914
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001915# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001916AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001917AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001918AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001919[ --enable-ipv6 Enable ipv6 (with ipv4) support
1920 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001921[ case "$enableval" in
1922 no)
1923 AC_MSG_RESULT(no)
1924 ipv6=no
1925 ;;
1926 *) AC_MSG_RESULT(yes)
1927 AC_DEFINE(ENABLE_IPV6)
1928 ipv6=yes
1929 ;;
1930 esac ],
1931
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001932[
1933dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001934 AC_TRY_RUN([ /* AF_INET6 available check */
1935#include <sys/types.h>
1936#include <sys/socket.h>
1937main()
1938{
1939 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1940 exit(1);
1941 else
1942 exit(0);
1943}
1944],
1945 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001946 ipv6=yes,
1947 AC_MSG_RESULT(no)
1948 ipv6=no,
1949 AC_MSG_RESULT(no)
1950 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001951)
1952
1953if test "$ipv6" = "yes"; then
1954 AC_MSG_CHECKING(if RFC2553 API is available)
1955 AC_TRY_COMPILE([#include <sys/types.h>
1956#include <netinet/in.h>],
1957 [struct sockaddr_in6 x;
1958x.sin6_scope_id;],
1959 AC_MSG_RESULT(yes)
1960 ipv6=yes,
1961 AC_MSG_RESULT(no, IPv6 disabled)
1962 ipv6=no)
1963fi
1964
1965if test "$ipv6" = "yes"; then
1966 AC_DEFINE(ENABLE_IPV6)
1967fi
1968])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001969
1970ipv6type=unknown
1971ipv6lib=none
1972ipv6trylibc=no
1973
1974if test "$ipv6" = "yes"; then
1975 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001976 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1977 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001978 case $i in
1979 inria)
1980 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001981 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001982#include <netinet/in.h>
1983#ifdef IPV6_INRIA_VERSION
1984yes
1985#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001986 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001987 ;;
1988 kame)
1989 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001990 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001991#include <netinet/in.h>
1992#ifdef __KAME__
1993yes
1994#endif],
1995 [ipv6type=$i;
1996 ipv6lib=inet6
1997 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001998 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001999 ;;
2000 linux-glibc)
2001 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002002 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002003#include <features.h>
2004#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2005yes
2006#endif],
2007 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002008 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002009 ;;
2010 linux-inet6)
2011 dnl http://www.v6.linux.or.jp/
2012 if test -d /usr/inet6; then
2013 ipv6type=$i
2014 ipv6lib=inet6
2015 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002016 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002017 fi
2018 ;;
2019 solaris)
2020 if test -f /etc/netconfig; then
2021 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2022 ipv6type=$i
2023 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002024 fi
2025 fi
2026 ;;
2027 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002028 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002029#include <sys/param.h>
2030#ifdef _TOSHIBA_INET6
2031yes
2032#endif],
2033 [ipv6type=$i;
2034 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002035 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002036 ;;
2037 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002038 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002039#include </usr/local/v6/include/sys/v6config.h>
2040#ifdef __V6D__
2041yes
2042#endif],
2043 [ipv6type=$i;
2044 ipv6lib=v6;
2045 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002046 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002047 ;;
2048 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002049 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002050#include <sys/param.h>
2051#ifdef _ZETA_MINAMI_INET6
2052yes
2053#endif],
2054 [ipv6type=$i;
2055 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002056 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002057 ;;
2058 esac
2059 if test "$ipv6type" != "unknown"; then
2060 break
2061 fi
2062 done
2063 AC_MSG_RESULT($ipv6type)
2064fi
2065
2066if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2067 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2068 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2069 echo "using lib$ipv6lib"
2070 else
2071 if test $ipv6trylibc = "yes"; then
2072 echo "using libc"
2073 else
2074 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2075 echo "You need to fetch lib$ipv6lib.a from appropriate"
2076 echo 'ipv6 kit and compile beforehand.'
2077 exit 1
2078 fi
2079 fi
2080fi
2081
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002082# Check for --with-doc-strings
2083AC_MSG_CHECKING(for --with-doc-strings)
2084AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002085 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002086
2087if test -z "$with_doc_strings"
2088then with_doc_strings="yes"
2089fi
2090if test "$with_doc_strings" != "no"
2091then
2092 AC_DEFINE(WITH_DOC_STRINGS, 1,
2093 [Define if you want documentation strings in extension modules])
2094fi
2095AC_MSG_RESULT($with_doc_strings)
2096
Neil Schemenauera35c6882001-02-27 04:45:05 +00002097# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002098AC_MSG_CHECKING(for --with-tsc)
2099AC_ARG_WITH(tsc,
2100[ --with(out)-tsc enable/disable timestamp counter profile], [
2101if test "$withval" != no
2102then
2103 AC_DEFINE(WITH_TSC, 1,
2104 [Define to profile with the Pentium timestamp counter])
2105 AC_MSG_RESULT(yes)
2106else AC_MSG_RESULT(no)
2107fi],
2108[AC_MSG_RESULT(no)])
2109
2110# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002111AC_MSG_CHECKING(for --with-pymalloc)
2112AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002113 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002114
2115if test -z "$with_pymalloc"
2116then with_pymalloc="yes"
2117fi
2118if test "$with_pymalloc" != "no"
2119then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002120 AC_DEFINE(WITH_PYMALLOC, 1,
2121 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002122fi
2123AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002124
Barry Warsawef82cd72000-06-30 16:21:01 +00002125# Check for --with-wctype-functions
2126AC_MSG_CHECKING(for --with-wctype-functions)
2127AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002128 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2129[
Barry Warsawef82cd72000-06-30 16:21:01 +00002130if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002131then
2132 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2133 [Define if you want wctype.h functions to be used instead of the
2134 one supplied by Python itself. (see Include/unicodectype.h).])
2135 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002136else AC_MSG_RESULT(no)
2137fi],
2138[AC_MSG_RESULT(no)])
2139
Guido van Rossum68242b51996-05-28 22:53:03 +00002140# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002141AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002142DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002143
Guido van Rossume97ee181999-12-20 21:27:22 +00002144# the dlopen() function means we might want to use dynload_shlib.o. some
2145# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002146AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002147
2148# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2149# loading of modules.
2150AC_SUBST(DYNLOADFILE)
2151AC_MSG_CHECKING(DYNLOADFILE)
2152if test -z "$DYNLOADFILE"
2153then
2154 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002155 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2156 if test "$ac_cv_func_dlopen" = yes
2157 then DYNLOADFILE="dynload_shlib.o"
2158 else DYNLOADFILE="dynload_aix.o"
2159 fi
2160 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002161 BeOS*) DYNLOADFILE="dynload_beos.o";;
2162 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002163 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2164 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002165 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002166 *)
2167 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2168 # out any dynamic loading
2169 if test "$ac_cv_func_dlopen" = yes
2170 then DYNLOADFILE="dynload_shlib.o"
2171 else DYNLOADFILE="dynload_stub.o"
2172 fi
2173 ;;
2174 esac
2175fi
2176AC_MSG_RESULT($DYNLOADFILE)
2177if test "$DYNLOADFILE" != "dynload_stub.o"
2178then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002179 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2180 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002181fi
2182
Jack Jansenc49e5b72001-06-19 15:00:23 +00002183# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2184
2185AC_SUBST(MACHDEP_OBJS)
2186AC_MSG_CHECKING(MACHDEP_OBJS)
2187if test -z "$MACHDEP_OBJS"
2188then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002189 MACHDEP_OBJS=$extra_machdep_objs
2190else
2191 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002192fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002193AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002194
Guido van Rossum627b2d71993-12-24 10:39:16 +00002195# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002196AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2197 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002198 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002199 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002200 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002201 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002202 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002203 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002204 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002205 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002206 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002207 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002208
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002209# For some functions, having a definition is not sufficient, since
2210# we want to take their address.
2211AC_MSG_CHECKING(for chroot)
2212AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2213 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2214 AC_MSG_RESULT(yes),
2215 AC_MSG_RESULT(no)
2216)
2217AC_MSG_CHECKING(for link)
2218AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2219 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2220 AC_MSG_RESULT(yes),
2221 AC_MSG_RESULT(no)
2222)
2223AC_MSG_CHECKING(for symlink)
2224AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2225 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2226 AC_MSG_RESULT(yes),
2227 AC_MSG_RESULT(no)
2228)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002229AC_MSG_CHECKING(for fchdir)
2230AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2231 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2232 AC_MSG_RESULT(yes),
2233 AC_MSG_RESULT(no)
2234)
2235AC_MSG_CHECKING(for fsync)
2236AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002237 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002238 AC_MSG_RESULT(yes),
2239 AC_MSG_RESULT(no)
2240)
2241AC_MSG_CHECKING(for fdatasync)
2242AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2243 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2244 AC_MSG_RESULT(yes),
2245 AC_MSG_RESULT(no)
2246)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002247
Martin v. Löwisd5843682002-11-21 20:41:28 +00002248# On some systems (eg. FreeBSD 5), we would find a definition of the
2249# functions ctermid_r, setgroups in the library, but no prototype
2250# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2251# address to avoid compiler warnings and potential miscompilations
2252# because of the missing prototypes.
2253
2254AC_MSG_CHECKING(for ctermid_r)
2255AC_TRY_COMPILE([
2256#include "confdefs.h"
2257#include <stdio.h>
2258], void* p = ctermid_r,
2259 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2260 AC_MSG_RESULT(yes),
2261 AC_MSG_RESULT(no)
2262)
2263
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002264AC_MSG_CHECKING(for flock)
2265AC_TRY_COMPILE([
2266#include "confdefs.h"
2267#include <sys/file.h>
2268], void* p = flock,
2269 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2270 AC_MSG_RESULT(yes),
2271 AC_MSG_RESULT(no)
2272)
2273
2274AC_MSG_CHECKING(for getpagesize)
2275AC_TRY_COMPILE([
2276#include "confdefs.h"
2277#include <unistd.h>
2278], void* p = getpagesize,
2279 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2280 AC_MSG_RESULT(yes),
2281 AC_MSG_RESULT(no)
2282)
2283
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002284dnl check for true
2285AC_CHECK_PROGS(TRUE, true, /bin/true)
2286
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002287dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2288dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002289AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002290 AC_CHECK_LIB(resolv, inet_aton)
2291)
2292
Martin v. Löwise9416172003-05-03 10:12:45 +00002293AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002294AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002295#include "confdefs.h"
2296#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002297], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002298 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2299 AC_MSG_RESULT(yes),
2300 AC_MSG_RESULT(no)
2301)
2302
2303AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002304AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002305#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002306#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002307#include <sys/socket.h>
2308#include <netinet/in.h>
2309#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002310], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002311 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2312 AC_MSG_RESULT(yes),
2313 AC_MSG_RESULT(no)
2314)
2315
2316AC_MSG_CHECKING(for inet_pton)
2317AC_TRY_COMPILE([
2318#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00: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>
2323], void* p = inet_pton,
2324 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2325 AC_MSG_RESULT(yes),
2326 AC_MSG_RESULT(no)
2327)
2328
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002329# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002330AC_MSG_CHECKING(for setgroups)
2331AC_TRY_COMPILE([
2332#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002333#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002334#ifdef HAVE_GRP_H
2335#include <grp.h>
2336#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002337],
2338void* p = setgroups,
2339 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2340 AC_MSG_RESULT(yes),
2341 AC_MSG_RESULT(no)
2342)
2343
Fred Drake8cef4cf2000-06-28 16:40:38 +00002344# check for openpty and forkpty
2345
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002346AC_CHECK_FUNCS(openpty,,
2347 AC_CHECK_LIB(util,openpty,
2348 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2349 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2350 )
2351)
2352AC_CHECK_FUNCS(forkpty,,
2353 AC_CHECK_LIB(util,forkpty,
2354 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2355 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2356 )
2357)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002358
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002359# check for long file support functions
2360AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2361
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002362AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002363AC_CHECK_FUNCS(getpgrp,
2364 AC_TRY_COMPILE([#include <unistd.h>],
2365 [getpgrp(0);],
2366 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2367 [Define if getpgrp() must be called as getpgrp(0).])
2368 )
2369)
Jack Jansen150753c2003-03-29 22:07:47 +00002370AC_CHECK_FUNCS(setpgrp,
2371 AC_TRY_COMPILE([#include <unistd.h>],
2372 [setpgrp(0,0);],
2373 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2374 [Define if setpgrp() must be called as setpgrp(0, 0).])
2375 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002376)
2377AC_CHECK_FUNCS(gettimeofday,
2378 AC_TRY_COMPILE([#include <sys/time.h>],
2379 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2380 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2381 [Define if gettimeofday() does not have second (timezone) argument
2382 This is the case on Motorola V4 (R40V4.2)])
2383 )
2384)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002385
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002386AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002387AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002388#if defined(MAJOR_IN_MKDEV)
2389#include <sys/mkdev.h>
2390#elif defined(MAJOR_IN_SYSMACROS)
2391#include <sys/sysmacros.h>
2392#else
2393#include <sys/types.h>
2394#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002395],[
2396 makedev(major(0),minor(0));
2397],[
2398 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2399 [Define to 1 if you have the device macros.])
2400 AC_MSG_RESULT(yes)
2401],[
2402 AC_MSG_RESULT(no)
2403])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002404
2405# On OSF/1 V5.1, getaddrinfo is available, but a define
2406# for [no]getaddrinfo in netdb.h.
2407AC_MSG_CHECKING(for getaddrinfo)
2408AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002409#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002410#include <sys/socket.h>
2411#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002412#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002413],[
2414getaddrinfo(NULL, NULL, NULL, NULL);
2415], [
2416AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002417AC_MSG_CHECKING(getaddrinfo bug)
2418AC_TRY_RUN([
2419#include <sys/types.h>
2420#include <netdb.h>
2421#include <string.h>
2422#include <sys/socket.h>
2423#include <netinet/in.h>
2424
2425main()
2426{
2427 int passive, gaierr, inet4 = 0, inet6 = 0;
2428 struct addrinfo hints, *ai, *aitop;
2429 char straddr[INET6_ADDRSTRLEN], strport[16];
2430
2431 for (passive = 0; passive <= 1; passive++) {
2432 memset(&hints, 0, sizeof(hints));
2433 hints.ai_family = AF_UNSPEC;
2434 hints.ai_flags = passive ? AI_PASSIVE : 0;
2435 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002436 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002437 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2438 (void)gai_strerror(gaierr);
2439 goto bad;
2440 }
2441 for (ai = aitop; ai; ai = ai->ai_next) {
2442 if (ai->ai_addr == NULL ||
2443 ai->ai_addrlen == 0 ||
2444 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2445 straddr, sizeof(straddr), strport, sizeof(strport),
2446 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2447 goto bad;
2448 }
2449 switch (ai->ai_family) {
2450 case AF_INET:
2451 if (strcmp(strport, "54321") != 0) {
2452 goto bad;
2453 }
2454 if (passive) {
2455 if (strcmp(straddr, "0.0.0.0") != 0) {
2456 goto bad;
2457 }
2458 } else {
2459 if (strcmp(straddr, "127.0.0.1") != 0) {
2460 goto bad;
2461 }
2462 }
2463 inet4++;
2464 break;
2465 case AF_INET6:
2466 if (strcmp(strport, "54321") != 0) {
2467 goto bad;
2468 }
2469 if (passive) {
2470 if (strcmp(straddr, "::") != 0) {
2471 goto bad;
2472 }
2473 } else {
2474 if (strcmp(straddr, "::1") != 0) {
2475 goto bad;
2476 }
2477 }
2478 inet6++;
2479 break;
2480 case AF_UNSPEC:
2481 goto bad;
2482 break;
2483 default:
2484 /* another family support? */
2485 break;
2486 }
2487 }
2488 }
2489
2490 if (!(inet4 == 0 || inet4 == 2))
2491 goto bad;
2492 if (!(inet6 == 0 || inet6 == 2))
2493 goto bad;
2494
2495 if (aitop)
2496 freeaddrinfo(aitop);
2497 exit(0);
2498
2499 bad:
2500 if (aitop)
2501 freeaddrinfo(aitop);
2502 exit(1);
2503}
2504],
2505AC_MSG_RESULT(good)
2506buggygetaddrinfo=no,
2507AC_MSG_RESULT(buggy)
2508buggygetaddrinfo=yes,
2509AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002510buggygetaddrinfo=yes)], [
2511AC_MSG_RESULT(no)
2512buggygetaddrinfo=yes
2513])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002514
2515if test "$buggygetaddrinfo" = "yes"; then
2516 if test "$ipv6" = "yes"; then
2517 echo 'Fatal: You must get working getaddrinfo() function.'
2518 echo ' or you can specify "--disable-ipv6"'.
2519 exit 1
2520 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002521else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002522 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002523fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002524AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002525
Guido van Rossum627b2d71993-12-24 10:39:16 +00002526# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002527AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002528AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002529AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002530AC_CHECK_MEMBERS([struct stat.st_rdev])
2531AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002532AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002533AC_CHECK_MEMBERS([struct stat.st_gen])
2534AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002535AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002536
2537AC_MSG_CHECKING(for time.h that defines altzone)
2538AC_CACHE_VAL(ac_cv_header_time_altzone,
2539[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2540 ac_cv_header_time_altzone=yes,
2541 ac_cv_header_time_altzone=no)])
2542AC_MSG_RESULT($ac_cv_header_time_altzone)
2543if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002544 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002545fi
2546
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002547was_it_defined=no
2548AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002549AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002550#include <sys/types.h>
2551#include <sys/select.h>
2552#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002553], [;], [
2554 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2555 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2556 (which you can't on SCO ODT 3.0).])
2557 was_it_defined=yes
2558])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002559AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002560
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002561AC_MSG_CHECKING(for addrinfo)
2562AC_CACHE_VAL(ac_cv_struct_addrinfo,
2563AC_TRY_COMPILE([
2564# include <netdb.h>],
2565 [struct addrinfo a],
2566 ac_cv_struct_addrinfo=yes,
2567 ac_cv_struct_addrinfo=no))
2568AC_MSG_RESULT($ac_cv_struct_addrinfo)
2569if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002570 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002571fi
2572
2573AC_MSG_CHECKING(for sockaddr_storage)
2574AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2575AC_TRY_COMPILE([
2576# include <sys/types.h>
2577# include <sys/socket.h>],
2578 [struct sockaddr_storage s],
2579 ac_cv_struct_sockaddr_storage=yes,
2580 ac_cv_struct_sockaddr_storage=no))
2581AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2582if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002583 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002584fi
2585
Guido van Rossum627b2d71993-12-24 10:39:16 +00002586# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002587
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002588AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002589AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002590
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002591works=no
2592AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002593AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2594 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2595)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002596AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002597
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002598works=no
2599AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002600AC_TRY_COMPILE([], [signed char c;], works=yes,
2601 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2602)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002603AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002604
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002605have_prototypes=no
2606AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002607AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2608 AC_DEFINE(HAVE_PROTOTYPES, 1,
2609 [Define if your compiler supports function prototype])
2610 have_prototypes=yes
2611])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002612AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002613
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002614works=no
2615AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002616AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002617#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002618int foo(int x, ...) {
2619 va_list va;
2620 va_start(va, x);
2621 va_arg(va, int);
2622 va_arg(va, char *);
2623 va_arg(va, double);
2624 return 0;
2625}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002626], [return foo(10, "", 3.14);], [
2627 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2628 [Define if your compiler supports variable length function prototypes
2629 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2630 works=yes
2631])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002632AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002633
Dave Cole331708b2004-08-09 04:51:41 +00002634# check for socketpair
2635AC_MSG_CHECKING(for socketpair)
2636AC_TRY_COMPILE([
2637#include <sys/types.h>
2638#include <sys/socket.h>
2639], void *x=socketpair,
2640 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2641 AC_MSG_RESULT(yes),
2642 AC_MSG_RESULT(no)
2643)
2644
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002645# check if sockaddr has sa_len member
2646AC_MSG_CHECKING(if sockaddr has sa_len member)
2647AC_TRY_COMPILE([#include <sys/types.h>
2648#include <sys/socket.h>],
2649[struct sockaddr x;
2650x.sa_len = 0;],
2651 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002652 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002653 AC_MSG_RESULT(no))
2654
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002655va_list_is_array=no
2656AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002657AC_TRY_COMPILE([
2658#ifdef HAVE_STDARG_PROTOTYPES
2659#include <stdarg.h>
2660#else
2661#include <varargs.h>
2662#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002663], [va_list list1, list2; list1 = list2;], , [
2664 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2665 va_list_is_array=yes
2666])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002667AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002668
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002669# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002670AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2671 [Define this if you have some version of gethostbyname_r()])
2672
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002673AC_CHECK_FUNC(gethostbyname_r, [
2674 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2675 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2676 OLD_CFLAGS=$CFLAGS
2677 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2678 AC_TRY_COMPILE([
2679# include <netdb.h>
2680 ], [
2681 char *name;
2682 struct hostent *he, *res;
2683 char buffer[2048];
2684 int buflen = 2048;
2685 int h_errnop;
2686
2687 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2688 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002689 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002690 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2691 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002692 AC_MSG_RESULT(yes)
2693 ], [
2694 AC_MSG_RESULT(no)
2695 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2696 AC_TRY_COMPILE([
2697# include <netdb.h>
2698 ], [
2699 char *name;
2700 struct hostent *he;
2701 char buffer[2048];
2702 int buflen = 2048;
2703 int h_errnop;
2704
2705 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2706 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002707 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002708 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2709 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002710 AC_MSG_RESULT(yes)
2711 ], [
2712 AC_MSG_RESULT(no)
2713 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2714 AC_TRY_COMPILE([
2715# include <netdb.h>
2716 ], [
2717 char *name;
2718 struct hostent *he;
2719 struct hostent_data data;
2720
2721 (void) gethostbyname_r(name, he, &data);
2722 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002723 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002724 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2725 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002726 AC_MSG_RESULT(yes)
2727 ], [
2728 AC_MSG_RESULT(no)
2729 ])
2730 ])
2731 ])
2732 CFLAGS=$OLD_CFLAGS
2733], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002734 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002735])
2736AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2737AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2738AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002739AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002740AC_SUBST(HAVE_GETHOSTBYNAME)
2741
Guido van Rossum627b2d71993-12-24 10:39:16 +00002742# checks for system services
2743# (none yet)
2744
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002745# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002746AC_CHECK_FUNC(__fpu_control,
2747 [],
2748 [AC_CHECK_LIB(ieee, __fpu_control)
2749])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002750
Guido van Rossum93274221997-05-09 02:42:00 +00002751# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002752AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002753AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002754 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2755[
Guido van Rossum93274221997-05-09 02:42:00 +00002756if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002757then
2758 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2759 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2760 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002761else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002762fi],
2763[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002764
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002765# check for --with-libm=...
2766AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002767case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002768Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002769BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002770*) LIBM=-lm
2771esac
Guido van Rossum93274221997-05-09 02:42:00 +00002772AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002773AC_ARG_WITH(libm,
2774 AC_HELP_STRING(--with-libm=STRING, math library),
2775[
Guido van Rossum93274221997-05-09 02:42:00 +00002776if test "$withval" = no
2777then LIBM=
2778 AC_MSG_RESULT(force LIBM empty)
2779elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002780then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002781 AC_MSG_RESULT(set LIBM="$withval")
2782else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002783fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002784[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002785
2786# check for --with-libc=...
2787AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002788AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002789AC_ARG_WITH(libc,
2790 AC_HELP_STRING(--with-libc=STRING, C library),
2791[
Guido van Rossum93274221997-05-09 02:42:00 +00002792if test "$withval" = no
2793then LIBC=
2794 AC_MSG_RESULT(force LIBC empty)
2795elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002796then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002797 AC_MSG_RESULT(set LIBC="$withval")
2798else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002799fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002800[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002801
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002802# check for hypot() in math library
2803LIBS_SAVE=$LIBS
2804LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002805AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002806LIBS=$LIBS_SAVE
2807
Guido van Rossumef2255b2000-03-10 22:30:29 +00002808# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002809AC_CHECK_HEADER(wchar.h, [
2810 AC_DEFINE(HAVE_WCHAR_H, 1,
2811 [Define if the compiler provides a wchar.h header file.])
2812 wchar_h="yes"
2813],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002814wchar_h="no"
2815)
2816
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002817# determine wchar_t size
2818if test "$wchar_h" = yes
2819then
Guido van Rossum67b26592001-10-20 14:21:45 +00002820 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002821fi
2822
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002823AC_MSG_CHECKING(for UCS-4 tcl)
2824have_ucs4_tcl=no
2825AC_TRY_COMPILE([
2826#include <tcl.h>
2827#if TCL_UTF_MAX != 6
2828# error "NOT UCS4_TCL"
2829#endif], [], [
2830 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2831 have_ucs4_tcl=yes
2832])
2833AC_MSG_RESULT($have_ucs4_tcl)
2834
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002835# check whether wchar_t is signed or not
2836if test "$wchar_h" = yes
2837then
2838 # check whether wchar_t is signed or not
2839 AC_MSG_CHECKING(whether wchar_t is signed)
2840 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2841 AC_TRY_RUN([
2842 #include <wchar.h>
2843 int main()
2844 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002845 /* Success: exit code 0 */
2846 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002847 }
2848 ],
2849 ac_cv_wchar_t_signed=yes,
2850 ac_cv_wchar_t_signed=no,
2851 ac_cv_wchar_t_signed=yes)])
2852 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2853fi
2854
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002855AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002856dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002857AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002858 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2859 [],
2860 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002861
2862if test $enable_unicode = yes
2863then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002864 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002865 case "$have_ucs4_tcl" in
2866 yes) enable_unicode="ucs4"
2867 ;;
2868 *) enable_unicode="ucs2"
2869 ;;
2870 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002871fi
2872
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002873AH_TEMPLATE(Py_UNICODE_SIZE,
2874 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002875case "$enable_unicode" in
2876ucs2) unicode_size="2"
2877 AC_DEFINE(Py_UNICODE_SIZE,2)
2878 ;;
2879ucs4) unicode_size="4"
2880 AC_DEFINE(Py_UNICODE_SIZE,4)
2881 ;;
2882esac
2883
Martin v. Löwis11437992002-04-12 09:54:03 +00002884AH_TEMPLATE(PY_UNICODE_TYPE,
2885 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002886
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002887AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002888if test "$enable_unicode" = "no"
2889then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002890 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002891 AC_MSG_RESULT(not used)
2892else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002893 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002894 AC_DEFINE(Py_USING_UNICODE, 1,
2895 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002896
2897 # wchar_t is only usable if it maps to an unsigned type
2898 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002899 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002900 then
2901 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002902 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2903 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002904 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002905 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002906 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2907 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2908 then
2909 PY_UNICODE_TYPE="unsigned short"
2910 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2911 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2912 then
2913 PY_UNICODE_TYPE="unsigned long"
2914 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2915 else
2916 PY_UNICODE_TYPE="no type found"
2917 fi
2918 AC_MSG_RESULT($PY_UNICODE_TYPE)
2919fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002920
2921# check for endianness
2922AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00002923AH_VERBATIM([WORDS_BIGENDIAN],
2924[
2925 /* Define to 1 if your processor stores words with the most significant byte
2926 first (like Motorola and SPARC, unlike Intel and VAX).
2927
2928 The block below does compile-time checking for endianness on platforms
2929 that use GCC and therefore allows compiling fat binaries on OSX by using
2930 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
2931 such that the configure-result is used on systems that don't use GCC.
2932 */
2933#ifdef __BIG_ENDIAN__
2934#define WORDS_BIGENDIAN 1
2935#else
2936#ifndef __LITTLE_ENDIAN__
2937#undef WORDS_BIGENDIAN
2938#endif
2939#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00002940
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002941# Check whether right shifting a negative integer extends the sign bit
2942# or fills with zeros (like the Cray J90, according to Tim Peters).
2943AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002944AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002945AC_TRY_RUN([
2946int main()
2947{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002948 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002949}
Guido van Rossum3065c942001-09-17 04:03:14 +00002950],
2951ac_cv_rshift_extends_sign=yes,
2952ac_cv_rshift_extends_sign=no,
2953ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002954AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2955if test "$ac_cv_rshift_extends_sign" = no
2956then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002957 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2958 [Define if i>>j for signed int i does not extend the sign bit
2959 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002960fi
2961
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002962# check for getc_unlocked and related locking functions
2963AC_MSG_CHECKING(for getc_unlocked() and friends)
2964AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2965AC_TRY_LINK([#include <stdio.h>],[
2966 FILE *f = fopen("/dev/null", "r");
2967 flockfile(f);
2968 getc_unlocked(f);
2969 funlockfile(f);
2970], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2971AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2972if test "$ac_cv_have_getc_unlocked" = yes
2973then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002974 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2975 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002976fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002977
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002978# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002979# save the value of LIBS so we don't actually link Python with readline
2980LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002981AC_CHECK_LIB(readline, readline)
2982if test "$ac_cv_have_readline_readline" = no
2983then
2984 AC_CHECK_LIB(termcap, readline)
2985fi
2986
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002987# check for readline 2.1
2988AC_CHECK_LIB(readline, rl_callback_handler_install,
2989 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002990 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002991
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002992# check for readline 2.2
2993AC_TRY_CPP([#include <readline/readline.h>],
2994have_readline=yes, have_readline=no)
2995if test $have_readline = yes
2996then
2997 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2998 [readline/readline.h],
2999 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3000 [Define if you have readline 2.2]), )
3001fi
3002
Martin v. Löwis0daad592001-09-30 21:09:59 +00003003# check for readline 4.0
3004AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003005 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003006 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003007
Guido van Rossum353ae582001-07-10 16:45:32 +00003008# check for readline 4.2
3009AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003010 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003011 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003012
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003013# also in readline 4.2
3014AC_TRY_CPP([#include <readline/readline.h>],
3015have_readline=yes, have_readline=no)
3016if test $have_readline = yes
3017then
3018 AC_EGREP_HEADER([extern int rl_catch_signals;],
3019 [readline/readline.h],
3020 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3021 [Define if you can turn off readline's signal handling.]), )
3022fi
3023
Martin v. Löwis82bca632006-02-10 20:49:30 +00003024# End of readline checks: restore LIBS
3025LIBS=$LIBS_no_readline
3026
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003027AC_MSG_CHECKING(for broken nice())
3028AC_CACHE_VAL(ac_cv_broken_nice, [
3029AC_TRY_RUN([
3030int main()
3031{
3032 int val1 = nice(1);
3033 if (val1 != -1 && val1 == nice(2))
3034 exit(0);
3035 exit(1);
3036}
Guido van Rossum3065c942001-09-17 04:03:14 +00003037],
3038ac_cv_broken_nice=yes,
3039ac_cv_broken_nice=no,
3040ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003041AC_MSG_RESULT($ac_cv_broken_nice)
3042if test "$ac_cv_broken_nice" = yes
3043then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003044 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3045 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003046fi
3047
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003048AC_MSG_CHECKING(for broken poll())
3049AC_TRY_RUN([
3050#include <poll.h>
3051
3052int main (void)
3053 {
3054 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3055
3056 close (42);
3057
3058 int poll_test = poll (&poll_struct, 1, 0);
3059
3060 if (poll_test < 0)
3061 {
3062 exit(0);
3063 }
3064 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3065 {
3066 exit(0);
3067 }
3068 else
3069 {
3070 exit(1);
3071 }
3072 }
3073],
3074ac_cv_broken_poll=yes,
3075ac_cv_broken_poll=no,
3076ac_cv_broken_poll=no)
3077AC_MSG_RESULT($ac_cv_broken_poll)
3078if test "$ac_cv_broken_poll" = yes
3079then
3080 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3081 [Define if poll() sets errno on invalid file descriptors.])
3082fi
3083
Brett Cannon43802422005-02-10 20:48:03 +00003084# Before we can test tzset, we need to check if struct tm has a tm_zone
3085# (which is not required by ISO C or UNIX spec) and/or if we support
3086# tzname[]
3087AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003088
Brett Cannon43802422005-02-10 20:48:03 +00003089# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003090AC_MSG_CHECKING(for working tzset())
3091AC_CACHE_VAL(ac_cv_working_tzset, [
3092AC_TRY_RUN([
3093#include <stdlib.h>
3094#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003095#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003096
3097#if HAVE_TZNAME
3098extern char *tzname[];
3099#endif
3100
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003101int main()
3102{
Brett Cannon18367812003-09-19 00:59:16 +00003103 /* Note that we need to ensure that not only does tzset(3)
3104 do 'something' with localtime, but it works as documented
3105 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003106 This includes making sure that tzname is set properly if
3107 tm->tm_zone does not exist since it is the alternative way
3108 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003109
3110 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003111 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003112 */
3113
Brett Cannon43802422005-02-10 20:48:03 +00003114 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003115 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3116
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003117 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003118 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003119 if (localtime(&groundhogday)->tm_hour != 0)
3120 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003121#if HAVE_TZNAME
3122 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3123 if (strcmp(tzname[0], "UTC") ||
3124 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3125 exit(1);
3126#endif
Brett Cannon18367812003-09-19 00:59:16 +00003127
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003128 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003129 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003130 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003131 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003132#if HAVE_TZNAME
3133 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3134 exit(1);
3135#endif
Brett Cannon18367812003-09-19 00:59:16 +00003136
3137 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3138 tzset();
3139 if (localtime(&groundhogday)->tm_hour != 11)
3140 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003141#if HAVE_TZNAME
3142 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3143 exit(1);
3144#endif
3145
3146#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003147 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3148 exit(1);
3149 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3150 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003151#endif
Brett Cannon18367812003-09-19 00:59:16 +00003152
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003153 exit(0);
3154}
3155],
3156ac_cv_working_tzset=yes,
3157ac_cv_working_tzset=no,
3158ac_cv_working_tzset=no)])
3159AC_MSG_RESULT($ac_cv_working_tzset)
3160if test "$ac_cv_working_tzset" = yes
3161then
3162 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3163 [Define if tzset() actually switches the local timezone in a meaningful way.])
3164fi
3165
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003166# Look for subsecond timestamps in struct stat
3167AC_MSG_CHECKING(for tv_nsec in struct stat)
3168AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3169AC_TRY_COMPILE([#include <sys/stat.h>], [
3170struct stat st;
3171st.st_mtim.tv_nsec = 1;
3172],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003173ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003174ac_cv_stat_tv_nsec=no,
3175ac_cv_stat_tv_nsec=no))
3176AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3177if test "$ac_cv_stat_tv_nsec" = yes
3178then
3179 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3180 [Define if you have struct stat.st_mtim.tv_nsec])
3181fi
3182
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003183# Look for BSD style subsecond timestamps in struct stat
3184AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3185AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3186AC_TRY_COMPILE([#include <sys/stat.h>], [
3187struct stat st;
3188st.st_mtimespec.tv_nsec = 1;
3189],
3190ac_cv_stat_tv_nsec2=yes,
3191ac_cv_stat_tv_nsec2=no,
3192ac_cv_stat_tv_nsec2=no))
3193AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3194if test "$ac_cv_stat_tv_nsec2" = yes
3195then
3196 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3197 [Define if you have struct stat.st_mtimensec])
3198fi
3199
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003200# On HP/UX 11.0, mvwdelch is a block with a return statement
3201AC_MSG_CHECKING(whether mvwdelch is an expression)
3202AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3203AC_TRY_COMPILE([#include <curses.h>], [
3204 int rtn;
3205 rtn = mvwdelch(0,0,0);
3206], ac_cv_mvwdelch_is_expression=yes,
3207 ac_cv_mvwdelch_is_expression=no,
3208 ac_cv_mvwdelch_is_expression=yes))
3209AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3210
3211if test "$ac_cv_mvwdelch_is_expression" = yes
3212then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003213 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3214 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003215fi
3216
3217AC_MSG_CHECKING(whether WINDOW has _flags)
3218AC_CACHE_VAL(ac_cv_window_has_flags,
3219AC_TRY_COMPILE([#include <curses.h>], [
3220 WINDOW *w;
3221 w->_flags = 0;
3222], ac_cv_window_has_flags=yes,
3223 ac_cv_window_has_flags=no,
3224 ac_cv_window_has_flags=no))
3225AC_MSG_RESULT($ac_cv_window_has_flags)
3226
3227
3228if test "$ac_cv_window_has_flags" = yes
3229then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003230 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3231 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003232fi
3233
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003234AC_MSG_CHECKING(for /dev/ptmx)
3235
3236if test -e /dev/ptmx
3237then
3238 AC_MSG_RESULT(yes)
3239 AC_DEFINE(HAVE_DEV_PTMX, 1,
3240 [Define if we have /dev/ptmx.])
3241else
3242 AC_MSG_RESULT(no)
3243fi
3244
Neal Norwitz865400f2003-03-21 01:42:58 +00003245AC_MSG_CHECKING(for /dev/ptc)
3246
3247if test -e /dev/ptc
3248then
3249 AC_MSG_RESULT(yes)
3250 AC_DEFINE(HAVE_DEV_PTC, 1,
3251 [Define if we have /dev/ptc.])
3252else
3253 AC_MSG_RESULT(no)
3254fi
3255
Brett Cannon09d12362006-05-11 05:11:33 +00003256AC_MSG_CHECKING(for %zd printf() format support)
3257AC_TRY_RUN([#include <stdio.h>
3258#include <stddef.h>
3259#include <string.h>
3260
3261int main()
3262{
3263 char buffer[4];
3264
3265 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3266 return 1;
3267
3268 if (strncmp(buffer, "123", 3))
3269 return 1;
3270
3271 return 0;
3272}],
3273[AC_MSG_RESULT(yes)
3274 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3275 AC_MSG_RESULT(no))
3276
Martin v. Löwis01c04012002-11-11 14:58:44 +00003277AC_CHECK_TYPE(socklen_t,,
3278 AC_DEFINE(socklen_t,int,
3279 Define to `int' if <sys/socket.h> does not define.),[
3280#ifdef HAVE_SYS_TYPES_H
3281#include <sys/types.h>
3282#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003283#ifdef HAVE_SYS_SOCKET_H
3284#include <sys/socket.h>
3285#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003286])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003287
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003288AC_SUBST(THREADHEADERS)
3289
3290for h in `(cd $srcdir;echo Python/thread_*.h)`
3291do
3292 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3293done
3294
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003295AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003296SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003297AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003298for dir in $SRCDIRS; do
3299 if test ! -d $dir; then
3300 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003301 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003302done
3303AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003304
Guido van Rossum627b2d71993-12-24 10:39:16 +00003305# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003306AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3307AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003308
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003309echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003310if test ! -f Modules/Setup
3311then
3312 cp $srcdir/Modules/Setup.dist Modules/Setup
3313fi
3314
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003315echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003316if test ! -f Modules/Setup.local
3317then
3318 echo "# Edit this file for local setup changes" >Modules/Setup.local
3319fi
3320
3321echo "creating Makefile"
3322$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3323 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003324 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003325mv config.c Modules