blob: 232075de0c9f90532dea80051c541998b29f41a1 [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)
Guido van Rossum0c4eb622006-03-30 16:19:24 +00004m4_define(PYTHON_VERSION, 3.0)
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
Thomas Wouters477c8d52006-05-27 19:21:47 +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=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Jack Jansen127e56e2001-09-11 14:41:54 +0000102 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000103 ;;
104 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000105 PYTHONFRAMEWORK=Python
106 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000107 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000108 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000109 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
110 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Jack Jansen127e56e2001-09-11 14:41:54 +0000111 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000112
113 # Add makefiles for Mac specific code to the list of output
114 # files:
115 AC_CONFIG_FILES(Mac/OSX/Makefile)
116 AC_CONFIG_FILES(Mac/OSX/PythonLauncher/Makefile)
117 AC_CONFIG_FILES(Mac/OSX/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000118 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000119 ],[
120 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000121 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000122 PYTHONFRAMEWORKPREFIX=
123 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000124 FRAMEWORKINSTALLFIRST=
125 FRAMEWORKINSTALLLAST=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000126 enable_framework=
127])
128AC_SUBST(PYTHONFRAMEWORK)
129AC_SUBST(PYTHONFRAMEWORKDIR)
130AC_SUBST(PYTHONFRAMEWORKPREFIX)
131AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000132AC_SUBST(FRAMEWORKINSTALLFIRST)
133AC_SUBST(FRAMEWORKINSTALLLAST)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000134
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000135##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000136## AC_HELP_STRING(--with-dyld,
137## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000138##
Guido van Rossumb418f891996-07-30 18:06:02 +0000139# Set name for machine-dependent library files
140AC_SUBST(MACHDEP)
141AC_MSG_CHECKING(MACHDEP)
142if test -z "$MACHDEP"
143then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000144 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000145 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
146 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000147 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000148 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000149 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000150 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000151 ac_md_system=`echo $ac_sys_system |
152 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
153 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000154 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000155 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000156
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000157 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000158 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000159 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000160 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000161 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000162 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000163 esac
164fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000165
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000166# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
167# disable features if it is defined, without any means to access these
168# features as extensions. For these systems, we skip the definition of
169# _XOPEN_SOURCE. Before adding a system to the list to gain access to
170# some feature, make sure there is no alternative way to access this
171# feature. Also, when using wildcards, make sure you have verified the
172# need for not defining _XOPEN_SOURCE on all systems matching the
173# wildcard, and that the wildcard does not include future systems
174# (which may remove their limitations).
175dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
176case $ac_sys_system/$ac_sys_release in
177 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
178 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000179 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz671b9e32006-01-09 07:07:12 +0000180 OpenBSD/2.* | OpenBSD/3.@<:@012345678@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000181 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000182 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
183 # of union __?sigval. Reported by Stuart Bishop.
184 SunOS/5.6)
185 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000186 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
187 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000188 # Reconfirmed for 7.1.4 by Martin v. Loewis.
189 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000190 define_xopen_source=no;;
191 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000192 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000193 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000194 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000195 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
196 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
197 # this is fixed in 10.3, which identifies itself as Darwin/7.*
198 # This should hopefully be fixed in FreeBSD 4.9
199 FreeBSD/4.8* | Darwin/6* )
200 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000201 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
202 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
203 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000204 AIX/4)
205 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000206 AIX/5)
207 if test `uname -r` -eq 1; then
208 define_xopen_source=no
209 fi
210 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000211 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
212 # disables platform specific features beyond repair.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000213 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
214 # has no effect, don't bother defineing them
215 Darwin/@<:@78@:>@.*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000216 define_xopen_source=no
217 ;;
218
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000219esac
220
221if test $define_xopen_source = yes
222then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000223 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
224 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000225 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
226 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000227 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000228 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000229 AC_DEFINE(_XOPEN_SOURCE, 500,
230 Define to the level of X/Open that your system supports)
231 ;;
232 *)
233 AC_DEFINE(_XOPEN_SOURCE, 600,
234 Define to the level of X/Open that your system supports)
235 ;;
236 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000237
238 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
239 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
240 # several APIs are not declared. Since this is also needed in some
241 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000242 # except for Solaris 10, where it must not be defined,
243 # as it implies XPG4.2
244 case $ac_sys_system/$ac_sys_release in
245 SunOS/5.10)
246 ;;
247 *)
248 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
249 Define to activate Unix95-and-earlier features)
250 ;;
251 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000252
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000253 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
254
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000255fi
256
Guido van Rossum91922671997-10-09 20:24:13 +0000257#
258# SGI compilers allow the specification of the both the ABI and the
259# ISA on the command line. Depending on the values of these switches,
260# different and often incompatable code will be generated.
261#
262# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
263# thus supply support for various ABI/ISA combinations. The MACHDEP
264# variable is also adjusted.
265#
266AC_SUBST(SGI_ABI)
267if test ! -z "$SGI_ABI"
268then
269 CC="cc $SGI_ABI"
270 LDFLAGS="$SGI_ABI $LDFLAGS"
271 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
272fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000273AC_MSG_RESULT($MACHDEP)
274
Jack Jansen83f898c2002-12-30 22:23:40 +0000275# And add extra plat-mac for darwin
276AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000277AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000278AC_MSG_CHECKING(EXTRAPLATDIR)
279if test -z "$EXTRAPLATDIR"
280then
281 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000282 darwin)
283 EXTRAPLATDIR="\$(PLATMACDIRS)"
284 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
285 ;;
286 *)
287 EXTRAPLATDIR=""
288 EXTRAMACHDEPPATH=""
289 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000290 esac
291fi
292AC_MSG_RESULT($EXTRAPLATDIR)
293
Jack Jansen6b08a402004-06-03 12:41:45 +0000294# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
295# it may influence the way we can build extensions, so distutils
296# needs to check it
297AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000298AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000299CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000300EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000301
Guido van Rossum627b2d71993-12-24 10:39:16 +0000302# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000303
304# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
305# for debug/optimization stuff. BASECFLAGS is for flags that are required
306# just to get things to compile and link. Users are free to override OPT
307# when running configure or make. The build should not break if they do.
308# BASECFLAGS should generally not be messed with, however.
309
310# XXX shouldn't some/most/all of this code be merged with the stuff later
311# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000312AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000313AC_ARG_WITH(gcc,
314 AC_HELP_STRING(--without-gcc,never use gcc),
315[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000316 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000317 no) CC=cc
318 without_gcc=yes;;
319 yes) CC=gcc
320 without_gcc=no;;
321 *) CC=$withval
322 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000323 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000324 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000325 AIX*) CC=cc_r
326 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000327 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000328 case $BE_HOST_CPU in
329 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000330 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000331 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000332 BASECFLAGS="$BASECFLAGS -export pragma"
333 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000334 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000335 ;;
336 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000337 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000338 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000339 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000340 ;;
341 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000342 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000343 ;;
344 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000345 AR="\$(srcdir)/Modules/ar_beos"
346 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000347 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000348 Monterey*)
349 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000350 without_gcc=;;
351 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000352 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000353AC_MSG_RESULT($without_gcc)
354
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000355# If the user switches compilers, we can't believe the cache
356if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
357then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000358 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
359(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000360fi
361
Guido van Rossum627b2d71993-12-24 10:39:16 +0000362AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000363
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000364AC_SUBST(CXX)
365AC_SUBST(MAINCC)
366AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
367AC_ARG_WITH(cxx_main,
368 AC_HELP_STRING([--with-cxx-main=<compiler>],
369 [compile main() and link python executable with C++ compiler]),
370[
371
372 case $withval in
373 no) with_cxx_main=no
374 MAINCC='$(CC)';;
375 yes) with_cxx_main=yes
376 MAINCC='$(CXX)';;
377 *) with_cxx_main=yes
378 MAINCC=$withval
379 if test -z "$CXX"
380 then
381 CXX=$withval
382 fi;;
383 esac], [
384 with_cxx_main=no
385 MAINCC='$(CC)'
386])
387AC_MSG_RESULT($with_cxx_main)
388
389preset_cxx="$CXX"
390if test -z "$CXX"
391then
392 case "$CC" in
393 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
394 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
395 esac
396 if test "$CXX" = "notfound"
397 then
398 CXX=""
399 fi
400fi
401if test -z "$CXX"
402then
403 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
404 if test "$CXX" = "notfound"
405 then
406 CXX=""
407 fi
408fi
409if test "$preset_cxx" != "$CXX"
410then
411 AC_MSG_WARN([
412
413 By default, distutils will build C++ extension modules with "$CXX".
414 If this is not intended, then set CXX on the configure command line.
415 ])
416fi
417
418
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000419# checks for UNIX variants that set C preprocessor variables
420AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000421
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000422# Check for unsupported systems
423case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000424Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000425 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
426 echo See README for details.
427 exit 1;;
428esac
429
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000430AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000431AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000432AC_ARG_WITH(suffix,
433 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
434[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000435 case $withval in
436 no) EXEEXT=;;
437 yes) EXEEXT=.exe;;
438 *) EXEEXT=$withval;;
439 esac])
440AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000441
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000442# Test whether we're running on a non-case-sensitive system, in which
443# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000444AC_SUBST(BUILDEXEEXT)
445AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000446if test ! -d CaseSensitiveTestDir; then
447mkdir CaseSensitiveTestDir
448fi
449
450if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000451then
Jack Jansen1999ef42001-12-06 21:47:20 +0000452 AC_MSG_RESULT(yes)
453 BUILDEXEEXT=.exe
454else
455 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000456 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000457fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000458rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000459
Guido van Rossumdd997f71998-10-07 19:58:26 +0000460case $MACHDEP in
461bsdos*)
462 case $CC in
463 gcc) CC="$CC -D_HAVE_BSDI";;
464 esac;;
465esac
466
Guido van Rossum84561611997-08-21 00:08:11 +0000467case $ac_sys_system in
468hp*|HP*)
469 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000470 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000471 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000472Monterey*)
473 case $CC in
474 cc) CC="$CC -Wl,-Bexport";;
475 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000476SunOS*)
477 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000478 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000479 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000480esac
481
Martin v. Löwise8964d42001-03-06 12:09:07 +0000482
Neil Schemenauer61c51152001-01-26 16:18:16 +0000483AC_SUBST(LIBRARY)
484AC_MSG_CHECKING(LIBRARY)
485if test -z "$LIBRARY"
486then
487 LIBRARY='libpython$(VERSION).a'
488fi
489AC_MSG_RESULT($LIBRARY)
490
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000491# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000492# name of the library into which to insert object files). BLDLIBRARY is also
493# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
494# is blank as the main program is not linked directly against LDLIBRARY.
495# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
496# systems without shared libraries, LDLIBRARY is the same as LIBRARY
497# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
498# DLLLIBRARY is the shared (i.e., DLL) library.
499#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000500# RUNSHARED is used to run shared python without installed libraries
501#
502# INSTSONAME is the name of the shared library that will be use to install
503# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000504AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000505AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000506AC_SUBST(BLDLIBRARY)
507AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000508AC_SUBST(INSTSONAME)
509AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000510LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000511BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000512INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000513DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000514LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000515RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000516
Guido van Rossumfb842551997-08-06 23:42:07 +0000517# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000518# If CXX is set, and if it is needed to link a main function that was
519# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
520# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000521# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000522# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000523AC_SUBST(LINKCC)
524AC_MSG_CHECKING(LINKCC)
525if test -z "$LINKCC"
526then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000527 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000528 case $ac_sys_system in
529 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000530 exp_extra="\"\""
531 if test $ac_sys_release -ge 5 -o \
532 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
533 exp_extra="."
534 fi
535 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000536 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000537 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000538 esac
539fi
540AC_MSG_RESULT($LINKCC)
541
Martin v. Löwis1142de32002-03-29 16:28:31 +0000542AC_MSG_CHECKING(for --enable-shared)
543AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000544 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000545
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546if test -z "$enable_shared"
547then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000548 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000549 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000550 enable_shared="yes";;
551 *)
552 enable_shared="no";;
553 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000554fi
555AC_MSG_RESULT($enable_shared)
556
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000557AC_MSG_CHECKING(for --enable-profiling)
558AC_ARG_ENABLE(profiling,
559 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
560[ac_save_cc="$CC"
561 CC="$CC -pg"
562 AC_TRY_RUN([int main() { return 0; }],
563 ac_enable_profiling="yes",
564 ac_enable_profiling="no",
565 ac_enable_profiling="no")
566 CC="$ac_save_cc"])
567AC_MSG_RESULT($ac_enable_profiling)
568
569case "$ac_enable_profiling" in
570 "yes")
571 BASECFLAGS="-pg $BASECFLAGS"
572 LDFLAGS="-pg $LDFLAGS"
573 ;;
574esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000575
576AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000577
Guido van Rossumb8552162001-09-05 14:58:11 +0000578# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
579# library that we build, but we do not want to link against it (we
580# will find it with a -framework option). For this reason there is an
581# extra variable BLDLIBRARY against which Python and the extension
582# modules are linked, BLDLIBRARY. This is normally the same as
583# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000584if test "$enable_framework"
585then
586 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000587 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000588 BLDLIBRARY=''
589else
590 BLDLIBRARY='$(LDLIBRARY)'
591fi
592
Martin v. Löwis1142de32002-03-29 16:28:31 +0000593# Other platforms follow
594if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000595 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000596 case $ac_sys_system in
597 BeOS*)
598 LDLIBRARY='libpython$(VERSION).so'
599 ;;
600 CYGWIN*)
601 LDLIBRARY='libpython$(VERSION).dll.a'
602 DLLLIBRARY='libpython$(VERSION).dll'
603 ;;
604 SunOS*)
605 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000606 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000607 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000608 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000609 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000610 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000611 LDLIBRARY='libpython$(VERSION).so'
612 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000613 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000614 case $ac_sys_system in
615 FreeBSD*)
616 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
617 ;;
618 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000619 INSTSONAME="$LDLIBRARY".$SOVERSION
620 ;;
621 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000622 case `uname -m` in
623 ia64)
624 LDLIBRARY='libpython$(VERSION).so'
625 ;;
626 *)
627 LDLIBRARY='libpython$(VERSION).sl'
628 ;;
629 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000631 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000632 ;;
633 OSF*)
634 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000635 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000636 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000637 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000638 atheos*)
639 LDLIBRARY='libpython$(VERSION).so'
640 BLDLIBRARY='-L. -lpython$(VERSION)'
641 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
642 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643 esac
Jason Tishler30765592003-09-04 11:04:06 +0000644else # shared is disabled
645 case $ac_sys_system in
646 CYGWIN*)
647 BLDLIBRARY='$(LIBRARY)'
648 LDLIBRARY='libpython$(VERSION).dll.a'
649 ;;
650 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651fi
652
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000653AC_MSG_RESULT($LDLIBRARY)
654
Guido van Rossum627b2d71993-12-24 10:39:16 +0000655AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000656AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000657AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000658
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000659AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000660AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000661if test $SVNVERSION = found
662then
663 SVNVERSION="svnversion \$(srcdir)"
664else
665 SVNVERSION="echo exported"
666fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000667
Neil Schemenauera42c8272001-03-31 00:01:55 +0000668case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000669bsdos*|hp*|HP*)
670 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000671 if test -z "$INSTALL"
672 then
673 INSTALL="${srcdir}/install-sh -c"
674 fi
675esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000676AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000677
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000678# Not every filesystem supports hard links
679AC_SUBST(LN)
680if test -z "$LN" ; then
681 case $ac_sys_system in
682 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000683 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000684 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000685 *) LN=ln;;
686 esac
687fi
688
Fred Drake9f715822001-07-11 06:27:00 +0000689# Check for --with-pydebug
690AC_MSG_CHECKING(for --with-pydebug)
691AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000692 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
693[
Fred Drake9f715822001-07-11 06:27:00 +0000694if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000695then
696 AC_DEFINE(Py_DEBUG, 1,
697 [Define if you want to build an interpreter with many run-time checks.])
698 AC_MSG_RESULT(yes);
699 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000700else AC_MSG_RESULT(no); Py_DEBUG='false'
701fi],
702[AC_MSG_RESULT(no)])
703
Skip Montanarodecc6a42003-01-01 20:07:49 +0000704# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
705# merged with this chunk of code?
706
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000707# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000708# ------------------------
709# (The following bit of code is complicated enough - please keep things
710# indented properly. Just pretend you're editing Python code. ;-)
711
712# There are two parallel sets of case statements below, one that checks to
713# see if OPT was set and one that does BASECFLAGS setting based upon
714# compiler and platform. BASECFLAGS tweaks need to be made even if the
715# user set OPT.
716
717# tweak OPT based on compiler and platform, only if the user didn't set
718# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000719AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000720if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000721then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000722 case $GCC in
723 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000724 if test "$CC" != 'g++' ; then
725 STRICT_PROTO="-Wstrict-prototypes"
726 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000728 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000729 if test "$Py_DEBUG" = 'true' ; then
730 # Optimization messes up debuggers, so turn it off for
731 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000732 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000733 else
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000734 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000735 fi
736 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000737 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000738 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000739 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000740 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000741 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000742 SCO_SV*) OPT="$OPT -m486 -DSCO5"
743 ;;
744 esac
Fred Drake9f715822001-07-11 06:27:00 +0000745 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000746
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000747 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000748 OPT="-O"
749 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000750 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751
752 # The current (beta) Monterey compiler dies with optimizations
753 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000754 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000755 Monterey*)
756 OPT=""
757 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000758 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000759
Guido van Rossum4e8af441994-08-19 15:33:54 +0000760fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000761
Skip Montanarodecc6a42003-01-01 20:07:49 +0000762AC_SUBST(BASECFLAGS)
763# tweak BASECFLAGS based on compiler and platform
764case $GCC in
765yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000766 # Python violates C99 rules, by casting between incompatible
767 # pointer types. GCC may generate bad code as a result of that,
768 # so use -fno-strict-aliasing if supported.
769 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
770 ac_save_cc="$CC"
771 CC="$CC -fno-strict-aliasing"
772 AC_TRY_RUN([int main() { return 0; }],
773 ac_cv_no_strict_aliasing_ok=yes,
774 ac_cv_no_strict_aliasing_ok=no,
775 ac_cv_no_strict_aliasing_ok=no)
776 CC="$ac_save_cc"
777 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
778 if test $ac_cv_no_strict_aliasing_ok = yes
779 then
780 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
781 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000782 case $ac_sys_system in
783 SCO_SV*)
784 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
785 ;;
786 # is there any other compiler on Darwin besides gcc?
787 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000788 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Thomas Wouters477c8d52006-05-27 19:21:47 +0000789 if test "${enable_universalsdk}"; then
790 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
791 fi
792
Skip Montanarodecc6a42003-01-01 20:07:49 +0000793 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000794 OSF*)
795 BASECFLAGS="$BASECFLAGS -mieee"
796 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000797 esac
798 ;;
799
800*)
801 case $ac_sys_system in
802 OpenUNIX*|UnixWare*)
803 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
804 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000805 OSF*)
806 BASECFLAGS="$BASECFLAGS -ieee -std"
807 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808 SCO_SV*)
809 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
810 ;;
811 esac
812 ;;
813esac
814
Fred Drakee1ceaa02001-12-04 20:55:47 +0000815if test "$Py_DEBUG" = 'true'; then
816 :
817else
818 OPT="-DNDEBUG $OPT"
819fi
820
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000821if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000822then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000824fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000825
Neal Norwitz020c46a2006-01-07 21:39:28 +0000826# disable check for icc since it seems to pass, but generates a warning
827if test "$CC" = icc
828then
829 ac_cv_opt_olimit_ok=no
830fi
831
Guido van Rossum91922671997-10-09 20:24:13 +0000832AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
833AC_CACHE_VAL(ac_cv_opt_olimit_ok,
834[ac_save_cc="$CC"
835CC="$CC -OPT:Olimit=0"
836AC_TRY_RUN([int main() { return 0; }],
837 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000838 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000839 ac_cv_opt_olimit_ok=no)
840CC="$ac_save_cc"])
841AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000842if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000843 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
845 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
846 # environment?
847 Darwin*)
848 ;;
849 *)
850 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
851 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000852 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000853else
854 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
855 AC_CACHE_VAL(ac_cv_olimit_ok,
856 [ac_save_cc="$CC"
857 CC="$CC -Olimit 1500"
858 AC_TRY_RUN([int main() { return 0; }],
859 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000860 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000861 ac_cv_olimit_ok=no)
862 CC="$ac_save_cc"])
863 AC_MSG_RESULT($ac_cv_olimit_ok)
864 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000865 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000866 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000867fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000868
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000869# On some compilers, pthreads are available without further options
870# (e.g. MacOS X). On some of these systems, the compiler will not
871# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
872# So we have to see first whether pthreads are available without
873# options before we can check whether -Kpthread improves anything.
874AC_MSG_CHECKING(whether pthreads are available without options)
875AC_CACHE_VAL(ac_cv_pthread_is_default,
876[AC_TRY_RUN([
877#include <pthread.h>
878
879void* routine(void* p){return NULL;}
880
881int main(){
882 pthread_t p;
883 if(pthread_create(&p,NULL,routine,NULL)!=0)
884 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000885 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000886 return 0;
887}
888],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000889[
890 ac_cv_pthread_is_default=yes
891 ac_cv_kthread=no
892 ac_cv_pthread=no
893],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000894 ac_cv_pthread_is_default=no,
895 ac_cv_pthread_is_default=no)
896])
897AC_MSG_RESULT($ac_cv_pthread_is_default)
898
899
900if test $ac_cv_pthread_is_default = yes
901then
902 ac_cv_kpthread=no
903else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000904# -Kpthread, if available, provides the right #defines
905# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000906# Some compilers won't report that they do not support -Kpthread,
907# so we need to run a program to see whether it really made the
908# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000909AC_MSG_CHECKING(whether $CC accepts -Kpthread)
910AC_CACHE_VAL(ac_cv_kpthread,
911[ac_save_cc="$CC"
912CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000913AC_TRY_RUN([
914#include <pthread.h>
915
916void* routine(void* p){return NULL;}
917
918int main(){
919 pthread_t p;
920 if(pthread_create(&p,NULL,routine,NULL)!=0)
921 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000922 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000923 return 0;
924}
925],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000926 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000927 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000928 ac_cv_kpthread=no)
929CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000930AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000931fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000932
Skip Montanarod8d39a02003-07-10 20:44:10 +0000933if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000934then
935# -Kthread, if available, provides the right #defines
936# and linker options to make pthread_create available
937# Some compilers won't report that they do not support -Kthread,
938# so we need to run a program to see whether it really made the
939# function available.
940AC_MSG_CHECKING(whether $CC accepts -Kthread)
941AC_CACHE_VAL(ac_cv_kthread,
942[ac_save_cc="$CC"
943CC="$CC -Kthread"
944AC_TRY_RUN([
945#include <pthread.h>
946
947void* routine(void* p){return NULL;}
948
949int main(){
950 pthread_t p;
951 if(pthread_create(&p,NULL,routine,NULL)!=0)
952 return 1;
953 (void)pthread_detach(p);
954 return 0;
955}
956],
957 ac_cv_kthread=yes,
958 ac_cv_kthread=no,
959 ac_cv_kthread=no)
960CC="$ac_save_cc"])
961AC_MSG_RESULT($ac_cv_kthread)
962fi
963
Skip Montanarod8d39a02003-07-10 20:44:10 +0000964if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000965then
966# -pthread, if available, provides the right #defines
967# and linker options to make pthread_create available
968# Some compilers won't report that they do not support -pthread,
969# so we need to run a program to see whether it really made the
970# function available.
971AC_MSG_CHECKING(whether $CC accepts -pthread)
972AC_CACHE_VAL(ac_cv_thread,
973[ac_save_cc="$CC"
974CC="$CC -pthread"
975AC_TRY_RUN([
976#include <pthread.h>
977
978void* routine(void* p){return NULL;}
979
980int main(){
981 pthread_t p;
982 if(pthread_create(&p,NULL,routine,NULL)!=0)
983 return 1;
984 (void)pthread_detach(p);
985 return 0;
986}
987],
988 ac_cv_pthread=yes,
989 ac_cv_pthread=no,
990 ac_cv_pthread=no)
991CC="$ac_save_cc"])
992AC_MSG_RESULT($ac_cv_pthread)
993fi
994
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000995# If we have set a CC compiler flag for thread support then
996# check if it works for CXX, too.
997ac_cv_cxx_thread=no
998if test ! -z "$CXX"
999then
1000AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1001ac_save_cxx="$CXX"
1002
1003if test "$ac_cv_kpthread" = "yes"
1004then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001005 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001006 ac_cv_cxx_thread=yes
1007elif test "$ac_cv_kthread" = "yes"
1008then
1009 CXX="$CXX -Kthread"
1010 ac_cv_cxx_thread=yes
1011elif test "$ac_cv_pthread" = "yes"
1012then
1013 CXX="$CXX -pthread"
1014 ac_cv_cxx_thread=yes
1015fi
1016
1017if test $ac_cv_cxx_thread = yes
1018then
1019 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1020 $CXX -c conftest.$ac_ext 2>&5
1021 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1022 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1023 then
1024 ac_cv_cxx_thread=yes
1025 else
1026 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001027 fi
1028 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001029fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001030AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001031fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001032CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001033
Fred Drakece81d592000-07-09 14:39:29 +00001034dnl # check for ANSI or K&R ("traditional") preprocessor
1035dnl AC_MSG_CHECKING(for C preprocessor type)
1036dnl AC_TRY_COMPILE([
1037dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1038dnl int foo;
1039dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1040dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1041dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001042
Guido van Rossum627b2d71993-12-24 10:39:16 +00001043# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001044AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001045AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1046shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001047stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001048unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001049sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1050sys/modem.h \
Thomas Wouters477c8d52006-05-27 19:21:47 +00001051sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/time.h \
1052sys/times.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001053sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1054bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001055AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001056AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001057
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001058# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001059AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001060#ifdef HAVE_CURSES_H
1061#include <curses.h>
1062#endif
1063])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001064
Martin v. Löwis11017b12006-01-14 18:12:57 +00001065# On Linux, netlink.h requires asm/types.h
1066AC_CHECK_HEADERS(linux/netlink.h,,,[
1067#ifdef HAVE_ASM_TYPES_H
1068#include <asm/types.h>
1069#endif
1070#ifdef HAVE_SYS_SOCKET_H
1071#include <sys/socket.h>
1072#endif
1073])
1074
Guido van Rossum627b2d71993-12-24 10:39:16 +00001075# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001076was_it_defined=no
1077AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001078AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1079 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1080])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001081AC_MSG_RESULT($was_it_defined)
1082
Neal Norwitz11690112002-07-30 01:08:28 +00001083# Check whether using makedev requires defining _OSF_SOURCE
1084AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001085AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001086 [ makedev(0, 0) ],
1087 ac_cv_has_makedev=yes,
1088 ac_cv_has_makedev=no)
1089if test "$ac_cv_has_makedev" = "no"; then
1090 # we didn't link, try if _OSF_SOURCE will allow us to link
1091 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001092#define _OSF_SOURCE 1
1093#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001094 ],
1095 [ makedev(0, 0) ],
1096 ac_cv_has_makedev=yes,
1097 ac_cv_has_makedev=no)
1098 if test "$ac_cv_has_makedev" = "yes"; then
1099 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1100 fi
1101fi
1102AC_MSG_RESULT($ac_cv_has_makedev)
1103if test "$ac_cv_has_makedev" = "yes"; then
1104 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1105fi
1106
Martin v. Löwis399a6892002-10-04 10:22:02 +00001107# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1108# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1109# defined, but the compiler does not support pragma redefine_extname,
1110# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1111# structures (such as rlimit64) without declaring them. As a
1112# work-around, disable LFS on such configurations
1113
1114use_lfs=yes
1115AC_MSG_CHECKING(Solaris LFS bug)
1116AC_TRY_COMPILE([
1117#define _LARGEFILE_SOURCE 1
1118#define _FILE_OFFSET_BITS 64
1119#include <sys/resource.h>
1120],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1121AC_MSG_RESULT($sol_lfs_bug)
1122if test "$sol_lfs_bug" = "yes"; then
1123 use_lfs=no
1124fi
1125
1126if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001127# Two defines needed to enable largefile support on various platforms
1128# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001129AC_DEFINE(_LARGEFILE_SOURCE, 1,
1130[This must be defined on some systems to enable large file support.])
1131AC_DEFINE(_FILE_OFFSET_BITS, 64,
1132[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001133fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001134
Guido van Rossum300fda71996-08-19 21:58:16 +00001135# Add some code to confdefs.h so that the test for off_t works on SCO
1136cat >> confdefs.h <<\EOF
1137#if defined(SCO_DS)
1138#undef _OFF_T
1139#endif
1140EOF
1141
Guido van Rossumef2255b2000-03-10 22:30:29 +00001142# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001143AC_TYPE_MODE_T
1144AC_TYPE_OFF_T
1145AC_TYPE_PID_T
1146AC_TYPE_SIGNAL
1147AC_TYPE_SIZE_T
1148AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001149AC_CHECK_TYPE(ssize_t,
1150 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001151
Guido van Rossumef2255b2000-03-10 22:30:29 +00001152# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001153# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001154AC_CHECK_SIZEOF(int, 4)
1155AC_CHECK_SIZEOF(long, 4)
1156AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001157AC_CHECK_SIZEOF(short, 2)
1158AC_CHECK_SIZEOF(float, 4)
1159AC_CHECK_SIZEOF(double, 8)
1160AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001161AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001162
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001163AC_MSG_CHECKING(for long long support)
1164have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001165AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1166 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1167 have_long_long=yes
1168])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001169AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001170if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001171AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001172fi
1173
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001174AC_MSG_CHECKING(for uintptr_t support)
1175have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001176AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1177 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1178 have_uintptr_t=yes
1179])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001180AC_MSG_RESULT($have_uintptr_t)
1181if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001182AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001183fi
1184
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001185# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1186AC_MSG_CHECKING(size of off_t)
1187AC_CACHE_VAL(ac_cv_sizeof_off_t,
1188[AC_TRY_RUN([#include <stdio.h>
1189#include <sys/types.h>
1190main()
1191{
1192 FILE *f=fopen("conftestval", "w");
1193 if (!f) exit(1);
1194 fprintf(f, "%d\n", sizeof(off_t));
1195 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001196}],
1197ac_cv_sizeof_off_t=`cat conftestval`,
1198ac_cv_sizeof_off_t=0,
1199ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001200])
1201AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001202AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1203[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001204
1205AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001206if test "$have_long_long" = yes -a \
1207 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1208 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001209 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1210 [Defined to enable large file support when an off_t is bigger than a long
1211 and long long is available and at least as big as an off_t. You may need
1212 to add some flags for configuration and compilation to enable this mode.
1213 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001214 AC_MSG_RESULT(yes)
1215else
1216 AC_MSG_RESULT(no)
1217fi
1218
Fred Drakea3f6e912000-06-29 20:44:47 +00001219# AC_CHECK_SIZEOF() doesn't include <time.h>.
1220AC_MSG_CHECKING(size of time_t)
1221AC_CACHE_VAL(ac_cv_sizeof_time_t,
1222[AC_TRY_RUN([#include <stdio.h>
1223#include <time.h>
1224main()
1225{
1226 FILE *f=fopen("conftestval", "w");
1227 if (!f) exit(1);
1228 fprintf(f, "%d\n", sizeof(time_t));
1229 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001230}],
1231ac_cv_sizeof_time_t=`cat conftestval`,
1232ac_cv_sizeof_time_t=0,
1233ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001234])
1235AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001236AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1237[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001238
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001239
Trent Mick635f6fb2000-08-23 21:33:05 +00001240# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001241ac_save_cc="$CC"
1242if test "$ac_cv_kpthread" = "yes"
1243then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001244elif test "$ac_cv_kthread" = "yes"
1245then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001246elif test "$ac_cv_pthread" = "yes"
1247then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001248fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001249AC_MSG_CHECKING(for pthread_t)
1250have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001251AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001252AC_MSG_RESULT($have_pthread_t)
1253if test "$have_pthread_t" = yes ; then
1254 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1255 AC_MSG_CHECKING(size of pthread_t)
1256 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1257 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001258#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001259 main()
1260 {
1261 FILE *f=fopen("conftestval", "w");
1262 if (!f) exit(1);
1263 fprintf(f, "%d\n", sizeof(pthread_t));
1264 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001265 }],
1266 ac_cv_sizeof_pthread_t=`cat conftestval`,
1267 ac_cv_sizeof_pthread_t=0,
1268 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001269 ])
1270 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001271 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1272 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001273fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001274CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001275
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001276AC_MSG_CHECKING(for --enable-toolbox-glue)
1277AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001278 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001279
1280if test -z "$enable_toolbox_glue"
1281then
1282 case $ac_sys_system/$ac_sys_release in
1283 Darwin/*)
1284 enable_toolbox_glue="yes";;
1285 *)
1286 enable_toolbox_glue="no";;
1287 esac
1288fi
1289case "$enable_toolbox_glue" in
1290yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001291 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001292 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001293 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1294 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001295 ;;
1296*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001297 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001298 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001299 ;;
1300esac
1301AC_MSG_RESULT($enable_toolbox_glue)
1302
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001303AC_SUBST(OTHER_LIBTOOL_OPT)
1304case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001305 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001306 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1307 ;;
1308 Darwin/*)
1309 OTHER_LIBTOOL_OPT=""
1310 ;;
1311esac
1312
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001313AC_SUBST(LIBTOOL_CRUFT)
1314case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001315 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001316 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1317 if test "${enable_universalsdk}"; then
1318 :
1319 else
1320 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1321 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001322 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001323 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001324 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001325 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1326 if test ${gcc_version} '<' 4.0
1327 then
1328 LIBTOOL_CRUFT="-lcc_dynamic"
1329 else
1330 LIBTOOL_CRUFT=""
1331 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001332 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001333 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001334 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001335esac
1336
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001337AC_MSG_CHECKING(for --enable-framework)
1338if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001339then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001340 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001341 # -F. is needed to allow linking to the framework while
1342 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001343 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1344 [Define if you want to produce an OpenStep/Rhapsody framework
1345 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001346 AC_MSG_RESULT(yes)
1347else
1348 AC_MSG_RESULT(no)
1349fi
1350
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001351AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001352case $ac_sys_system/$ac_sys_release in
1353 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001354 AC_DEFINE(WITH_DYLD, 1,
1355 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1356 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1357 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001358 AC_MSG_RESULT(always on for Darwin)
1359 ;;
1360 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 AC_MSG_RESULT(no)
1362 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001363esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001364
Guido van Rossumac405f61994-09-12 10:56:06 +00001365# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001366AC_SUBST(SO)
1367AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001368AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001369AC_SUBST(CCSHARED)
1370AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001371# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001372# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001373AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001374if test -z "$SO"
1375then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001376 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001377 hp*|HP*)
1378 case `uname -m` in
1379 ia64) SO=.so;;
1380 *) SO=.sl;;
1381 esac
1382 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001383 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001384 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001385 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001386else
1387 # this might also be a termcap variable, see #610332
1388 echo
1389 echo '====================================================================='
1390 echo '+ +'
1391 echo '+ WARNING: You have set SO in your environment. +'
1392 echo '+ Do you really mean to change the extension for shared libraries? +'
1393 echo '+ Continuing in 10 seconds to let you to ponder. +'
1394 echo '+ +'
1395 echo '====================================================================='
1396 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001397fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001398AC_MSG_RESULT($SO)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001399AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001400# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001401# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001402# (Shared libraries in this instance are shared modules to be loaded into
1403# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001404AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001405if test -z "$LDSHARED"
1406then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001407 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001408 AIX*)
1409 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001410 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001411 ;;
1412 BeOS*)
1413 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001414 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001415 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001416 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001417 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001418 SunOS/5*)
1419 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001420 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001421 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001422 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001423 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001424 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001425 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001426 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1427 if test "$enable_framework" ; then
1428 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001429 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1430 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001431 else
1432 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001433 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001434 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001435 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001436 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1437 if test "$enable_framework" ; then
1438 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001439 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1440 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001441 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001442 # No framework, use the Python app as bundle-loader
1443 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001444 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001445 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001446 Darwin/*)
1447 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1448 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001449 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Thomas Wouters477c8d52006-05-27 19:21:47 +00001450 if test ${cur_target} '>' 10.2; then
1451 cur_target=10.3
1452 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001453 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Thomas Wouters477c8d52006-05-27 19:21:47 +00001454 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001455 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001456 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001457 if test "${enable_universalsdk}"; then
1458 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1459 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001460 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1461 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001462 else
1463 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1464 if test "$enable_framework" ; then
1465 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001466 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1467 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001468 else
1469 # No framework, use the Python app as bundle-loader
1470 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1471 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1472 fi
1473 fi
1474 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001475 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001476 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001477 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001478 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001479 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001480 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001481 else
1482 LDSHARED="ld -Bshareable ${LDFLAGS}"
1483 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001484 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001485 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001486 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001487 then LDSHARED='$(CC) -shared'
1488 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001489 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001490 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001491 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001492 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001493 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001494 *) LDSHARED="ld";;
1495 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001496fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001497AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001498BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001499# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001500# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001501AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001502if test -z "$CCSHARED"
1503then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001504 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001505 SunOS*) if test "$GCC" = yes;
1506 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001507 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001508 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001509 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001510 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001511 else CCSHARED="+z";
1512 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001513 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001514 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001515 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001516 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001517 if test "$GCC" = "yes"
1518 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001519 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001520 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001521 SCO_SV*)
1522 if test "$GCC" = "yes"
1523 then CCSHARED="-fPIC"
1524 else CCSHARED="-Kpic -belf"
1525 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001526 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001527 IRIX*/6*) case $CC in
1528 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001529 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001530 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001531 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001532 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001533fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001534AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001535# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001536# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001537AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001538if test -z "$LINKFORSHARED"
1539then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001540 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001541 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001542 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001543 LINKFORSHARED="-Wl,-E -Wl,+s";;
1544# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001545 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001546 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001547 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001548 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001549 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1550 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001551 # not used by the core itself but which needs to be in the core so
1552 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001553 # -prebind is no longer used, because it actually seems to give a
1554 # slowdown in stead of a speedup, maybe due to the large number of
1555 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001556
1557 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001558 if test "$enable_framework"
1559 then
Jack Jansenda49e192005-01-07 13:08:22 +00001560 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001561 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001562 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001563 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001564 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001565 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001566 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001567 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1568 then
1569 LINKFORSHARED="-Wl,--export-dynamic"
1570 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001571 SunOS/5*) case $CC in
1572 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001573 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001574 then
1575 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001576 fi;;
1577 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001578 CYGWIN*)
1579 if test $enable_shared = "no"
1580 then
1581 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1582 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001583 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001584fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001585AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001586
Neil Schemenauer61c51152001-01-26 16:18:16 +00001587AC_SUBST(CFLAGSFORSHARED)
1588AC_MSG_CHECKING(CFLAGSFORSHARED)
1589if test ! "$LIBRARY" = "$LDLIBRARY"
1590then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001591 case $ac_sys_system in
1592 CYGWIN*)
1593 # Cygwin needs CCSHARED when building extension DLLs
1594 # but not when building the interpreter DLL.
1595 CFLAGSFORSHARED='';;
1596 *)
1597 CFLAGSFORSHARED='$(CCSHARED)'
1598 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001599fi
1600AC_MSG_RESULT($CFLAGSFORSHARED)
1601
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001602# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1603# library (with --enable-shared).
1604# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001605# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1606# if it is not required, since it creates a dependency of the shared library
1607# to LIBS. This, in turn, means that applications linking the shared libpython
1608# don't need to link LIBS explicitly. The default should be only changed
1609# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001610AC_SUBST(SHLIBS)
1611AC_MSG_CHECKING(SHLIBS)
1612case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001613 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001614 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001615esac
1616AC_MSG_RESULT($SHLIBS)
1617
1618
Guido van Rossum627b2d71993-12-24 10:39:16 +00001619# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001620AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1621AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001622
1623# only check for sem_ini if thread support is requested
1624if test "$with_threads" = "yes" -o -z "$with_threads"; then
1625 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1626 # posix4 on Solaris 2.6
1627 # pthread (first!) on Linux
1628fi
1629
Martin v. Löwis19d17342003-06-14 21:03:05 +00001630# check if we need libintl for locale functions
1631AC_CHECK_LIB(intl, textdomain,
1632 AC_DEFINE(WITH_LIBINTL, 1,
1633 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001634
1635# checks for system dependent C++ extensions support
1636case "$ac_sys_system" in
1637 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1638 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1639 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001640 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1641 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1642 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001643 AC_MSG_RESULT(yes)],
1644 [AC_MSG_RESULT(no)]);;
1645 *) ;;
1646esac
1647
Guido van Rossum70c7f481998-03-26 18:44:10 +00001648# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001649# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001650AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001651AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001652
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001653case "$ac_sys_system" in
1654BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001655AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1656;;
1657esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001658
Guido van Rossumc5a39031996-07-31 17:35:03 +00001659AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001660AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001661 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1662[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001663AC_MSG_RESULT($withval)
1664LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001665],
1666[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001667
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001668# Check for use of the system libffi library
1669AC_MSG_CHECKING(for --with-system-ffi)
1670AC_ARG_WITH(system_ffi,
1671 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1672
1673if test -z "$with_system_ffi"
1674then with_system_ffi="no"
1675fi
1676AC_MSG_RESULT($with_system_ffi)
1677
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001678# Determine if signalmodule should be used.
1679AC_SUBST(USE_SIGNAL_MODULE)
1680AC_SUBST(SIGNAL_OBJS)
1681AC_MSG_CHECKING(for --with-signal-module)
1682AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001683 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001684
1685if test -z "$with_signal_module"
1686then with_signal_module="yes"
1687fi
1688AC_MSG_RESULT($with_signal_module)
1689
1690if test "${with_signal_module}" = "yes"; then
1691 USE_SIGNAL_MODULE=""
1692 SIGNAL_OBJS=""
1693else
1694 USE_SIGNAL_MODULE="#"
1695 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1696fi
1697
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001698# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001699AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001700USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001701
Guido van Rossum54d93d41997-01-22 20:51:58 +00001702AC_MSG_CHECKING(for --with-dec-threads)
1703AC_SUBST(LDLAST)
1704AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001705 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1706[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001707AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001708LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001709if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001710 with_thread="$withval";
1711fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001712[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001713
Martin v. Löwis11437992002-04-12 09:54:03 +00001714# Templates for things AC_DEFINEd more than once.
1715# For a single AC_DEFINE, no template is needed.
1716AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1717AH_TEMPLATE(_REENTRANT,
1718 [Define to force use of thread-safe errno, h_errno, and other functions])
1719AH_TEMPLATE(WITH_THREAD,
1720 [Define if you want to compile in rudimentary thread support])
1721
Guido van Rossum54d93d41997-01-22 20:51:58 +00001722AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001723dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001724AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001725 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001726
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001727# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001728dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001729AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001730 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1731 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001732
1733if test -z "$with_threads"
1734then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001735fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001736AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001737
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001738AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001739if test "$with_threads" = "no"
1740then
1741 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001742elif test "$ac_cv_pthread_is_default" = yes
1743then
1744 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001745 # Defining _REENTRANT on system with POSIX threads should not hurt.
1746 AC_DEFINE(_REENTRANT)
1747 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001748 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001749elif test "$ac_cv_kpthread" = "yes"
1750then
1751 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001752 if test "$ac_cv_cxx_thread" = "yes"; then
1753 CXX="$CXX -Kpthread"
1754 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001755 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001756 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001757 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001758elif test "$ac_cv_kthread" = "yes"
1759then
1760 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001761 if test "$ac_cv_cxx_thread" = "yes"; then
1762 CXX="$CXX -Kthread"
1763 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001764 AC_DEFINE(WITH_THREAD)
1765 posix_threads=yes
1766 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001767elif test "$ac_cv_pthread" = "yes"
1768then
1769 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001770 if test "$ac_cv_cxx_thread" = "yes"; then
1771 CXX="$CXX -pthread"
1772 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001773 AC_DEFINE(WITH_THREAD)
1774 posix_threads=yes
1775 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001776else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001777 if test ! -z "$with_threads" -a -d "$with_threads"
1778 then LDFLAGS="$LDFLAGS -L$with_threads"
1779 fi
1780 if test ! -z "$withval" -a -d "$withval"
1781 then LDFLAGS="$LDFLAGS -L$withval"
1782 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001783
1784 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001785 # define _POSIX_THREADS in unistd.h. Some apparently don't
1786 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001787 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1788 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001789 [
1790#include <unistd.h>
1791#ifdef _POSIX_THREADS
1792yes
1793#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001794 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1795 AC_MSG_RESULT($unistd_defines_pthreads)
1796
Martin v. Löwis130fb172001-07-19 11:00:41 +00001797 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001798 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1799 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001800 AC_DEFINE(HURD_C_THREADS, 1,
1801 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001802 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001803 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001804 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1805 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001806 AC_DEFINE(MACH_C_THREADS, 1,
1807 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001808 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001809 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001810 AC_ARG_WITH([pth],
1811 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1812 [AC_MSG_RESULT($withval)
1813 AC_DEFINE([WITH_THREAD])
1814 AC_DEFINE([HAVE_PTH], 1,
1815 [Define if you have GNU PTH threads.])
1816 LIBS="-lpth $LIBS"
1817 THREADOBJ="Python/thread.o"],
1818 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001819
1820 # Just looking for pthread_create in libpthread is not enough:
1821 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1822 # So we really have to include pthread.h, and then link.
1823 _libs=$LIBS
1824 LIBS="$LIBS -lpthread"
1825 AC_MSG_CHECKING([for pthread_create in -lpthread])
1826 AC_TRY_LINK([#include <pthread.h>
1827
1828void * start_routine (void *arg) { exit (0); }], [
1829pthread_create (NULL, NULL, start_routine, NULL)], [
1830 AC_MSG_RESULT(yes)
1831 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001832 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001833 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001834 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001836 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001837 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001838 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1839 AC_DEFINE(ATHEOS_THREADS, 1,
1840 [Define this if you have AtheOS threads.])
1841 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001842 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001843 AC_DEFINE(BEOS_THREADS, 1,
1844 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001845 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001846 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001847 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001848 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001849 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001850 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001851 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001852 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001853 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001854 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001855 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001856 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001857 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001858 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001859 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001860 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001861 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001862 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001863 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001864
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001865 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1866 LIBS="$LIBS -lmpc"
1867 THREADOBJ="Python/thread.o"
1868 USE_THREAD_MODULE=""])
1869
1870 if test "$posix_threads" != "yes"; then
1871 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1872 LIBS="$LIBS -lthread"
1873 THREADOBJ="Python/thread.o"
1874 USE_THREAD_MODULE=""])
1875 fi
1876
1877 if test "$USE_THREAD_MODULE" != "#"
1878 then
1879 # If the above checks didn't disable threads, (at least) OSF1
1880 # needs this '-threads' argument during linking.
1881 case $ac_sys_system in
1882 OSF1) LDLAST=-threads;;
1883 esac
1884 fi
1885fi
1886
1887if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001888 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001889 AC_DEFINE(_POSIX_THREADS, 1,
1890 [Define if you have POSIX threads,
1891 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001892 fi
1893
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001894 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1895 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001896 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1897 Defined for Solaris 2.6 bug in pthread header.)
1898 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001899 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001900 Define if the Posix semaphores do not work on your system)
1901 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001902 esac
1903
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001904 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1905 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1906 [AC_TRY_RUN([#include <pthread.h>
1907 void *foo(void *parm) {
1908 return NULL;
1909 }
1910 main() {
1911 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001912 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001913 if (pthread_attr_init(&attr)) exit(-1);
1914 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001915 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001916 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001917 }],
1918 ac_cv_pthread_system_supported=yes,
1919 ac_cv_pthread_system_supported=no,
1920 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001921 ])
1922 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1923 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001924 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001925 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001926 AC_CHECK_FUNCS(pthread_sigmask,
1927 [case $ac_sys_system in
1928 CYGWIN*)
1929 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1930 [Define if pthread_sigmask() does not work on your system.])
1931 ;;
1932 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001933fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001934
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001935
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001936# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001937AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001938AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001939AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001940[ --enable-ipv6 Enable ipv6 (with ipv4) support
1941 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001942[ case "$enableval" in
1943 no)
1944 AC_MSG_RESULT(no)
1945 ipv6=no
1946 ;;
1947 *) AC_MSG_RESULT(yes)
1948 AC_DEFINE(ENABLE_IPV6)
1949 ipv6=yes
1950 ;;
1951 esac ],
1952
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001953[
1954dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001955 AC_TRY_RUN([ /* AF_INET6 available check */
1956#include <sys/types.h>
1957#include <sys/socket.h>
1958main()
1959{
1960 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1961 exit(1);
1962 else
1963 exit(0);
1964}
1965],
1966 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001967 ipv6=yes,
1968 AC_MSG_RESULT(no)
1969 ipv6=no,
1970 AC_MSG_RESULT(no)
1971 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001972)
1973
1974if test "$ipv6" = "yes"; then
1975 AC_MSG_CHECKING(if RFC2553 API is available)
1976 AC_TRY_COMPILE([#include <sys/types.h>
1977#include <netinet/in.h>],
1978 [struct sockaddr_in6 x;
1979x.sin6_scope_id;],
1980 AC_MSG_RESULT(yes)
1981 ipv6=yes,
1982 AC_MSG_RESULT(no, IPv6 disabled)
1983 ipv6=no)
1984fi
1985
1986if test "$ipv6" = "yes"; then
1987 AC_DEFINE(ENABLE_IPV6)
1988fi
1989])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001990
1991ipv6type=unknown
1992ipv6lib=none
1993ipv6trylibc=no
1994
1995if test "$ipv6" = "yes"; then
1996 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001997 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1998 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001999 case $i in
2000 inria)
2001 dnl http://www.kame.net/
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 <netinet/in.h>
2004#ifdef IPV6_INRIA_VERSION
2005yes
2006#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002007 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002008 ;;
2009 kame)
2010 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002011 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002012#include <netinet/in.h>
2013#ifdef __KAME__
2014yes
2015#endif],
2016 [ipv6type=$i;
2017 ipv6lib=inet6
2018 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002019 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002020 ;;
2021 linux-glibc)
2022 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002023 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002024#include <features.h>
2025#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2026yes
2027#endif],
2028 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002029 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002030 ;;
2031 linux-inet6)
2032 dnl http://www.v6.linux.or.jp/
2033 if test -d /usr/inet6; then
2034 ipv6type=$i
2035 ipv6lib=inet6
2036 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002037 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002038 fi
2039 ;;
2040 solaris)
2041 if test -f /etc/netconfig; then
2042 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2043 ipv6type=$i
2044 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002045 fi
2046 fi
2047 ;;
2048 toshiba)
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 _TOSHIBA_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 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002059 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002060#include </usr/local/v6/include/sys/v6config.h>
2061#ifdef __V6D__
2062yes
2063#endif],
2064 [ipv6type=$i;
2065 ipv6lib=v6;
2066 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002067 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002068 ;;
2069 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002070 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002071#include <sys/param.h>
2072#ifdef _ZETA_MINAMI_INET6
2073yes
2074#endif],
2075 [ipv6type=$i;
2076 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002077 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002078 ;;
2079 esac
2080 if test "$ipv6type" != "unknown"; then
2081 break
2082 fi
2083 done
2084 AC_MSG_RESULT($ipv6type)
2085fi
2086
2087if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2088 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2089 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2090 echo "using lib$ipv6lib"
2091 else
2092 if test $ipv6trylibc = "yes"; then
2093 echo "using libc"
2094 else
2095 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2096 echo "You need to fetch lib$ipv6lib.a from appropriate"
2097 echo 'ipv6 kit and compile beforehand.'
2098 exit 1
2099 fi
2100 fi
2101fi
2102
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002103# Check for --with-doc-strings
2104AC_MSG_CHECKING(for --with-doc-strings)
2105AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002106 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002107
2108if test -z "$with_doc_strings"
2109then with_doc_strings="yes"
2110fi
2111if test "$with_doc_strings" != "no"
2112then
2113 AC_DEFINE(WITH_DOC_STRINGS, 1,
2114 [Define if you want documentation strings in extension modules])
2115fi
2116AC_MSG_RESULT($with_doc_strings)
2117
Neil Schemenauera35c6882001-02-27 04:45:05 +00002118# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002119AC_MSG_CHECKING(for --with-tsc)
2120AC_ARG_WITH(tsc,
2121[ --with(out)-tsc enable/disable timestamp counter profile], [
2122if test "$withval" != no
2123then
2124 AC_DEFINE(WITH_TSC, 1,
2125 [Define to profile with the Pentium timestamp counter])
2126 AC_MSG_RESULT(yes)
2127else AC_MSG_RESULT(no)
2128fi],
2129[AC_MSG_RESULT(no)])
2130
2131# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002132AC_MSG_CHECKING(for --with-pymalloc)
2133AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002134 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002135
2136if test -z "$with_pymalloc"
2137then with_pymalloc="yes"
2138fi
2139if test "$with_pymalloc" != "no"
2140then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002141 AC_DEFINE(WITH_PYMALLOC, 1,
2142 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002143fi
2144AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002145
Barry Warsawef82cd72000-06-30 16:21:01 +00002146# Check for --with-wctype-functions
2147AC_MSG_CHECKING(for --with-wctype-functions)
2148AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002149 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2150[
Barry Warsawef82cd72000-06-30 16:21:01 +00002151if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002152then
2153 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2154 [Define if you want wctype.h functions to be used instead of the
2155 one supplied by Python itself. (see Include/unicodectype.h).])
2156 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002157else AC_MSG_RESULT(no)
2158fi],
2159[AC_MSG_RESULT(no)])
2160
Guido van Rossum68242b51996-05-28 22:53:03 +00002161# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002162AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002163DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002164
Guido van Rossume97ee181999-12-20 21:27:22 +00002165# the dlopen() function means we might want to use dynload_shlib.o. some
2166# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002167AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002168
2169# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2170# loading of modules.
2171AC_SUBST(DYNLOADFILE)
2172AC_MSG_CHECKING(DYNLOADFILE)
2173if test -z "$DYNLOADFILE"
2174then
2175 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002176 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2177 if test "$ac_cv_func_dlopen" = yes
2178 then DYNLOADFILE="dynload_shlib.o"
2179 else DYNLOADFILE="dynload_aix.o"
2180 fi
2181 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002182 BeOS*) DYNLOADFILE="dynload_beos.o";;
2183 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002184 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2185 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002186 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002187 *)
2188 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2189 # out any dynamic loading
2190 if test "$ac_cv_func_dlopen" = yes
2191 then DYNLOADFILE="dynload_shlib.o"
2192 else DYNLOADFILE="dynload_stub.o"
2193 fi
2194 ;;
2195 esac
2196fi
2197AC_MSG_RESULT($DYNLOADFILE)
2198if test "$DYNLOADFILE" != "dynload_stub.o"
2199then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002200 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2201 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002202fi
2203
Jack Jansenc49e5b72001-06-19 15:00:23 +00002204# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2205
2206AC_SUBST(MACHDEP_OBJS)
2207AC_MSG_CHECKING(MACHDEP_OBJS)
2208if test -z "$MACHDEP_OBJS"
2209then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002210 MACHDEP_OBJS=$extra_machdep_objs
2211else
2212 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002213fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002214AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002215
Guido van Rossum627b2d71993-12-24 10:39:16 +00002216# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002217AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2218 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002219 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002220 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002221 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002222 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002223 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002224 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002225 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002226 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002227 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002228 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002229
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002230# For some functions, having a definition is not sufficient, since
2231# we want to take their address.
2232AC_MSG_CHECKING(for chroot)
2233AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2234 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2235 AC_MSG_RESULT(yes),
2236 AC_MSG_RESULT(no)
2237)
2238AC_MSG_CHECKING(for link)
2239AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2240 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2241 AC_MSG_RESULT(yes),
2242 AC_MSG_RESULT(no)
2243)
2244AC_MSG_CHECKING(for symlink)
2245AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2246 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2247 AC_MSG_RESULT(yes),
2248 AC_MSG_RESULT(no)
2249)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002250AC_MSG_CHECKING(for fchdir)
2251AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2252 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2253 AC_MSG_RESULT(yes),
2254 AC_MSG_RESULT(no)
2255)
2256AC_MSG_CHECKING(for fsync)
2257AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002258 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002259 AC_MSG_RESULT(yes),
2260 AC_MSG_RESULT(no)
2261)
2262AC_MSG_CHECKING(for fdatasync)
2263AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2264 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2265 AC_MSG_RESULT(yes),
2266 AC_MSG_RESULT(no)
2267)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002268
Martin v. Löwisd5843682002-11-21 20:41:28 +00002269# On some systems (eg. FreeBSD 5), we would find a definition of the
2270# functions ctermid_r, setgroups in the library, but no prototype
2271# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2272# address to avoid compiler warnings and potential miscompilations
2273# because of the missing prototypes.
2274
2275AC_MSG_CHECKING(for ctermid_r)
2276AC_TRY_COMPILE([
2277#include "confdefs.h"
2278#include <stdio.h>
2279], void* p = ctermid_r,
2280 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2281 AC_MSG_RESULT(yes),
2282 AC_MSG_RESULT(no)
2283)
2284
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002285AC_MSG_CHECKING(for flock)
2286AC_TRY_COMPILE([
2287#include "confdefs.h"
2288#include <sys/file.h>
2289], void* p = flock,
2290 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2291 AC_MSG_RESULT(yes),
2292 AC_MSG_RESULT(no)
2293)
2294
2295AC_MSG_CHECKING(for getpagesize)
2296AC_TRY_COMPILE([
2297#include "confdefs.h"
2298#include <unistd.h>
2299], void* p = getpagesize,
2300 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2301 AC_MSG_RESULT(yes),
2302 AC_MSG_RESULT(no)
2303)
2304
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002305dnl check for true
2306AC_CHECK_PROGS(TRUE, true, /bin/true)
2307
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002308dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2309dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002310AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002311 AC_CHECK_LIB(resolv, inet_aton)
2312)
2313
Martin v. Löwise9416172003-05-03 10:12:45 +00002314AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002315AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002316#include "confdefs.h"
2317#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002318], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002319 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2320 AC_MSG_RESULT(yes),
2321 AC_MSG_RESULT(no)
2322)
2323
2324AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002325AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002326#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002327#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002328#include <sys/socket.h>
2329#include <netinet/in.h>
2330#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002331], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002332 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2333 AC_MSG_RESULT(yes),
2334 AC_MSG_RESULT(no)
2335)
2336
2337AC_MSG_CHECKING(for inet_pton)
2338AC_TRY_COMPILE([
2339#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002340#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002341#include <sys/socket.h>
2342#include <netinet/in.h>
2343#include <arpa/inet.h>
2344], void* p = inet_pton,
2345 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2346 AC_MSG_RESULT(yes),
2347 AC_MSG_RESULT(no)
2348)
2349
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002350# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002351AC_MSG_CHECKING(for setgroups)
2352AC_TRY_COMPILE([
2353#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002354#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002355#ifdef HAVE_GRP_H
2356#include <grp.h>
2357#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002358],
2359void* p = setgroups,
2360 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2361 AC_MSG_RESULT(yes),
2362 AC_MSG_RESULT(no)
2363)
2364
Fred Drake8cef4cf2000-06-28 16:40:38 +00002365# check for openpty and forkpty
2366
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002367AC_CHECK_FUNCS(openpty,,
2368 AC_CHECK_LIB(util,openpty,
2369 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2370 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2371 )
2372)
2373AC_CHECK_FUNCS(forkpty,,
2374 AC_CHECK_LIB(util,forkpty,
2375 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2376 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2377 )
2378)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002379
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002380# check for long file support functions
2381AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2382
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002383AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002384AC_CHECK_FUNCS(getpgrp,
2385 AC_TRY_COMPILE([#include <unistd.h>],
2386 [getpgrp(0);],
2387 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2388 [Define if getpgrp() must be called as getpgrp(0).])
2389 )
2390)
Jack Jansen150753c2003-03-29 22:07:47 +00002391AC_CHECK_FUNCS(setpgrp,
2392 AC_TRY_COMPILE([#include <unistd.h>],
2393 [setpgrp(0,0);],
2394 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2395 [Define if setpgrp() must be called as setpgrp(0, 0).])
2396 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002397)
2398AC_CHECK_FUNCS(gettimeofday,
2399 AC_TRY_COMPILE([#include <sys/time.h>],
2400 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2401 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2402 [Define if gettimeofday() does not have second (timezone) argument
2403 This is the case on Motorola V4 (R40V4.2)])
2404 )
2405)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002406
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002407AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002408AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002409#if defined(MAJOR_IN_MKDEV)
2410#include <sys/mkdev.h>
2411#elif defined(MAJOR_IN_SYSMACROS)
2412#include <sys/sysmacros.h>
2413#else
2414#include <sys/types.h>
2415#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002416],[
2417 makedev(major(0),minor(0));
2418],[
2419 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2420 [Define to 1 if you have the device macros.])
2421 AC_MSG_RESULT(yes)
2422],[
2423 AC_MSG_RESULT(no)
2424])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002425
2426# On OSF/1 V5.1, getaddrinfo is available, but a define
2427# for [no]getaddrinfo in netdb.h.
2428AC_MSG_CHECKING(for getaddrinfo)
2429AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002430#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002431#include <sys/socket.h>
2432#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002433#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002434],[
2435getaddrinfo(NULL, NULL, NULL, NULL);
2436], [
2437AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002438AC_MSG_CHECKING(getaddrinfo bug)
2439AC_TRY_RUN([
2440#include <sys/types.h>
2441#include <netdb.h>
2442#include <string.h>
2443#include <sys/socket.h>
2444#include <netinet/in.h>
2445
2446main()
2447{
2448 int passive, gaierr, inet4 = 0, inet6 = 0;
2449 struct addrinfo hints, *ai, *aitop;
2450 char straddr[INET6_ADDRSTRLEN], strport[16];
2451
2452 for (passive = 0; passive <= 1; passive++) {
2453 memset(&hints, 0, sizeof(hints));
2454 hints.ai_family = AF_UNSPEC;
2455 hints.ai_flags = passive ? AI_PASSIVE : 0;
2456 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002457 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002458 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2459 (void)gai_strerror(gaierr);
2460 goto bad;
2461 }
2462 for (ai = aitop; ai; ai = ai->ai_next) {
2463 if (ai->ai_addr == NULL ||
2464 ai->ai_addrlen == 0 ||
2465 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2466 straddr, sizeof(straddr), strport, sizeof(strport),
2467 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2468 goto bad;
2469 }
2470 switch (ai->ai_family) {
2471 case AF_INET:
2472 if (strcmp(strport, "54321") != 0) {
2473 goto bad;
2474 }
2475 if (passive) {
2476 if (strcmp(straddr, "0.0.0.0") != 0) {
2477 goto bad;
2478 }
2479 } else {
2480 if (strcmp(straddr, "127.0.0.1") != 0) {
2481 goto bad;
2482 }
2483 }
2484 inet4++;
2485 break;
2486 case AF_INET6:
2487 if (strcmp(strport, "54321") != 0) {
2488 goto bad;
2489 }
2490 if (passive) {
2491 if (strcmp(straddr, "::") != 0) {
2492 goto bad;
2493 }
2494 } else {
2495 if (strcmp(straddr, "::1") != 0) {
2496 goto bad;
2497 }
2498 }
2499 inet6++;
2500 break;
2501 case AF_UNSPEC:
2502 goto bad;
2503 break;
2504 default:
2505 /* another family support? */
2506 break;
2507 }
2508 }
2509 }
2510
2511 if (!(inet4 == 0 || inet4 == 2))
2512 goto bad;
2513 if (!(inet6 == 0 || inet6 == 2))
2514 goto bad;
2515
2516 if (aitop)
2517 freeaddrinfo(aitop);
2518 exit(0);
2519
2520 bad:
2521 if (aitop)
2522 freeaddrinfo(aitop);
2523 exit(1);
2524}
2525],
2526AC_MSG_RESULT(good)
2527buggygetaddrinfo=no,
2528AC_MSG_RESULT(buggy)
2529buggygetaddrinfo=yes,
2530AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002531buggygetaddrinfo=yes)], [
2532AC_MSG_RESULT(no)
2533buggygetaddrinfo=yes
2534])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002535
2536if test "$buggygetaddrinfo" = "yes"; then
2537 if test "$ipv6" = "yes"; then
2538 echo 'Fatal: You must get working getaddrinfo() function.'
2539 echo ' or you can specify "--disable-ipv6"'.
2540 exit 1
2541 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002542else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002543 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002544fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002545AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002546
Guido van Rossum627b2d71993-12-24 10:39:16 +00002547# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002548AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002549AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002550AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002551AC_CHECK_MEMBERS([struct stat.st_rdev])
2552AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002553AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002554AC_CHECK_MEMBERS([struct stat.st_gen])
2555AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002556AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002557
2558AC_MSG_CHECKING(for time.h that defines altzone)
2559AC_CACHE_VAL(ac_cv_header_time_altzone,
2560[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2561 ac_cv_header_time_altzone=yes,
2562 ac_cv_header_time_altzone=no)])
2563AC_MSG_RESULT($ac_cv_header_time_altzone)
2564if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002565 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002566fi
2567
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002568was_it_defined=no
2569AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002570AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002571#include <sys/types.h>
2572#include <sys/select.h>
2573#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002574], [;], [
2575 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2576 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2577 (which you can't on SCO ODT 3.0).])
2578 was_it_defined=yes
2579])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002580AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002581
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002582AC_MSG_CHECKING(for addrinfo)
2583AC_CACHE_VAL(ac_cv_struct_addrinfo,
2584AC_TRY_COMPILE([
2585# include <netdb.h>],
2586 [struct addrinfo a],
2587 ac_cv_struct_addrinfo=yes,
2588 ac_cv_struct_addrinfo=no))
2589AC_MSG_RESULT($ac_cv_struct_addrinfo)
2590if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002591 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002592fi
2593
2594AC_MSG_CHECKING(for sockaddr_storage)
2595AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2596AC_TRY_COMPILE([
2597# include <sys/types.h>
2598# include <sys/socket.h>],
2599 [struct sockaddr_storage s],
2600 ac_cv_struct_sockaddr_storage=yes,
2601 ac_cv_struct_sockaddr_storage=no))
2602AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2603if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002604 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002605fi
2606
Guido van Rossum627b2d71993-12-24 10:39:16 +00002607# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002608
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002609AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002610AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002611
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002612works=no
2613AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002614AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2615 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2616)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002617AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002618
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002619works=no
2620AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002621AC_TRY_COMPILE([], [signed char c;], works=yes,
2622 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2623)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002624AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002625
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002626have_prototypes=no
2627AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002628AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2629 AC_DEFINE(HAVE_PROTOTYPES, 1,
2630 [Define if your compiler supports function prototype])
2631 have_prototypes=yes
2632])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002633AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002634
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002635works=no
2636AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002637AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002638#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002639int foo(int x, ...) {
2640 va_list va;
2641 va_start(va, x);
2642 va_arg(va, int);
2643 va_arg(va, char *);
2644 va_arg(va, double);
2645 return 0;
2646}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002647], [return foo(10, "", 3.14);], [
2648 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2649 [Define if your compiler supports variable length function prototypes
2650 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2651 works=yes
2652])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002653AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002654
Dave Cole331708b2004-08-09 04:51:41 +00002655# check for socketpair
2656AC_MSG_CHECKING(for socketpair)
2657AC_TRY_COMPILE([
2658#include <sys/types.h>
2659#include <sys/socket.h>
2660], void *x=socketpair,
2661 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2662 AC_MSG_RESULT(yes),
2663 AC_MSG_RESULT(no)
2664)
2665
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002666# check if sockaddr has sa_len member
2667AC_MSG_CHECKING(if sockaddr has sa_len member)
2668AC_TRY_COMPILE([#include <sys/types.h>
2669#include <sys/socket.h>],
2670[struct sockaddr x;
2671x.sa_len = 0;],
2672 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002673 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002674 AC_MSG_RESULT(no))
2675
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002676va_list_is_array=no
2677AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002678AC_TRY_COMPILE([
2679#ifdef HAVE_STDARG_PROTOTYPES
2680#include <stdarg.h>
2681#else
2682#include <varargs.h>
2683#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002684], [va_list list1, list2; list1 = list2;], , [
2685 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2686 va_list_is_array=yes
2687])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002688AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002689
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002690# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002691AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2692 [Define this if you have some version of gethostbyname_r()])
2693
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002694AC_CHECK_FUNC(gethostbyname_r, [
2695 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2696 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2697 OLD_CFLAGS=$CFLAGS
2698 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2699 AC_TRY_COMPILE([
2700# include <netdb.h>
2701 ], [
2702 char *name;
2703 struct hostent *he, *res;
2704 char buffer[2048];
2705 int buflen = 2048;
2706 int h_errnop;
2707
2708 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2709 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002710 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002711 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2712 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002713 AC_MSG_RESULT(yes)
2714 ], [
2715 AC_MSG_RESULT(no)
2716 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2717 AC_TRY_COMPILE([
2718# include <netdb.h>
2719 ], [
2720 char *name;
2721 struct hostent *he;
2722 char buffer[2048];
2723 int buflen = 2048;
2724 int h_errnop;
2725
2726 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2727 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002728 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002729 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2730 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002731 AC_MSG_RESULT(yes)
2732 ], [
2733 AC_MSG_RESULT(no)
2734 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2735 AC_TRY_COMPILE([
2736# include <netdb.h>
2737 ], [
2738 char *name;
2739 struct hostent *he;
2740 struct hostent_data data;
2741
2742 (void) gethostbyname_r(name, he, &data);
2743 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002744 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002745 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2746 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002747 AC_MSG_RESULT(yes)
2748 ], [
2749 AC_MSG_RESULT(no)
2750 ])
2751 ])
2752 ])
2753 CFLAGS=$OLD_CFLAGS
2754], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002755 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002756])
2757AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2758AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2759AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002760AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002761AC_SUBST(HAVE_GETHOSTBYNAME)
2762
Guido van Rossum627b2d71993-12-24 10:39:16 +00002763# checks for system services
2764# (none yet)
2765
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002766# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002767AC_CHECK_FUNC(__fpu_control,
2768 [],
2769 [AC_CHECK_LIB(ieee, __fpu_control)
2770])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002771
Guido van Rossum93274221997-05-09 02:42:00 +00002772# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002773AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002774AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002775 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2776[
Guido van Rossum93274221997-05-09 02:42:00 +00002777if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002778then
2779 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2780 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2781 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002782else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002783fi],
2784[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002785
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002786# check for --with-libm=...
2787AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002788case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002789Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002790BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002791*) LIBM=-lm
2792esac
Guido van Rossum93274221997-05-09 02:42:00 +00002793AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002794AC_ARG_WITH(libm,
2795 AC_HELP_STRING(--with-libm=STRING, math library),
2796[
Guido van Rossum93274221997-05-09 02:42:00 +00002797if test "$withval" = no
2798then LIBM=
2799 AC_MSG_RESULT(force LIBM empty)
2800elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002801then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002802 AC_MSG_RESULT(set LIBM="$withval")
2803else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002804fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002805[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002806
2807# check for --with-libc=...
2808AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002809AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002810AC_ARG_WITH(libc,
2811 AC_HELP_STRING(--with-libc=STRING, C library),
2812[
Guido van Rossum93274221997-05-09 02:42:00 +00002813if test "$withval" = no
2814then LIBC=
2815 AC_MSG_RESULT(force LIBC empty)
2816elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002817then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002818 AC_MSG_RESULT(set LIBC="$withval")
2819else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002820fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002821[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002822
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002823# check for hypot() in math library
2824LIBS_SAVE=$LIBS
2825LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002826AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002827LIBS=$LIBS_SAVE
2828
Guido van Rossumef2255b2000-03-10 22:30:29 +00002829# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002830AC_CHECK_HEADER(wchar.h, [
2831 AC_DEFINE(HAVE_WCHAR_H, 1,
2832 [Define if the compiler provides a wchar.h header file.])
2833 wchar_h="yes"
2834],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002835wchar_h="no"
2836)
2837
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002838# determine wchar_t size
2839if test "$wchar_h" = yes
2840then
Guido van Rossum67b26592001-10-20 14:21:45 +00002841 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002842fi
2843
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002844AC_MSG_CHECKING(for UCS-4 tcl)
2845have_ucs4_tcl=no
2846AC_TRY_COMPILE([
2847#include <tcl.h>
2848#if TCL_UTF_MAX != 6
2849# error "NOT UCS4_TCL"
2850#endif], [], [
2851 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2852 have_ucs4_tcl=yes
2853])
2854AC_MSG_RESULT($have_ucs4_tcl)
2855
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002856# check whether wchar_t is signed or not
2857if test "$wchar_h" = yes
2858then
2859 # check whether wchar_t is signed or not
2860 AC_MSG_CHECKING(whether wchar_t is signed)
2861 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2862 AC_TRY_RUN([
2863 #include <wchar.h>
2864 int main()
2865 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002866 /* Success: exit code 0 */
2867 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002868 }
2869 ],
2870 ac_cv_wchar_t_signed=yes,
2871 ac_cv_wchar_t_signed=no,
2872 ac_cv_wchar_t_signed=yes)])
2873 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2874fi
2875
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002876AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002877dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002878AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002879 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2880 [],
2881 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002882
2883if test $enable_unicode = yes
2884then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002885 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002886 case "$have_ucs4_tcl" in
2887 yes) enable_unicode="ucs4"
2888 ;;
2889 *) enable_unicode="ucs2"
2890 ;;
2891 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002892fi
2893
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002894AH_TEMPLATE(Py_UNICODE_SIZE,
2895 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002896case "$enable_unicode" in
2897ucs2) unicode_size="2"
2898 AC_DEFINE(Py_UNICODE_SIZE,2)
2899 ;;
2900ucs4) unicode_size="4"
2901 AC_DEFINE(Py_UNICODE_SIZE,4)
2902 ;;
2903esac
2904
Martin v. Löwis11437992002-04-12 09:54:03 +00002905AH_TEMPLATE(PY_UNICODE_TYPE,
2906 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002907
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002908AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002909if test "$enable_unicode" = "no"
2910then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002911 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002912 AC_MSG_RESULT(not used)
2913else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002914 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002915 AC_DEFINE(Py_USING_UNICODE, 1,
2916 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002917
2918 # wchar_t is only usable if it maps to an unsigned type
2919 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002920 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002921 then
2922 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002923 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2924 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002925 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002926 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002927 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2928 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2929 then
2930 PY_UNICODE_TYPE="unsigned short"
2931 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2932 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2933 then
2934 PY_UNICODE_TYPE="unsigned long"
2935 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2936 else
2937 PY_UNICODE_TYPE="no type found"
2938 fi
2939 AC_MSG_RESULT($PY_UNICODE_TYPE)
2940fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002941
2942# check for endianness
2943AC_C_BIGENDIAN
Thomas Wouters477c8d52006-05-27 19:21:47 +00002944AH_VERBATIM([WORDS_BIGENDIAN],
2945[
2946 /* Define to 1 if your processor stores words with the most significant byte
2947 first (like Motorola and SPARC, unlike Intel and VAX).
2948
2949 The block below does compile-time checking for endianness on platforms
2950 that use GCC and therefore allows compiling fat binaries on OSX by using
2951 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
2952 such that the configure-result is used on systems that don't use GCC.
2953 */
2954#ifdef __BIG_ENDIAN__
2955#define WORDS_BIGENDIAN 1
2956#else
2957#ifndef __LITTLE_ENDIAN__
2958#undef WORDS_BIGENDIAN
2959#endif
2960#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00002961
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002962# Check whether right shifting a negative integer extends the sign bit
2963# or fills with zeros (like the Cray J90, according to Tim Peters).
2964AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002965AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002966AC_TRY_RUN([
2967int main()
2968{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002969 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002970}
Guido van Rossum3065c942001-09-17 04:03:14 +00002971],
2972ac_cv_rshift_extends_sign=yes,
2973ac_cv_rshift_extends_sign=no,
2974ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002975AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2976if test "$ac_cv_rshift_extends_sign" = no
2977then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002978 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2979 [Define if i>>j for signed int i does not extend the sign bit
2980 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002981fi
2982
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002983# check for getc_unlocked and related locking functions
2984AC_MSG_CHECKING(for getc_unlocked() and friends)
2985AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2986AC_TRY_LINK([#include <stdio.h>],[
2987 FILE *f = fopen("/dev/null", "r");
2988 flockfile(f);
2989 getc_unlocked(f);
2990 funlockfile(f);
2991], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2992AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2993if test "$ac_cv_have_getc_unlocked" = yes
2994then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002995 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2996 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002997fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002998
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002999# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003000# save the value of LIBS so we don't actually link Python with readline
3001LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003002AC_CHECK_LIB(readline, readline)
3003if test "$ac_cv_have_readline_readline" = no
3004then
3005 AC_CHECK_LIB(termcap, readline)
3006fi
3007
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003008# check for readline 2.1
3009AC_CHECK_LIB(readline, rl_callback_handler_install,
3010 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003011 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003012
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003013# check for readline 2.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_completion_append_character;],
3019 [readline/readline.h],
3020 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3021 [Define if you have readline 2.2]), )
3022fi
3023
Martin v. Löwis0daad592001-09-30 21:09:59 +00003024# check for readline 4.0
3025AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003026 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003027 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003028
Guido van Rossum353ae582001-07-10 16:45:32 +00003029# check for readline 4.2
3030AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003031 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003032 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003033
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003034# also in readline 4.2
3035AC_TRY_CPP([#include <readline/readline.h>],
3036have_readline=yes, have_readline=no)
3037if test $have_readline = yes
3038then
3039 AC_EGREP_HEADER([extern int rl_catch_signals;],
3040 [readline/readline.h],
3041 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3042 [Define if you can turn off readline's signal handling.]), )
3043fi
3044
Martin v. Löwis82bca632006-02-10 20:49:30 +00003045# End of readline checks: restore LIBS
3046LIBS=$LIBS_no_readline
3047
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003048AC_MSG_CHECKING(for broken nice())
3049AC_CACHE_VAL(ac_cv_broken_nice, [
3050AC_TRY_RUN([
3051int main()
3052{
3053 int val1 = nice(1);
3054 if (val1 != -1 && val1 == nice(2))
3055 exit(0);
3056 exit(1);
3057}
Guido van Rossum3065c942001-09-17 04:03:14 +00003058],
3059ac_cv_broken_nice=yes,
3060ac_cv_broken_nice=no,
3061ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003062AC_MSG_RESULT($ac_cv_broken_nice)
3063if test "$ac_cv_broken_nice" = yes
3064then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003065 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3066 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003067fi
3068
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003069AC_MSG_CHECKING(for broken poll())
3070AC_TRY_RUN([
3071#include <poll.h>
3072
3073int main (void)
3074 {
3075 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3076
3077 close (42);
3078
3079 int poll_test = poll (&poll_struct, 1, 0);
3080
3081 if (poll_test < 0)
3082 {
3083 exit(0);
3084 }
3085 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3086 {
3087 exit(0);
3088 }
3089 else
3090 {
3091 exit(1);
3092 }
3093 }
3094],
3095ac_cv_broken_poll=yes,
3096ac_cv_broken_poll=no,
3097ac_cv_broken_poll=no)
3098AC_MSG_RESULT($ac_cv_broken_poll)
3099if test "$ac_cv_broken_poll" = yes
3100then
3101 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3102 [Define if poll() sets errno on invalid file descriptors.])
3103fi
3104
Brett Cannon43802422005-02-10 20:48:03 +00003105# Before we can test tzset, we need to check if struct tm has a tm_zone
3106# (which is not required by ISO C or UNIX spec) and/or if we support
3107# tzname[]
3108AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003109
Brett Cannon43802422005-02-10 20:48:03 +00003110# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003111AC_MSG_CHECKING(for working tzset())
3112AC_CACHE_VAL(ac_cv_working_tzset, [
3113AC_TRY_RUN([
3114#include <stdlib.h>
3115#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003116#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003117
3118#if HAVE_TZNAME
3119extern char *tzname[];
3120#endif
3121
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003122int main()
3123{
Brett Cannon18367812003-09-19 00:59:16 +00003124 /* Note that we need to ensure that not only does tzset(3)
3125 do 'something' with localtime, but it works as documented
3126 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003127 This includes making sure that tzname is set properly if
3128 tm->tm_zone does not exist since it is the alternative way
3129 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003130
3131 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003132 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003133 */
3134
Brett Cannon43802422005-02-10 20:48:03 +00003135 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003136 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3137
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003138 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003139 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003140 if (localtime(&groundhogday)->tm_hour != 0)
3141 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003142#if HAVE_TZNAME
3143 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3144 if (strcmp(tzname[0], "UTC") ||
3145 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3146 exit(1);
3147#endif
Brett Cannon18367812003-09-19 00:59:16 +00003148
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003149 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003150 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003151 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003152 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003153#if HAVE_TZNAME
3154 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3155 exit(1);
3156#endif
Brett Cannon18367812003-09-19 00:59:16 +00003157
3158 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3159 tzset();
3160 if (localtime(&groundhogday)->tm_hour != 11)
3161 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003162#if HAVE_TZNAME
3163 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3164 exit(1);
3165#endif
3166
3167#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003168 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3169 exit(1);
3170 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3171 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003172#endif
Brett Cannon18367812003-09-19 00:59:16 +00003173
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003174 exit(0);
3175}
3176],
3177ac_cv_working_tzset=yes,
3178ac_cv_working_tzset=no,
3179ac_cv_working_tzset=no)])
3180AC_MSG_RESULT($ac_cv_working_tzset)
3181if test "$ac_cv_working_tzset" = yes
3182then
3183 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3184 [Define if tzset() actually switches the local timezone in a meaningful way.])
3185fi
3186
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003187# Look for subsecond timestamps in struct stat
3188AC_MSG_CHECKING(for tv_nsec in struct stat)
3189AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3190AC_TRY_COMPILE([#include <sys/stat.h>], [
3191struct stat st;
3192st.st_mtim.tv_nsec = 1;
3193],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003194ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003195ac_cv_stat_tv_nsec=no,
3196ac_cv_stat_tv_nsec=no))
3197AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3198if test "$ac_cv_stat_tv_nsec" = yes
3199then
3200 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3201 [Define if you have struct stat.st_mtim.tv_nsec])
3202fi
3203
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003204# Look for BSD style subsecond timestamps in struct stat
3205AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3206AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3207AC_TRY_COMPILE([#include <sys/stat.h>], [
3208struct stat st;
3209st.st_mtimespec.tv_nsec = 1;
3210],
3211ac_cv_stat_tv_nsec2=yes,
3212ac_cv_stat_tv_nsec2=no,
3213ac_cv_stat_tv_nsec2=no))
3214AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3215if test "$ac_cv_stat_tv_nsec2" = yes
3216then
3217 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3218 [Define if you have struct stat.st_mtimensec])
3219fi
3220
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003221# On HP/UX 11.0, mvwdelch is a block with a return statement
3222AC_MSG_CHECKING(whether mvwdelch is an expression)
3223AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3224AC_TRY_COMPILE([#include <curses.h>], [
3225 int rtn;
3226 rtn = mvwdelch(0,0,0);
3227], ac_cv_mvwdelch_is_expression=yes,
3228 ac_cv_mvwdelch_is_expression=no,
3229 ac_cv_mvwdelch_is_expression=yes))
3230AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3231
3232if test "$ac_cv_mvwdelch_is_expression" = yes
3233then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003234 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3235 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003236fi
3237
3238AC_MSG_CHECKING(whether WINDOW has _flags)
3239AC_CACHE_VAL(ac_cv_window_has_flags,
3240AC_TRY_COMPILE([#include <curses.h>], [
3241 WINDOW *w;
3242 w->_flags = 0;
3243], ac_cv_window_has_flags=yes,
3244 ac_cv_window_has_flags=no,
3245 ac_cv_window_has_flags=no))
3246AC_MSG_RESULT($ac_cv_window_has_flags)
3247
3248
3249if test "$ac_cv_window_has_flags" = yes
3250then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003251 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3252 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003253fi
3254
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003255AC_MSG_CHECKING(for /dev/ptmx)
3256
3257if test -e /dev/ptmx
3258then
3259 AC_MSG_RESULT(yes)
3260 AC_DEFINE(HAVE_DEV_PTMX, 1,
3261 [Define if we have /dev/ptmx.])
3262else
3263 AC_MSG_RESULT(no)
3264fi
3265
Neal Norwitz865400f2003-03-21 01:42:58 +00003266AC_MSG_CHECKING(for /dev/ptc)
3267
3268if test -e /dev/ptc
3269then
3270 AC_MSG_RESULT(yes)
3271 AC_DEFINE(HAVE_DEV_PTC, 1,
3272 [Define if we have /dev/ptc.])
3273else
3274 AC_MSG_RESULT(no)
3275fi
3276
Thomas Wouters477c8d52006-05-27 19:21:47 +00003277AC_MSG_CHECKING(for %zd printf() format support)
3278AC_TRY_RUN([#include <stdio.h>
3279#include <stddef.h>
3280#include <string.h>
3281
3282int main()
3283{
3284 char buffer[4];
3285
3286 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3287 return 1;
3288
3289 if (strncmp(buffer, "123", 3))
3290 return 1;
3291
3292 return 0;
3293}],
3294[AC_MSG_RESULT(yes)
3295 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3296 AC_MSG_RESULT(no))
3297
Martin v. Löwis01c04012002-11-11 14:58:44 +00003298AC_CHECK_TYPE(socklen_t,,
3299 AC_DEFINE(socklen_t,int,
3300 Define to `int' if <sys/socket.h> does not define.),[
3301#ifdef HAVE_SYS_TYPES_H
3302#include <sys/types.h>
3303#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003304#ifdef HAVE_SYS_SOCKET_H
3305#include <sys/socket.h>
3306#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003307])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003308
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003309AC_SUBST(THREADHEADERS)
3310
3311for h in `(cd $srcdir;echo Python/thread_*.h)`
3312do
3313 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3314done
3315
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003316AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003317SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003318AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003319for dir in $SRCDIRS; do
3320 if test ! -d $dir; then
3321 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003322 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003323done
3324AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003325
Guido van Rossum627b2d71993-12-24 10:39:16 +00003326# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003327AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3328AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003329
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003330echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003331if test ! -f Modules/Setup
3332then
3333 cp $srcdir/Modules/Setup.dist Modules/Setup
3334fi
3335
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003336echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003337if test ! -f Modules/Setup.local
3338then
3339 echo "# Edit this file for local setup changes" >Modules/Setup.local
3340fi
3341
3342echo "creating Makefile"
3343$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3344 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003345 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003346mv config.c Modules