blob: 4d3af9d1943b75e844a51e350b1284a25fe82c8c [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.
Martin v. Löwis858f8172003-05-24 12:35:47 +0000126 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm.
127 OpenBSD/2.* | OpenBSD/3.@<:@0123@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000128 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000129 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
130 # of union __?sigval. Reported by Stuart Bishop.
131 SunOS/5.6)
132 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000133 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
134 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
135 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-3@:>@)
136 define_xopen_source=no;;
137 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000138 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000139 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000140 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000141esac
142
143if test $define_xopen_source = yes
144then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000145 AC_DEFINE(_XOPEN_SOURCE, 600,
146 Define to the level of X/Open that your system supports)
147
148 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
149 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
150 # several APIs are not declared. Since this is also needed in some
151 # cases for HP-UX, we define it globally.
152
153 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
154 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
155
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000156fi
157
Guido van Rossum91922671997-10-09 20:24:13 +0000158#
159# SGI compilers allow the specification of the both the ABI and the
160# ISA on the command line. Depending on the values of these switches,
161# different and often incompatable code will be generated.
162#
163# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
164# thus supply support for various ABI/ISA combinations. The MACHDEP
165# variable is also adjusted.
166#
167AC_SUBST(SGI_ABI)
168if test ! -z "$SGI_ABI"
169then
170 CC="cc $SGI_ABI"
171 LDFLAGS="$SGI_ABI $LDFLAGS"
172 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
173fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000174AC_MSG_RESULT($MACHDEP)
175
Jack Jansen83f898c2002-12-30 22:23:40 +0000176# And add extra plat-mac for darwin
177AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000178AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000179AC_MSG_CHECKING(EXTRAPLATDIR)
180if test -z "$EXTRAPLATDIR"
181then
182 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000183 darwin)
184 EXTRAPLATDIR="\$(PLATMACDIRS)"
185 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
186 ;;
187 *)
188 EXTRAPLATDIR=""
189 EXTRAMACHDEPPATH=""
190 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000191 esac
192fi
193AC_MSG_RESULT($EXTRAPLATDIR)
194
Guido van Rossum627b2d71993-12-24 10:39:16 +0000195# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000196
197# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
198# for debug/optimization stuff. BASECFLAGS is for flags that are required
199# just to get things to compile and link. Users are free to override OPT
200# when running configure or make. The build should not break if they do.
201# BASECFLAGS should generally not be messed with, however.
202
203# XXX shouldn't some/most/all of this code be merged with the stuff later
204# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000205AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000206AC_ARG_WITH(gcc,
207 AC_HELP_STRING(--without-gcc,never use gcc),
208[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000209 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000210 no) CC=cc
211 without_gcc=yes;;
212 yes) CC=gcc
213 without_gcc=no;;
214 *) CC=$withval
215 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000216 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000217 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000218 AIX*) CC=cc_r
219 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000220 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000221 case $BE_HOST_CPU in
222 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000223 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000224 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000225 BASECFLAGS="$BASECFLAGS -export pragma"
226 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000227 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000228 ;;
229 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000230 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000231 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000232 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000233 ;;
234 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000235 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000236 ;;
237 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000238 AR="\$(srcdir)/Modules/ar_beos"
239 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000240 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000241 Monterey*)
242 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000243 without_gcc=;;
244 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000245 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000246AC_MSG_RESULT($without_gcc)
247
Guido van Rossum27552902001-01-23 01:52:26 +0000248AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000249AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000250MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000251AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000252AC_ARG_WITH(cxx,
253 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
254[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000255 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000256 case $withval in
257 no) CXX=
258 with_cxx=no;;
259 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000260 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000261 with_cxx=$withval;;
262 esac], [
263 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000264 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000265])
266AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000267
Michael W. Hudson54241132001-12-07 15:38:26 +0000268if test "$with_cxx" = "yes"
269then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000270 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000271fi
272
Martin v. Löwis537970f2000-12-13 17:37:02 +0000273dnl The following fragment works similar to AC_PROG_CXX.
274dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000275dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000276dnl Finally, it does not test whether CXX is g++.
277
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000278dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
279ifdef([AC_PROG_CXX_WORKS],[],
280 [AC_DEFUN([AC_PROG_CXX_WORKS],
281 [AC_LANG_PUSH(C++)dnl
282 _AC_COMPILER_EXEEXT
283 AC_LANG_POP()
284 ]
285)])
286
Martin v. Löwis537970f2000-12-13 17:37:02 +0000287if test "$check_cxx" = "yes"
288then
289 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
290 if test "$CXX" = "notfound"
291 then
292 CXX=
293 else
294 AC_PROG_CXX_WORKS
295 fi
296fi
297
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000298# If the user switches compilers, we can't believe the cache
299if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
300then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000301 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
302(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000303fi
304
Guido van Rossum627b2d71993-12-24 10:39:16 +0000305AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000306
307# checks for UNIX variants that set C preprocessor variables
308AC_AIX
309AC_MINIX
310
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000311# Check for unsupported systems
312case $ac_sys_system/$ac_sys_release in
313SunOS/4*|DYNIX/*|dgux*/*|IRIX/4*|Linux*/1*)
314 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
315 echo See README for details.
316 exit 1;;
317esac
318
319if test "$MINIX" = yes; then
320 echo This system \(MINIX\) is no longer supported.
321 echo Read README for details.
322 exit 1
323fi
324
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000325AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000326AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000327AC_ARG_WITH(suffix,
328 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
329[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000330 case $withval in
331 no) EXEEXT=;;
332 yes) EXEEXT=.exe;;
333 *) EXEEXT=$withval;;
334 esac])
335AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000336
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000337# Test whether we're running on a non-case-sensitive system, in which
338# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000339AC_SUBST(BUILDEXEEXT)
340AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000341if test ! -d CaseSensitiveTestDir; then
342mkdir CaseSensitiveTestDir
343fi
344
345if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000346then
Jack Jansen1999ef42001-12-06 21:47:20 +0000347 AC_MSG_RESULT(yes)
348 BUILDEXEEXT=.exe
349else
350 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000351 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000352fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000353rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000354
Guido van Rossumdd997f71998-10-07 19:58:26 +0000355case $MACHDEP in
356bsdos*)
357 case $CC in
358 gcc) CC="$CC -D_HAVE_BSDI";;
359 esac;;
360esac
361
Guido van Rossum84561611997-08-21 00:08:11 +0000362case $ac_sys_system in
363hp*|HP*)
364 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000365 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000366 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000367Monterey*)
368 case $CC in
369 cc) CC="$CC -Wl,-Bexport";;
370 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000371SunOS*)
372 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000373 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000374 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000375esac
376
Martin v. Löwise8964d42001-03-06 12:09:07 +0000377
Neil Schemenauer61c51152001-01-26 16:18:16 +0000378AC_SUBST(LIBRARY)
379AC_MSG_CHECKING(LIBRARY)
380if test -z "$LIBRARY"
381then
382 LIBRARY='libpython$(VERSION).a'
383fi
384AC_MSG_RESULT($LIBRARY)
385
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000386# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000387# name of the library into which to insert object files). BLDLIBRARY is also
388# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
389# is blank as the main program is not linked directly against LDLIBRARY.
390# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
391# systems without shared libraries, LDLIBRARY is the same as LIBRARY
392# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
393# DLLLIBRARY is the shared (i.e., DLL) library.
394#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000395# RUNSHARED is used to run shared python without installed libraries
396#
397# INSTSONAME is the name of the shared library that will be use to install
398# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000399AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000400AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000401AC_SUBST(BLDLIBRARY)
402AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000403AC_SUBST(INSTSONAME)
404AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000405LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000406BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000407INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000408DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000409LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000410RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000411
Guido van Rossumfb842551997-08-06 23:42:07 +0000412# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000413# If CXX is set, and if it is needed to link a main function that was
414# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
415# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000416# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000417# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000418AC_SUBST(LINKCC)
419AC_MSG_CHECKING(LINKCC)
420if test -z "$LINKCC"
421then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000422 if test -z "$CXX"; then
423 LINKCC="\$(PURIFY) \$(CC)"
424 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000425 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000426 $CXX -c conftest.$ac_ext 2>&5
427 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
428 && test -s conftest$ac_exeext && ./conftest$ac_exeext
429 then
430 LINKCC="\$(PURIFY) \$(CC)"
431 else
432 LINKCC="\$(PURIFY) \$(CXX)"
433 fi
434 rm -fr conftest*
435 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000436 case $ac_sys_system in
437 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000438 exp_extra="\"\""
439 if test $ac_sys_release -ge 5 -o \
440 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
441 exp_extra="."
442 fi
443 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000444 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000445 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000446 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000447 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000448 esac
449fi
450AC_MSG_RESULT($LINKCC)
451
Martin v. Löwis1142de32002-03-29 16:28:31 +0000452AC_MSG_CHECKING(for --enable-shared)
453AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000454 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000455
Martin v. Löwis1142de32002-03-29 16:28:31 +0000456if test -z "$enable_shared"
457then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000458 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000459 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000460 enable_shared="yes";;
461 *)
462 enable_shared="no";;
463 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000464fi
465AC_MSG_RESULT($enable_shared)
466
467
468AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000469
Guido van Rossumb8552162001-09-05 14:58:11 +0000470# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
471# library that we build, but we do not want to link against it (we
472# will find it with a -framework option). For this reason there is an
473# extra variable BLDLIBRARY against which Python and the extension
474# modules are linked, BLDLIBRARY. This is normally the same as
475# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000476if test "$enable_framework"
477then
478 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
479 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
480 BLDLIBRARY=''
481else
482 BLDLIBRARY='$(LDLIBRARY)'
483fi
484
Martin v. Löwis1142de32002-03-29 16:28:31 +0000485# Other platforms follow
486if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000487 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000488 case $ac_sys_system in
489 BeOS*)
490 LDLIBRARY='libpython$(VERSION).so'
491 ;;
492 CYGWIN*)
493 LDLIBRARY='libpython$(VERSION).dll.a'
494 DLLLIBRARY='libpython$(VERSION).dll'
495 ;;
496 SunOS*)
497 LDLIBRARY='libpython$(VERSION).so'
498 BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)'
499 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
500 ;;
Martin v. Löwis1bc894b2002-07-30 20:19:58 +0000501 Linux*|GNU*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000502 LDLIBRARY='libpython$(VERSION).so'
503 BLDLIBRARY='-L. -lpython$(VERSION)'
504 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
505 INSTSONAME="$LDLIBRARY".$SOVERSION
506 ;;
507 hp*|HP*)
508 LDLIBRARY='libpython$(VERSION).sl'
509 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
510 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
511 ;;
512 OSF*)
513 LDLIBRARY='libpython$(VERSION).so'
514 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
515 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
516 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000517 atheos*)
518 LDLIBRARY='libpython$(VERSION).so'
519 BLDLIBRARY='-L. -lpython$(VERSION)'
520 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
521 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000522 esac
523 # DG/UX requires some fancy ld contortions to produce a .so from an .a
524 case $MACHDEP in
525 dguxR4)
526 LDLIBRARY='libpython$(VERSION).so'
Skip Montanarodecc6a42003-01-01 20:07:49 +0000527 BASECFLAGS="$BASECFLAGS -pic"
Martin v. Löwis1142de32002-03-29 16:28:31 +0000528 ;;
529 esac
530fi
531
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000532AC_MSG_RESULT($LDLIBRARY)
533
Guido van Rossum627b2d71993-12-24 10:39:16 +0000534AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000535AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000536AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000537
538case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000539bsdos*|hp*|HP*)
540 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000541 if test -z "$INSTALL"
542 then
543 INSTALL="${srcdir}/install-sh -c"
544 fi
545esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000546AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000547
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000548# Not every filesystem supports hard links
549AC_SUBST(LN)
550if test -z "$LN" ; then
551 case $ac_sys_system in
552 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000553 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000554 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000555 *) LN=ln;;
556 esac
557fi
558
Fred Drake9f715822001-07-11 06:27:00 +0000559# Check for --with-pydebug
560AC_MSG_CHECKING(for --with-pydebug)
561AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000562 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
563[
Fred Drake9f715822001-07-11 06:27:00 +0000564if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000565then
566 AC_DEFINE(Py_DEBUG, 1,
567 [Define if you want to build an interpreter with many run-time checks.])
568 AC_MSG_RESULT(yes);
569 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000570else AC_MSG_RESULT(no); Py_DEBUG='false'
571fi],
572[AC_MSG_RESULT(no)])
573
Skip Montanarodecc6a42003-01-01 20:07:49 +0000574# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
575# merged with this chunk of code?
576
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000577# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000578# ------------------------
579# (The following bit of code is complicated enough - please keep things
580# indented properly. Just pretend you're editing Python code. ;-)
581
582# There are two parallel sets of case statements below, one that checks to
583# see if OPT was set and one that does BASECFLAGS setting based upon
584# compiler and platform. BASECFLAGS tweaks need to be made even if the
585# user set OPT.
586
587# tweak OPT based on compiler and platform, only if the user didn't set
588# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000589AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000590if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000591then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000592 case $GCC in
593 yes)
594 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000595 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000596 if test "$Py_DEBUG" = 'true' ; then
597 # Optimization messes up debuggers, so turn it off for
598 # debug builds.
599 OPT="-g -Wall -Wstrict-prototypes"
600 else
601 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000602 fi
603 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000604 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000605 OPT="-O3 -Wall -Wstrict-prototypes"
606 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000607 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000608 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000609 SCO_SV*) OPT="$OPT -m486 -DSCO5"
610 ;;
611 esac
Fred Drake9f715822001-07-11 06:27:00 +0000612 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000613
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000614 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000615 OPT="-O"
616 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000617 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000618
619 # The current (beta) Monterey compiler dies with optimizations
620 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000621 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000622 Monterey*)
623 OPT=""
624 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000625 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000626
Guido van Rossum4e8af441994-08-19 15:33:54 +0000627fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000628
Skip Montanarodecc6a42003-01-01 20:07:49 +0000629AC_SUBST(BASECFLAGS)
630# tweak BASECFLAGS based on compiler and platform
631case $GCC in
632yes)
633 case $ac_sys_system in
634 SCO_SV*)
635 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
636 ;;
637 # is there any other compiler on Darwin besides gcc?
638 Darwin*)
639 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
640 ;;
641 esac
642 ;;
643
644*)
645 case $ac_sys_system in
646 OpenUNIX*|UnixWare*)
647 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
648 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000649 OSF*)
650 BASECFLAGS="$BASECFLAGS -ieee -std"
651 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000652 SCO_SV*)
653 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
654 ;;
655 esac
656 ;;
657esac
658
Fred Drakee1ceaa02001-12-04 20:55:47 +0000659if test "$Py_DEBUG" = 'true'; then
660 :
661else
662 OPT="-DNDEBUG $OPT"
663fi
664
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000665if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000666then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000667 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000668fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000669
Guido van Rossum91922671997-10-09 20:24:13 +0000670AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
671AC_CACHE_VAL(ac_cv_opt_olimit_ok,
672[ac_save_cc="$CC"
673CC="$CC -OPT:Olimit=0"
674AC_TRY_RUN([int main() { return 0; }],
675 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000676 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000677 ac_cv_opt_olimit_ok=no)
678CC="$ac_save_cc"])
679AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000680if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000681 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000682 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
683 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
684 # environment?
685 Darwin*)
686 ;;
687 *)
688 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
689 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000690 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000691else
692 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
693 AC_CACHE_VAL(ac_cv_olimit_ok,
694 [ac_save_cc="$CC"
695 CC="$CC -Olimit 1500"
696 AC_TRY_RUN([int main() { return 0; }],
697 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000698 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000699 ac_cv_olimit_ok=no)
700 CC="$ac_save_cc"])
701 AC_MSG_RESULT($ac_cv_olimit_ok)
702 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000703 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000704 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000705fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000706
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000707# On some compilers, pthreads are available without further options
708# (e.g. MacOS X). On some of these systems, the compiler will not
709# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
710# So we have to see first whether pthreads are available without
711# options before we can check whether -Kpthread improves anything.
712AC_MSG_CHECKING(whether pthreads are available without options)
713AC_CACHE_VAL(ac_cv_pthread_is_default,
714[AC_TRY_RUN([
715#include <pthread.h>
716
717void* routine(void* p){return NULL;}
718
719int main(){
720 pthread_t p;
721 if(pthread_create(&p,NULL,routine,NULL)!=0)
722 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000723 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000724 return 0;
725}
726],
727 ac_cv_pthread_is_default=yes,
728 ac_cv_pthread_is_default=no,
729 ac_cv_pthread_is_default=no)
730])
731AC_MSG_RESULT($ac_cv_pthread_is_default)
732
733
734if test $ac_cv_pthread_is_default = yes
735then
736 ac_cv_kpthread=no
737else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000738# -Kpthread, if available, provides the right #defines
739# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000740# Some compilers won't report that they do not support -Kpthread,
741# so we need to run a program to see whether it really made the
742# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000743AC_MSG_CHECKING(whether $CC accepts -Kpthread)
744AC_CACHE_VAL(ac_cv_kpthread,
745[ac_save_cc="$CC"
746CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000747AC_TRY_RUN([
748#include <pthread.h>
749
750void* routine(void* p){return NULL;}
751
752int main(){
753 pthread_t p;
754 if(pthread_create(&p,NULL,routine,NULL)!=0)
755 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000756 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000757 return 0;
758}
759],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000760 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000761 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000762 ac_cv_kpthread=no)
763CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000764AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000765fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000766
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000767if test $ac_cv_kpthread = no
768then
769# -Kthread, if available, provides the right #defines
770# and linker options to make pthread_create available
771# Some compilers won't report that they do not support -Kthread,
772# so we need to run a program to see whether it really made the
773# function available.
774AC_MSG_CHECKING(whether $CC accepts -Kthread)
775AC_CACHE_VAL(ac_cv_kthread,
776[ac_save_cc="$CC"
777CC="$CC -Kthread"
778AC_TRY_RUN([
779#include <pthread.h>
780
781void* routine(void* p){return NULL;}
782
783int main(){
784 pthread_t p;
785 if(pthread_create(&p,NULL,routine,NULL)!=0)
786 return 1;
787 (void)pthread_detach(p);
788 return 0;
789}
790],
791 ac_cv_kthread=yes,
792 ac_cv_kthread=no,
793 ac_cv_kthread=no)
794CC="$ac_save_cc"])
795AC_MSG_RESULT($ac_cv_kthread)
796fi
797
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000798if test $ac_cv_kthread = no
799then
800# -pthread, if available, provides the right #defines
801# and linker options to make pthread_create available
802# Some compilers won't report that they do not support -pthread,
803# so we need to run a program to see whether it really made the
804# function available.
805AC_MSG_CHECKING(whether $CC accepts -pthread)
806AC_CACHE_VAL(ac_cv_thread,
807[ac_save_cc="$CC"
808CC="$CC -pthread"
809AC_TRY_RUN([
810#include <pthread.h>
811
812void* routine(void* p){return NULL;}
813
814int main(){
815 pthread_t p;
816 if(pthread_create(&p,NULL,routine,NULL)!=0)
817 return 1;
818 (void)pthread_detach(p);
819 return 0;
820}
821],
822 ac_cv_pthread=yes,
823 ac_cv_pthread=no,
824 ac_cv_pthread=no)
825CC="$ac_save_cc"])
826AC_MSG_RESULT($ac_cv_pthread)
827fi
828
Fred Drakece81d592000-07-09 14:39:29 +0000829dnl # check for ANSI or K&R ("traditional") preprocessor
830dnl AC_MSG_CHECKING(for C preprocessor type)
831dnl AC_TRY_COMPILE([
832dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
833dnl int foo;
834dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
835dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
836dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000837
Guido van Rossum627b2d71993-12-24 10:39:16 +0000838# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000839AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000840AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
841libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000842signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
843unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000844sys/audioio.h sys/bsdtty.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000845sys/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 +0000846sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000847sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000848AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000849AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000850
851# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000852was_it_defined=no
853AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000854AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
855 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
856])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000857AC_MSG_RESULT($was_it_defined)
858
Neal Norwitz11690112002-07-30 01:08:28 +0000859# Check whether using makedev requires defining _OSF_SOURCE
860AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000861AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000862 [ makedev(0, 0) ],
863 ac_cv_has_makedev=yes,
864 ac_cv_has_makedev=no)
865if test "$ac_cv_has_makedev" = "no"; then
866 # we didn't link, try if _OSF_SOURCE will allow us to link
867 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000868#define _OSF_SOURCE 1
869#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000870 ],
871 [ makedev(0, 0) ],
872 ac_cv_has_makedev=yes,
873 ac_cv_has_makedev=no)
874 if test "$ac_cv_has_makedev" = "yes"; then
875 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
876 fi
877fi
878AC_MSG_RESULT($ac_cv_has_makedev)
879if test "$ac_cv_has_makedev" = "yes"; then
880 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
881fi
882
Martin v. Löwis399a6892002-10-04 10:22:02 +0000883# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
884# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
885# defined, but the compiler does not support pragma redefine_extname,
886# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
887# structures (such as rlimit64) without declaring them. As a
888# work-around, disable LFS on such configurations
889
890use_lfs=yes
891AC_MSG_CHECKING(Solaris LFS bug)
892AC_TRY_COMPILE([
893#define _LARGEFILE_SOURCE 1
894#define _FILE_OFFSET_BITS 64
895#include <sys/resource.h>
896],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
897AC_MSG_RESULT($sol_lfs_bug)
898if test "$sol_lfs_bug" = "yes"; then
899 use_lfs=no
900fi
901
902if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000903# Two defines needed to enable largefile support on various platforms
904# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000905AC_DEFINE(_LARGEFILE_SOURCE, 1,
906[This must be defined on some systems to enable large file support.])
907AC_DEFINE(_FILE_OFFSET_BITS, 64,
908[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000909fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000910
Guido van Rossum300fda71996-08-19 21:58:16 +0000911# Add some code to confdefs.h so that the test for off_t works on SCO
912cat >> confdefs.h <<\EOF
913#if defined(SCO_DS)
914#undef _OFF_T
915#endif
916EOF
917
Guido van Rossumef2255b2000-03-10 22:30:29 +0000918# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000919AC_TYPE_MODE_T
920AC_TYPE_OFF_T
921AC_TYPE_PID_T
922AC_TYPE_SIGNAL
923AC_TYPE_SIZE_T
924AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000925
Guido van Rossumef2255b2000-03-10 22:30:29 +0000926# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000927AC_CHECK_SIZEOF(int, 4)
928AC_CHECK_SIZEOF(long, 4)
929AC_CHECK_SIZEOF(void *, 4)
930AC_CHECK_SIZEOF(char, 1)
931AC_CHECK_SIZEOF(short, 2)
932AC_CHECK_SIZEOF(float, 4)
933AC_CHECK_SIZEOF(double, 8)
934AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000935
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000936AC_MSG_CHECKING(for long long support)
937have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000938AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
939 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
940 have_long_long=yes
941])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000942AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000943if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000944AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000945fi
946
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000947AC_MSG_CHECKING(for uintptr_t support)
948have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000949AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
950 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
951 have_uintptr_t=yes
952])
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000953AC_MSG_RESULT($have_uintptr_t)
954if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000955AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000956fi
957
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000958# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
959AC_MSG_CHECKING(size of off_t)
960AC_CACHE_VAL(ac_cv_sizeof_off_t,
961[AC_TRY_RUN([#include <stdio.h>
962#include <sys/types.h>
963main()
964{
965 FILE *f=fopen("conftestval", "w");
966 if (!f) exit(1);
967 fprintf(f, "%d\n", sizeof(off_t));
968 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000969}],
970ac_cv_sizeof_off_t=`cat conftestval`,
971ac_cv_sizeof_off_t=0,
972ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000973])
974AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000975AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
976[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000977
978AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000979if test "$have_long_long" = yes -a \
980 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
981 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000982 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
983 [Defined to enable large file support when an off_t is bigger than a long
984 and long long is available and at least as big as an off_t. You may need
985 to add some flags for configuration and compilation to enable this mode.
986 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000987 AC_MSG_RESULT(yes)
988else
989 AC_MSG_RESULT(no)
990fi
991
Fred Drakea3f6e912000-06-29 20:44:47 +0000992# AC_CHECK_SIZEOF() doesn't include <time.h>.
993AC_MSG_CHECKING(size of time_t)
994AC_CACHE_VAL(ac_cv_sizeof_time_t,
995[AC_TRY_RUN([#include <stdio.h>
996#include <time.h>
997main()
998{
999 FILE *f=fopen("conftestval", "w");
1000 if (!f) exit(1);
1001 fprintf(f, "%d\n", sizeof(time_t));
1002 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001003}],
1004ac_cv_sizeof_time_t=`cat conftestval`,
1005ac_cv_sizeof_time_t=0,
1006ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001007])
1008AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001009AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1010[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001011
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001012
Trent Mick635f6fb2000-08-23 21:33:05 +00001013# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001014ac_save_cc="$CC"
1015if test "$ac_cv_kpthread" = "yes"
1016then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001017elif test "$ac_cv_kthread" = "yes"
1018then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001019elif test "$ac_cv_pthread" = "yes"
1020then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001021fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001022AC_MSG_CHECKING(for pthread_t)
1023have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001024AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001025AC_MSG_RESULT($have_pthread_t)
1026if test "$have_pthread_t" = yes ; then
1027 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1028 AC_MSG_CHECKING(size of pthread_t)
1029 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1030 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001031#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001032 main()
1033 {
1034 FILE *f=fopen("conftestval", "w");
1035 if (!f) exit(1);
1036 fprintf(f, "%d\n", sizeof(pthread_t));
1037 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001038 }],
1039 ac_cv_sizeof_pthread_t=`cat conftestval`,
1040 ac_cv_sizeof_pthread_t=0,
1041 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001042 ])
1043 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001044 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1045 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001046fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001047CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001048
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001049AC_MSG_CHECKING(for --enable-toolbox-glue)
1050AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001051 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001052
1053if test -z "$enable_toolbox_glue"
1054then
1055 case $ac_sys_system/$ac_sys_release in
1056 Darwin/*)
1057 enable_toolbox_glue="yes";;
1058 *)
1059 enable_toolbox_glue="no";;
1060 esac
1061fi
1062case "$enable_toolbox_glue" in
1063yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001064 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001065 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001066 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001067 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1068 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001069 ;;
1070*)
1071 extra_frameworks=""
1072 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001073 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001074 ;;
1075esac
1076AC_MSG_RESULT($enable_toolbox_glue)
1077
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001078AC_SUBST(LIBTOOL_CRUFT)
1079case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001080 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001081 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001082 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +00001083 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1084 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001085 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001086 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001087 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001088 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1089 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001090esac
1091
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001092AC_MSG_CHECKING(for --enable-framework)
1093if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001094then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001095 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001096 # -F. is needed to allow linking to the framework while
1097 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001098 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001099 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1100 [Define if you want to produce an OpenStep/Rhapsody framework
1101 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001102 AC_MSG_RESULT(yes)
1103else
1104 AC_MSG_RESULT(no)
1105fi
1106
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001107AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001108case $ac_sys_system/$ac_sys_release in
1109 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001110 AC_DEFINE(WITH_DYLD, 1,
1111 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1112 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1113 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001114 AC_MSG_RESULT(always on for Darwin)
1115 ;;
1116 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001117 AC_MSG_RESULT(no)
1118 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001119esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001120
Guido van Rossumac405f61994-09-12 10:56:06 +00001121# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001122AC_SUBST(SO)
1123AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001124AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001125AC_SUBST(CCSHARED)
1126AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001127# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001128# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001129AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001130if test -z "$SO"
1131then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001132 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001133 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001134 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001135 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001136 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001137fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001138AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001139# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001140# -- "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 +00001141# (Shared libraries in this instance are shared modules to be loaded into
1142# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001143AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001144if test -z "$LDSHARED"
1145then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001146 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001147 AIX*)
1148 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001149 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001150 ;;
1151 BeOS*)
1152 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001153 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001154 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001155 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001156 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001157 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001158 SunOS/5*)
1159 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001160 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001161 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001162 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001163 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001164 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001165 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001166 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001167 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1168 if test "$enable_framework" ; then
1169 # Link against the framework. All externals should be defined.
1170 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1171 else
1172 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001173 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001174 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001175 Darwin/*)
1176 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1177 if test "$enable_framework" ; then
1178 # Link against the framework. All externals should be defined.
1179 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1180 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001181 # No framework, use the Python app as bundle-loader
1182 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001183 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001184 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001185 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001186 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001187 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001188 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001189 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001190 then
1191 LDSHARED="cc -shared ${LDFLAGS}"
1192 else
1193 LDSHARED="ld -Bshareable ${LDFLAGS}"
1194 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001195 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001196 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001197 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001198 then LDSHARED='$(CC) -shared'
1199 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001200 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001201 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001202 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001203 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001204 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001205 *) LDSHARED="ld";;
1206 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001207fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001208AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001209BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001210# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001211# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001212AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001213if test -z "$CCSHARED"
1214then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001215 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001216 SunOS*) if test "$GCC" = yes;
1217 then CCSHARED="-fPIC";
1218 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001219 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001220 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001221 else CCSHARED="+z";
1222 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001223 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001224 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001225 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001226 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001227 if test "$GCC" = "yes"
1228 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001229 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001230 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001231 SCO_SV*)
1232 if test "$GCC" = "yes"
1233 then CCSHARED="-fPIC"
1234 else CCSHARED="-Kpic -belf"
1235 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001236 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001237 IRIX*/6*) case $CC in
1238 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001239 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001240 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001241 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001242 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001243fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001244AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001245# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001246# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001247AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001248if test -z "$LINKFORSHARED"
1249then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001250 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001251 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001252 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001253 LINKFORSHARED="-Wl,-E -Wl,+s";;
1254# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001255 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001256 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001257 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001258 Darwin/*)
1259 # -u __dummy makes the linker aware of the objc runtime
1260 # in System.framework; otherwise, __objcInit (referenced in
1261 # crt1.o) gets erroneously defined as common, which breaks dynamic
1262 # loading of any modules which reference it in System.framework.
1263 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1264 # not used by the core itself but which needs to be in the core so
1265 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001266 # -prebind is no longer used, because it actually seems to give a
1267 # slowdown in stead of a speedup, maybe due to the large number of
1268 # dynamic loads Python does.
1269 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001270 if test "$enable_framework"
1271 then
1272 LINKFORSHARED="$LINKFORSHARED -framework Python"
1273 fi
1274 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001275 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001276 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001277 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001278 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001279 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1280 then
1281 LINKFORSHARED="-Wl,--export-dynamic"
1282 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001283 SunOS/5*) case $CC in
1284 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001285 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001286 then
1287 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001288 fi;;
1289 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001290 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001291fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001293
Neil Schemenauer61c51152001-01-26 16:18:16 +00001294AC_SUBST(CFLAGSFORSHARED)
1295AC_MSG_CHECKING(CFLAGSFORSHARED)
1296if test ! "$LIBRARY" = "$LDLIBRARY"
1297then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001298 case $ac_sys_system in
1299 CYGWIN*)
1300 # Cygwin needs CCSHARED when building extension DLLs
1301 # but not when building the interpreter DLL.
1302 CFLAGSFORSHARED='';;
1303 *)
1304 CFLAGSFORSHARED='$(CCSHARED)'
1305 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001306fi
1307AC_MSG_RESULT($CFLAGSFORSHARED)
1308
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001309# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1310# library (with --enable-shared).
1311# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001312# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1313# if it is not required, since it creates a dependency of the shared library
1314# to LIBS. This, in turn, means that applications linking the shared libpython
1315# don't need to link LIBS explicitly. The default should be only changed
1316# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001317AC_SUBST(SHLIBS)
1318AC_MSG_CHECKING(SHLIBS)
1319case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001320 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001321 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001322esac
1323AC_MSG_RESULT($SHLIBS)
1324
1325
Guido van Rossum627b2d71993-12-24 10:39:16 +00001326# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001327AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1328AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001329AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1330 # posix4 on Solaris 2.6
1331 # pthread (first!) on Linux
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001332
1333# checks for system dependent C++ extensions support
1334case "$ac_sys_system" in
1335 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1336 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1337 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001338 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1339 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1340 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001341 AC_MSG_RESULT(yes)],
1342 [AC_MSG_RESULT(no)]);;
1343 *) ;;
1344esac
1345
Guido van Rossum70c7f481998-03-26 18:44:10 +00001346# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001347# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001348# BeOS' sockets are stashed in libnet.
1349case "$ac_sys_system" in
1350IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001351*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001352AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001353AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001354;;
1355esac
1356case "$ac_sys_system" in
1357BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001358AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1359;;
1360esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001361
Guido van Rossumc5a39031996-07-31 17:35:03 +00001362AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001363AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001364 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1365[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001366AC_MSG_RESULT($withval)
1367LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001368],
1369[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001370
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001371# Determine if signalmodule should be used.
1372AC_SUBST(USE_SIGNAL_MODULE)
1373AC_SUBST(SIGNAL_OBJS)
1374AC_MSG_CHECKING(for --with-signal-module)
1375AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001376 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001377
1378if test -z "$with_signal_module"
1379then with_signal_module="yes"
1380fi
1381AC_MSG_RESULT($with_signal_module)
1382
1383if test "${with_signal_module}" = "yes"; then
1384 USE_SIGNAL_MODULE=""
1385 SIGNAL_OBJS=""
1386else
1387 USE_SIGNAL_MODULE="#"
1388 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1389fi
1390
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001391# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001392AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001393USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001394
Guido van Rossum54d93d41997-01-22 20:51:58 +00001395AC_MSG_CHECKING(for --with-dec-threads)
1396AC_SUBST(LDLAST)
1397AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001398 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1399[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001400AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001401LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001402if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001403 with_thread="$withval";
1404fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001405[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001406
Martin v. Löwis11437992002-04-12 09:54:03 +00001407# Templates for things AC_DEFINEd more than once.
1408# For a single AC_DEFINE, no template is needed.
1409AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1410AH_TEMPLATE(_REENTRANT,
1411 [Define to force use of thread-safe errno, h_errno, and other functions])
1412AH_TEMPLATE(WITH_THREAD,
1413 [Define if you want to compile in rudimentary thread support])
1414
Guido van Rossum54d93d41997-01-22 20:51:58 +00001415AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001416dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001417AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001418 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001419
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001420# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001421dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001422AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001423 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1424 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001425
1426if test -z "$with_threads"
1427then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001428fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001429AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001430
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001431AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001432if test "$with_threads" = "no"
1433then
1434 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001435elif test "$ac_cv_pthread_is_default" = yes
1436then
1437 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001438 # Defining _REENTRANT on system with POSIX threads should not hurt.
1439 AC_DEFINE(_REENTRANT)
1440 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001441 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001442elif test "$ac_cv_kpthread" = "yes"
1443then
1444 CC="$CC -Kpthread"
1445 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001446 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001447 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001448elif test "$ac_cv_kthread" = "yes"
1449then
1450 CC="$CC -Kthread"
1451 AC_DEFINE(WITH_THREAD)
1452 posix_threads=yes
1453 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001454elif test "$ac_cv_pthread" = "yes"
1455then
1456 CC="$CC -pthread"
1457 AC_DEFINE(WITH_THREAD)
1458 posix_threads=yes
1459 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001460else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001461 if test ! -z "$with_threads" -a -d "$with_threads"
1462 then LDFLAGS="$LDFLAGS -L$with_threads"
1463 fi
1464 if test ! -z "$withval" -a -d "$withval"
1465 then LDFLAGS="$LDFLAGS -L$withval"
1466 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001467
1468 # According to the POSIX spec, a pthreads implementation must
1469 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1470 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1471 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001472 [
1473#include <unistd.h>
1474#ifdef _POSIX_THREADS
1475yes
1476#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001477 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1478 AC_MSG_RESULT($unistd_defines_pthreads)
1479
Martin v. Löwis130fb172001-07-19 11:00:41 +00001480 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001481 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1482 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001483 AC_DEFINE(HURD_C_THREADS, 1,
1484 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001485 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001486 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001487 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1488 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001489 AC_DEFINE(MACH_C_THREADS, 1,
1490 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001491 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001492 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001493 AC_ARG_WITH([pth],
1494 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1495 [AC_MSG_RESULT($withval)
1496 AC_DEFINE([WITH_THREAD])
1497 AC_DEFINE([HAVE_PTH], 1,
1498 [Define if you have GNU PTH threads.])
1499 LIBS="-lpth $LIBS"
1500 THREADOBJ="Python/thread.o"],
1501 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001502
1503 # Just looking for pthread_create in libpthread is not enough:
1504 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1505 # So we really have to include pthread.h, and then link.
1506 _libs=$LIBS
1507 LIBS="$LIBS -lpthread"
1508 AC_MSG_CHECKING([for pthread_create in -lpthread])
1509 AC_TRY_LINK([#include <pthread.h>
1510
1511void * start_routine (void *arg) { exit (0); }], [
1512pthread_create (NULL, NULL, start_routine, NULL)], [
1513 AC_MSG_RESULT(yes)
1514 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001515 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001516 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001517 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001518 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001519 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001520 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001521 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1522 AC_DEFINE(ATHEOS_THREADS, 1,
1523 [Define this if you have AtheOS threads.])
1524 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001525 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001526 AC_DEFINE(BEOS_THREADS, 1,
1527 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001528 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001529 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001530 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001531 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001532 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001533 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001534 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001535 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001536 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001537 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001538 echo Systems with __d6_pthread_create are not supported anymore.
1539 echo See README
1540 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001541 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001542 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001543 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001544 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001545 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001546 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001547 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001548 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001549 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001550 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001551 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001552 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001553 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001554
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001555 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1556 LIBS="$LIBS -lmpc"
1557 THREADOBJ="Python/thread.o"
1558 USE_THREAD_MODULE=""])
1559
1560 if test "$posix_threads" != "yes"; then
1561 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1562 LIBS="$LIBS -lthread"
1563 THREADOBJ="Python/thread.o"
1564 USE_THREAD_MODULE=""])
1565 fi
1566
1567 if test "$USE_THREAD_MODULE" != "#"
1568 then
1569 # If the above checks didn't disable threads, (at least) OSF1
1570 # needs this '-threads' argument during linking.
1571 case $ac_sys_system in
1572 OSF1) LDLAST=-threads;;
1573 esac
1574 fi
1575fi
1576
1577if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001578 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001579 AC_DEFINE(_POSIX_THREADS, 1,
1580 [Define if you have POSIX threads,
1581 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001582 fi
1583
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001584 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1585 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001586 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1587 Defined for Solaris 2.6 bug in pthread header.)
1588 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001589 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001590 Define if the Posix semaphores do not work on your system)
1591 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001592 esac
1593
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001594 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1595 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1596 [AC_TRY_RUN([#include <pthread.h>
1597 void *foo(void *parm) {
1598 return NULL;
1599 }
1600 main() {
1601 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001602 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001603 if (pthread_attr_init(&attr)) exit(-1);
1604 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001605 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001606 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001607 }],
1608 ac_cv_pthread_system_supported=yes,
1609 ac_cv_pthread_system_supported=no,
1610 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001611 ])
1612 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1613 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001614 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001615 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001616 AC_CHECK_FUNCS(pthread_sigmask)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001617fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001618
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001619
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001620# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001621AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001622AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001623AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001624[ --enable-ipv6 Enable ipv6 (with ipv4) support
1625 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001626[ case "$enableval" in
1627 no)
1628 AC_MSG_RESULT(no)
1629 ipv6=no
1630 ;;
1631 *) AC_MSG_RESULT(yes)
1632 AC_DEFINE(ENABLE_IPV6)
1633 ipv6=yes
1634 ;;
1635 esac ],
1636
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001637[
1638dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001639 AC_TRY_RUN([ /* AF_INET6 available check */
1640#include <sys/types.h>
1641#include <sys/socket.h>
1642main()
1643{
1644 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1645 exit(1);
1646 else
1647 exit(0);
1648}
1649],
1650 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001651 ipv6=yes,
1652 AC_MSG_RESULT(no)
1653 ipv6=no,
1654 AC_MSG_RESULT(no)
1655 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001656)
1657
1658if test "$ipv6" = "yes"; then
1659 AC_MSG_CHECKING(if RFC2553 API is available)
1660 AC_TRY_COMPILE([#include <sys/types.h>
1661#include <netinet/in.h>],
1662 [struct sockaddr_in6 x;
1663x.sin6_scope_id;],
1664 AC_MSG_RESULT(yes)
1665 ipv6=yes,
1666 AC_MSG_RESULT(no, IPv6 disabled)
1667 ipv6=no)
1668fi
1669
1670if test "$ipv6" = "yes"; then
1671 AC_DEFINE(ENABLE_IPV6)
1672fi
1673])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001674
1675ipv6type=unknown
1676ipv6lib=none
1677ipv6trylibc=no
1678
1679if test "$ipv6" = "yes"; then
1680 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001681 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1682 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001683 case $i in
1684 inria)
1685 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001686 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001687#include <netinet/in.h>
1688#ifdef IPV6_INRIA_VERSION
1689yes
1690#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001691 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001692 ;;
1693 kame)
1694 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001695 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001696#include <netinet/in.h>
1697#ifdef __KAME__
1698yes
1699#endif],
1700 [ipv6type=$i;
1701 ipv6lib=inet6
1702 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001703 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001704 ;;
1705 linux-glibc)
1706 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001707 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001708#include <features.h>
1709#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1710yes
1711#endif],
1712 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001713 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001714 ;;
1715 linux-inet6)
1716 dnl http://www.v6.linux.or.jp/
1717 if test -d /usr/inet6; then
1718 ipv6type=$i
1719 ipv6lib=inet6
1720 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001721 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001722 fi
1723 ;;
1724 solaris)
1725 if test -f /etc/netconfig; then
1726 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1727 ipv6type=$i
1728 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001729 fi
1730 fi
1731 ;;
1732 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001733 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001734#include <sys/param.h>
1735#ifdef _TOSHIBA_INET6
1736yes
1737#endif],
1738 [ipv6type=$i;
1739 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001740 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001741 ;;
1742 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001743 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001744#include </usr/local/v6/include/sys/v6config.h>
1745#ifdef __V6D__
1746yes
1747#endif],
1748 [ipv6type=$i;
1749 ipv6lib=v6;
1750 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001751 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001752 ;;
1753 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001754 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001755#include <sys/param.h>
1756#ifdef _ZETA_MINAMI_INET6
1757yes
1758#endif],
1759 [ipv6type=$i;
1760 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001761 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001762 ;;
1763 esac
1764 if test "$ipv6type" != "unknown"; then
1765 break
1766 fi
1767 done
1768 AC_MSG_RESULT($ipv6type)
1769fi
1770
1771if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1772 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1773 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1774 echo "using lib$ipv6lib"
1775 else
1776 if test $ipv6trylibc = "yes"; then
1777 echo "using libc"
1778 else
1779 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1780 echo "You need to fetch lib$ipv6lib.a from appropriate"
1781 echo 'ipv6 kit and compile beforehand.'
1782 exit 1
1783 fi
1784 fi
1785fi
1786
Jack Jansen7b8c7542002-04-14 20:12:41 +00001787# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001788AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001789AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001790 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001791
1792if test -z "$with_universal_newlines"
1793then with_universal_newlines="yes"
1794fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001795if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001796then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001797 echo --without-universal-newlines is unsupported, see README
1798 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001799else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001800 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1801 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001802fi
1803AC_MSG_RESULT($with_universal_newlines)
1804
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001805# Check for --with-doc-strings
1806AC_MSG_CHECKING(for --with-doc-strings)
1807AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001808 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001809
1810if test -z "$with_doc_strings"
1811then with_doc_strings="yes"
1812fi
1813if test "$with_doc_strings" != "no"
1814then
1815 AC_DEFINE(WITH_DOC_STRINGS, 1,
1816 [Define if you want documentation strings in extension modules])
1817fi
1818AC_MSG_RESULT($with_doc_strings)
1819
Neil Schemenauera35c6882001-02-27 04:45:05 +00001820# Check for Python-specific malloc support
1821AC_MSG_CHECKING(for --with-pymalloc)
1822AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001823 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001824
1825if test -z "$with_pymalloc"
1826then with_pymalloc="yes"
1827fi
1828if test "$with_pymalloc" != "no"
1829then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001830 AC_DEFINE(WITH_PYMALLOC, 1,
1831 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001832fi
1833AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001834
Barry Warsawef82cd72000-06-30 16:21:01 +00001835# Check for --with-wctype-functions
1836AC_MSG_CHECKING(for --with-wctype-functions)
1837AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001838 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1839[
Barry Warsawef82cd72000-06-30 16:21:01 +00001840if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001841then
1842 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1843 [Define if you want wctype.h functions to be used instead of the
1844 one supplied by Python itself. (see Include/unicodectype.h).])
1845 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001846else AC_MSG_RESULT(no)
1847fi],
1848[AC_MSG_RESULT(no)])
1849
Guido van Rossum68242b51996-05-28 22:53:03 +00001850# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001851AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001852DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001853
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001854AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001855AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001856 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1857[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001858AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001859echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001860exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001861AC_DEFINE(WITH_SGI_DL, 1,
1862 [Define if you want to use SGI (IRIX 4) dynamic linking.
1863 This requires the "dl" library by Jack Jansen,
1864 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1865 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1866 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001867DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001868dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001869if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001870then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001871else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001872fi
1873DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001874LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001875
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001876AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001877AC_ARG_WITH(dl-dld,
1878 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1879[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001880AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001881echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001882exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001883AC_DEFINE(WITH_DL_DLD, 1,
1884 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1885 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1886 Sequent Symmetry (Dynix), and Atari ST.
1887 This requires the 'dl-dld' library,
1888 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1889 as well as the 'GNU dld' library,
1890 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1891 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1892 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001893DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001894dldir=`echo "$withval" | sed 's/,.*//'`
1895dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001896if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001897then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001898else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001899fi
1900DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001901LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001902
Guido van Rossume97ee181999-12-20 21:27:22 +00001903# the dlopen() function means we might want to use dynload_shlib.o. some
1904# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001905AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001906
1907# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1908# loading of modules.
1909AC_SUBST(DYNLOADFILE)
1910AC_MSG_CHECKING(DYNLOADFILE)
1911if test -z "$DYNLOADFILE"
1912then
1913 case $ac_sys_system/$ac_sys_release in
1914 AIX*) DYNLOADFILE="dynload_aix.o";;
1915 BeOS*) DYNLOADFILE="dynload_beos.o";;
1916 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001917 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001918 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001919 *)
1920 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1921 # out any dynamic loading
1922 if test "$ac_cv_func_dlopen" = yes
1923 then DYNLOADFILE="dynload_shlib.o"
1924 else DYNLOADFILE="dynload_stub.o"
1925 fi
1926 ;;
1927 esac
1928fi
1929AC_MSG_RESULT($DYNLOADFILE)
1930if test "$DYNLOADFILE" != "dynload_stub.o"
1931then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001932 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1933 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001934fi
1935
Jack Jansenc49e5b72001-06-19 15:00:23 +00001936# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1937
1938AC_SUBST(MACHDEP_OBJS)
1939AC_MSG_CHECKING(MACHDEP_OBJS)
1940if test -z "$MACHDEP_OBJS"
1941then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001942 MACHDEP_OBJS=$extra_machdep_objs
1943else
1944 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001945fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001946AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001947
Guido van Rossum627b2d71993-12-24 10:39:16 +00001948# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00001949AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00001950 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00001951 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
1952 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00001953 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00001954 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00001955 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00001956 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00001957 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001958 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00001959 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00001960 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001961
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001962# For some functions, having a definition is not sufficient, since
1963# we want to take their address.
1964AC_MSG_CHECKING(for chroot)
1965AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
1966 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
1967 AC_MSG_RESULT(yes),
1968 AC_MSG_RESULT(no)
1969)
1970AC_MSG_CHECKING(for link)
1971AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
1972 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
1973 AC_MSG_RESULT(yes),
1974 AC_MSG_RESULT(no)
1975)
1976AC_MSG_CHECKING(for symlink)
1977AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
1978 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
1979 AC_MSG_RESULT(yes),
1980 AC_MSG_RESULT(no)
1981)
1982
Martin v. Löwisd5843682002-11-21 20:41:28 +00001983# On some systems (eg. FreeBSD 5), we would find a definition of the
1984# functions ctermid_r, setgroups in the library, but no prototype
1985# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
1986# address to avoid compiler warnings and potential miscompilations
1987# because of the missing prototypes.
1988
1989AC_MSG_CHECKING(for ctermid_r)
1990AC_TRY_COMPILE([
1991#include "confdefs.h"
1992#include <stdio.h>
1993], void* p = ctermid_r,
1994 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
1995 AC_MSG_RESULT(yes),
1996 AC_MSG_RESULT(no)
1997)
1998
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00001999AC_MSG_CHECKING(for flock)
2000AC_TRY_COMPILE([
2001#include "confdefs.h"
2002#include <sys/file.h>
2003], void* p = flock,
2004 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2005 AC_MSG_RESULT(yes),
2006 AC_MSG_RESULT(no)
2007)
2008
2009AC_MSG_CHECKING(for getpagesize)
2010AC_TRY_COMPILE([
2011#include "confdefs.h"
2012#include <unistd.h>
2013], void* p = getpagesize,
2014 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2015 AC_MSG_RESULT(yes),
2016 AC_MSG_RESULT(no)
2017)
2018
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002019dnl check for true
2020AC_CHECK_PROGS(TRUE, true, /bin/true)
2021
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002022dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2023dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002024AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002025 AC_CHECK_LIB(resolv, inet_aton)
2026)
2027
Martin v. Löwise9416172003-05-03 10:12:45 +00002028AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002029AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002030#include "confdefs.h"
2031#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002032], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002033 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2034 AC_MSG_RESULT(yes),
2035 AC_MSG_RESULT(no)
2036)
2037
2038AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002039AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002040#include "confdefs.h"
2041#include <sys/socket.h>
2042#include <netinet/in.h>
2043#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002044], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002045 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2046 AC_MSG_RESULT(yes),
2047 AC_MSG_RESULT(no)
2048)
2049
2050AC_MSG_CHECKING(for inet_pton)
2051AC_TRY_COMPILE([
2052#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002053#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002054#include <sys/socket.h>
2055#include <netinet/in.h>
2056#include <arpa/inet.h>
2057], void* p = inet_pton,
2058 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2059 AC_MSG_RESULT(yes),
2060 AC_MSG_RESULT(no)
2061)
2062
Martin v. Löwisd5843682002-11-21 20:41:28 +00002063AC_MSG_CHECKING(for setgroups)
2064AC_TRY_COMPILE([
2065#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002066#include <unistd.h>
Martin v. Löwisd5843682002-11-21 20:41:28 +00002067],
2068void* p = setgroups,
2069 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2070 AC_MSG_RESULT(yes),
2071 AC_MSG_RESULT(no)
2072)
2073
Fred Drake8cef4cf2000-06-28 16:40:38 +00002074# check for openpty and forkpty
2075
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002076AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2077AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002078
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002079# check for long file support functions
2080AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2081
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002082AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002083AC_CHECK_FUNCS(getpgrp,
2084 AC_TRY_COMPILE([#include <unistd.h>],
2085 [getpgrp(0);],
2086 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2087 [Define if getpgrp() must be called as getpgrp(0).])
2088 )
2089)
Jack Jansen150753c2003-03-29 22:07:47 +00002090AC_CHECK_FUNCS(setpgrp,
2091 AC_TRY_COMPILE([#include <unistd.h>],
2092 [setpgrp(0,0);],
2093 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2094 [Define if setpgrp() must be called as setpgrp(0, 0).])
2095 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002096)
2097AC_CHECK_FUNCS(gettimeofday,
2098 AC_TRY_COMPILE([#include <sys/time.h>],
2099 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2100 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2101 [Define if gettimeofday() does not have second (timezone) argument
2102 This is the case on Motorola V4 (R40V4.2)])
2103 )
2104)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002105
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002106AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002107AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002108#if defined(MAJOR_IN_MKDEV)
2109#include <sys/mkdev.h>
2110#elif defined(MAJOR_IN_SYSMACROS)
2111#include <sys/sysmacros.h>
2112#else
2113#include <sys/types.h>
2114#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002115],[
2116 makedev(major(0),minor(0));
2117],[
2118 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2119 [Define to 1 if you have the device macros.])
2120 AC_MSG_RESULT(yes)
2121],[
2122 AC_MSG_RESULT(no)
2123])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002124
2125# On OSF/1 V5.1, getaddrinfo is available, but a define
2126# for [no]getaddrinfo in netdb.h.
2127AC_MSG_CHECKING(for getaddrinfo)
2128AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002129#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002130#include <sys/socket.h>
2131#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002132#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002133],[
2134getaddrinfo(NULL, NULL, NULL, NULL);
2135], [
2136AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002137AC_MSG_CHECKING(getaddrinfo bug)
2138AC_TRY_RUN([
2139#include <sys/types.h>
2140#include <netdb.h>
2141#include <string.h>
2142#include <sys/socket.h>
2143#include <netinet/in.h>
2144
2145main()
2146{
2147 int passive, gaierr, inet4 = 0, inet6 = 0;
2148 struct addrinfo hints, *ai, *aitop;
2149 char straddr[INET6_ADDRSTRLEN], strport[16];
2150
2151 for (passive = 0; passive <= 1; passive++) {
2152 memset(&hints, 0, sizeof(hints));
2153 hints.ai_family = AF_UNSPEC;
2154 hints.ai_flags = passive ? AI_PASSIVE : 0;
2155 hints.ai_socktype = SOCK_STREAM;
2156 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2157 (void)gai_strerror(gaierr);
2158 goto bad;
2159 }
2160 for (ai = aitop; ai; ai = ai->ai_next) {
2161 if (ai->ai_addr == NULL ||
2162 ai->ai_addrlen == 0 ||
2163 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2164 straddr, sizeof(straddr), strport, sizeof(strport),
2165 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2166 goto bad;
2167 }
2168 switch (ai->ai_family) {
2169 case AF_INET:
2170 if (strcmp(strport, "54321") != 0) {
2171 goto bad;
2172 }
2173 if (passive) {
2174 if (strcmp(straddr, "0.0.0.0") != 0) {
2175 goto bad;
2176 }
2177 } else {
2178 if (strcmp(straddr, "127.0.0.1") != 0) {
2179 goto bad;
2180 }
2181 }
2182 inet4++;
2183 break;
2184 case AF_INET6:
2185 if (strcmp(strport, "54321") != 0) {
2186 goto bad;
2187 }
2188 if (passive) {
2189 if (strcmp(straddr, "::") != 0) {
2190 goto bad;
2191 }
2192 } else {
2193 if (strcmp(straddr, "::1") != 0) {
2194 goto bad;
2195 }
2196 }
2197 inet6++;
2198 break;
2199 case AF_UNSPEC:
2200 goto bad;
2201 break;
2202 default:
2203 /* another family support? */
2204 break;
2205 }
2206 }
2207 }
2208
2209 if (!(inet4 == 0 || inet4 == 2))
2210 goto bad;
2211 if (!(inet6 == 0 || inet6 == 2))
2212 goto bad;
2213
2214 if (aitop)
2215 freeaddrinfo(aitop);
2216 exit(0);
2217
2218 bad:
2219 if (aitop)
2220 freeaddrinfo(aitop);
2221 exit(1);
2222}
2223],
2224AC_MSG_RESULT(good)
2225buggygetaddrinfo=no,
2226AC_MSG_RESULT(buggy)
2227buggygetaddrinfo=yes,
2228AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002229buggygetaddrinfo=yes)], [
2230AC_MSG_RESULT(no)
2231buggygetaddrinfo=yes
2232])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002233
2234if test "$buggygetaddrinfo" = "yes"; then
2235 if test "$ipv6" = "yes"; then
2236 echo 'Fatal: You must get working getaddrinfo() function.'
2237 echo ' or you can specify "--disable-ipv6"'.
2238 exit 1
2239 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002240else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002241 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002242fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002243AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002244
Guido van Rossum627b2d71993-12-24 10:39:16 +00002245# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002246AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002247AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002248AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002249AC_CHECK_MEMBERS([struct stat.st_rdev])
2250AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002251AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002252
2253AC_MSG_CHECKING(for time.h that defines altzone)
2254AC_CACHE_VAL(ac_cv_header_time_altzone,
2255[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2256 ac_cv_header_time_altzone=yes,
2257 ac_cv_header_time_altzone=no)])
2258AC_MSG_RESULT($ac_cv_header_time_altzone)
2259if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002260 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002261fi
2262
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002263was_it_defined=no
2264AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002265AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002266#include <sys/types.h>
2267#include <sys/select.h>
2268#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002269], [;], [
2270 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2271 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2272 (which you can't on SCO ODT 3.0).])
2273 was_it_defined=yes
2274])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002275AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002276
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002277AC_MSG_CHECKING(for addrinfo)
2278AC_CACHE_VAL(ac_cv_struct_addrinfo,
2279AC_TRY_COMPILE([
2280# include <netdb.h>],
2281 [struct addrinfo a],
2282 ac_cv_struct_addrinfo=yes,
2283 ac_cv_struct_addrinfo=no))
2284AC_MSG_RESULT($ac_cv_struct_addrinfo)
2285if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002286 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002287fi
2288
2289AC_MSG_CHECKING(for sockaddr_storage)
2290AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2291AC_TRY_COMPILE([
2292# include <sys/types.h>
2293# include <sys/socket.h>],
2294 [struct sockaddr_storage s],
2295 ac_cv_struct_sockaddr_storage=yes,
2296 ac_cv_struct_sockaddr_storage=no))
2297AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2298if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002299 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002300fi
2301
Guido van Rossum627b2d71993-12-24 10:39:16 +00002302# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002303
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002304AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002305AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002306
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002307works=no
2308AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002309AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2310 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2311)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002312AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002313
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002314works=no
2315AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002316AC_TRY_COMPILE([], [signed char c;], works=yes,
2317 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2318)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002319AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002320
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002321have_prototypes=no
2322AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002323AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2324 AC_DEFINE(HAVE_PROTOTYPES, 1,
2325 [Define if your compiler supports function prototype])
2326 have_prototypes=yes
2327])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002328AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002329
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002330works=no
2331AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002332AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002333#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002334int foo(int x, ...) {
2335 va_list va;
2336 va_start(va, x);
2337 va_arg(va, int);
2338 va_arg(va, char *);
2339 va_arg(va, double);
2340 return 0;
2341}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002342], [return foo(10, "", 3.14);], [
2343 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2344 [Define if your compiler supports variable length function prototypes
2345 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2346 works=yes
2347])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002348AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002349
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002350if test "$have_prototypes" = yes; then
2351bad_prototypes=no
2352AC_MSG_CHECKING(for bad exec* prototypes)
2353AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002354 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2355 [Define if your <unistd.h> contains bad prototypes for exec*()
2356 (as it does on SGI IRIX 4.x)])
2357 bad_prototypes=yes
2358)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002359AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002360fi
2361
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002362# check if sockaddr has sa_len member
2363AC_MSG_CHECKING(if sockaddr has sa_len member)
2364AC_TRY_COMPILE([#include <sys/types.h>
2365#include <sys/socket.h>],
2366[struct sockaddr x;
2367x.sa_len = 0;],
2368 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002369 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002370 AC_MSG_RESULT(no))
2371
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002372va_list_is_array=no
2373AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002374AC_TRY_COMPILE([
2375#ifdef HAVE_STDARG_PROTOTYPES
2376#include <stdarg.h>
2377#else
2378#include <varargs.h>
2379#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002380], [va_list list1, list2; list1 = list2;], , [
2381 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2382 va_list_is_array=yes
2383])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002384AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002385
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002386# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002387AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2388 [Define this if you have some version of gethostbyname_r()])
2389
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002390AC_CHECK_FUNC(gethostbyname_r, [
2391 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2392 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2393 OLD_CFLAGS=$CFLAGS
2394 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2395 AC_TRY_COMPILE([
2396# include <netdb.h>
2397 ], [
2398 char *name;
2399 struct hostent *he, *res;
2400 char buffer[2048];
2401 int buflen = 2048;
2402 int h_errnop;
2403
2404 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2405 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002406 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002407 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2408 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002409 AC_MSG_RESULT(yes)
2410 ], [
2411 AC_MSG_RESULT(no)
2412 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2413 AC_TRY_COMPILE([
2414# include <netdb.h>
2415 ], [
2416 char *name;
2417 struct hostent *he;
2418 char buffer[2048];
2419 int buflen = 2048;
2420 int h_errnop;
2421
2422 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2423 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002424 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002425 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2426 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002427 AC_MSG_RESULT(yes)
2428 ], [
2429 AC_MSG_RESULT(no)
2430 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2431 AC_TRY_COMPILE([
2432# include <netdb.h>
2433 ], [
2434 char *name;
2435 struct hostent *he;
2436 struct hostent_data data;
2437
2438 (void) gethostbyname_r(name, he, &data);
2439 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002440 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002441 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2442 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002443 AC_MSG_RESULT(yes)
2444 ], [
2445 AC_MSG_RESULT(no)
2446 ])
2447 ])
2448 ])
2449 CFLAGS=$OLD_CFLAGS
2450], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002451 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002452])
2453AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2454AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2455AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002456AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002457AC_SUBST(HAVE_GETHOSTBYNAME)
2458
Guido van Rossum627b2d71993-12-24 10:39:16 +00002459# checks for system services
2460# (none yet)
2461
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002462# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002463AC_CHECK_FUNC(__fpu_control,
2464 [],
2465 [AC_CHECK_LIB(ieee, __fpu_control)
2466])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002467
Guido van Rossum93274221997-05-09 02:42:00 +00002468# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002469AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002470AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002471 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2472[
Guido van Rossum93274221997-05-09 02:42:00 +00002473if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002474then
2475 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2476 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2477 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002478else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002479fi],
2480[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002481
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002482# check for --with-libm=...
2483AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002484case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002485Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002486BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002487*) LIBM=-lm
2488esac
Guido van Rossum93274221997-05-09 02:42:00 +00002489AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002490AC_ARG_WITH(libm,
2491 AC_HELP_STRING(--with-libm=STRING, math library),
2492[
Guido van Rossum93274221997-05-09 02:42:00 +00002493if test "$withval" = no
2494then LIBM=
2495 AC_MSG_RESULT(force LIBM empty)
2496elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002497then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002498 AC_MSG_RESULT(set LIBM="$withval")
2499else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002500fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002501[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002502
2503# check for --with-libc=...
2504AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002505AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002506AC_ARG_WITH(libc,
2507 AC_HELP_STRING(--with-libc=STRING, C library),
2508[
Guido van Rossum93274221997-05-09 02:42:00 +00002509if test "$withval" = no
2510then LIBC=
2511 AC_MSG_RESULT(force LIBC empty)
2512elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002513then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002514 AC_MSG_RESULT(set LIBC="$withval")
2515else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002516fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002517[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002518
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002519# check for hypot() in math library
2520LIBS_SAVE=$LIBS
2521LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002522AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002523LIBS=$LIBS_SAVE
2524
Guido van Rossumef2255b2000-03-10 22:30:29 +00002525# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002526AC_CHECK_HEADER(wchar.h, [
2527 AC_DEFINE(HAVE_WCHAR_H, 1,
2528 [Define if the compiler provides a wchar.h header file.])
2529 wchar_h="yes"
2530],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002531wchar_h="no"
2532)
2533
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002534# determine wchar_t size
2535if test "$wchar_h" = yes
2536then
Guido van Rossum67b26592001-10-20 14:21:45 +00002537 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002538fi
2539
2540AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002541dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002542AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002543 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2544 [],
2545 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002546
2547if test $enable_unicode = yes
2548then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002549 # Without any arguments, Py_UNICODE defaults to two-byte mode
2550 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002551fi
2552
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002553AH_TEMPLATE(Py_UNICODE_SIZE,
2554 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002555case "$enable_unicode" in
2556ucs2) unicode_size="2"
2557 AC_DEFINE(Py_UNICODE_SIZE,2)
2558 ;;
2559ucs4) unicode_size="4"
2560 AC_DEFINE(Py_UNICODE_SIZE,4)
2561 ;;
2562esac
2563
Martin v. Löwis11437992002-04-12 09:54:03 +00002564AH_TEMPLATE(PY_UNICODE_TYPE,
2565 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002566
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002567AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002568if test "$enable_unicode" = "no"
2569then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002570 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002571 AC_MSG_RESULT(not used)
2572else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002573 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002574 AC_DEFINE(Py_USING_UNICODE, 1,
2575 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002576 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2577 then
2578 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002579 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2580 [Define if you have a useable wchar_t type defined in wchar.h; useable
2581 means wchar_t must be 16-bit unsigned type. (see
2582 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002583 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2584 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2585 then
2586 PY_UNICODE_TYPE="unsigned short"
2587 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2588 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2589 then
2590 PY_UNICODE_TYPE="unsigned long"
2591 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2592 else
2593 PY_UNICODE_TYPE="no type found"
2594 fi
2595 AC_MSG_RESULT($PY_UNICODE_TYPE)
2596fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002597
2598# check for endianness
2599AC_C_BIGENDIAN
2600
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002601# Check whether right shifting a negative integer extends the sign bit
2602# or fills with zeros (like the Cray J90, according to Tim Peters).
2603AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002604AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002605AC_TRY_RUN([
2606int main()
2607{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002608 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002609}
Guido van Rossum3065c942001-09-17 04:03:14 +00002610],
2611ac_cv_rshift_extends_sign=yes,
2612ac_cv_rshift_extends_sign=no,
2613ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002614AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2615if test "$ac_cv_rshift_extends_sign" = no
2616then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002617 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2618 [Define if i>>j for signed int i does not extend the sign bit
2619 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002620fi
2621
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002622# check for getc_unlocked and related locking functions
2623AC_MSG_CHECKING(for getc_unlocked() and friends)
2624AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2625AC_TRY_LINK([#include <stdio.h>],[
2626 FILE *f = fopen("/dev/null", "r");
2627 flockfile(f);
2628 getc_unlocked(f);
2629 funlockfile(f);
2630], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2631AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2632if test "$ac_cv_have_getc_unlocked" = yes
2633then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002634 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2635 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002636fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002637
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002638# check for readline 2.2
2639AC_TRY_CPP([#include <readline/readline.h>],
2640have_readline=yes, have_readline=no)
2641if test $have_readline = yes
2642then
2643 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2644 [readline/readline.h],
2645 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2646 [Define if you have readline 2.2]), )
2647fi
2648
Martin v. Löwis0daad592001-09-30 21:09:59 +00002649# check for readline 4.0
2650AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002651 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2652 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002653
Guido van Rossum353ae582001-07-10 16:45:32 +00002654# check for readline 4.2
2655AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002656 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2657 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002658
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002659AC_MSG_CHECKING(for broken nice())
2660AC_CACHE_VAL(ac_cv_broken_nice, [
2661AC_TRY_RUN([
2662int main()
2663{
2664 int val1 = nice(1);
2665 if (val1 != -1 && val1 == nice(2))
2666 exit(0);
2667 exit(1);
2668}
Guido van Rossum3065c942001-09-17 04:03:14 +00002669],
2670ac_cv_broken_nice=yes,
2671ac_cv_broken_nice=no,
2672ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002673AC_MSG_RESULT($ac_cv_broken_nice)
2674if test "$ac_cv_broken_nice" = yes
2675then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002676 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2677 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002678fi
2679
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002680# tzset(3) exists and works like we expect it to
2681AC_MSG_CHECKING(for working tzset())
2682AC_CACHE_VAL(ac_cv_working_tzset, [
2683AC_TRY_RUN([
2684#include <stdlib.h>
2685#include <time.h>
2686int main()
2687{
2688 int gmt_hour;
2689 int eastern_hour;
2690 time_t now;
2691 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002692 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002693 tzset();
2694 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002695 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002696 tzset();
2697 eastern_hour = localtime(&now)->tm_hour;
2698 if (eastern_hour == gmt_hour)
2699 exit(1);
2700 exit(0);
2701}
2702],
2703ac_cv_working_tzset=yes,
2704ac_cv_working_tzset=no,
2705ac_cv_working_tzset=no)])
2706AC_MSG_RESULT($ac_cv_working_tzset)
2707if test "$ac_cv_working_tzset" = yes
2708then
2709 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2710 [Define if tzset() actually switches the local timezone in a meaningful way.])
2711fi
2712
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002713# Look for subsecond timestamps in struct stat
2714AC_MSG_CHECKING(for tv_nsec in struct stat)
2715AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2716AC_TRY_COMPILE([#include <sys/stat.h>], [
2717struct stat st;
2718st.st_mtim.tv_nsec = 1;
2719],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002720ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002721ac_cv_stat_tv_nsec=no,
2722ac_cv_stat_tv_nsec=no))
2723AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2724if test "$ac_cv_stat_tv_nsec" = yes
2725then
2726 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2727 [Define if you have struct stat.st_mtim.tv_nsec])
2728fi
2729
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002730# On HP/UX 11.0, mvwdelch is a block with a return statement
2731AC_MSG_CHECKING(whether mvwdelch is an expression)
2732AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2733AC_TRY_COMPILE([#include <curses.h>], [
2734 int rtn;
2735 rtn = mvwdelch(0,0,0);
2736], ac_cv_mvwdelch_is_expression=yes,
2737 ac_cv_mvwdelch_is_expression=no,
2738 ac_cv_mvwdelch_is_expression=yes))
2739AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2740
2741if test "$ac_cv_mvwdelch_is_expression" = yes
2742then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002743 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2744 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002745fi
2746
2747AC_MSG_CHECKING(whether WINDOW has _flags)
2748AC_CACHE_VAL(ac_cv_window_has_flags,
2749AC_TRY_COMPILE([#include <curses.h>], [
2750 WINDOW *w;
2751 w->_flags = 0;
2752], ac_cv_window_has_flags=yes,
2753 ac_cv_window_has_flags=no,
2754 ac_cv_window_has_flags=no))
2755AC_MSG_RESULT($ac_cv_window_has_flags)
2756
2757
2758if test "$ac_cv_window_has_flags" = yes
2759then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002760 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2761 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002762fi
2763
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002764AC_MSG_CHECKING(for /dev/ptmx)
2765
2766if test -e /dev/ptmx
2767then
2768 AC_MSG_RESULT(yes)
2769 AC_DEFINE(HAVE_DEV_PTMX, 1,
2770 [Define if we have /dev/ptmx.])
2771else
2772 AC_MSG_RESULT(no)
2773fi
2774
Neal Norwitz865400f2003-03-21 01:42:58 +00002775AC_MSG_CHECKING(for /dev/ptc)
2776
2777if test -e /dev/ptc
2778then
2779 AC_MSG_RESULT(yes)
2780 AC_DEFINE(HAVE_DEV_PTC, 1,
2781 [Define if we have /dev/ptc.])
2782else
2783 AC_MSG_RESULT(no)
2784fi
2785
Martin v. Löwis01c04012002-11-11 14:58:44 +00002786AC_CHECK_TYPE(socklen_t,,
2787 AC_DEFINE(socklen_t,int,
2788 Define to `int' if <sys/socket.h> does not define.),[
2789#ifdef HAVE_SYS_TYPES_H
2790#include <sys/types.h>
2791#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002792#ifdef HAVE_SYS_SOCKET_H
2793#include <sys/socket.h>
2794#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002795])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002796
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002797AC_SUBST(THREADHEADERS)
2798
2799for h in `(cd $srcdir;echo Python/thread_*.h)`
2800do
2801 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2802done
2803
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002804AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002805SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002806AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002807for dir in $SRCDIRS; do
2808 if test ! -d $dir; then
2809 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002810 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002811done
2812AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002813
Guido van Rossum627b2d71993-12-24 10:39:16 +00002814# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002815AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2816AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002817
2818echo "creating Setup"
2819if test ! -f Modules/Setup
2820then
2821 cp $srcdir/Modules/Setup.dist Modules/Setup
2822fi
2823
2824echo "creating Setup.local"
2825if test ! -f Modules/Setup.local
2826then
2827 echo "# Edit this file for local setup changes" >Modules/Setup.local
2828fi
2829
2830echo "creating Makefile"
2831$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2832 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002833 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002834mv config.c Modules