blob: 3f164571c5c6f9266fee4ea6cc32524ae7fb4c46 [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)
4m4_define(PYTHON_VERSION, 2.3)
5
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_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öwis11437992002-04-12 09:54:03 +000012# This is for stuff that absolutely must end up in pyconfig.h.
13# 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
Guido van Rossum642b6781997-07-19 19:35:41 +000027AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000028VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000029
Martin v. Löwis1142de32002-03-29 16:28:31 +000030AC_SUBST(SOVERSION)
31SOVERSION=1.0
32
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000033# The later defininition of _XOPEN_SOURCE disables certain features
34# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
35AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
36
Martin v. Löwisbcd93962003-05-03 10:32:18 +000037# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
38# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
39# them.
40AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
41
Martin v. Löwise981a4e2002-11-11 13:26:51 +000042define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000043
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000044# Arguments passed to configure.
45AC_SUBST(CONFIG_ARGS)
46CONFIG_ARGS="$ac_configure_args"
47
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000048dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000049AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000050 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
51[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000052 case $enableval in
53 yes)
54 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000055 esac
56 case $enableval in
57 no)
58 PYTHONFRAMEWORK=
59 PYTHONFRAMEWORKDIR=no-framework
60 PYTHONFRAMEWORKPREFIX=
61 PYTHONFRAMEWORKINSTALLDIR=
62 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000063 ;;
64 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000065 PYTHONFRAMEWORK=Python
66 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000067 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000068 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
69 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000070 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000071 ],[
72 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000073 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 PYTHONFRAMEWORKPREFIX=
75 PYTHONFRAMEWORKINSTALLDIR=
76 enable_framework=
77])
78AC_SUBST(PYTHONFRAMEWORK)
79AC_SUBST(PYTHONFRAMEWORKDIR)
80AC_SUBST(PYTHONFRAMEWORKPREFIX)
81AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000082
Jack Jansenb6e9cad2001-08-15 01:26:28 +000083##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000084## AC_HELP_STRING(--with-dyld,
85## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000086##
Guido van Rossumb418f891996-07-30 18:06:02 +000087# Set name for machine-dependent library files
88AC_SUBST(MACHDEP)
89AC_MSG_CHECKING(MACHDEP)
90if test -z "$MACHDEP"
91then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000092 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +000093 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
94 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000095 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +000096 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +000097 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +000098 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +000099 ac_md_system=`echo $ac_sys_system |
100 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
101 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000102 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000103 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000104
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000105 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000106 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000107 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000108 atheos*) MACHDEP="atheos";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000109 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000110 esac
111fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000112
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000113# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
114# disable features if it is defined, without any means to access these
115# features as extensions. For these systems, we skip the definition of
116# _XOPEN_SOURCE. Before adding a system to the list to gain access to
117# some feature, make sure there is no alternative way to access this
118# feature. Also, when using wildcards, make sure you have verified the
119# need for not defining _XOPEN_SOURCE on all systems matching the
120# wildcard, and that the wildcard does not include future systems
121# (which may remove their limitations).
122dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
123case $ac_sys_system/$ac_sys_release in
124 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
125 # even though select is a POSIX function. Reported by J. Ribbens.
126 OpenBSD/2.* | OpenBSD/3.@<:@012@:>@)
127 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000128 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
129 # of union __?sigval. Reported by Stuart Bishop.
130 SunOS/5.6)
131 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000132 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
133 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
134 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-3@:>@)
135 define_xopen_source=no;;
136 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000137 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000138 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000139 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000140esac
141
142if test $define_xopen_source = yes
143then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000144 AC_DEFINE(_XOPEN_SOURCE, 600,
145 Define to the level of X/Open that your system supports)
146
147 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
148 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
149 # several APIs are not declared. Since this is also needed in some
150 # cases for HP-UX, we define it globally.
151
152 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
153 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
154
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000155fi
156
Guido van Rossum91922671997-10-09 20:24:13 +0000157#
158# SGI compilers allow the specification of the both the ABI and the
159# ISA on the command line. Depending on the values of these switches,
160# different and often incompatable code will be generated.
161#
162# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
163# thus supply support for various ABI/ISA combinations. The MACHDEP
164# variable is also adjusted.
165#
166AC_SUBST(SGI_ABI)
167if test ! -z "$SGI_ABI"
168then
169 CC="cc $SGI_ABI"
170 LDFLAGS="$SGI_ABI $LDFLAGS"
171 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
172fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000173AC_MSG_RESULT($MACHDEP)
174
Jack Jansen83f898c2002-12-30 22:23:40 +0000175# And add extra plat-mac for darwin
176AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000177AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000178AC_MSG_CHECKING(EXTRAPLATDIR)
179if test -z "$EXTRAPLATDIR"
180then
181 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000182 darwin)
183 EXTRAPLATDIR="\$(PLATMACDIRS)"
184 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
185 ;;
186 *)
187 EXTRAPLATDIR=""
188 EXTRAMACHDEPPATH=""
189 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000190 esac
191fi
192AC_MSG_RESULT($EXTRAPLATDIR)
193
Guido van Rossum627b2d71993-12-24 10:39:16 +0000194# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000195
196# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
197# for debug/optimization stuff. BASECFLAGS is for flags that are required
198# just to get things to compile and link. Users are free to override OPT
199# when running configure or make. The build should not break if they do.
200# BASECFLAGS should generally not be messed with, however.
201
202# XXX shouldn't some/most/all of this code be merged with the stuff later
203# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000204AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000205AC_ARG_WITH(gcc,
206 AC_HELP_STRING(--without-gcc,never use gcc),
207[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000208 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000209 no) CC=cc
210 without_gcc=yes;;
211 yes) CC=gcc
212 without_gcc=no;;
213 *) CC=$withval
214 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000215 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000216 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000217 AIX*) CC=cc_r
218 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000219 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000220 case $BE_HOST_CPU in
221 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000222 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000223 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000224 BASECFLAGS="$BASECFLAGS -export pragma"
225 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000226 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000227 ;;
228 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000229 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000230 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000231 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000232 ;;
233 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000234 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000235 ;;
236 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000237 AR="\$(srcdir)/Modules/ar_beos"
238 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000239 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000240 Monterey*)
241 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000242 without_gcc=;;
243 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000244 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000245AC_MSG_RESULT($without_gcc)
246
Guido van Rossum27552902001-01-23 01:52:26 +0000247AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000248AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000249MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000250AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000251AC_ARG_WITH(cxx,
252 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
253[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000254 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000255 case $withval in
256 no) CXX=
257 with_cxx=no;;
258 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000259 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000260 with_cxx=$withval;;
261 esac], [
262 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000263 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000264])
265AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000266
Michael W. Hudson54241132001-12-07 15:38:26 +0000267if test "$with_cxx" = "yes"
268then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000269 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000270fi
271
Martin v. Löwis537970f2000-12-13 17:37:02 +0000272dnl The following fragment works similar to AC_PROG_CXX.
273dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000274dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000275dnl Finally, it does not test whether CXX is g++.
276
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000277dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
278ifdef([AC_PROG_CXX_WORKS],[],
279 [AC_DEFUN([AC_PROG_CXX_WORKS],
280 [AC_LANG_PUSH(C++)dnl
281 _AC_COMPILER_EXEEXT
282 AC_LANG_POP()
283 ]
284)])
285
Martin v. Löwis537970f2000-12-13 17:37:02 +0000286if test "$check_cxx" = "yes"
287then
288 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
289 if test "$CXX" = "notfound"
290 then
291 CXX=
292 else
293 AC_PROG_CXX_WORKS
294 fi
295fi
296
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000297# If the user switches compilers, we can't believe the cache
298if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
299then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000300 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
301(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000302fi
303
Guido van Rossum627b2d71993-12-24 10:39:16 +0000304AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000305
306# checks for UNIX variants that set C preprocessor variables
307AC_AIX
308AC_MINIX
309
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000310# Check for unsupported systems
311case $ac_sys_system/$ac_sys_release in
312SunOS/4*|DYNIX/*|dgux*/*|IRIX/4*|Linux*/1*)
313 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
314 echo See README for details.
315 exit 1;;
316esac
317
318if test "$MINIX" = yes; then
319 echo This system \(MINIX\) is no longer supported.
320 echo Read README for details.
321 exit 1
322fi
323
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000324AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000325AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000326AC_ARG_WITH(suffix,
327 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
328[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000329 case $withval in
330 no) EXEEXT=;;
331 yes) EXEEXT=.exe;;
332 *) EXEEXT=$withval;;
333 esac])
334AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000335
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000336# Test whether we're running on a non-case-sensitive system, in which
337# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000338AC_SUBST(BUILDEXEEXT)
339AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000340if test ! -d CaseSensitiveTestDir; then
341mkdir CaseSensitiveTestDir
342fi
343
344if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000345then
Jack Jansen1999ef42001-12-06 21:47:20 +0000346 AC_MSG_RESULT(yes)
347 BUILDEXEEXT=.exe
348else
349 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000350 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000351fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000352rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000353
Guido van Rossumdd997f71998-10-07 19:58:26 +0000354case $MACHDEP in
355bsdos*)
356 case $CC in
357 gcc) CC="$CC -D_HAVE_BSDI";;
358 esac;;
359esac
360
Guido van Rossum84561611997-08-21 00:08:11 +0000361case $ac_sys_system in
362hp*|HP*)
363 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000364 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000365 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000366Monterey*)
367 case $CC in
368 cc) CC="$CC -Wl,-Bexport";;
369 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000370SunOS*)
371 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000372 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000373 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000374esac
375
Martin v. Löwise8964d42001-03-06 12:09:07 +0000376
Neil Schemenauer61c51152001-01-26 16:18:16 +0000377AC_SUBST(LIBRARY)
378AC_MSG_CHECKING(LIBRARY)
379if test -z "$LIBRARY"
380then
381 LIBRARY='libpython$(VERSION).a'
382fi
383AC_MSG_RESULT($LIBRARY)
384
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000385# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000386# name of the library into which to insert object files). BLDLIBRARY is also
387# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
388# is blank as the main program is not linked directly against LDLIBRARY.
389# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
390# systems without shared libraries, LDLIBRARY is the same as LIBRARY
391# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
392# DLLLIBRARY is the shared (i.e., DLL) library.
393#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000394# RUNSHARED is used to run shared python without installed libraries
395#
396# INSTSONAME is the name of the shared library that will be use to install
397# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000398AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000399AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000400AC_SUBST(BLDLIBRARY)
401AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000402AC_SUBST(INSTSONAME)
403AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000404LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000405BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000406INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000407DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000408LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000409RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000410
Guido van Rossumfb842551997-08-06 23:42:07 +0000411# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000412# If CXX is set, and if it is needed to link a main function that was
413# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
414# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000415# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000416# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000417AC_SUBST(LINKCC)
418AC_MSG_CHECKING(LINKCC)
419if test -z "$LINKCC"
420then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000421 if test -z "$CXX"; then
422 LINKCC="\$(PURIFY) \$(CC)"
423 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000424 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000425 $CXX -c conftest.$ac_ext 2>&5
426 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
427 && test -s conftest$ac_exeext && ./conftest$ac_exeext
428 then
429 LINKCC="\$(PURIFY) \$(CC)"
430 else
431 LINKCC="\$(PURIFY) \$(CXX)"
432 fi
433 rm -fr conftest*
434 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000435 case $ac_sys_system in
436 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000437 exp_extra="\"\""
438 if test $ac_sys_release -ge 5 -o \
439 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
440 exp_extra="."
441 fi
442 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000443 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000444 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000445 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000446 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000447 esac
448fi
449AC_MSG_RESULT($LINKCC)
450
Martin v. Löwis1142de32002-03-29 16:28:31 +0000451AC_MSG_CHECKING(for --enable-shared)
452AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000453 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000454
Martin v. Löwis1142de32002-03-29 16:28:31 +0000455if test -z "$enable_shared"
456then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000457 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000458 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000459 enable_shared="yes";;
460 *)
461 enable_shared="no";;
462 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000463fi
464AC_MSG_RESULT($enable_shared)
465
466
467AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000468
Guido van Rossumb8552162001-09-05 14:58:11 +0000469# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
470# library that we build, but we do not want to link against it (we
471# will find it with a -framework option). For this reason there is an
472# extra variable BLDLIBRARY against which Python and the extension
473# modules are linked, BLDLIBRARY. This is normally the same as
474# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000475if test "$enable_framework"
476then
477 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
478 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
479 BLDLIBRARY=''
480else
481 BLDLIBRARY='$(LDLIBRARY)'
482fi
483
Martin v. Löwis1142de32002-03-29 16:28:31 +0000484# Other platforms follow
485if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000486 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000487 case $ac_sys_system in
488 BeOS*)
489 LDLIBRARY='libpython$(VERSION).so'
490 ;;
491 CYGWIN*)
492 LDLIBRARY='libpython$(VERSION).dll.a'
493 DLLLIBRARY='libpython$(VERSION).dll'
494 ;;
495 SunOS*)
496 LDLIBRARY='libpython$(VERSION).so'
497 BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)'
498 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
499 ;;
Martin v. Löwis1bc894b2002-07-30 20:19:58 +0000500 Linux*|GNU*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000501 LDLIBRARY='libpython$(VERSION).so'
502 BLDLIBRARY='-L. -lpython$(VERSION)'
503 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
504 INSTSONAME="$LDLIBRARY".$SOVERSION
505 ;;
506 hp*|HP*)
507 LDLIBRARY='libpython$(VERSION).sl'
508 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
509 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
510 ;;
511 OSF*)
512 LDLIBRARY='libpython$(VERSION).so'
513 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
514 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
515 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000516 atheos*)
517 LDLIBRARY='libpython$(VERSION).so'
518 BLDLIBRARY='-L. -lpython$(VERSION)'
519 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
520 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000521 esac
522 # DG/UX requires some fancy ld contortions to produce a .so from an .a
523 case $MACHDEP in
524 dguxR4)
525 LDLIBRARY='libpython$(VERSION).so'
Skip Montanarodecc6a42003-01-01 20:07:49 +0000526 BASECFLAGS="$BASECFLAGS -pic"
Martin v. Löwis1142de32002-03-29 16:28:31 +0000527 ;;
528 esac
529fi
530
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000531AC_MSG_RESULT($LDLIBRARY)
532
Guido van Rossum627b2d71993-12-24 10:39:16 +0000533AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000534AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000535AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000536
537case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000538bsdos*|hp*|HP*)
539 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000540 if test -z "$INSTALL"
541 then
542 INSTALL="${srcdir}/install-sh -c"
543 fi
544esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000545AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000546
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000547# Not every filesystem supports hard links
548AC_SUBST(LN)
549if test -z "$LN" ; then
550 case $ac_sys_system in
551 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000552 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000553 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000554 *) LN=ln;;
555 esac
556fi
557
Fred Drake9f715822001-07-11 06:27:00 +0000558# Check for --with-pydebug
559AC_MSG_CHECKING(for --with-pydebug)
560AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000561 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
562[
Fred Drake9f715822001-07-11 06:27:00 +0000563if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000564then
565 AC_DEFINE(Py_DEBUG, 1,
566 [Define if you want to build an interpreter with many run-time checks.])
567 AC_MSG_RESULT(yes);
568 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000569else AC_MSG_RESULT(no); Py_DEBUG='false'
570fi],
571[AC_MSG_RESULT(no)])
572
Skip Montanarodecc6a42003-01-01 20:07:49 +0000573# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
574# merged with this chunk of code?
575
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000576# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000577# ------------------------
578# (The following bit of code is complicated enough - please keep things
579# indented properly. Just pretend you're editing Python code. ;-)
580
581# There are two parallel sets of case statements below, one that checks to
582# see if OPT was set and one that does BASECFLAGS setting based upon
583# compiler and platform. BASECFLAGS tweaks need to be made even if the
584# user set OPT.
585
586# tweak OPT based on compiler and platform, only if the user didn't set
587# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000588AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000589if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000590then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000591 case $GCC in
592 yes)
593 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000594 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000595 if test "$Py_DEBUG" = 'true' ; then
596 # Optimization messes up debuggers, so turn it off for
597 # debug builds.
598 OPT="-g -Wall -Wstrict-prototypes"
599 else
600 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000601 fi
602 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000603 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000604 OPT="-O3 -Wall -Wstrict-prototypes"
605 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000606 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000607 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000608 SCO_SV*) OPT="$OPT -m486 -DSCO5"
609 ;;
610 esac
Fred Drake9f715822001-07-11 06:27:00 +0000611 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000612
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000613 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000614 OPT="-O"
615 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000616 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000617
618 # The current (beta) Monterey compiler dies with optimizations
619 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000620 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000621 Monterey*)
622 OPT=""
623 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000624 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000625
Guido van Rossum4e8af441994-08-19 15:33:54 +0000626fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000627
Skip Montanarodecc6a42003-01-01 20:07:49 +0000628AC_SUBST(BASECFLAGS)
629# tweak BASECFLAGS based on compiler and platform
630case $GCC in
631yes)
632 case $ac_sys_system in
633 SCO_SV*)
634 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
635 ;;
636 # is there any other compiler on Darwin besides gcc?
637 Darwin*)
638 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
639 ;;
640 esac
641 ;;
642
643*)
644 case $ac_sys_system in
645 OpenUNIX*|UnixWare*)
646 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
647 ;;
648 SCO_SV*)
649 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
650 ;;
651 esac
652 ;;
653esac
654
Fred Drakee1ceaa02001-12-04 20:55:47 +0000655if test "$Py_DEBUG" = 'true'; then
656 :
657else
658 OPT="-DNDEBUG $OPT"
659fi
660
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000661if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000662then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000663 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000664fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000665
Guido van Rossum91922671997-10-09 20:24:13 +0000666AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
667AC_CACHE_VAL(ac_cv_opt_olimit_ok,
668[ac_save_cc="$CC"
669CC="$CC -OPT:Olimit=0"
670AC_TRY_RUN([int main() { return 0; }],
671 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000672 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000673 ac_cv_opt_olimit_ok=no)
674CC="$ac_save_cc"])
675AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000676if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000677 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000678 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
679 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
680 # environment?
681 Darwin*)
682 ;;
683 *)
684 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
685 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000686 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000687else
688 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
689 AC_CACHE_VAL(ac_cv_olimit_ok,
690 [ac_save_cc="$CC"
691 CC="$CC -Olimit 1500"
692 AC_TRY_RUN([int main() { return 0; }],
693 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000694 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000695 ac_cv_olimit_ok=no)
696 CC="$ac_save_cc"])
697 AC_MSG_RESULT($ac_cv_olimit_ok)
698 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000699 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000700 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000701fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000702
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000703# On some compilers, pthreads are available without further options
704# (e.g. MacOS X). On some of these systems, the compiler will not
705# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
706# So we have to see first whether pthreads are available without
707# options before we can check whether -Kpthread improves anything.
708AC_MSG_CHECKING(whether pthreads are available without options)
709AC_CACHE_VAL(ac_cv_pthread_is_default,
710[AC_TRY_RUN([
711#include <pthread.h>
712
713void* routine(void* p){return NULL;}
714
715int main(){
716 pthread_t p;
717 if(pthread_create(&p,NULL,routine,NULL)!=0)
718 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000719 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000720 return 0;
721}
722],
723 ac_cv_pthread_is_default=yes,
724 ac_cv_pthread_is_default=no,
725 ac_cv_pthread_is_default=no)
726])
727AC_MSG_RESULT($ac_cv_pthread_is_default)
728
729
730if test $ac_cv_pthread_is_default = yes
731then
732 ac_cv_kpthread=no
733else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000734# -Kpthread, if available, provides the right #defines
735# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000736# Some compilers won't report that they do not support -Kpthread,
737# so we need to run a program to see whether it really made the
738# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000739AC_MSG_CHECKING(whether $CC accepts -Kpthread)
740AC_CACHE_VAL(ac_cv_kpthread,
741[ac_save_cc="$CC"
742CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000743AC_TRY_RUN([
744#include <pthread.h>
745
746void* routine(void* p){return NULL;}
747
748int main(){
749 pthread_t p;
750 if(pthread_create(&p,NULL,routine,NULL)!=0)
751 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000752 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000753 return 0;
754}
755],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000756 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000757 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000758 ac_cv_kpthread=no)
759CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000760AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000761fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000762
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000763if test $ac_cv_kpthread = no
764then
765# -Kthread, if available, provides the right #defines
766# and linker options to make pthread_create available
767# Some compilers won't report that they do not support -Kthread,
768# so we need to run a program to see whether it really made the
769# function available.
770AC_MSG_CHECKING(whether $CC accepts -Kthread)
771AC_CACHE_VAL(ac_cv_kthread,
772[ac_save_cc="$CC"
773CC="$CC -Kthread"
774AC_TRY_RUN([
775#include <pthread.h>
776
777void* routine(void* p){return NULL;}
778
779int main(){
780 pthread_t p;
781 if(pthread_create(&p,NULL,routine,NULL)!=0)
782 return 1;
783 (void)pthread_detach(p);
784 return 0;
785}
786],
787 ac_cv_kthread=yes,
788 ac_cv_kthread=no,
789 ac_cv_kthread=no)
790CC="$ac_save_cc"])
791AC_MSG_RESULT($ac_cv_kthread)
792fi
793
Fred Drakece81d592000-07-09 14:39:29 +0000794dnl # check for ANSI or K&R ("traditional") preprocessor
795dnl AC_MSG_CHECKING(for C preprocessor type)
796dnl AC_TRY_COMPILE([
797dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
798dnl int foo;
799dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
800dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
801dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000802
Guido van Rossum627b2d71993-12-24 10:39:16 +0000803# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000804AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000805AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
806libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000807signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
808unistd.h utime.h \
Skip Montanaro57454e52002-06-14 20:30:31 +0000809sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000810sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisa5f09072002-10-11 05:37:59 +0000811sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000812sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000813AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000814AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000815
816# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000817was_it_defined=no
818AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000819AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
820 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
821])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000822AC_MSG_RESULT($was_it_defined)
823
Neal Norwitz11690112002-07-30 01:08:28 +0000824# Check whether using makedev requires defining _OSF_SOURCE
825AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000826AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000827 [ makedev(0, 0) ],
828 ac_cv_has_makedev=yes,
829 ac_cv_has_makedev=no)
830if test "$ac_cv_has_makedev" = "no"; then
831 # we didn't link, try if _OSF_SOURCE will allow us to link
832 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000833#define _OSF_SOURCE 1
834#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000835 ],
836 [ makedev(0, 0) ],
837 ac_cv_has_makedev=yes,
838 ac_cv_has_makedev=no)
839 if test "$ac_cv_has_makedev" = "yes"; then
840 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
841 fi
842fi
843AC_MSG_RESULT($ac_cv_has_makedev)
844if test "$ac_cv_has_makedev" = "yes"; then
845 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
846fi
847
Martin v. Löwis399a6892002-10-04 10:22:02 +0000848# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
849# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
850# defined, but the compiler does not support pragma redefine_extname,
851# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
852# structures (such as rlimit64) without declaring them. As a
853# work-around, disable LFS on such configurations
854
855use_lfs=yes
856AC_MSG_CHECKING(Solaris LFS bug)
857AC_TRY_COMPILE([
858#define _LARGEFILE_SOURCE 1
859#define _FILE_OFFSET_BITS 64
860#include <sys/resource.h>
861],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
862AC_MSG_RESULT($sol_lfs_bug)
863if test "$sol_lfs_bug" = "yes"; then
864 use_lfs=no
865fi
866
867if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000868# Two defines needed to enable largefile support on various platforms
869# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000870AC_DEFINE(_LARGEFILE_SOURCE, 1,
871[This must be defined on some systems to enable large file support.])
872AC_DEFINE(_FILE_OFFSET_BITS, 64,
873[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000874fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000875
Guido van Rossum300fda71996-08-19 21:58:16 +0000876# Add some code to confdefs.h so that the test for off_t works on SCO
877cat >> confdefs.h <<\EOF
878#if defined(SCO_DS)
879#undef _OFF_T
880#endif
881EOF
882
Guido van Rossumef2255b2000-03-10 22:30:29 +0000883# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000884AC_TYPE_MODE_T
885AC_TYPE_OFF_T
886AC_TYPE_PID_T
887AC_TYPE_SIGNAL
888AC_TYPE_SIZE_T
889AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000890
Guido van Rossumef2255b2000-03-10 22:30:29 +0000891# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000892AC_CHECK_SIZEOF(int, 4)
893AC_CHECK_SIZEOF(long, 4)
894AC_CHECK_SIZEOF(void *, 4)
895AC_CHECK_SIZEOF(char, 1)
896AC_CHECK_SIZEOF(short, 2)
897AC_CHECK_SIZEOF(float, 4)
898AC_CHECK_SIZEOF(double, 8)
899AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000900
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000901AC_MSG_CHECKING(for long long support)
902have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000903AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
904 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
905 have_long_long=yes
906])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000907AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000908if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000909AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000910fi
911
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000912AC_MSG_CHECKING(for uintptr_t support)
913have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000914AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
915 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
916 have_uintptr_t=yes
917])
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000918AC_MSG_RESULT($have_uintptr_t)
919if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000920AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000921fi
922
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000923# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
924AC_MSG_CHECKING(size of off_t)
925AC_CACHE_VAL(ac_cv_sizeof_off_t,
926[AC_TRY_RUN([#include <stdio.h>
927#include <sys/types.h>
928main()
929{
930 FILE *f=fopen("conftestval", "w");
931 if (!f) exit(1);
932 fprintf(f, "%d\n", sizeof(off_t));
933 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000934}],
935ac_cv_sizeof_off_t=`cat conftestval`,
936ac_cv_sizeof_off_t=0,
937ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000938])
939AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000940AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
941[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000942
943AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000944if test "$have_long_long" = yes -a \
945 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
946 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000947 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
948 [Defined to enable large file support when an off_t is bigger than a long
949 and long long is available and at least as big as an off_t. You may need
950 to add some flags for configuration and compilation to enable this mode.
951 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000952 AC_MSG_RESULT(yes)
953else
954 AC_MSG_RESULT(no)
955fi
956
Fred Drakea3f6e912000-06-29 20:44:47 +0000957# AC_CHECK_SIZEOF() doesn't include <time.h>.
958AC_MSG_CHECKING(size of time_t)
959AC_CACHE_VAL(ac_cv_sizeof_time_t,
960[AC_TRY_RUN([#include <stdio.h>
961#include <time.h>
962main()
963{
964 FILE *f=fopen("conftestval", "w");
965 if (!f) exit(1);
966 fprintf(f, "%d\n", sizeof(time_t));
967 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000968}],
969ac_cv_sizeof_time_t=`cat conftestval`,
970ac_cv_sizeof_time_t=0,
971ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +0000972])
973AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000974AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
975[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +0000976
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000977
Trent Mick635f6fb2000-08-23 21:33:05 +0000978# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000979ac_save_cc="$CC"
980if test "$ac_cv_kpthread" = "yes"
981then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000982elif test "$ac_cv_kthread" = "yes"
983then CC="$CC -Kthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000984fi
Trent Mick635f6fb2000-08-23 21:33:05 +0000985AC_MSG_CHECKING(for pthread_t)
986have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +0000987AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +0000988AC_MSG_RESULT($have_pthread_t)
989if test "$have_pthread_t" = yes ; then
990 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
991 AC_MSG_CHECKING(size of pthread_t)
992 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
993 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000994#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +0000995 main()
996 {
997 FILE *f=fopen("conftestval", "w");
998 if (!f) exit(1);
999 fprintf(f, "%d\n", sizeof(pthread_t));
1000 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001001 }],
1002 ac_cv_sizeof_pthread_t=`cat conftestval`,
1003 ac_cv_sizeof_pthread_t=0,
1004 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001005 ])
1006 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001007 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1008 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001009fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001010CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001011
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001012AC_MSG_CHECKING(for --enable-toolbox-glue)
1013AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001014 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001015
1016if test -z "$enable_toolbox_glue"
1017then
1018 case $ac_sys_system/$ac_sys_release in
1019 Darwin/*)
1020 enable_toolbox_glue="yes";;
1021 *)
1022 enable_toolbox_glue="no";;
1023 esac
1024fi
1025case "$enable_toolbox_glue" in
1026yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001027 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001028 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001029 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001030 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1031 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001032 ;;
1033*)
1034 extra_frameworks=""
1035 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001036 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001037 ;;
1038esac
1039AC_MSG_RESULT($enable_toolbox_glue)
1040
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001041AC_SUBST(LIBTOOL_CRUFT)
1042case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001043 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001044 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001045 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +00001046 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1047 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001048 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001049 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001050 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001051 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1052 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001053esac
1054
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001055AC_MSG_CHECKING(for --enable-framework)
1056if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001057then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001058 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001059 # -F. is needed to allow linking to the framework while
1060 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001061 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001062 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1063 [Define if you want to produce an OpenStep/Rhapsody framework
1064 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001065 AC_MSG_RESULT(yes)
1066else
1067 AC_MSG_RESULT(no)
1068fi
1069
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001070AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001071case $ac_sys_system/$ac_sys_release in
1072 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001073 AC_DEFINE(WITH_DYLD, 1,
1074 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1075 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1076 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001077 AC_MSG_RESULT(always on for Darwin)
1078 ;;
1079 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001080 AC_MSG_RESULT(no)
1081 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001082esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001083
Guido van Rossumac405f61994-09-12 10:56:06 +00001084# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001085AC_SUBST(SO)
1086AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001087AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001088AC_SUBST(CCSHARED)
1089AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001090# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001091# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001092AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001093if test -z "$SO"
1094then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001095 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001096 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001097 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001098 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001099 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001100fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001101AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001102# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001103# -- "ld" on SunOS 4.x.x, "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001104# (Shared libraries in this instance are shared modules to be loaded into
1105# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001106AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001107if test -z "$LDSHARED"
1108then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001109 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001110 AIX*)
1111 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001112 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001113 ;;
1114 BeOS*)
1115 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001116 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001117 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001118 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001119 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001120 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001121 SunOS/5*)
1122 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001123 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001124 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001125 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001126 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001127 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001128 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001129 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001130 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1131 if test "$enable_framework" ; then
1132 # Link against the framework. All externals should be defined.
1133 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1134 else
1135 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001136 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001137 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001138 Darwin/*)
1139 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1140 if test "$enable_framework" ; then
1141 # Link against the framework. All externals should be defined.
1142 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1143 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001144 # No framework, use the Python app as bundle-loader
1145 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001146 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001147 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001148 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001149 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001150 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001151 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001152 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001153 then
1154 LDSHARED="cc -shared ${LDFLAGS}"
1155 else
1156 LDSHARED="ld -Bshareable ${LDFLAGS}"
1157 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001158 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001159 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001160 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001161 then LDSHARED='$(CC) -shared'
1162 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001163 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001164 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001165 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001166 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001167 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001168 *) LDSHARED="ld";;
1169 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001170fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001171AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001172BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001173# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001174# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001175AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001176if test -z "$CCSHARED"
1177then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001178 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001179 SunOS*) if test "$GCC" = yes;
1180 then CCSHARED="-fPIC";
1181 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001182 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001183 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001184 else CCSHARED="+z";
1185 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001186 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001187 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001188 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001189 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001190 if test "$GCC" = "yes"
1191 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001192 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001193 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001194 SCO_SV*)
1195 if test "$GCC" = "yes"
1196 then CCSHARED="-fPIC"
1197 else CCSHARED="-Kpic -belf"
1198 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001199 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001200 IRIX*/6*) case $CC in
1201 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001202 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001203 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001204 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001205 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001206fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001207AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001208# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001209# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001210AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001211if test -z "$LINKFORSHARED"
1212then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001213 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001214 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001215 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001216 LINKFORSHARED="-Wl,-E -Wl,+s";;
1217# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001218 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001219 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001220 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001221 Darwin/*)
1222 # -u __dummy makes the linker aware of the objc runtime
1223 # in System.framework; otherwise, __objcInit (referenced in
1224 # crt1.o) gets erroneously defined as common, which breaks dynamic
1225 # loading of any modules which reference it in System.framework.
1226 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1227 # not used by the core itself but which needs to be in the core so
1228 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001229 # -prebind is no longer used, because it actually seems to give a
1230 # slowdown in stead of a speedup, maybe due to the large number of
1231 # dynamic loads Python does.
1232 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001233 if test "$enable_framework"
1234 then
1235 LINKFORSHARED="$LINKFORSHARED -framework Python"
1236 fi
1237 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001238 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001239 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001240 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001241 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001242 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1243 then
1244 LINKFORSHARED="-Wl,--export-dynamic"
1245 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001246 SunOS/5*) case $CC in
1247 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001248 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001249 then
1250 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001251 fi;;
1252 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001253 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001254fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001255AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001256
Neil Schemenauer61c51152001-01-26 16:18:16 +00001257AC_SUBST(CFLAGSFORSHARED)
1258AC_MSG_CHECKING(CFLAGSFORSHARED)
1259if test ! "$LIBRARY" = "$LDLIBRARY"
1260then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001261 case $ac_sys_system in
1262 CYGWIN*)
1263 # Cygwin needs CCSHARED when building extension DLLs
1264 # but not when building the interpreter DLL.
1265 CFLAGSFORSHARED='';;
1266 *)
1267 CFLAGSFORSHARED='$(CCSHARED)'
1268 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001269fi
1270AC_MSG_RESULT($CFLAGSFORSHARED)
1271
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001272# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1273# library (with --enable-shared).
1274# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001275# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1276# if it is not required, since it creates a dependency of the shared library
1277# to LIBS. This, in turn, means that applications linking the shared libpython
1278# don't need to link LIBS explicitly. The default should be only changed
1279# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001280AC_SUBST(SHLIBS)
1281AC_MSG_CHECKING(SHLIBS)
1282case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001283 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001284 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001285esac
1286AC_MSG_RESULT($SHLIBS)
1287
1288
Guido van Rossum627b2d71993-12-24 10:39:16 +00001289# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001290AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1291AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001292AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1293 # posix4 on Solaris 2.6
1294 # pthread (first!) on Linux
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001295
1296# checks for system dependent C++ extensions support
1297case "$ac_sys_system" in
1298 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1299 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1300 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001301 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1302 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1303 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001304 AC_MSG_RESULT(yes)],
1305 [AC_MSG_RESULT(no)]);;
1306 *) ;;
1307esac
1308
Guido van Rossum70c7f481998-03-26 18:44:10 +00001309# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001310# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001311# BeOS' sockets are stashed in libnet.
1312case "$ac_sys_system" in
1313IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001314*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001315AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001316AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001317;;
1318esac
1319case "$ac_sys_system" in
1320BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001321AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1322;;
1323esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001324
Guido van Rossumc5a39031996-07-31 17:35:03 +00001325AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001326AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001327 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1328[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001329AC_MSG_RESULT($withval)
1330LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001331],
1332[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001333
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001334# Determine if signalmodule should be used.
1335AC_SUBST(USE_SIGNAL_MODULE)
1336AC_SUBST(SIGNAL_OBJS)
1337AC_MSG_CHECKING(for --with-signal-module)
1338AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001339 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001340
1341if test -z "$with_signal_module"
1342then with_signal_module="yes"
1343fi
1344AC_MSG_RESULT($with_signal_module)
1345
1346if test "${with_signal_module}" = "yes"; then
1347 USE_SIGNAL_MODULE=""
1348 SIGNAL_OBJS=""
1349else
1350 USE_SIGNAL_MODULE="#"
1351 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1352fi
1353
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001354# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001355AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001356USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001357
Guido van Rossum54d93d41997-01-22 20:51:58 +00001358AC_MSG_CHECKING(for --with-dec-threads)
1359AC_SUBST(LDLAST)
1360AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001361 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1362[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001363AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001364LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001365if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001366 with_thread="$withval";
1367fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001368[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001369
Martin v. Löwis11437992002-04-12 09:54:03 +00001370# Templates for things AC_DEFINEd more than once.
1371# For a single AC_DEFINE, no template is needed.
1372AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1373AH_TEMPLATE(_REENTRANT,
1374 [Define to force use of thread-safe errno, h_errno, and other functions])
1375AH_TEMPLATE(WITH_THREAD,
1376 [Define if you want to compile in rudimentary thread support])
1377
Guido van Rossum54d93d41997-01-22 20:51:58 +00001378AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001379dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001380AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001381 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001382
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001383# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001384dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001385AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001386 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1387 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001388
1389if test -z "$with_threads"
1390then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001391fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001392AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001393
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001394AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001395if test "$with_threads" = "no"
1396then
1397 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001398elif test "$ac_cv_pthread_is_default" = yes
1399then
1400 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001401 # Defining _REENTRANT on system with POSIX threads should not hurt.
1402 AC_DEFINE(_REENTRANT)
1403 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001404 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001405elif test "$ac_cv_kpthread" = "yes"
1406then
1407 CC="$CC -Kpthread"
1408 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001409 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001410 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001411elif test "$ac_cv_kthread" = "yes"
1412then
1413 CC="$CC -Kthread"
1414 AC_DEFINE(WITH_THREAD)
1415 posix_threads=yes
1416 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001417else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001418 if test ! -z "$with_threads" -a -d "$with_threads"
1419 then LDFLAGS="$LDFLAGS -L$with_threads"
1420 fi
1421 if test ! -z "$withval" -a -d "$withval"
1422 then LDFLAGS="$LDFLAGS -L$withval"
1423 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001424
1425 # According to the POSIX spec, a pthreads implementation must
1426 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1427 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1428 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001429 [
1430#include <unistd.h>
1431#ifdef _POSIX_THREADS
1432yes
1433#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001434 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1435 AC_MSG_RESULT($unistd_defines_pthreads)
1436
Martin v. Löwis130fb172001-07-19 11:00:41 +00001437 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001438 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1439 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001440 AC_DEFINE(HURD_C_THREADS, 1,
1441 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001442 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001443 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001444 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1445 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001446 AC_DEFINE(MACH_C_THREADS, 1,
1447 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001448 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001449 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001450 AC_ARG_WITH([pth],
1451 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1452 [AC_MSG_RESULT($withval)
1453 AC_DEFINE([WITH_THREAD])
1454 AC_DEFINE([HAVE_PTH], 1,
1455 [Define if you have GNU PTH threads.])
1456 LIBS="-lpth $LIBS"
1457 THREADOBJ="Python/thread.o"],
1458 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001459
1460 # Just looking for pthread_create in libpthread is not enough:
1461 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1462 # So we really have to include pthread.h, and then link.
1463 _libs=$LIBS
1464 LIBS="$LIBS -lpthread"
1465 AC_MSG_CHECKING([for pthread_create in -lpthread])
1466 AC_TRY_LINK([#include <pthread.h>
1467
1468void * start_routine (void *arg) { exit (0); }], [
1469pthread_create (NULL, NULL, start_routine, NULL)], [
1470 AC_MSG_RESULT(yes)
1471 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001472 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001473 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001474 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001475 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001476 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001477 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001478 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1479 AC_DEFINE(ATHEOS_THREADS, 1,
1480 [Define this if you have AtheOS threads.])
1481 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001482 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001483 AC_DEFINE(BEOS_THREADS, 1,
1484 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001485 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001486 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001487 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001488 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001489 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001490 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001491 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001492 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001493 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001494 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001495 echo Systems with __d6_pthread_create are not supported anymore.
1496 echo See README
1497 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001498 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001499 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001500 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001501 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001502 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001503 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001504 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001505 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001506 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001507 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001508 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001509 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001510 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001511
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001512 if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001513 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001514 AC_DEFINE(_POSIX_THREADS, 1,
1515 [Define if you have POSIX threads,
1516 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001517 fi
1518
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001519 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1520 case $ac_sys_system/$ac_sys_release in
1521 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
1522 Define if the Posix semaphores do not work on your system);;
1523 esac
1524
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001525 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1526 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1527 [AC_TRY_RUN([#include <pthread.h>
1528 void *foo(void *parm) {
1529 return NULL;
1530 }
1531 main() {
1532 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001533 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001534 if (pthread_attr_init(&attr)) exit(-1);
1535 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001536 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001537 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001538 }],
1539 ac_cv_pthread_system_supported=yes,
1540 ac_cv_pthread_system_supported=no,
1541 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001542 ])
1543 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1544 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001545 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001546 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001547 AC_CHECK_FUNCS(pthread_sigmask)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001548 fi
1549
Martin v. Löwis130fb172001-07-19 11:00:41 +00001550 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1551 LIBS="$LIBS -lmpc"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001552 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001553 USE_THREAD_MODULE=""])
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001554
Neal Norwitza978ab02002-11-02 16:58:05 +00001555 if test "$posix_threads" != "yes"; then
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001556 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1557 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001558 THREADOBJ="Python/thread.o"
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001559 USE_THREAD_MODULE=""])
1560 fi
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001561
Martin v. Löwis130fb172001-07-19 11:00:41 +00001562 if test "$USE_THREAD_MODULE" != "#"
1563 then
1564 # If the above checks didn't disable threads, (at least) OSF1
1565 # needs this '-threads' argument during linking.
1566 case $ac_sys_system in
1567 OSF1) LDLAST=-threads;;
1568 esac
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001569 fi
Martin v. Löwisa7a76d32002-10-04 07:21:24 +00001570
1571 if test "$posix_threads" = yes -a \
1572 "$ac_sys_system" = "SunOS" -a \
1573 "$ac_sys_release" = "5.6"; then
1574 AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1575 [Defined for Solaris 2.6 bug in pthread header.])
1576 fi
1577
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001578fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001579
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001580# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001581AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001582AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001583AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001584[ --enable-ipv6 Enable ipv6 (with ipv4) support
1585 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001586[ case "$enableval" in
1587 no)
1588 AC_MSG_RESULT(no)
1589 ipv6=no
1590 ;;
1591 *) AC_MSG_RESULT(yes)
1592 AC_DEFINE(ENABLE_IPV6)
1593 ipv6=yes
1594 ;;
1595 esac ],
1596
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001597[
1598dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001599 AC_TRY_RUN([ /* AF_INET6 available check */
1600#include <sys/types.h>
1601#include <sys/socket.h>
1602main()
1603{
1604 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1605 exit(1);
1606 else
1607 exit(0);
1608}
1609],
1610 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001611 ipv6=yes,
1612 AC_MSG_RESULT(no)
1613 ipv6=no,
1614 AC_MSG_RESULT(no)
1615 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001616)
1617
1618if test "$ipv6" = "yes"; then
1619 AC_MSG_CHECKING(if RFC2553 API is available)
1620 AC_TRY_COMPILE([#include <sys/types.h>
1621#include <netinet/in.h>],
1622 [struct sockaddr_in6 x;
1623x.sin6_scope_id;],
1624 AC_MSG_RESULT(yes)
1625 ipv6=yes,
1626 AC_MSG_RESULT(no, IPv6 disabled)
1627 ipv6=no)
1628fi
1629
1630if test "$ipv6" = "yes"; then
1631 AC_DEFINE(ENABLE_IPV6)
1632fi
1633])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001634
1635ipv6type=unknown
1636ipv6lib=none
1637ipv6trylibc=no
1638
1639if test "$ipv6" = "yes"; then
1640 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001641 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1642 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001643 case $i in
1644 inria)
1645 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001646 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001647#include <netinet/in.h>
1648#ifdef IPV6_INRIA_VERSION
1649yes
1650#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001651 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001652 ;;
1653 kame)
1654 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001655 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001656#include <netinet/in.h>
1657#ifdef __KAME__
1658yes
1659#endif],
1660 [ipv6type=$i;
1661 ipv6lib=inet6
1662 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001663 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001664 ;;
1665 linux-glibc)
1666 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001667 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001668#include <features.h>
1669#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1670yes
1671#endif],
1672 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001673 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001674 ;;
1675 linux-inet6)
1676 dnl http://www.v6.linux.or.jp/
1677 if test -d /usr/inet6; then
1678 ipv6type=$i
1679 ipv6lib=inet6
1680 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001681 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001682 fi
1683 ;;
1684 solaris)
1685 if test -f /etc/netconfig; then
1686 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1687 ipv6type=$i
1688 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001689 fi
1690 fi
1691 ;;
1692 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001693 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001694#include <sys/param.h>
1695#ifdef _TOSHIBA_INET6
1696yes
1697#endif],
1698 [ipv6type=$i;
1699 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001700 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001701 ;;
1702 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001703 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001704#include </usr/local/v6/include/sys/v6config.h>
1705#ifdef __V6D__
1706yes
1707#endif],
1708 [ipv6type=$i;
1709 ipv6lib=v6;
1710 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001711 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001712 ;;
1713 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001714 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001715#include <sys/param.h>
1716#ifdef _ZETA_MINAMI_INET6
1717yes
1718#endif],
1719 [ipv6type=$i;
1720 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001721 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001722 ;;
1723 esac
1724 if test "$ipv6type" != "unknown"; then
1725 break
1726 fi
1727 done
1728 AC_MSG_RESULT($ipv6type)
1729fi
1730
1731if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1732 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1733 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1734 echo "using lib$ipv6lib"
1735 else
1736 if test $ipv6trylibc = "yes"; then
1737 echo "using libc"
1738 else
1739 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1740 echo "You need to fetch lib$ipv6lib.a from appropriate"
1741 echo 'ipv6 kit and compile beforehand.'
1742 exit 1
1743 fi
1744 fi
1745fi
1746
Jack Jansen7b8c7542002-04-14 20:12:41 +00001747# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001748AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001749AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001750 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001751
1752if test -z "$with_universal_newlines"
1753then with_universal_newlines="yes"
1754fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001755if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001756then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001757 echo --without-universal-newlines is unsupported, see README
1758 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001759else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001760 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1761 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001762fi
1763AC_MSG_RESULT($with_universal_newlines)
1764
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001765# Check for --with-doc-strings
1766AC_MSG_CHECKING(for --with-doc-strings)
1767AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001768 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001769
1770if test -z "$with_doc_strings"
1771then with_doc_strings="yes"
1772fi
1773if test "$with_doc_strings" != "no"
1774then
1775 AC_DEFINE(WITH_DOC_STRINGS, 1,
1776 [Define if you want documentation strings in extension modules])
1777fi
1778AC_MSG_RESULT($with_doc_strings)
1779
Neil Schemenauera35c6882001-02-27 04:45:05 +00001780# Check for Python-specific malloc support
1781AC_MSG_CHECKING(for --with-pymalloc)
1782AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001783 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001784
1785if test -z "$with_pymalloc"
1786then with_pymalloc="yes"
1787fi
1788if test "$with_pymalloc" != "no"
1789then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001790 AC_DEFINE(WITH_PYMALLOC, 1,
1791 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001792fi
1793AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001794
Barry Warsawef82cd72000-06-30 16:21:01 +00001795# Check for --with-wctype-functions
1796AC_MSG_CHECKING(for --with-wctype-functions)
1797AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001798 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1799[
Barry Warsawef82cd72000-06-30 16:21:01 +00001800if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001801then
1802 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1803 [Define if you want wctype.h functions to be used instead of the
1804 one supplied by Python itself. (see Include/unicodectype.h).])
1805 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001806else AC_MSG_RESULT(no)
1807fi],
1808[AC_MSG_RESULT(no)])
1809
Guido van Rossum68242b51996-05-28 22:53:03 +00001810# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001811AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001812DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001813
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001814AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001815AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001816 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1817[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001818AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001819echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001820exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001821AC_DEFINE(WITH_SGI_DL, 1,
1822 [Define if you want to use SGI (IRIX 4) dynamic linking.
1823 This requires the "dl" library by Jack Jansen,
1824 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1825 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1826 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001827DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001828dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001829if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001830then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001831else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001832fi
1833DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001834LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001835
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001836AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001837AC_ARG_WITH(dl-dld,
1838 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1839[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001840AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001841echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001842exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001843AC_DEFINE(WITH_DL_DLD, 1,
1844 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1845 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1846 Sequent Symmetry (Dynix), and Atari ST.
1847 This requires the 'dl-dld' library,
1848 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1849 as well as the 'GNU dld' library,
1850 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1851 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1852 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001853DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001854dldir=`echo "$withval" | sed 's/,.*//'`
1855dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001856if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001857then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001858else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001859fi
1860DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001861LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001862
Guido van Rossume97ee181999-12-20 21:27:22 +00001863# the dlopen() function means we might want to use dynload_shlib.o. some
1864# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001865AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001866
1867# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1868# loading of modules.
1869AC_SUBST(DYNLOADFILE)
1870AC_MSG_CHECKING(DYNLOADFILE)
1871if test -z "$DYNLOADFILE"
1872then
1873 case $ac_sys_system/$ac_sys_release in
1874 AIX*) DYNLOADFILE="dynload_aix.o";;
1875 BeOS*) DYNLOADFILE="dynload_beos.o";;
1876 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001877 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001878 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001879 *)
1880 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1881 # out any dynamic loading
1882 if test "$ac_cv_func_dlopen" = yes
1883 then DYNLOADFILE="dynload_shlib.o"
1884 else DYNLOADFILE="dynload_stub.o"
1885 fi
1886 ;;
1887 esac
1888fi
1889AC_MSG_RESULT($DYNLOADFILE)
1890if test "$DYNLOADFILE" != "dynload_stub.o"
1891then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001892 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1893 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001894fi
1895
Jack Jansenc49e5b72001-06-19 15:00:23 +00001896# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1897
1898AC_SUBST(MACHDEP_OBJS)
1899AC_MSG_CHECKING(MACHDEP_OBJS)
1900if test -z "$MACHDEP_OBJS"
1901then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001902 MACHDEP_OBJS=$extra_machdep_objs
1903else
1904 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001905fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001906AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001907
Guido van Rossum627b2d71993-12-24 10:39:16 +00001908# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00001909AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00001910 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00001911 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
1912 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00001913 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00001914 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00001915 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00001916 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00001917 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001918 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00001919 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00001920 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001921
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001922# For some functions, having a definition is not sufficient, since
1923# we want to take their address.
1924AC_MSG_CHECKING(for chroot)
1925AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
1926 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
1927 AC_MSG_RESULT(yes),
1928 AC_MSG_RESULT(no)
1929)
1930AC_MSG_CHECKING(for link)
1931AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
1932 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
1933 AC_MSG_RESULT(yes),
1934 AC_MSG_RESULT(no)
1935)
1936AC_MSG_CHECKING(for symlink)
1937AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
1938 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
1939 AC_MSG_RESULT(yes),
1940 AC_MSG_RESULT(no)
1941)
1942
Martin v. Löwisd5843682002-11-21 20:41:28 +00001943# On some systems (eg. FreeBSD 5), we would find a definition of the
1944# functions ctermid_r, setgroups in the library, but no prototype
1945# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
1946# address to avoid compiler warnings and potential miscompilations
1947# because of the missing prototypes.
1948
1949AC_MSG_CHECKING(for ctermid_r)
1950AC_TRY_COMPILE([
1951#include "confdefs.h"
1952#include <stdio.h>
1953], void* p = ctermid_r,
1954 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
1955 AC_MSG_RESULT(yes),
1956 AC_MSG_RESULT(no)
1957)
1958
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00001959AC_MSG_CHECKING(for flock)
1960AC_TRY_COMPILE([
1961#include "confdefs.h"
1962#include <sys/file.h>
1963], void* p = flock,
1964 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
1965 AC_MSG_RESULT(yes),
1966 AC_MSG_RESULT(no)
1967)
1968
1969AC_MSG_CHECKING(for getpagesize)
1970AC_TRY_COMPILE([
1971#include "confdefs.h"
1972#include <unistd.h>
1973], void* p = getpagesize,
1974 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
1975 AC_MSG_RESULT(yes),
1976 AC_MSG_RESULT(no)
1977)
1978
Martin v. Löwis95c419b2003-05-03 12:10:48 +00001979dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
1980dnl On others, they are in the C library, so we to take no action
1981AC_CHECK_LIB(c, inet_aton, [/bin/true],
1982 AC_CHECK_LIB(resolv, inet_aton)
1983)
1984
Martin v. Löwise9416172003-05-03 10:12:45 +00001985AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00001986AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00001987#include "confdefs.h"
1988#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00001989], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00001990 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
1991 AC_MSG_RESULT(yes),
1992 AC_MSG_RESULT(no)
1993)
1994
1995AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00001996AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00001997#include "confdefs.h"
1998#include <sys/socket.h>
1999#include <netinet/in.h>
2000#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002001], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002002 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2003 AC_MSG_RESULT(yes),
2004 AC_MSG_RESULT(no)
2005)
2006
2007AC_MSG_CHECKING(for inet_pton)
2008AC_TRY_COMPILE([
2009#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002010#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002011#include <sys/socket.h>
2012#include <netinet/in.h>
2013#include <arpa/inet.h>
2014], void* p = inet_pton,
2015 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2016 AC_MSG_RESULT(yes),
2017 AC_MSG_RESULT(no)
2018)
2019
Martin v. Löwisd5843682002-11-21 20:41:28 +00002020AC_MSG_CHECKING(for setgroups)
2021AC_TRY_COMPILE([
2022#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002023#include <unistd.h>
Martin v. Löwisd5843682002-11-21 20:41:28 +00002024],
2025void* p = setgroups,
2026 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2027 AC_MSG_RESULT(yes),
2028 AC_MSG_RESULT(no)
2029)
2030
Fred Drake8cef4cf2000-06-28 16:40:38 +00002031# check for openpty and forkpty
2032
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002033AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2034AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002035
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002036# check for long file support functions
2037AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2038
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002039AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002040AC_CHECK_FUNCS(getpgrp,
2041 AC_TRY_COMPILE([#include <unistd.h>],
2042 [getpgrp(0);],
2043 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2044 [Define if getpgrp() must be called as getpgrp(0).])
2045 )
2046)
Jack Jansen150753c2003-03-29 22:07:47 +00002047AC_CHECK_FUNCS(setpgrp,
2048 AC_TRY_COMPILE([#include <unistd.h>],
2049 [setpgrp(0,0);],
2050 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2051 [Define if setpgrp() must be called as setpgrp(0, 0).])
2052 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002053)
2054AC_CHECK_FUNCS(gettimeofday,
2055 AC_TRY_COMPILE([#include <sys/time.h>],
2056 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2057 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2058 [Define if gettimeofday() does not have second (timezone) argument
2059 This is the case on Motorola V4 (R40V4.2)])
2060 )
2061)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002062
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002063AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002064AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002065#if defined(MAJOR_IN_MKDEV)
2066#include <sys/mkdev.h>
2067#elif defined(MAJOR_IN_SYSMACROS)
2068#include <sys/sysmacros.h>
2069#else
2070#include <sys/types.h>
2071#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002072],[
2073 makedev(major(0),minor(0));
2074],[
2075 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2076 [Define to 1 if you have the device macros.])
2077 AC_MSG_RESULT(yes)
2078],[
2079 AC_MSG_RESULT(no)
2080])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002081
2082# On OSF/1 V5.1, getaddrinfo is available, but a define
2083# for [no]getaddrinfo in netdb.h.
2084AC_MSG_CHECKING(for getaddrinfo)
2085AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002086#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002087#include <sys/socket.h>
2088#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002089#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002090],[
2091getaddrinfo(NULL, NULL, NULL, NULL);
2092], [
2093AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002094AC_MSG_CHECKING(getaddrinfo bug)
2095AC_TRY_RUN([
2096#include <sys/types.h>
2097#include <netdb.h>
2098#include <string.h>
2099#include <sys/socket.h>
2100#include <netinet/in.h>
2101
2102main()
2103{
2104 int passive, gaierr, inet4 = 0, inet6 = 0;
2105 struct addrinfo hints, *ai, *aitop;
2106 char straddr[INET6_ADDRSTRLEN], strport[16];
2107
2108 for (passive = 0; passive <= 1; passive++) {
2109 memset(&hints, 0, sizeof(hints));
2110 hints.ai_family = AF_UNSPEC;
2111 hints.ai_flags = passive ? AI_PASSIVE : 0;
2112 hints.ai_socktype = SOCK_STREAM;
2113 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2114 (void)gai_strerror(gaierr);
2115 goto bad;
2116 }
2117 for (ai = aitop; ai; ai = ai->ai_next) {
2118 if (ai->ai_addr == NULL ||
2119 ai->ai_addrlen == 0 ||
2120 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2121 straddr, sizeof(straddr), strport, sizeof(strport),
2122 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2123 goto bad;
2124 }
2125 switch (ai->ai_family) {
2126 case AF_INET:
2127 if (strcmp(strport, "54321") != 0) {
2128 goto bad;
2129 }
2130 if (passive) {
2131 if (strcmp(straddr, "0.0.0.0") != 0) {
2132 goto bad;
2133 }
2134 } else {
2135 if (strcmp(straddr, "127.0.0.1") != 0) {
2136 goto bad;
2137 }
2138 }
2139 inet4++;
2140 break;
2141 case AF_INET6:
2142 if (strcmp(strport, "54321") != 0) {
2143 goto bad;
2144 }
2145 if (passive) {
2146 if (strcmp(straddr, "::") != 0) {
2147 goto bad;
2148 }
2149 } else {
2150 if (strcmp(straddr, "::1") != 0) {
2151 goto bad;
2152 }
2153 }
2154 inet6++;
2155 break;
2156 case AF_UNSPEC:
2157 goto bad;
2158 break;
2159 default:
2160 /* another family support? */
2161 break;
2162 }
2163 }
2164 }
2165
2166 if (!(inet4 == 0 || inet4 == 2))
2167 goto bad;
2168 if (!(inet6 == 0 || inet6 == 2))
2169 goto bad;
2170
2171 if (aitop)
2172 freeaddrinfo(aitop);
2173 exit(0);
2174
2175 bad:
2176 if (aitop)
2177 freeaddrinfo(aitop);
2178 exit(1);
2179}
2180],
2181AC_MSG_RESULT(good)
2182buggygetaddrinfo=no,
2183AC_MSG_RESULT(buggy)
2184buggygetaddrinfo=yes,
2185AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002186buggygetaddrinfo=yes)], [
2187AC_MSG_RESULT(no)
2188buggygetaddrinfo=yes
2189])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002190
2191if test "$buggygetaddrinfo" = "yes"; then
2192 if test "$ipv6" = "yes"; then
2193 echo 'Fatal: You must get working getaddrinfo() function.'
2194 echo ' or you can specify "--disable-ipv6"'.
2195 exit 1
2196 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002197else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002198 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002199fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002200AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002201
Guido van Rossum627b2d71993-12-24 10:39:16 +00002202# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002203AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002204AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002205AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002206AC_CHECK_MEMBERS([struct stat.st_rdev])
2207AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002208AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002209
2210AC_MSG_CHECKING(for time.h that defines altzone)
2211AC_CACHE_VAL(ac_cv_header_time_altzone,
2212[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2213 ac_cv_header_time_altzone=yes,
2214 ac_cv_header_time_altzone=no)])
2215AC_MSG_RESULT($ac_cv_header_time_altzone)
2216if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002217 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002218fi
2219
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002220was_it_defined=no
2221AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002222AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002223#include <sys/types.h>
2224#include <sys/select.h>
2225#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002226], [;], [
2227 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2228 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2229 (which you can't on SCO ODT 3.0).])
2230 was_it_defined=yes
2231])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002232AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002233
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002234AC_MSG_CHECKING(for addrinfo)
2235AC_CACHE_VAL(ac_cv_struct_addrinfo,
2236AC_TRY_COMPILE([
2237# include <netdb.h>],
2238 [struct addrinfo a],
2239 ac_cv_struct_addrinfo=yes,
2240 ac_cv_struct_addrinfo=no))
2241AC_MSG_RESULT($ac_cv_struct_addrinfo)
2242if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002243 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002244fi
2245
2246AC_MSG_CHECKING(for sockaddr_storage)
2247AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2248AC_TRY_COMPILE([
2249# include <sys/types.h>
2250# include <sys/socket.h>],
2251 [struct sockaddr_storage s],
2252 ac_cv_struct_sockaddr_storage=yes,
2253 ac_cv_struct_sockaddr_storage=no))
2254AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2255if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002256 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002257fi
2258
Guido van Rossum627b2d71993-12-24 10:39:16 +00002259# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002260
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002261AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002262AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002263
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002264works=no
2265AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002266AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2267 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2268)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002269AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002270
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002271works=no
2272AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002273AC_TRY_COMPILE([], [signed char c;], works=yes,
2274 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2275)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002276AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002277
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002278have_prototypes=no
2279AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002280AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2281 AC_DEFINE(HAVE_PROTOTYPES, 1,
2282 [Define if your compiler supports function prototype])
2283 have_prototypes=yes
2284])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002285AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002286
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002287works=no
2288AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002289AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002290#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002291int foo(int x, ...) {
2292 va_list va;
2293 va_start(va, x);
2294 va_arg(va, int);
2295 va_arg(va, char *);
2296 va_arg(va, double);
2297 return 0;
2298}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002299], [return foo(10, "", 3.14);], [
2300 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2301 [Define if your compiler supports variable length function prototypes
2302 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2303 works=yes
2304])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002305AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002306
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002307if test "$have_prototypes" = yes; then
2308bad_prototypes=no
2309AC_MSG_CHECKING(for bad exec* prototypes)
2310AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002311 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2312 [Define if your <unistd.h> contains bad prototypes for exec*()
2313 (as it does on SGI IRIX 4.x)])
2314 bad_prototypes=yes
2315)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002316AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002317fi
2318
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002319# check if sockaddr has sa_len member
2320AC_MSG_CHECKING(if sockaddr has sa_len member)
2321AC_TRY_COMPILE([#include <sys/types.h>
2322#include <sys/socket.h>],
2323[struct sockaddr x;
2324x.sa_len = 0;],
2325 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002326 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002327 AC_MSG_RESULT(no))
2328
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002329va_list_is_array=no
2330AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002331AC_TRY_COMPILE([
2332#ifdef HAVE_STDARG_PROTOTYPES
2333#include <stdarg.h>
2334#else
2335#include <varargs.h>
2336#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002337], [va_list list1, list2; list1 = list2;], , [
2338 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2339 va_list_is_array=yes
2340])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002341AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002342
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002343# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002344AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2345 [Define this if you have some version of gethostbyname_r()])
2346
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002347AC_CHECK_FUNC(gethostbyname_r, [
2348 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2349 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2350 OLD_CFLAGS=$CFLAGS
2351 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2352 AC_TRY_COMPILE([
2353# include <netdb.h>
2354 ], [
2355 char *name;
2356 struct hostent *he, *res;
2357 char buffer[2048];
2358 int buflen = 2048;
2359 int h_errnop;
2360
2361 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2362 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002363 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002364 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2365 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002366 AC_MSG_RESULT(yes)
2367 ], [
2368 AC_MSG_RESULT(no)
2369 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2370 AC_TRY_COMPILE([
2371# include <netdb.h>
2372 ], [
2373 char *name;
2374 struct hostent *he;
2375 char buffer[2048];
2376 int buflen = 2048;
2377 int h_errnop;
2378
2379 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2380 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002381 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002382 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2383 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002384 AC_MSG_RESULT(yes)
2385 ], [
2386 AC_MSG_RESULT(no)
2387 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2388 AC_TRY_COMPILE([
2389# include <netdb.h>
2390 ], [
2391 char *name;
2392 struct hostent *he;
2393 struct hostent_data data;
2394
2395 (void) gethostbyname_r(name, he, &data);
2396 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002397 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002398 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2399 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002400 AC_MSG_RESULT(yes)
2401 ], [
2402 AC_MSG_RESULT(no)
2403 ])
2404 ])
2405 ])
2406 CFLAGS=$OLD_CFLAGS
2407], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002408 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002409])
2410AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2411AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2412AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002413AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002414AC_SUBST(HAVE_GETHOSTBYNAME)
2415
Guido van Rossum627b2d71993-12-24 10:39:16 +00002416# checks for system services
2417# (none yet)
2418
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002419# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002420AC_CHECK_FUNC(__fpu_control,
2421 [],
2422 [AC_CHECK_LIB(ieee, __fpu_control)
2423])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002424
Guido van Rossum93274221997-05-09 02:42:00 +00002425# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002426AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002427AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002428 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2429[
Guido van Rossum93274221997-05-09 02:42:00 +00002430if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002431then
2432 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2433 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2434 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002435else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002436fi],
2437[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002438
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002439# check for --with-libm=...
2440AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002441case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002442Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002443BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002444*) LIBM=-lm
2445esac
Guido van Rossum93274221997-05-09 02:42:00 +00002446AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002447AC_ARG_WITH(libm,
2448 AC_HELP_STRING(--with-libm=STRING, math library),
2449[
Guido van Rossum93274221997-05-09 02:42:00 +00002450if test "$withval" = no
2451then LIBM=
2452 AC_MSG_RESULT(force LIBM empty)
2453elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002454then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002455 AC_MSG_RESULT(set LIBM="$withval")
2456else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002457fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002458[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002459
2460# check for --with-libc=...
2461AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002462AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002463AC_ARG_WITH(libc,
2464 AC_HELP_STRING(--with-libc=STRING, C library),
2465[
Guido van Rossum93274221997-05-09 02:42:00 +00002466if test "$withval" = no
2467then LIBC=
2468 AC_MSG_RESULT(force LIBC empty)
2469elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002470then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002471 AC_MSG_RESULT(set LIBC="$withval")
2472else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002473fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002474[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002475
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002476# check for hypot() in math library
2477LIBS_SAVE=$LIBS
2478LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002479AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002480LIBS=$LIBS_SAVE
2481
Guido van Rossumef2255b2000-03-10 22:30:29 +00002482# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002483AC_CHECK_HEADER(wchar.h, [
2484 AC_DEFINE(HAVE_WCHAR_H, 1,
2485 [Define if the compiler provides a wchar.h header file.])
2486 wchar_h="yes"
2487],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002488wchar_h="no"
2489)
2490
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002491# determine wchar_t size
2492if test "$wchar_h" = yes
2493then
Guido van Rossum67b26592001-10-20 14:21:45 +00002494 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002495fi
2496
2497AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002498dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002499AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002500 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2501 [],
2502 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002503
2504if test $enable_unicode = yes
2505then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002506 # Without any arguments, Py_UNICODE defaults to two-byte mode
2507 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002508fi
2509
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002510AH_TEMPLATE(Py_UNICODE_SIZE,
2511 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002512case "$enable_unicode" in
2513ucs2) unicode_size="2"
2514 AC_DEFINE(Py_UNICODE_SIZE,2)
2515 ;;
2516ucs4) unicode_size="4"
2517 AC_DEFINE(Py_UNICODE_SIZE,4)
2518 ;;
2519esac
2520
Martin v. Löwis11437992002-04-12 09:54:03 +00002521AH_TEMPLATE(PY_UNICODE_TYPE,
2522 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002523
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002524AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002525if test "$enable_unicode" = "no"
2526then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002527 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002528 AC_MSG_RESULT(not used)
2529else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002530 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002531 AC_DEFINE(Py_USING_UNICODE, 1,
2532 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002533 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2534 then
2535 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002536 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2537 [Define if you have a useable wchar_t type defined in wchar.h; useable
2538 means wchar_t must be 16-bit unsigned type. (see
2539 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002540 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2541 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2542 then
2543 PY_UNICODE_TYPE="unsigned short"
2544 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2545 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2546 then
2547 PY_UNICODE_TYPE="unsigned long"
2548 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2549 else
2550 PY_UNICODE_TYPE="no type found"
2551 fi
2552 AC_MSG_RESULT($PY_UNICODE_TYPE)
2553fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002554
2555# check for endianness
2556AC_C_BIGENDIAN
2557
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002558# Check whether right shifting a negative integer extends the sign bit
2559# or fills with zeros (like the Cray J90, according to Tim Peters).
2560AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002561AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002562AC_TRY_RUN([
2563int main()
2564{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002565 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002566}
Guido van Rossum3065c942001-09-17 04:03:14 +00002567],
2568ac_cv_rshift_extends_sign=yes,
2569ac_cv_rshift_extends_sign=no,
2570ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002571AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2572if test "$ac_cv_rshift_extends_sign" = no
2573then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002574 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2575 [Define if i>>j for signed int i does not extend the sign bit
2576 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002577fi
2578
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002579# check for getc_unlocked and related locking functions
2580AC_MSG_CHECKING(for getc_unlocked() and friends)
2581AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2582AC_TRY_LINK([#include <stdio.h>],[
2583 FILE *f = fopen("/dev/null", "r");
2584 flockfile(f);
2585 getc_unlocked(f);
2586 funlockfile(f);
2587], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2588AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2589if test "$ac_cv_have_getc_unlocked" = yes
2590then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002591 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2592 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002593fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002594
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002595# check for readline 2.2
2596AC_TRY_CPP([#include <readline/readline.h>],
2597have_readline=yes, have_readline=no)
2598if test $have_readline = yes
2599then
2600 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2601 [readline/readline.h],
2602 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2603 [Define if you have readline 2.2]), )
2604fi
2605
Martin v. Löwis0daad592001-09-30 21:09:59 +00002606# check for readline 4.0
2607AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002608 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2609 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002610
Guido van Rossum353ae582001-07-10 16:45:32 +00002611# check for readline 4.2
2612AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002613 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2614 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002615
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002616AC_MSG_CHECKING(for broken nice())
2617AC_CACHE_VAL(ac_cv_broken_nice, [
2618AC_TRY_RUN([
2619int main()
2620{
2621 int val1 = nice(1);
2622 if (val1 != -1 && val1 == nice(2))
2623 exit(0);
2624 exit(1);
2625}
Guido van Rossum3065c942001-09-17 04:03:14 +00002626],
2627ac_cv_broken_nice=yes,
2628ac_cv_broken_nice=no,
2629ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002630AC_MSG_RESULT($ac_cv_broken_nice)
2631if test "$ac_cv_broken_nice" = yes
2632then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002633 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2634 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002635fi
2636
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002637# tzset(3) exists and works like we expect it to
2638AC_MSG_CHECKING(for working tzset())
2639AC_CACHE_VAL(ac_cv_working_tzset, [
2640AC_TRY_RUN([
2641#include <stdlib.h>
2642#include <time.h>
2643int main()
2644{
2645 int gmt_hour;
2646 int eastern_hour;
2647 time_t now;
2648 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002649 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002650 tzset();
2651 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002652 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002653 tzset();
2654 eastern_hour = localtime(&now)->tm_hour;
2655 if (eastern_hour == gmt_hour)
2656 exit(1);
2657 exit(0);
2658}
2659],
2660ac_cv_working_tzset=yes,
2661ac_cv_working_tzset=no,
2662ac_cv_working_tzset=no)])
2663AC_MSG_RESULT($ac_cv_working_tzset)
2664if test "$ac_cv_working_tzset" = yes
2665then
2666 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2667 [Define if tzset() actually switches the local timezone in a meaningful way.])
2668fi
2669
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002670# Look for subsecond timestamps in struct stat
2671AC_MSG_CHECKING(for tv_nsec in struct stat)
2672AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2673AC_TRY_COMPILE([#include <sys/stat.h>], [
2674struct stat st;
2675st.st_mtim.tv_nsec = 1;
2676],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002677ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002678ac_cv_stat_tv_nsec=no,
2679ac_cv_stat_tv_nsec=no))
2680AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2681if test "$ac_cv_stat_tv_nsec" = yes
2682then
2683 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2684 [Define if you have struct stat.st_mtim.tv_nsec])
2685fi
2686
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002687# On HP/UX 11.0, mvwdelch is a block with a return statement
2688AC_MSG_CHECKING(whether mvwdelch is an expression)
2689AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2690AC_TRY_COMPILE([#include <curses.h>], [
2691 int rtn;
2692 rtn = mvwdelch(0,0,0);
2693], ac_cv_mvwdelch_is_expression=yes,
2694 ac_cv_mvwdelch_is_expression=no,
2695 ac_cv_mvwdelch_is_expression=yes))
2696AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2697
2698if test "$ac_cv_mvwdelch_is_expression" = yes
2699then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002700 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2701 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002702fi
2703
2704AC_MSG_CHECKING(whether WINDOW has _flags)
2705AC_CACHE_VAL(ac_cv_window_has_flags,
2706AC_TRY_COMPILE([#include <curses.h>], [
2707 WINDOW *w;
2708 w->_flags = 0;
2709], ac_cv_window_has_flags=yes,
2710 ac_cv_window_has_flags=no,
2711 ac_cv_window_has_flags=no))
2712AC_MSG_RESULT($ac_cv_window_has_flags)
2713
2714
2715if test "$ac_cv_window_has_flags" = yes
2716then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002717 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2718 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002719fi
2720
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002721AC_MSG_CHECKING(for /dev/ptmx)
2722
2723if test -e /dev/ptmx
2724then
2725 AC_MSG_RESULT(yes)
2726 AC_DEFINE(HAVE_DEV_PTMX, 1,
2727 [Define if we have /dev/ptmx.])
2728else
2729 AC_MSG_RESULT(no)
2730fi
2731
Neal Norwitz865400f2003-03-21 01:42:58 +00002732AC_MSG_CHECKING(for /dev/ptc)
2733
2734if test -e /dev/ptc
2735then
2736 AC_MSG_RESULT(yes)
2737 AC_DEFINE(HAVE_DEV_PTC, 1,
2738 [Define if we have /dev/ptc.])
2739else
2740 AC_MSG_RESULT(no)
2741fi
2742
Martin v. Löwis01c04012002-11-11 14:58:44 +00002743AC_CHECK_TYPE(socklen_t,,
2744 AC_DEFINE(socklen_t,int,
2745 Define to `int' if <sys/socket.h> does not define.),[
2746#ifdef HAVE_SYS_TYPES_H
2747#include <sys/types.h>
2748#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002749#ifdef HAVE_SYS_SOCKET_H
2750#include <sys/socket.h>
2751#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002752])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002753
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002754AC_SUBST(THREADHEADERS)
2755
2756for h in `(cd $srcdir;echo Python/thread_*.h)`
2757do
2758 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2759done
2760
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002761AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002762SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002763AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002764for dir in $SRCDIRS; do
2765 if test ! -d $dir; then
2766 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002767 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002768done
2769AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002770
Guido van Rossum627b2d71993-12-24 10:39:16 +00002771# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002772AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2773AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002774
2775echo "creating Setup"
2776if test ! -f Modules/Setup
2777then
2778 cp $srcdir/Modules/Setup.dist Modules/Setup
2779fi
2780
2781echo "creating Setup.local"
2782if test ! -f Modules/Setup.local
2783then
2784 echo "# Edit this file for local setup changes" >Modules/Setup.local
2785fi
2786
2787echo "creating Makefile"
2788$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2789 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002790 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002791mv config.c Modules