blob: b80086cfb5acad7e202d0a34f3945d9ebf61ac4d [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öwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwise981a4e2002-11-11 13:26:51 +000053define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000054
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000055# Arguments passed to configure.
56AC_SUBST(CONFIG_ARGS)
57CONFIG_ARGS="$ac_configure_args"
58
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000059dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000060AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000061 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
62[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000063 case $enableval in
64 yes)
65 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000066 esac
67 case $enableval in
68 no)
69 PYTHONFRAMEWORK=
70 PYTHONFRAMEWORKDIR=no-framework
71 PYTHONFRAMEWORKPREFIX=
72 PYTHONFRAMEWORKINSTALLDIR=
73 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 ;;
75 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000076 PYTHONFRAMEWORK=Python
77 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000079 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
80 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000081 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 ],[
83 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000084 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 PYTHONFRAMEWORKPREFIX=
86 PYTHONFRAMEWORKINSTALLDIR=
87 enable_framework=
88])
89AC_SUBST(PYTHONFRAMEWORK)
90AC_SUBST(PYTHONFRAMEWORKDIR)
91AC_SUBST(PYTHONFRAMEWORKPREFIX)
92AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000093
Jack Jansenb6e9cad2001-08-15 01:26:28 +000094##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000095## AC_HELP_STRING(--with-dyld,
96## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000097##
Guido van Rossumb418f891996-07-30 18:06:02 +000098# Set name for machine-dependent library files
99AC_SUBST(MACHDEP)
100AC_MSG_CHECKING(MACHDEP)
101if test -z "$MACHDEP"
102then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000103 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000104 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
105 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000106 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000107 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000108 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000109 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_md_system=`echo $ac_sys_system |
111 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
112 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000113 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000114 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000115
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000116 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000117 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000118 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000119 atheos*) MACHDEP="atheos";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000120 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000121 esac
122fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000123
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000124# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
125# disable features if it is defined, without any means to access these
126# features as extensions. For these systems, we skip the definition of
127# _XOPEN_SOURCE. Before adding a system to the list to gain access to
128# some feature, make sure there is no alternative way to access this
129# feature. Also, when using wildcards, make sure you have verified the
130# need for not defining _XOPEN_SOURCE on all systems matching the
131# wildcard, and that the wildcard does not include future systems
132# (which may remove their limitations).
133dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
134case $ac_sys_system/$ac_sys_release in
135 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
136 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis858f8172003-05-24 12:35:47 +0000137 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm.
138 OpenBSD/2.* | OpenBSD/3.@<:@0123@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000139 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000140 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
141 # of union __?sigval. Reported by Stuart Bishop.
142 SunOS/5.6)
143 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000144 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
145 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
146 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-3@:>@)
147 define_xopen_source=no;;
148 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000149 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000150 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000151 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000152esac
153
154if test $define_xopen_source = yes
155then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000156 AC_DEFINE(_XOPEN_SOURCE, 600,
157 Define to the level of X/Open that your system supports)
158
159 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
160 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
161 # several APIs are not declared. Since this is also needed in some
162 # cases for HP-UX, we define it globally.
163
164 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
165 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
166
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000167fi
168
Guido van Rossum91922671997-10-09 20:24:13 +0000169#
170# SGI compilers allow the specification of the both the ABI and the
171# ISA on the command line. Depending on the values of these switches,
172# different and often incompatable code will be generated.
173#
174# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
175# thus supply support for various ABI/ISA combinations. The MACHDEP
176# variable is also adjusted.
177#
178AC_SUBST(SGI_ABI)
179if test ! -z "$SGI_ABI"
180then
181 CC="cc $SGI_ABI"
182 LDFLAGS="$SGI_ABI $LDFLAGS"
183 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
184fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000185AC_MSG_RESULT($MACHDEP)
186
Jack Jansen83f898c2002-12-30 22:23:40 +0000187# And add extra plat-mac for darwin
188AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000189AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000190AC_MSG_CHECKING(EXTRAPLATDIR)
191if test -z "$EXTRAPLATDIR"
192then
193 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000194 darwin)
195 EXTRAPLATDIR="\$(PLATMACDIRS)"
196 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
197 ;;
198 *)
199 EXTRAPLATDIR=""
200 EXTRAMACHDEPPATH=""
201 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000202 esac
203fi
204AC_MSG_RESULT($EXTRAPLATDIR)
205
Guido van Rossum627b2d71993-12-24 10:39:16 +0000206# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000207
208# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
209# for debug/optimization stuff. BASECFLAGS is for flags that are required
210# just to get things to compile and link. Users are free to override OPT
211# when running configure or make. The build should not break if they do.
212# BASECFLAGS should generally not be messed with, however.
213
214# XXX shouldn't some/most/all of this code be merged with the stuff later
215# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000216AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000217AC_ARG_WITH(gcc,
218 AC_HELP_STRING(--without-gcc,never use gcc),
219[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000220 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000221 no) CC=cc
222 without_gcc=yes;;
223 yes) CC=gcc
224 without_gcc=no;;
225 *) CC=$withval
226 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000227 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000228 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000229 AIX*) CC=cc_r
230 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000231 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000232 case $BE_HOST_CPU in
233 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000234 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000235 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000236 BASECFLAGS="$BASECFLAGS -export pragma"
237 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000238 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000239 ;;
240 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000241 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000242 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000243 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000244 ;;
245 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000246 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000247 ;;
248 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000249 AR="\$(srcdir)/Modules/ar_beos"
250 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000251 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000252 Monterey*)
253 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000254 without_gcc=;;
255 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000256 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000257AC_MSG_RESULT($without_gcc)
258
Guido van Rossum27552902001-01-23 01:52:26 +0000259AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000260AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000261MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000262AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000263AC_ARG_WITH(cxx,
264 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
265[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000266 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000267 case $withval in
268 no) CXX=
269 with_cxx=no;;
270 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000271 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000272 with_cxx=$withval;;
273 esac], [
274 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000275 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000276])
277AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000278
Michael W. Hudson54241132001-12-07 15:38:26 +0000279if test "$with_cxx" = "yes"
280then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000281 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000282fi
283
Martin v. Löwis537970f2000-12-13 17:37:02 +0000284dnl The following fragment works similar to AC_PROG_CXX.
285dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000286dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000287dnl Finally, it does not test whether CXX is g++.
288
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000289dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
290ifdef([AC_PROG_CXX_WORKS],[],
291 [AC_DEFUN([AC_PROG_CXX_WORKS],
292 [AC_LANG_PUSH(C++)dnl
293 _AC_COMPILER_EXEEXT
294 AC_LANG_POP()
295 ]
296)])
297
Martin v. Löwis537970f2000-12-13 17:37:02 +0000298if test "$check_cxx" = "yes"
299then
300 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
301 if test "$CXX" = "notfound"
302 then
303 CXX=
304 else
305 AC_PROG_CXX_WORKS
306 fi
307fi
308
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000309# If the user switches compilers, we can't believe the cache
310if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
311then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000312 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
313(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000314fi
315
Guido van Rossum627b2d71993-12-24 10:39:16 +0000316AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000317
318# checks for UNIX variants that set C preprocessor variables
319AC_AIX
320AC_MINIX
321
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000322# Check for unsupported systems
323case $ac_sys_system/$ac_sys_release in
324SunOS/4*|DYNIX/*|dgux*/*|IRIX/4*|Linux*/1*)
325 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
326 echo See README for details.
327 exit 1;;
328esac
329
330if test "$MINIX" = yes; then
331 echo This system \(MINIX\) is no longer supported.
332 echo Read README for details.
333 exit 1
334fi
335
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000336AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000337AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000338AC_ARG_WITH(suffix,
339 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
340[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000341 case $withval in
342 no) EXEEXT=;;
343 yes) EXEEXT=.exe;;
344 *) EXEEXT=$withval;;
345 esac])
346AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000347
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000348# Test whether we're running on a non-case-sensitive system, in which
349# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000350AC_SUBST(BUILDEXEEXT)
351AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000352if test ! -d CaseSensitiveTestDir; then
353mkdir CaseSensitiveTestDir
354fi
355
356if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000357then
Jack Jansen1999ef42001-12-06 21:47:20 +0000358 AC_MSG_RESULT(yes)
359 BUILDEXEEXT=.exe
360else
361 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000362 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000363fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000364rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000365
Guido van Rossumdd997f71998-10-07 19:58:26 +0000366case $MACHDEP in
367bsdos*)
368 case $CC in
369 gcc) CC="$CC -D_HAVE_BSDI";;
370 esac;;
371esac
372
Guido van Rossum84561611997-08-21 00:08:11 +0000373case $ac_sys_system in
374hp*|HP*)
375 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000376 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000377 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000378Monterey*)
379 case $CC in
380 cc) CC="$CC -Wl,-Bexport";;
381 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000382SunOS*)
383 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000384 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000385 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000386esac
387
Martin v. Löwise8964d42001-03-06 12:09:07 +0000388
Neil Schemenauer61c51152001-01-26 16:18:16 +0000389AC_SUBST(LIBRARY)
390AC_MSG_CHECKING(LIBRARY)
391if test -z "$LIBRARY"
392then
393 LIBRARY='libpython$(VERSION).a'
394fi
395AC_MSG_RESULT($LIBRARY)
396
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000397# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000398# name of the library into which to insert object files). BLDLIBRARY is also
399# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
400# is blank as the main program is not linked directly against LDLIBRARY.
401# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
402# systems without shared libraries, LDLIBRARY is the same as LIBRARY
403# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
404# DLLLIBRARY is the shared (i.e., DLL) library.
405#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000406# RUNSHARED is used to run shared python without installed libraries
407#
408# INSTSONAME is the name of the shared library that will be use to install
409# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000410AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000411AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000412AC_SUBST(BLDLIBRARY)
413AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000414AC_SUBST(INSTSONAME)
415AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000416LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000417BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000418INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000419DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000420LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000421RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000422
Guido van Rossumfb842551997-08-06 23:42:07 +0000423# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000424# If CXX is set, and if it is needed to link a main function that was
425# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
426# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000427# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000428# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000429AC_SUBST(LINKCC)
430AC_MSG_CHECKING(LINKCC)
431if test -z "$LINKCC"
432then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000433 if test -z "$CXX"; then
434 LINKCC="\$(PURIFY) \$(CC)"
435 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000436 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000437 $CXX -c conftest.$ac_ext 2>&5
438 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
439 && test -s conftest$ac_exeext && ./conftest$ac_exeext
440 then
441 LINKCC="\$(PURIFY) \$(CC)"
442 else
443 LINKCC="\$(PURIFY) \$(CXX)"
444 fi
445 rm -fr conftest*
446 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000447 case $ac_sys_system in
448 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000449 exp_extra="\"\""
450 if test $ac_sys_release -ge 5 -o \
451 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
452 exp_extra="."
453 fi
454 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000455 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000456 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000457 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000458 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000459 esac
460fi
461AC_MSG_RESULT($LINKCC)
462
Martin v. Löwis1142de32002-03-29 16:28:31 +0000463AC_MSG_CHECKING(for --enable-shared)
464AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000465 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000466
Martin v. Löwis1142de32002-03-29 16:28:31 +0000467if test -z "$enable_shared"
468then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000469 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000470 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000471 enable_shared="yes";;
472 *)
473 enable_shared="no";;
474 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000475fi
476AC_MSG_RESULT($enable_shared)
477
478
479AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000480
Guido van Rossumb8552162001-09-05 14:58:11 +0000481# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
482# library that we build, but we do not want to link against it (we
483# will find it with a -framework option). For this reason there is an
484# extra variable BLDLIBRARY against which Python and the extension
485# modules are linked, BLDLIBRARY. This is normally the same as
486# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000487if test "$enable_framework"
488then
489 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
490 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
491 BLDLIBRARY=''
492else
493 BLDLIBRARY='$(LDLIBRARY)'
494fi
495
Martin v. Löwis1142de32002-03-29 16:28:31 +0000496# Other platforms follow
497if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000498 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000499 case $ac_sys_system in
500 BeOS*)
501 LDLIBRARY='libpython$(VERSION).so'
502 ;;
503 CYGWIN*)
504 LDLIBRARY='libpython$(VERSION).dll.a'
505 DLLLIBRARY='libpython$(VERSION).dll'
506 ;;
507 SunOS*)
508 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000509 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000510 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
511 ;;
Martin v. Löwis96ce8052003-05-31 07:58:45 +0000512 Linux*|GNU*|NetBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000513 LDLIBRARY='libpython$(VERSION).so'
514 BLDLIBRARY='-L. -lpython$(VERSION)'
515 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
516 INSTSONAME="$LDLIBRARY".$SOVERSION
517 ;;
518 hp*|HP*)
519 LDLIBRARY='libpython$(VERSION).sl'
520 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
521 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
522 ;;
523 OSF*)
524 LDLIBRARY='libpython$(VERSION).so'
525 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
526 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
527 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000528 atheos*)
529 LDLIBRARY='libpython$(VERSION).so'
530 BLDLIBRARY='-L. -lpython$(VERSION)'
531 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
532 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000533 esac
534 # DG/UX requires some fancy ld contortions to produce a .so from an .a
535 case $MACHDEP in
536 dguxR4)
537 LDLIBRARY='libpython$(VERSION).so'
Skip Montanarodecc6a42003-01-01 20:07:49 +0000538 BASECFLAGS="$BASECFLAGS -pic"
Martin v. Löwis1142de32002-03-29 16:28:31 +0000539 ;;
540 esac
541fi
542
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000543AC_MSG_RESULT($LDLIBRARY)
544
Guido van Rossum627b2d71993-12-24 10:39:16 +0000545AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000546AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000547AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000548
549case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000550bsdos*|hp*|HP*)
551 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000552 if test -z "$INSTALL"
553 then
554 INSTALL="${srcdir}/install-sh -c"
555 fi
556esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000557AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000558
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000559# Not every filesystem supports hard links
560AC_SUBST(LN)
561if test -z "$LN" ; then
562 case $ac_sys_system in
563 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000564 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000565 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000566 *) LN=ln;;
567 esac
568fi
569
Fred Drake9f715822001-07-11 06:27:00 +0000570# Check for --with-pydebug
571AC_MSG_CHECKING(for --with-pydebug)
572AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000573 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
574[
Fred Drake9f715822001-07-11 06:27:00 +0000575if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000576then
577 AC_DEFINE(Py_DEBUG, 1,
578 [Define if you want to build an interpreter with many run-time checks.])
579 AC_MSG_RESULT(yes);
580 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000581else AC_MSG_RESULT(no); Py_DEBUG='false'
582fi],
583[AC_MSG_RESULT(no)])
584
Skip Montanarodecc6a42003-01-01 20:07:49 +0000585# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
586# merged with this chunk of code?
587
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000588# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000589# ------------------------
590# (The following bit of code is complicated enough - please keep things
591# indented properly. Just pretend you're editing Python code. ;-)
592
593# There are two parallel sets of case statements below, one that checks to
594# see if OPT was set and one that does BASECFLAGS setting based upon
595# compiler and platform. BASECFLAGS tweaks need to be made even if the
596# user set OPT.
597
598# tweak OPT based on compiler and platform, only if the user didn't set
599# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000600AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000601if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000602then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000603 case $GCC in
604 yes)
605 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000606 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000607 if test "$Py_DEBUG" = 'true' ; then
608 # Optimization messes up debuggers, so turn it off for
609 # debug builds.
610 OPT="-g -Wall -Wstrict-prototypes"
611 else
612 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000613 fi
614 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000615 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000616 OPT="-O3 -Wall -Wstrict-prototypes"
617 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000618 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000619 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000620 SCO_SV*) OPT="$OPT -m486 -DSCO5"
621 ;;
622 esac
Fred Drake9f715822001-07-11 06:27:00 +0000623 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000624
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000625 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000626 OPT="-O"
627 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000628 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000629
630 # The current (beta) Monterey compiler dies with optimizations
631 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000632 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000633 Monterey*)
634 OPT=""
635 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000636 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000637
Guido van Rossum4e8af441994-08-19 15:33:54 +0000638fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000639
Skip Montanarodecc6a42003-01-01 20:07:49 +0000640AC_SUBST(BASECFLAGS)
641# tweak BASECFLAGS based on compiler and platform
642case $GCC in
643yes)
644 case $ac_sys_system in
645 SCO_SV*)
646 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
647 ;;
648 # is there any other compiler on Darwin besides gcc?
649 Darwin*)
650 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
651 ;;
652 esac
653 ;;
654
655*)
656 case $ac_sys_system in
657 OpenUNIX*|UnixWare*)
658 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
659 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000660 OSF*)
661 BASECFLAGS="$BASECFLAGS -ieee -std"
662 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000663 SCO_SV*)
664 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
665 ;;
666 esac
667 ;;
668esac
669
Fred Drakee1ceaa02001-12-04 20:55:47 +0000670if test "$Py_DEBUG" = 'true'; then
671 :
672else
673 OPT="-DNDEBUG $OPT"
674fi
675
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000676if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000677then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000678 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000679fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000680
Guido van Rossum91922671997-10-09 20:24:13 +0000681AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
682AC_CACHE_VAL(ac_cv_opt_olimit_ok,
683[ac_save_cc="$CC"
684CC="$CC -OPT:Olimit=0"
685AC_TRY_RUN([int main() { return 0; }],
686 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000687 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000688 ac_cv_opt_olimit_ok=no)
689CC="$ac_save_cc"])
690AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000691if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000692 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000693 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
694 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
695 # environment?
696 Darwin*)
697 ;;
698 *)
699 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
700 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000701 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000702else
703 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
704 AC_CACHE_VAL(ac_cv_olimit_ok,
705 [ac_save_cc="$CC"
706 CC="$CC -Olimit 1500"
707 AC_TRY_RUN([int main() { return 0; }],
708 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000709 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000710 ac_cv_olimit_ok=no)
711 CC="$ac_save_cc"])
712 AC_MSG_RESULT($ac_cv_olimit_ok)
713 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000714 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000715 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000716fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000717
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000718# On some compilers, pthreads are available without further options
719# (e.g. MacOS X). On some of these systems, the compiler will not
720# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
721# So we have to see first whether pthreads are available without
722# options before we can check whether -Kpthread improves anything.
723AC_MSG_CHECKING(whether pthreads are available without options)
724AC_CACHE_VAL(ac_cv_pthread_is_default,
725[AC_TRY_RUN([
726#include <pthread.h>
727
728void* routine(void* p){return NULL;}
729
730int main(){
731 pthread_t p;
732 if(pthread_create(&p,NULL,routine,NULL)!=0)
733 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000734 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000735 return 0;
736}
737],
738 ac_cv_pthread_is_default=yes,
739 ac_cv_pthread_is_default=no,
740 ac_cv_pthread_is_default=no)
741])
742AC_MSG_RESULT($ac_cv_pthread_is_default)
743
744
745if test $ac_cv_pthread_is_default = yes
746then
747 ac_cv_kpthread=no
748else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000749# -Kpthread, if available, provides the right #defines
750# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000751# Some compilers won't report that they do not support -Kpthread,
752# so we need to run a program to see whether it really made the
753# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000754AC_MSG_CHECKING(whether $CC accepts -Kpthread)
755AC_CACHE_VAL(ac_cv_kpthread,
756[ac_save_cc="$CC"
757CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000758AC_TRY_RUN([
759#include <pthread.h>
760
761void* routine(void* p){return NULL;}
762
763int main(){
764 pthread_t p;
765 if(pthread_create(&p,NULL,routine,NULL)!=0)
766 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000767 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000768 return 0;
769}
770],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000771 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000772 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000773 ac_cv_kpthread=no)
774CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000775AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000776fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000777
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000778if test $ac_cv_kpthread = no
779then
780# -Kthread, if available, provides the right #defines
781# and linker options to make pthread_create available
782# Some compilers won't report that they do not support -Kthread,
783# so we need to run a program to see whether it really made the
784# function available.
785AC_MSG_CHECKING(whether $CC accepts -Kthread)
786AC_CACHE_VAL(ac_cv_kthread,
787[ac_save_cc="$CC"
788CC="$CC -Kthread"
789AC_TRY_RUN([
790#include <pthread.h>
791
792void* routine(void* p){return NULL;}
793
794int main(){
795 pthread_t p;
796 if(pthread_create(&p,NULL,routine,NULL)!=0)
797 return 1;
798 (void)pthread_detach(p);
799 return 0;
800}
801],
802 ac_cv_kthread=yes,
803 ac_cv_kthread=no,
804 ac_cv_kthread=no)
805CC="$ac_save_cc"])
806AC_MSG_RESULT($ac_cv_kthread)
807fi
808
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000809if test $ac_cv_kthread = no
810then
811# -pthread, if available, provides the right #defines
812# and linker options to make pthread_create available
813# Some compilers won't report that they do not support -pthread,
814# so we need to run a program to see whether it really made the
815# function available.
816AC_MSG_CHECKING(whether $CC accepts -pthread)
817AC_CACHE_VAL(ac_cv_thread,
818[ac_save_cc="$CC"
819CC="$CC -pthread"
820AC_TRY_RUN([
821#include <pthread.h>
822
823void* routine(void* p){return NULL;}
824
825int main(){
826 pthread_t p;
827 if(pthread_create(&p,NULL,routine,NULL)!=0)
828 return 1;
829 (void)pthread_detach(p);
830 return 0;
831}
832],
833 ac_cv_pthread=yes,
834 ac_cv_pthread=no,
835 ac_cv_pthread=no)
836CC="$ac_save_cc"])
837AC_MSG_RESULT($ac_cv_pthread)
838fi
839
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000840# If we have set a CC compiler flag for thread support then
841# check if it works for CXX, too.
842ac_cv_cxx_thread=no
843if test ! -z "$CXX"
844then
845AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
846ac_save_cxx="$CXX"
847
848if test "$ac_cv_kpthread" = "yes"
849then
850 CXX="$CXX -Kpthread"
851 ac_cv_cxx_thread=yes
852elif test "$ac_cv_kthread" = "yes"
853then
854 CXX="$CXX -Kthread"
855 ac_cv_cxx_thread=yes
856elif test "$ac_cv_pthread" = "yes"
857then
858 CXX="$CXX -pthread"
859 ac_cv_cxx_thread=yes
860fi
861
862if test $ac_cv_cxx_thread = yes
863then
864 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
865 $CXX -c conftest.$ac_ext 2>&5
866 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
867 && test -s conftest$ac_exeext && ./conftest$ac_exeext
868 then
869 ac_cv_cxx_thread=yes
870 else
871 ac_cv_cxx_thread=no
872 CXX="$ac_save_cxx"
873 fi
874 rm -fr conftest*
875else
876 CXX="$ac_save_cxx"
877fi
878fi
879AC_MSG_RESULT($ac_cv_cxx_thread)
880
Fred Drakece81d592000-07-09 14:39:29 +0000881dnl # check for ANSI or K&R ("traditional") preprocessor
882dnl AC_MSG_CHECKING(for C preprocessor type)
883dnl AC_TRY_COMPILE([
884dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
885dnl int foo;
886dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
887dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
888dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000889
Guido van Rossum627b2d71993-12-24 10:39:16 +0000890# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000891AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000892AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
893libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000894signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
895unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000896sys/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 +0000897sys/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 +0000898sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000899sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000900AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000901AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000902
903# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000904was_it_defined=no
905AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000906AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
907 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
908])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000909AC_MSG_RESULT($was_it_defined)
910
Neal Norwitz11690112002-07-30 01:08:28 +0000911# Check whether using makedev requires defining _OSF_SOURCE
912AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000913AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000914 [ makedev(0, 0) ],
915 ac_cv_has_makedev=yes,
916 ac_cv_has_makedev=no)
917if test "$ac_cv_has_makedev" = "no"; then
918 # we didn't link, try if _OSF_SOURCE will allow us to link
919 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000920#define _OSF_SOURCE 1
921#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000922 ],
923 [ makedev(0, 0) ],
924 ac_cv_has_makedev=yes,
925 ac_cv_has_makedev=no)
926 if test "$ac_cv_has_makedev" = "yes"; then
927 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
928 fi
929fi
930AC_MSG_RESULT($ac_cv_has_makedev)
931if test "$ac_cv_has_makedev" = "yes"; then
932 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
933fi
934
Martin v. Löwis399a6892002-10-04 10:22:02 +0000935# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
936# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
937# defined, but the compiler does not support pragma redefine_extname,
938# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
939# structures (such as rlimit64) without declaring them. As a
940# work-around, disable LFS on such configurations
941
942use_lfs=yes
943AC_MSG_CHECKING(Solaris LFS bug)
944AC_TRY_COMPILE([
945#define _LARGEFILE_SOURCE 1
946#define _FILE_OFFSET_BITS 64
947#include <sys/resource.h>
948],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
949AC_MSG_RESULT($sol_lfs_bug)
950if test "$sol_lfs_bug" = "yes"; then
951 use_lfs=no
952fi
953
954if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000955# Two defines needed to enable largefile support on various platforms
956# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000957AC_DEFINE(_LARGEFILE_SOURCE, 1,
958[This must be defined on some systems to enable large file support.])
959AC_DEFINE(_FILE_OFFSET_BITS, 64,
960[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000961fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000962
Guido van Rossum300fda71996-08-19 21:58:16 +0000963# Add some code to confdefs.h so that the test for off_t works on SCO
964cat >> confdefs.h <<\EOF
965#if defined(SCO_DS)
966#undef _OFF_T
967#endif
968EOF
969
Guido van Rossumef2255b2000-03-10 22:30:29 +0000970# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000971AC_TYPE_MODE_T
972AC_TYPE_OFF_T
973AC_TYPE_PID_T
974AC_TYPE_SIGNAL
975AC_TYPE_SIZE_T
976AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000977
Guido van Rossumef2255b2000-03-10 22:30:29 +0000978# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000979AC_CHECK_SIZEOF(int, 4)
980AC_CHECK_SIZEOF(long, 4)
981AC_CHECK_SIZEOF(void *, 4)
982AC_CHECK_SIZEOF(char, 1)
983AC_CHECK_SIZEOF(short, 2)
984AC_CHECK_SIZEOF(float, 4)
985AC_CHECK_SIZEOF(double, 8)
986AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000987
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000988AC_MSG_CHECKING(for long long support)
989have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000990AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
991 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
992 have_long_long=yes
993])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000994AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000995if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000996AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000997fi
998
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000999AC_MSG_CHECKING(for uintptr_t support)
1000have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001001AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1002 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1003 have_uintptr_t=yes
1004])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001005AC_MSG_RESULT($have_uintptr_t)
1006if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001007AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001008fi
1009
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001010# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1011AC_MSG_CHECKING(size of off_t)
1012AC_CACHE_VAL(ac_cv_sizeof_off_t,
1013[AC_TRY_RUN([#include <stdio.h>
1014#include <sys/types.h>
1015main()
1016{
1017 FILE *f=fopen("conftestval", "w");
1018 if (!f) exit(1);
1019 fprintf(f, "%d\n", sizeof(off_t));
1020 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001021}],
1022ac_cv_sizeof_off_t=`cat conftestval`,
1023ac_cv_sizeof_off_t=0,
1024ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001025])
1026AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001027AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1028[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001029
1030AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001031if test "$have_long_long" = yes -a \
1032 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1033 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001034 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1035 [Defined to enable large file support when an off_t is bigger than a long
1036 and long long is available and at least as big as an off_t. You may need
1037 to add some flags for configuration and compilation to enable this mode.
1038 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001039 AC_MSG_RESULT(yes)
1040else
1041 AC_MSG_RESULT(no)
1042fi
1043
Fred Drakea3f6e912000-06-29 20:44:47 +00001044# AC_CHECK_SIZEOF() doesn't include <time.h>.
1045AC_MSG_CHECKING(size of time_t)
1046AC_CACHE_VAL(ac_cv_sizeof_time_t,
1047[AC_TRY_RUN([#include <stdio.h>
1048#include <time.h>
1049main()
1050{
1051 FILE *f=fopen("conftestval", "w");
1052 if (!f) exit(1);
1053 fprintf(f, "%d\n", sizeof(time_t));
1054 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001055}],
1056ac_cv_sizeof_time_t=`cat conftestval`,
1057ac_cv_sizeof_time_t=0,
1058ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001059])
1060AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001061AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1062[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001063
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001064
Trent Mick635f6fb2000-08-23 21:33:05 +00001065# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001066ac_save_cc="$CC"
1067if test "$ac_cv_kpthread" = "yes"
1068then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001069elif test "$ac_cv_kthread" = "yes"
1070then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001071elif test "$ac_cv_pthread" = "yes"
1072then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001073fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001074AC_MSG_CHECKING(for pthread_t)
1075have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001076AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001077AC_MSG_RESULT($have_pthread_t)
1078if test "$have_pthread_t" = yes ; then
1079 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1080 AC_MSG_CHECKING(size of pthread_t)
1081 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1082 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001083#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001084 main()
1085 {
1086 FILE *f=fopen("conftestval", "w");
1087 if (!f) exit(1);
1088 fprintf(f, "%d\n", sizeof(pthread_t));
1089 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001090 }],
1091 ac_cv_sizeof_pthread_t=`cat conftestval`,
1092 ac_cv_sizeof_pthread_t=0,
1093 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001094 ])
1095 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001096 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1097 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001098fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001099CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001100
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001101AC_MSG_CHECKING(for --enable-toolbox-glue)
1102AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001103 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001104
1105if test -z "$enable_toolbox_glue"
1106then
1107 case $ac_sys_system/$ac_sys_release in
1108 Darwin/*)
1109 enable_toolbox_glue="yes";;
1110 *)
1111 enable_toolbox_glue="no";;
1112 esac
1113fi
1114case "$enable_toolbox_glue" in
1115yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001116 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001117 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001118 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001119 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1120 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001121 ;;
1122*)
1123 extra_frameworks=""
1124 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001125 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001126 ;;
1127esac
1128AC_MSG_RESULT($enable_toolbox_glue)
1129
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001130AC_SUBST(LIBTOOL_CRUFT)
1131case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001132 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001133 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001134 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +00001135 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1136 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001137 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001138 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001139 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001140 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
1141 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001142esac
1143
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001144AC_MSG_CHECKING(for --enable-framework)
1145if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001146then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001147 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001148 # -F. is needed to allow linking to the framework while
1149 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001150 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001151 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1152 [Define if you want to produce an OpenStep/Rhapsody framework
1153 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001154 AC_MSG_RESULT(yes)
1155else
1156 AC_MSG_RESULT(no)
1157fi
1158
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001159AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001160case $ac_sys_system/$ac_sys_release in
1161 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001162 AC_DEFINE(WITH_DYLD, 1,
1163 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1164 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1165 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001166 AC_MSG_RESULT(always on for Darwin)
1167 ;;
1168 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001169 AC_MSG_RESULT(no)
1170 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001171esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001172
Guido van Rossumac405f61994-09-12 10:56:06 +00001173# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001174AC_SUBST(SO)
1175AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001176AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001177AC_SUBST(CCSHARED)
1178AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001179# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001180# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001181AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001182if test -z "$SO"
1183then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001184 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001185 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001186 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001187 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001188 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001189else
1190 # this might also be a termcap variable, see #610332
1191 echo
1192 echo '====================================================================='
1193 echo '+ +'
1194 echo '+ WARNING: You have set SO in your environment. +'
1195 echo '+ Do you really mean to change the extension for shared libraries? +'
1196 echo '+ Continuing in 10 seconds to let you to ponder. +'
1197 echo '+ +'
1198 echo '====================================================================='
1199 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001200fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001201AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001202# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001203# -- "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 +00001204# (Shared libraries in this instance are shared modules to be loaded into
1205# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001206AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001207if test -z "$LDSHARED"
1208then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001209 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001210 AIX*)
1211 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001212 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001213 ;;
1214 BeOS*)
1215 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001216 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001217 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001218 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001219 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001220 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a662000-05-26 12:22:54 +00001221 SunOS/5*)
1222 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001223 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001224 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001225 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001226 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001227 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001228 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001229 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001230 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1231 if test "$enable_framework" ; then
1232 # Link against the framework. All externals should be defined.
1233 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1234 else
1235 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001236 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001237 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001238 Darwin/*)
1239 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1240 if test "$enable_framework" ; then
1241 # Link against the framework. All externals should be defined.
1242 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1243 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001244 # No framework, use the Python app as bundle-loader
1245 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001246 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001247 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001248 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001249 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001250 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001251 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001252 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001253 then
1254 LDSHARED="cc -shared ${LDFLAGS}"
1255 else
1256 LDSHARED="ld -Bshareable ${LDFLAGS}"
1257 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001258 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001259 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001260 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001261 then LDSHARED='$(CC) -shared'
1262 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001263 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001264 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001265 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001266 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001267 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001268 *) LDSHARED="ld";;
1269 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001270fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001271AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001272BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001273# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001274# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001275AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001276if test -z "$CCSHARED"
1277then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001278 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001279 SunOS*) if test "$GCC" = yes;
1280 then CCSHARED="-fPIC";
1281 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001282 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001283 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001284 else CCSHARED="+z";
1285 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001286 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001287 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001288 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001289 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001290 if test "$GCC" = "yes"
1291 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001292 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001293 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001294 SCO_SV*)
1295 if test "$GCC" = "yes"
1296 then CCSHARED="-fPIC"
1297 else CCSHARED="-Kpic -belf"
1298 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001299 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001300 IRIX*/6*) case $CC in
1301 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001302 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001303 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001304 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001305 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001306fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001307AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001308# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001309# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001310AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001311if test -z "$LINKFORSHARED"
1312then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001313 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001314 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001315 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001316 LINKFORSHARED="-Wl,-E -Wl,+s";;
1317# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001318 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001319 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001320 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001321 Darwin/*)
1322 # -u __dummy makes the linker aware of the objc runtime
1323 # in System.framework; otherwise, __objcInit (referenced in
1324 # crt1.o) gets erroneously defined as common, which breaks dynamic
1325 # loading of any modules which reference it in System.framework.
1326 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1327 # not used by the core itself but which needs to be in the core so
1328 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001329 # -prebind is no longer used, because it actually seems to give a
1330 # slowdown in stead of a speedup, maybe due to the large number of
1331 # dynamic loads Python does.
1332 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001333 if test "$enable_framework"
1334 then
1335 LINKFORSHARED="$LINKFORSHARED -framework Python"
1336 fi
1337 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001338 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001339 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001340 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001341 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001342 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1343 then
1344 LINKFORSHARED="-Wl,--export-dynamic"
1345 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001346 SunOS/5*) case $CC in
1347 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001348 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001349 then
1350 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001351 fi;;
1352 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001353 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001354fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001355AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001356
Neil Schemenauer61c51152001-01-26 16:18:16 +00001357AC_SUBST(CFLAGSFORSHARED)
1358AC_MSG_CHECKING(CFLAGSFORSHARED)
1359if test ! "$LIBRARY" = "$LDLIBRARY"
1360then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001361 case $ac_sys_system in
1362 CYGWIN*)
1363 # Cygwin needs CCSHARED when building extension DLLs
1364 # but not when building the interpreter DLL.
1365 CFLAGSFORSHARED='';;
1366 *)
1367 CFLAGSFORSHARED='$(CCSHARED)'
1368 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001369fi
1370AC_MSG_RESULT($CFLAGSFORSHARED)
1371
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001372# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1373# library (with --enable-shared).
1374# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001375# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1376# if it is not required, since it creates a dependency of the shared library
1377# to LIBS. This, in turn, means that applications linking the shared libpython
1378# don't need to link LIBS explicitly. The default should be only changed
1379# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001380AC_SUBST(SHLIBS)
1381AC_MSG_CHECKING(SHLIBS)
1382case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001383 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001384 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001385esac
1386AC_MSG_RESULT($SHLIBS)
1387
1388
Guido van Rossum627b2d71993-12-24 10:39:16 +00001389# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001390AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1391AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001392AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1393 # posix4 on Solaris 2.6
1394 # pthread (first!) on Linux
Martin v. Löwis19d17342003-06-14 21:03:05 +00001395# check if we need libintl for locale functions
1396AC_CHECK_LIB(intl, textdomain,
1397 AC_DEFINE(WITH_LIBINTL, 1,
1398 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001399
1400# checks for system dependent C++ extensions support
1401case "$ac_sys_system" in
1402 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1403 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1404 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001405 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1406 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1407 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001408 AC_MSG_RESULT(yes)],
1409 [AC_MSG_RESULT(no)]);;
1410 *) ;;
1411esac
1412
Guido van Rossum70c7f481998-03-26 18:44:10 +00001413# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001414# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001415# BeOS' sockets are stashed in libnet.
1416case "$ac_sys_system" in
1417IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001418*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001419AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001420AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001421;;
1422esac
1423case "$ac_sys_system" in
1424BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001425AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1426;;
1427esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001428
Guido van Rossumc5a39031996-07-31 17:35:03 +00001429AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001430AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001431 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1432[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001433AC_MSG_RESULT($withval)
1434LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001435],
1436[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001437
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001438# Determine if signalmodule should be used.
1439AC_SUBST(USE_SIGNAL_MODULE)
1440AC_SUBST(SIGNAL_OBJS)
1441AC_MSG_CHECKING(for --with-signal-module)
1442AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001443 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001444
1445if test -z "$with_signal_module"
1446then with_signal_module="yes"
1447fi
1448AC_MSG_RESULT($with_signal_module)
1449
1450if test "${with_signal_module}" = "yes"; then
1451 USE_SIGNAL_MODULE=""
1452 SIGNAL_OBJS=""
1453else
1454 USE_SIGNAL_MODULE="#"
1455 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1456fi
1457
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001458# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001459AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001460USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001461
Guido van Rossum54d93d41997-01-22 20:51:58 +00001462AC_MSG_CHECKING(for --with-dec-threads)
1463AC_SUBST(LDLAST)
1464AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001465 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1466[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001467AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001468LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001469if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001470 with_thread="$withval";
1471fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001472[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001473
Martin v. Löwis11437992002-04-12 09:54:03 +00001474# Templates for things AC_DEFINEd more than once.
1475# For a single AC_DEFINE, no template is needed.
1476AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1477AH_TEMPLATE(_REENTRANT,
1478 [Define to force use of thread-safe errno, h_errno, and other functions])
1479AH_TEMPLATE(WITH_THREAD,
1480 [Define if you want to compile in rudimentary thread support])
1481
Guido van Rossum54d93d41997-01-22 20:51:58 +00001482AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001483dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001484AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001485 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001486
Barry Warsawc0d24d82000-06-29 16:12:00 +00001487# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001488dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001489AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001490 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1491 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001492
1493if test -z "$with_threads"
1494then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001495fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001496AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001497
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001498AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001499if test "$with_threads" = "no"
1500then
1501 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001502elif test "$ac_cv_pthread_is_default" = yes
1503then
1504 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001505 # Defining _REENTRANT on system with POSIX threads should not hurt.
1506 AC_DEFINE(_REENTRANT)
1507 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001508 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001509elif test "$ac_cv_kpthread" = "yes"
1510then
1511 CC="$CC -Kpthread"
1512 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001513 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001514 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001515elif test "$ac_cv_kthread" = "yes"
1516then
1517 CC="$CC -Kthread"
1518 AC_DEFINE(WITH_THREAD)
1519 posix_threads=yes
1520 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001521elif test "$ac_cv_pthread" = "yes"
1522then
1523 CC="$CC -pthread"
1524 AC_DEFINE(WITH_THREAD)
1525 posix_threads=yes
1526 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001527else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001528 if test ! -z "$with_threads" -a -d "$with_threads"
1529 then LDFLAGS="$LDFLAGS -L$with_threads"
1530 fi
1531 if test ! -z "$withval" -a -d "$withval"
1532 then LDFLAGS="$LDFLAGS -L$withval"
1533 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001534
1535 # According to the POSIX spec, a pthreads implementation must
1536 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1537 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1538 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001539 [
1540#include <unistd.h>
1541#ifdef _POSIX_THREADS
1542yes
1543#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001544 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1545 AC_MSG_RESULT($unistd_defines_pthreads)
1546
Martin v. Löwis130fb172001-07-19 11:00:41 +00001547 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001548 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1549 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001550 AC_DEFINE(HURD_C_THREADS, 1,
1551 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001552 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001553 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001554 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1555 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001556 AC_DEFINE(MACH_C_THREADS, 1,
1557 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001558 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001559 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001560 AC_ARG_WITH([pth],
1561 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1562 [AC_MSG_RESULT($withval)
1563 AC_DEFINE([WITH_THREAD])
1564 AC_DEFINE([HAVE_PTH], 1,
1565 [Define if you have GNU PTH threads.])
1566 LIBS="-lpth $LIBS"
1567 THREADOBJ="Python/thread.o"],
1568 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001569
1570 # Just looking for pthread_create in libpthread is not enough:
1571 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1572 # So we really have to include pthread.h, and then link.
1573 _libs=$LIBS
1574 LIBS="$LIBS -lpthread"
1575 AC_MSG_CHECKING([for pthread_create in -lpthread])
1576 AC_TRY_LINK([#include <pthread.h>
1577
1578void * start_routine (void *arg) { exit (0); }], [
1579pthread_create (NULL, NULL, start_routine, NULL)], [
1580 AC_MSG_RESULT(yes)
1581 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001582 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001583 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001584 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001585 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001586 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001587 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001588 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1589 AC_DEFINE(ATHEOS_THREADS, 1,
1590 [Define this if you have AtheOS threads.])
1591 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001592 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001593 AC_DEFINE(BEOS_THREADS, 1,
1594 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001595 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001596 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001597 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001598 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001599 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001600 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001601 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001602 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001603 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001604 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001605 echo Systems with __d6_pthread_create are not supported anymore.
1606 echo See README
1607 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001608 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001609 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001610 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001611 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001612 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001613 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001614 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001615 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001616 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001617 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001618 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001619 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001620 ])])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001621
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001622 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1623 LIBS="$LIBS -lmpc"
1624 THREADOBJ="Python/thread.o"
1625 USE_THREAD_MODULE=""])
1626
1627 if test "$posix_threads" != "yes"; then
1628 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1629 LIBS="$LIBS -lthread"
1630 THREADOBJ="Python/thread.o"
1631 USE_THREAD_MODULE=""])
1632 fi
1633
1634 if test "$USE_THREAD_MODULE" != "#"
1635 then
1636 # If the above checks didn't disable threads, (at least) OSF1
1637 # needs this '-threads' argument during linking.
1638 case $ac_sys_system in
1639 OSF1) LDLAST=-threads;;
1640 esac
1641 fi
1642fi
1643
1644if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001645 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001646 AC_DEFINE(_POSIX_THREADS, 1,
1647 [Define if you have POSIX threads,
1648 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001649 fi
1650
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001651 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1652 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001653 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1654 Defined for Solaris 2.6 bug in pthread header.)
1655 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001656 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001657 Define if the Posix semaphores do not work on your system)
1658 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001659 esac
1660
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001661 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1662 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1663 [AC_TRY_RUN([#include <pthread.h>
1664 void *foo(void *parm) {
1665 return NULL;
1666 }
1667 main() {
1668 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001669 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001670 if (pthread_attr_init(&attr)) exit(-1);
1671 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001672 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001673 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001674 }],
1675 ac_cv_pthread_system_supported=yes,
1676 ac_cv_pthread_system_supported=no,
1677 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001678 ])
1679 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1680 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001681 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001682 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001683 AC_CHECK_FUNCS(pthread_sigmask)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001684fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001685
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001686
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001687# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001688AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001689AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001690AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001691[ --enable-ipv6 Enable ipv6 (with ipv4) support
1692 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001693[ case "$enableval" in
1694 no)
1695 AC_MSG_RESULT(no)
1696 ipv6=no
1697 ;;
1698 *) AC_MSG_RESULT(yes)
1699 AC_DEFINE(ENABLE_IPV6)
1700 ipv6=yes
1701 ;;
1702 esac ],
1703
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001704[
1705dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001706 AC_TRY_RUN([ /* AF_INET6 available check */
1707#include <sys/types.h>
1708#include <sys/socket.h>
1709main()
1710{
1711 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1712 exit(1);
1713 else
1714 exit(0);
1715}
1716],
1717 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001718 ipv6=yes,
1719 AC_MSG_RESULT(no)
1720 ipv6=no,
1721 AC_MSG_RESULT(no)
1722 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001723)
1724
1725if test "$ipv6" = "yes"; then
1726 AC_MSG_CHECKING(if RFC2553 API is available)
1727 AC_TRY_COMPILE([#include <sys/types.h>
1728#include <netinet/in.h>],
1729 [struct sockaddr_in6 x;
1730x.sin6_scope_id;],
1731 AC_MSG_RESULT(yes)
1732 ipv6=yes,
1733 AC_MSG_RESULT(no, IPv6 disabled)
1734 ipv6=no)
1735fi
1736
1737if test "$ipv6" = "yes"; then
1738 AC_DEFINE(ENABLE_IPV6)
1739fi
1740])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001741
1742ipv6type=unknown
1743ipv6lib=none
1744ipv6trylibc=no
1745
1746if test "$ipv6" = "yes"; then
1747 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001748 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1749 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001750 case $i in
1751 inria)
1752 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001753 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001754#include <netinet/in.h>
1755#ifdef IPV6_INRIA_VERSION
1756yes
1757#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001758 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001759 ;;
1760 kame)
1761 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001762 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001763#include <netinet/in.h>
1764#ifdef __KAME__
1765yes
1766#endif],
1767 [ipv6type=$i;
1768 ipv6lib=inet6
1769 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001770 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001771 ;;
1772 linux-glibc)
1773 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001774 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001775#include <features.h>
1776#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1777yes
1778#endif],
1779 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001780 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001781 ;;
1782 linux-inet6)
1783 dnl http://www.v6.linux.or.jp/
1784 if test -d /usr/inet6; then
1785 ipv6type=$i
1786 ipv6lib=inet6
1787 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001788 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001789 fi
1790 ;;
1791 solaris)
1792 if test -f /etc/netconfig; then
1793 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1794 ipv6type=$i
1795 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001796 fi
1797 fi
1798 ;;
1799 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001800 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001801#include <sys/param.h>
1802#ifdef _TOSHIBA_INET6
1803yes
1804#endif],
1805 [ipv6type=$i;
1806 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001807 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001808 ;;
1809 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001810 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001811#include </usr/local/v6/include/sys/v6config.h>
1812#ifdef __V6D__
1813yes
1814#endif],
1815 [ipv6type=$i;
1816 ipv6lib=v6;
1817 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001818 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001819 ;;
1820 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001821 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001822#include <sys/param.h>
1823#ifdef _ZETA_MINAMI_INET6
1824yes
1825#endif],
1826 [ipv6type=$i;
1827 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001828 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001829 ;;
1830 esac
1831 if test "$ipv6type" != "unknown"; then
1832 break
1833 fi
1834 done
1835 AC_MSG_RESULT($ipv6type)
1836fi
1837
1838if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1839 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1840 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1841 echo "using lib$ipv6lib"
1842 else
1843 if test $ipv6trylibc = "yes"; then
1844 echo "using libc"
1845 else
1846 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1847 echo "You need to fetch lib$ipv6lib.a from appropriate"
1848 echo 'ipv6 kit and compile beforehand.'
1849 exit 1
1850 fi
1851 fi
1852fi
1853
Jack Jansen7b8c7542002-04-14 20:12:41 +00001854# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001855AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001856AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001857 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001858
1859if test -z "$with_universal_newlines"
1860then with_universal_newlines="yes"
1861fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001862if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001863then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001864 echo --without-universal-newlines is unsupported, see README
1865 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001866else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001867 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1868 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001869fi
1870AC_MSG_RESULT($with_universal_newlines)
1871
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001872# Check for --with-doc-strings
1873AC_MSG_CHECKING(for --with-doc-strings)
1874AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001875 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001876
1877if test -z "$with_doc_strings"
1878then with_doc_strings="yes"
1879fi
1880if test "$with_doc_strings" != "no"
1881then
1882 AC_DEFINE(WITH_DOC_STRINGS, 1,
1883 [Define if you want documentation strings in extension modules])
1884fi
1885AC_MSG_RESULT($with_doc_strings)
1886
Neil Schemenauera35c6882001-02-27 04:45:05 +00001887# Check for Python-specific malloc support
1888AC_MSG_CHECKING(for --with-pymalloc)
1889AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001890 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001891
1892if test -z "$with_pymalloc"
1893then with_pymalloc="yes"
1894fi
1895if test "$with_pymalloc" != "no"
1896then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001897 AC_DEFINE(WITH_PYMALLOC, 1,
1898 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001899fi
1900AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001901
Barry Warsawef82cd72000-06-30 16:21:01 +00001902# Check for --with-wctype-functions
1903AC_MSG_CHECKING(for --with-wctype-functions)
1904AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001905 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1906[
Barry Warsawef82cd72000-06-30 16:21:01 +00001907if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001908then
1909 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1910 [Define if you want wctype.h functions to be used instead of the
1911 one supplied by Python itself. (see Include/unicodectype.h).])
1912 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001913else AC_MSG_RESULT(no)
1914fi],
1915[AC_MSG_RESULT(no)])
1916
Guido van Rossum68242b51996-05-28 22:53:03 +00001917# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001918AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001919DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001920
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001921AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001922AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001923 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1924[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001925AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001926echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001927exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001928AC_DEFINE(WITH_SGI_DL, 1,
1929 [Define if you want to use SGI (IRIX 4) dynamic linking.
1930 This requires the "dl" library by Jack Jansen,
1931 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1932 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1933 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001934DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001935dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001936if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001937then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001938else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001939fi
1940DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001941LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001942
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001943AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001944AC_ARG_WITH(dl-dld,
1945 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1946[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001947AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001948echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001949exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001950AC_DEFINE(WITH_DL_DLD, 1,
1951 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1952 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1953 Sequent Symmetry (Dynix), and Atari ST.
1954 This requires the 'dl-dld' library,
1955 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1956 as well as the 'GNU dld' library,
1957 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1958 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1959 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001960DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001961dldir=`echo "$withval" | sed 's/,.*//'`
1962dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001963if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001964then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001965else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001966fi
1967DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001968LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001969
Guido van Rossume97ee181999-12-20 21:27:22 +00001970# the dlopen() function means we might want to use dynload_shlib.o. some
1971# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001972AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001973
1974# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1975# loading of modules.
1976AC_SUBST(DYNLOADFILE)
1977AC_MSG_CHECKING(DYNLOADFILE)
1978if test -z "$DYNLOADFILE"
1979then
1980 case $ac_sys_system/$ac_sys_release in
1981 AIX*) DYNLOADFILE="dynload_aix.o";;
1982 BeOS*) DYNLOADFILE="dynload_beos.o";;
1983 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001984 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001985 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001986 *)
1987 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1988 # out any dynamic loading
1989 if test "$ac_cv_func_dlopen" = yes
1990 then DYNLOADFILE="dynload_shlib.o"
1991 else DYNLOADFILE="dynload_stub.o"
1992 fi
1993 ;;
1994 esac
1995fi
1996AC_MSG_RESULT($DYNLOADFILE)
1997if test "$DYNLOADFILE" != "dynload_stub.o"
1998then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001999 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2000 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002001fi
2002
Jack Jansenc49e5b72001-06-19 15:00:23 +00002003# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2004
2005AC_SUBST(MACHDEP_OBJS)
2006AC_MSG_CHECKING(MACHDEP_OBJS)
2007if test -z "$MACHDEP_OBJS"
2008then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002009 MACHDEP_OBJS=$extra_machdep_objs
2010else
2011 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002012fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002013AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002014
Guido van Rossum627b2d71993-12-24 10:39:16 +00002015# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00002016AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002017 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002018 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
2019 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002020 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002021 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002022 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002023 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002024 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002025 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002026 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002027 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002028
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002029# For some functions, having a definition is not sufficient, since
2030# we want to take their address.
2031AC_MSG_CHECKING(for chroot)
2032AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2033 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2034 AC_MSG_RESULT(yes),
2035 AC_MSG_RESULT(no)
2036)
2037AC_MSG_CHECKING(for link)
2038AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2039 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2040 AC_MSG_RESULT(yes),
2041 AC_MSG_RESULT(no)
2042)
2043AC_MSG_CHECKING(for symlink)
2044AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2045 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2046 AC_MSG_RESULT(yes),
2047 AC_MSG_RESULT(no)
2048)
2049
Martin v. Löwisd5843682002-11-21 20:41:28 +00002050# On some systems (eg. FreeBSD 5), we would find a definition of the
2051# functions ctermid_r, setgroups in the library, but no prototype
2052# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2053# address to avoid compiler warnings and potential miscompilations
2054# because of the missing prototypes.
2055
2056AC_MSG_CHECKING(for ctermid_r)
2057AC_TRY_COMPILE([
2058#include "confdefs.h"
2059#include <stdio.h>
2060], void* p = ctermid_r,
2061 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2062 AC_MSG_RESULT(yes),
2063 AC_MSG_RESULT(no)
2064)
2065
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002066AC_MSG_CHECKING(for flock)
2067AC_TRY_COMPILE([
2068#include "confdefs.h"
2069#include <sys/file.h>
2070], void* p = flock,
2071 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2072 AC_MSG_RESULT(yes),
2073 AC_MSG_RESULT(no)
2074)
2075
2076AC_MSG_CHECKING(for getpagesize)
2077AC_TRY_COMPILE([
2078#include "confdefs.h"
2079#include <unistd.h>
2080], void* p = getpagesize,
2081 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2082 AC_MSG_RESULT(yes),
2083 AC_MSG_RESULT(no)
2084)
2085
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002086dnl check for true
2087AC_CHECK_PROGS(TRUE, true, /bin/true)
2088
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002089dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2090dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002091AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002092 AC_CHECK_LIB(resolv, inet_aton)
2093)
2094
Martin v. Löwise9416172003-05-03 10:12:45 +00002095AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002096AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002097#include "confdefs.h"
2098#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002099], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002100 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2101 AC_MSG_RESULT(yes),
2102 AC_MSG_RESULT(no)
2103)
2104
2105AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002106AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002107#include "confdefs.h"
2108#include <sys/socket.h>
2109#include <netinet/in.h>
2110#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002111], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002112 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2113 AC_MSG_RESULT(yes),
2114 AC_MSG_RESULT(no)
2115)
2116
2117AC_MSG_CHECKING(for inet_pton)
2118AC_TRY_COMPILE([
2119#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002120#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002121#include <sys/socket.h>
2122#include <netinet/in.h>
2123#include <arpa/inet.h>
2124], void* p = inet_pton,
2125 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2126 AC_MSG_RESULT(yes),
2127 AC_MSG_RESULT(no)
2128)
2129
Martin v. Löwisd5843682002-11-21 20:41:28 +00002130AC_MSG_CHECKING(for setgroups)
2131AC_TRY_COMPILE([
2132#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002133#include <unistd.h>
Martin v. Löwisd5843682002-11-21 20:41:28 +00002134],
2135void* p = setgroups,
2136 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2137 AC_MSG_RESULT(yes),
2138 AC_MSG_RESULT(no)
2139)
2140
Fred Drake8cef4cf2000-06-28 16:40:38 +00002141# check for openpty and forkpty
2142
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002143AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2144AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002145
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002146# check for long file support functions
2147AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2148
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002149AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002150AC_CHECK_FUNCS(getpgrp,
2151 AC_TRY_COMPILE([#include <unistd.h>],
2152 [getpgrp(0);],
2153 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2154 [Define if getpgrp() must be called as getpgrp(0).])
2155 )
2156)
Jack Jansen150753c2003-03-29 22:07:47 +00002157AC_CHECK_FUNCS(setpgrp,
2158 AC_TRY_COMPILE([#include <unistd.h>],
2159 [setpgrp(0,0);],
2160 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2161 [Define if setpgrp() must be called as setpgrp(0, 0).])
2162 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002163)
2164AC_CHECK_FUNCS(gettimeofday,
2165 AC_TRY_COMPILE([#include <sys/time.h>],
2166 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2167 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2168 [Define if gettimeofday() does not have second (timezone) argument
2169 This is the case on Motorola V4 (R40V4.2)])
2170 )
2171)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002172
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002173AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002174AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002175#if defined(MAJOR_IN_MKDEV)
2176#include <sys/mkdev.h>
2177#elif defined(MAJOR_IN_SYSMACROS)
2178#include <sys/sysmacros.h>
2179#else
2180#include <sys/types.h>
2181#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002182],[
2183 makedev(major(0),minor(0));
2184],[
2185 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2186 [Define to 1 if you have the device macros.])
2187 AC_MSG_RESULT(yes)
2188],[
2189 AC_MSG_RESULT(no)
2190])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002191
2192# On OSF/1 V5.1, getaddrinfo is available, but a define
2193# for [no]getaddrinfo in netdb.h.
2194AC_MSG_CHECKING(for getaddrinfo)
2195AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002196#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002197#include <sys/socket.h>
2198#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002199#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002200],[
2201getaddrinfo(NULL, NULL, NULL, NULL);
2202], [
2203AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002204AC_MSG_CHECKING(getaddrinfo bug)
2205AC_TRY_RUN([
2206#include <sys/types.h>
2207#include <netdb.h>
2208#include <string.h>
2209#include <sys/socket.h>
2210#include <netinet/in.h>
2211
2212main()
2213{
2214 int passive, gaierr, inet4 = 0, inet6 = 0;
2215 struct addrinfo hints, *ai, *aitop;
2216 char straddr[INET6_ADDRSTRLEN], strport[16];
2217
2218 for (passive = 0; passive <= 1; passive++) {
2219 memset(&hints, 0, sizeof(hints));
2220 hints.ai_family = AF_UNSPEC;
2221 hints.ai_flags = passive ? AI_PASSIVE : 0;
2222 hints.ai_socktype = SOCK_STREAM;
2223 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2224 (void)gai_strerror(gaierr);
2225 goto bad;
2226 }
2227 for (ai = aitop; ai; ai = ai->ai_next) {
2228 if (ai->ai_addr == NULL ||
2229 ai->ai_addrlen == 0 ||
2230 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2231 straddr, sizeof(straddr), strport, sizeof(strport),
2232 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2233 goto bad;
2234 }
2235 switch (ai->ai_family) {
2236 case AF_INET:
2237 if (strcmp(strport, "54321") != 0) {
2238 goto bad;
2239 }
2240 if (passive) {
2241 if (strcmp(straddr, "0.0.0.0") != 0) {
2242 goto bad;
2243 }
2244 } else {
2245 if (strcmp(straddr, "127.0.0.1") != 0) {
2246 goto bad;
2247 }
2248 }
2249 inet4++;
2250 break;
2251 case AF_INET6:
2252 if (strcmp(strport, "54321") != 0) {
2253 goto bad;
2254 }
2255 if (passive) {
2256 if (strcmp(straddr, "::") != 0) {
2257 goto bad;
2258 }
2259 } else {
2260 if (strcmp(straddr, "::1") != 0) {
2261 goto bad;
2262 }
2263 }
2264 inet6++;
2265 break;
2266 case AF_UNSPEC:
2267 goto bad;
2268 break;
2269 default:
2270 /* another family support? */
2271 break;
2272 }
2273 }
2274 }
2275
2276 if (!(inet4 == 0 || inet4 == 2))
2277 goto bad;
2278 if (!(inet6 == 0 || inet6 == 2))
2279 goto bad;
2280
2281 if (aitop)
2282 freeaddrinfo(aitop);
2283 exit(0);
2284
2285 bad:
2286 if (aitop)
2287 freeaddrinfo(aitop);
2288 exit(1);
2289}
2290],
2291AC_MSG_RESULT(good)
2292buggygetaddrinfo=no,
2293AC_MSG_RESULT(buggy)
2294buggygetaddrinfo=yes,
2295AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002296buggygetaddrinfo=yes)], [
2297AC_MSG_RESULT(no)
2298buggygetaddrinfo=yes
2299])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002300
2301if test "$buggygetaddrinfo" = "yes"; then
2302 if test "$ipv6" = "yes"; then
2303 echo 'Fatal: You must get working getaddrinfo() function.'
2304 echo ' or you can specify "--disable-ipv6"'.
2305 exit 1
2306 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002307else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002308 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002309fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002310AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002311
Guido van Rossum627b2d71993-12-24 10:39:16 +00002312# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002313AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002314AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002315AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002316AC_CHECK_MEMBERS([struct stat.st_rdev])
2317AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002318AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002319
2320AC_MSG_CHECKING(for time.h that defines altzone)
2321AC_CACHE_VAL(ac_cv_header_time_altzone,
2322[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2323 ac_cv_header_time_altzone=yes,
2324 ac_cv_header_time_altzone=no)])
2325AC_MSG_RESULT($ac_cv_header_time_altzone)
2326if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002327 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002328fi
2329
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002330was_it_defined=no
2331AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002332AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002333#include <sys/types.h>
2334#include <sys/select.h>
2335#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002336], [;], [
2337 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2338 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2339 (which you can't on SCO ODT 3.0).])
2340 was_it_defined=yes
2341])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002342AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002343
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002344AC_MSG_CHECKING(for addrinfo)
2345AC_CACHE_VAL(ac_cv_struct_addrinfo,
2346AC_TRY_COMPILE([
2347# include <netdb.h>],
2348 [struct addrinfo a],
2349 ac_cv_struct_addrinfo=yes,
2350 ac_cv_struct_addrinfo=no))
2351AC_MSG_RESULT($ac_cv_struct_addrinfo)
2352if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002353 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002354fi
2355
2356AC_MSG_CHECKING(for sockaddr_storage)
2357AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2358AC_TRY_COMPILE([
2359# include <sys/types.h>
2360# include <sys/socket.h>],
2361 [struct sockaddr_storage s],
2362 ac_cv_struct_sockaddr_storage=yes,
2363 ac_cv_struct_sockaddr_storage=no))
2364AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2365if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002366 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002367fi
2368
Guido van Rossum627b2d71993-12-24 10:39:16 +00002369# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002370
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002371AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002372AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002373
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002374works=no
2375AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002376AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2377 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2378)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002379AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002380
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002381works=no
2382AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002383AC_TRY_COMPILE([], [signed char c;], works=yes,
2384 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2385)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002386AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002387
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002388have_prototypes=no
2389AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2391 AC_DEFINE(HAVE_PROTOTYPES, 1,
2392 [Define if your compiler supports function prototype])
2393 have_prototypes=yes
2394])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002395AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002396
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002397works=no
2398AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002399AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002400#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002401int foo(int x, ...) {
2402 va_list va;
2403 va_start(va, x);
2404 va_arg(va, int);
2405 va_arg(va, char *);
2406 va_arg(va, double);
2407 return 0;
2408}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002409], [return foo(10, "", 3.14);], [
2410 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2411 [Define if your compiler supports variable length function prototypes
2412 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2413 works=yes
2414])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002415AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002416
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002417if test "$have_prototypes" = yes; then
2418bad_prototypes=no
2419AC_MSG_CHECKING(for bad exec* prototypes)
2420AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002421 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2422 [Define if your <unistd.h> contains bad prototypes for exec*()
2423 (as it does on SGI IRIX 4.x)])
2424 bad_prototypes=yes
2425)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002426AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002427fi
2428
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002429# check if sockaddr has sa_len member
2430AC_MSG_CHECKING(if sockaddr has sa_len member)
2431AC_TRY_COMPILE([#include <sys/types.h>
2432#include <sys/socket.h>],
2433[struct sockaddr x;
2434x.sa_len = 0;],
2435 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002436 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002437 AC_MSG_RESULT(no))
2438
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002439va_list_is_array=no
2440AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002441AC_TRY_COMPILE([
2442#ifdef HAVE_STDARG_PROTOTYPES
2443#include <stdarg.h>
2444#else
2445#include <varargs.h>
2446#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002447], [va_list list1, list2; list1 = list2;], , [
2448 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2449 va_list_is_array=yes
2450])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002451AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002452
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002453# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002454AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2455 [Define this if you have some version of gethostbyname_r()])
2456
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002457AC_CHECK_FUNC(gethostbyname_r, [
2458 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2459 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2460 OLD_CFLAGS=$CFLAGS
2461 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2462 AC_TRY_COMPILE([
2463# include <netdb.h>
2464 ], [
2465 char *name;
2466 struct hostent *he, *res;
2467 char buffer[2048];
2468 int buflen = 2048;
2469 int h_errnop;
2470
2471 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2472 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002473 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002474 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2475 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002476 AC_MSG_RESULT(yes)
2477 ], [
2478 AC_MSG_RESULT(no)
2479 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2480 AC_TRY_COMPILE([
2481# include <netdb.h>
2482 ], [
2483 char *name;
2484 struct hostent *he;
2485 char buffer[2048];
2486 int buflen = 2048;
2487 int h_errnop;
2488
2489 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2490 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002491 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002492 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2493 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002494 AC_MSG_RESULT(yes)
2495 ], [
2496 AC_MSG_RESULT(no)
2497 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2498 AC_TRY_COMPILE([
2499# include <netdb.h>
2500 ], [
2501 char *name;
2502 struct hostent *he;
2503 struct hostent_data data;
2504
2505 (void) gethostbyname_r(name, he, &data);
2506 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002507 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002508 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2509 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002510 AC_MSG_RESULT(yes)
2511 ], [
2512 AC_MSG_RESULT(no)
2513 ])
2514 ])
2515 ])
2516 CFLAGS=$OLD_CFLAGS
2517], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002518 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002519])
2520AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2521AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2522AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002523AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002524AC_SUBST(HAVE_GETHOSTBYNAME)
2525
Guido van Rossum627b2d71993-12-24 10:39:16 +00002526# checks for system services
2527# (none yet)
2528
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002529# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002530AC_CHECK_FUNC(__fpu_control,
2531 [],
2532 [AC_CHECK_LIB(ieee, __fpu_control)
2533])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002534
Guido van Rossum93274221997-05-09 02:42:00 +00002535# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002536AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002537AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002538 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2539[
Guido van Rossum93274221997-05-09 02:42:00 +00002540if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002541then
2542 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2543 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2544 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002545else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002546fi],
2547[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002548
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002549# check for --with-libm=...
2550AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002551case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002552Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002553BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002554*) LIBM=-lm
2555esac
Guido van Rossum93274221997-05-09 02:42:00 +00002556AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002557AC_ARG_WITH(libm,
2558 AC_HELP_STRING(--with-libm=STRING, math library),
2559[
Guido van Rossum93274221997-05-09 02:42:00 +00002560if test "$withval" = no
2561then LIBM=
2562 AC_MSG_RESULT(force LIBM empty)
2563elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002564then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002565 AC_MSG_RESULT(set LIBM="$withval")
2566else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002567fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002568[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002569
2570# check for --with-libc=...
2571AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002572AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002573AC_ARG_WITH(libc,
2574 AC_HELP_STRING(--with-libc=STRING, C library),
2575[
Guido van Rossum93274221997-05-09 02:42:00 +00002576if test "$withval" = no
2577then LIBC=
2578 AC_MSG_RESULT(force LIBC empty)
2579elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002580then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002581 AC_MSG_RESULT(set LIBC="$withval")
2582else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002583fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002584[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002585
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002586# check for hypot() in math library
2587LIBS_SAVE=$LIBS
2588LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002589AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002590LIBS=$LIBS_SAVE
2591
Guido van Rossumef2255b2000-03-10 22:30:29 +00002592# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002593AC_CHECK_HEADER(wchar.h, [
2594 AC_DEFINE(HAVE_WCHAR_H, 1,
2595 [Define if the compiler provides a wchar.h header file.])
2596 wchar_h="yes"
2597],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002598wchar_h="no"
2599)
2600
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002601# determine wchar_t size
2602if test "$wchar_h" = yes
2603then
Guido van Rossum67b26592001-10-20 14:21:45 +00002604 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002605fi
2606
2607AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002608dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002609AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002610 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2611 [],
2612 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002613
2614if test $enable_unicode = yes
2615then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002616 # Without any arguments, Py_UNICODE defaults to two-byte mode
2617 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002618fi
2619
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002620AH_TEMPLATE(Py_UNICODE_SIZE,
2621 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002622case "$enable_unicode" in
2623ucs2) unicode_size="2"
2624 AC_DEFINE(Py_UNICODE_SIZE,2)
2625 ;;
2626ucs4) unicode_size="4"
2627 AC_DEFINE(Py_UNICODE_SIZE,4)
2628 ;;
2629esac
2630
Martin v. Löwis11437992002-04-12 09:54:03 +00002631AH_TEMPLATE(PY_UNICODE_TYPE,
2632 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002633
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002634AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002635if test "$enable_unicode" = "no"
2636then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002637 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002638 AC_MSG_RESULT(not used)
2639else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002640 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002641 AC_DEFINE(Py_USING_UNICODE, 1,
2642 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002643 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2644 then
2645 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002646 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2647 [Define if you have a useable wchar_t type defined in wchar.h; useable
2648 means wchar_t must be 16-bit unsigned type. (see
2649 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002650 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2651 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2652 then
2653 PY_UNICODE_TYPE="unsigned short"
2654 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2655 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2656 then
2657 PY_UNICODE_TYPE="unsigned long"
2658 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2659 else
2660 PY_UNICODE_TYPE="no type found"
2661 fi
2662 AC_MSG_RESULT($PY_UNICODE_TYPE)
2663fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002664
2665# check for endianness
2666AC_C_BIGENDIAN
2667
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002668# Check whether right shifting a negative integer extends the sign bit
2669# or fills with zeros (like the Cray J90, according to Tim Peters).
2670AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002671AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002672AC_TRY_RUN([
2673int main()
2674{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002675 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002676}
Guido van Rossum3065c942001-09-17 04:03:14 +00002677],
2678ac_cv_rshift_extends_sign=yes,
2679ac_cv_rshift_extends_sign=no,
2680ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002681AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2682if test "$ac_cv_rshift_extends_sign" = no
2683then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002684 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2685 [Define if i>>j for signed int i does not extend the sign bit
2686 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002687fi
2688
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002689# check for getc_unlocked and related locking functions
2690AC_MSG_CHECKING(for getc_unlocked() and friends)
2691AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2692AC_TRY_LINK([#include <stdio.h>],[
2693 FILE *f = fopen("/dev/null", "r");
2694 flockfile(f);
2695 getc_unlocked(f);
2696 funlockfile(f);
2697], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2698AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2699if test "$ac_cv_have_getc_unlocked" = yes
2700then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002701 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2702 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002703fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002704
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002705# check for readline 2.2
2706AC_TRY_CPP([#include <readline/readline.h>],
2707have_readline=yes, have_readline=no)
2708if test $have_readline = yes
2709then
2710 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2711 [readline/readline.h],
2712 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2713 [Define if you have readline 2.2]), )
2714fi
2715
Martin v. Löwis0daad592001-09-30 21:09:59 +00002716# check for readline 4.0
2717AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002718 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2719 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002720
Guido van Rossum353ae582001-07-10 16:45:32 +00002721# check for readline 4.2
2722AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002723 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2724 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002725
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002726AC_MSG_CHECKING(for broken nice())
2727AC_CACHE_VAL(ac_cv_broken_nice, [
2728AC_TRY_RUN([
2729int main()
2730{
2731 int val1 = nice(1);
2732 if (val1 != -1 && val1 == nice(2))
2733 exit(0);
2734 exit(1);
2735}
Guido van Rossum3065c942001-09-17 04:03:14 +00002736],
2737ac_cv_broken_nice=yes,
2738ac_cv_broken_nice=no,
2739ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002740AC_MSG_RESULT($ac_cv_broken_nice)
2741if test "$ac_cv_broken_nice" = yes
2742then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002743 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2744 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002745fi
2746
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002747# tzset(3) exists and works like we expect it to
2748AC_MSG_CHECKING(for working tzset())
2749AC_CACHE_VAL(ac_cv_working_tzset, [
2750AC_TRY_RUN([
2751#include <stdlib.h>
2752#include <time.h>
2753int main()
2754{
2755 int gmt_hour;
2756 int eastern_hour;
2757 time_t now;
2758 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002759 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002760 tzset();
2761 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002762 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002763 tzset();
2764 eastern_hour = localtime(&now)->tm_hour;
2765 if (eastern_hour == gmt_hour)
2766 exit(1);
2767 exit(0);
2768}
2769],
2770ac_cv_working_tzset=yes,
2771ac_cv_working_tzset=no,
2772ac_cv_working_tzset=no)])
2773AC_MSG_RESULT($ac_cv_working_tzset)
2774if test "$ac_cv_working_tzset" = yes
2775then
2776 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2777 [Define if tzset() actually switches the local timezone in a meaningful way.])
2778fi
2779
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002780# Look for subsecond timestamps in struct stat
2781AC_MSG_CHECKING(for tv_nsec in struct stat)
2782AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2783AC_TRY_COMPILE([#include <sys/stat.h>], [
2784struct stat st;
2785st.st_mtim.tv_nsec = 1;
2786],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002787ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002788ac_cv_stat_tv_nsec=no,
2789ac_cv_stat_tv_nsec=no))
2790AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2791if test "$ac_cv_stat_tv_nsec" = yes
2792then
2793 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2794 [Define if you have struct stat.st_mtim.tv_nsec])
2795fi
2796
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002797# On HP/UX 11.0, mvwdelch is a block with a return statement
2798AC_MSG_CHECKING(whether mvwdelch is an expression)
2799AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2800AC_TRY_COMPILE([#include <curses.h>], [
2801 int rtn;
2802 rtn = mvwdelch(0,0,0);
2803], ac_cv_mvwdelch_is_expression=yes,
2804 ac_cv_mvwdelch_is_expression=no,
2805 ac_cv_mvwdelch_is_expression=yes))
2806AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2807
2808if test "$ac_cv_mvwdelch_is_expression" = yes
2809then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002810 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2811 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002812fi
2813
2814AC_MSG_CHECKING(whether WINDOW has _flags)
2815AC_CACHE_VAL(ac_cv_window_has_flags,
2816AC_TRY_COMPILE([#include <curses.h>], [
2817 WINDOW *w;
2818 w->_flags = 0;
2819], ac_cv_window_has_flags=yes,
2820 ac_cv_window_has_flags=no,
2821 ac_cv_window_has_flags=no))
2822AC_MSG_RESULT($ac_cv_window_has_flags)
2823
2824
2825if test "$ac_cv_window_has_flags" = yes
2826then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2828 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002829fi
2830
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002831AC_MSG_CHECKING(for /dev/ptmx)
2832
2833if test -e /dev/ptmx
2834then
2835 AC_MSG_RESULT(yes)
2836 AC_DEFINE(HAVE_DEV_PTMX, 1,
2837 [Define if we have /dev/ptmx.])
2838else
2839 AC_MSG_RESULT(no)
2840fi
2841
Neal Norwitz865400f2003-03-21 01:42:58 +00002842AC_MSG_CHECKING(for /dev/ptc)
2843
2844if test -e /dev/ptc
2845then
2846 AC_MSG_RESULT(yes)
2847 AC_DEFINE(HAVE_DEV_PTC, 1,
2848 [Define if we have /dev/ptc.])
2849else
2850 AC_MSG_RESULT(no)
2851fi
2852
Martin v. Löwis01c04012002-11-11 14:58:44 +00002853AC_CHECK_TYPE(socklen_t,,
2854 AC_DEFINE(socklen_t,int,
2855 Define to `int' if <sys/socket.h> does not define.),[
2856#ifdef HAVE_SYS_TYPES_H
2857#include <sys/types.h>
2858#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002859#ifdef HAVE_SYS_SOCKET_H
2860#include <sys/socket.h>
2861#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002862])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002863
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002864AC_SUBST(THREADHEADERS)
2865
2866for h in `(cd $srcdir;echo Python/thread_*.h)`
2867do
2868 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2869done
2870
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002871AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002872SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002873AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002874for dir in $SRCDIRS; do
2875 if test ! -d $dir; then
2876 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002877 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002878done
2879AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002880
Guido van Rossum627b2d71993-12-24 10:39:16 +00002881# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002882AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2883AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002884
2885echo "creating Setup"
2886if test ! -f Modules/Setup
2887then
2888 cp $srcdir/Modules/Setup.dist Modules/Setup
2889fi
2890
2891echo "creating Setup.local"
2892if test ! -f Modules/Setup.local
2893then
2894 echo "# Edit this file for local setup changes" >Modules/Setup.local
2895fi
2896
2897echo "creating Makefile"
2898$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2899 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002900 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002901mv config.c Modules