blob: 5e4be7a423cef3ca4ef2d90a8cb104c4f8e1de67 [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)'
Jack Jansen66b84832003-07-04 12:14:39 +0000490 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000491 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)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000644 # Python violates C99 rules, by casting between incompatible
645 # pointer types. GCC may generate bad code as a result of that,
646 # so use -fno-strict-aliasing if supported.
647 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
648 ac_save_cc="$CC"
649 CC="$CC -fno-strict-aliasing"
650 AC_TRY_RUN([int main() { return 0; }],
651 ac_cv_no_strict_aliasing_ok=yes,
652 ac_cv_no_strict_aliasing_ok=no,
653 ac_cv_no_strict_aliasing_ok=no)
654 CC="$ac_save_cc"
655 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
656 if test $ac_cv_no_strict_aliasing_ok = yes
657 then
658 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
659 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000660 case $ac_sys_system in
661 SCO_SV*)
662 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
663 ;;
664 # is there any other compiler on Darwin besides gcc?
665 Darwin*)
666 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
667 ;;
668 esac
669 ;;
670
671*)
672 case $ac_sys_system in
673 OpenUNIX*|UnixWare*)
674 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
675 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000676 OSF*)
677 BASECFLAGS="$BASECFLAGS -ieee -std"
678 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000679 SCO_SV*)
680 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
681 ;;
682 esac
683 ;;
684esac
685
Fred Drakee1ceaa02001-12-04 20:55:47 +0000686if test "$Py_DEBUG" = 'true'; then
687 :
688else
689 OPT="-DNDEBUG $OPT"
690fi
691
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000692if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000693then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000694 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000695fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000696
Guido van Rossum91922671997-10-09 20:24:13 +0000697AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
698AC_CACHE_VAL(ac_cv_opt_olimit_ok,
699[ac_save_cc="$CC"
700CC="$CC -OPT:Olimit=0"
701AC_TRY_RUN([int main() { return 0; }],
702 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000703 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000704 ac_cv_opt_olimit_ok=no)
705CC="$ac_save_cc"])
706AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000707if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000708 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000709 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
710 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
711 # environment?
712 Darwin*)
713 ;;
714 *)
715 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
716 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000717 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000718else
719 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
720 AC_CACHE_VAL(ac_cv_olimit_ok,
721 [ac_save_cc="$CC"
722 CC="$CC -Olimit 1500"
723 AC_TRY_RUN([int main() { return 0; }],
724 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000725 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000726 ac_cv_olimit_ok=no)
727 CC="$ac_save_cc"])
728 AC_MSG_RESULT($ac_cv_olimit_ok)
729 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000730 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000731 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000732fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000733
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000734# On some compilers, pthreads are available without further options
735# (e.g. MacOS X). On some of these systems, the compiler will not
736# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
737# So we have to see first whether pthreads are available without
738# options before we can check whether -Kpthread improves anything.
739AC_MSG_CHECKING(whether pthreads are available without options)
740AC_CACHE_VAL(ac_cv_pthread_is_default,
741[AC_TRY_RUN([
742#include <pthread.h>
743
744void* routine(void* p){return NULL;}
745
746int main(){
747 pthread_t p;
748 if(pthread_create(&p,NULL,routine,NULL)!=0)
749 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000750 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000751 return 0;
752}
753],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000754[
755 ac_cv_pthread_is_default=yes
756 ac_cv_kthread=no
757 ac_cv_pthread=no
758],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000759 ac_cv_pthread_is_default=no,
760 ac_cv_pthread_is_default=no)
761])
762AC_MSG_RESULT($ac_cv_pthread_is_default)
763
764
765if test $ac_cv_pthread_is_default = yes
766then
767 ac_cv_kpthread=no
768else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000769# -Kpthread, if available, provides the right #defines
770# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000771# Some compilers won't report that they do not support -Kpthread,
772# so we need to run a program to see whether it really made the
773# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000774AC_MSG_CHECKING(whether $CC accepts -Kpthread)
775AC_CACHE_VAL(ac_cv_kpthread,
776[ac_save_cc="$CC"
777CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000778AC_TRY_RUN([
779#include <pthread.h>
780
781void* routine(void* p){return NULL;}
782
783int main(){
784 pthread_t p;
785 if(pthread_create(&p,NULL,routine,NULL)!=0)
786 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000787 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000788 return 0;
789}
790],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000791 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000792 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000793 ac_cv_kpthread=no)
794CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000795AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000796fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000797
Skip Montanarod8d39a02003-07-10 20:44:10 +0000798if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000799then
800# -Kthread, if available, provides the right #defines
801# and linker options to make pthread_create available
802# Some compilers won't report that they do not support -Kthread,
803# so we need to run a program to see whether it really made the
804# function available.
805AC_MSG_CHECKING(whether $CC accepts -Kthread)
806AC_CACHE_VAL(ac_cv_kthread,
807[ac_save_cc="$CC"
808CC="$CC -Kthread"
809AC_TRY_RUN([
810#include <pthread.h>
811
812void* routine(void* p){return NULL;}
813
814int main(){
815 pthread_t p;
816 if(pthread_create(&p,NULL,routine,NULL)!=0)
817 return 1;
818 (void)pthread_detach(p);
819 return 0;
820}
821],
822 ac_cv_kthread=yes,
823 ac_cv_kthread=no,
824 ac_cv_kthread=no)
825CC="$ac_save_cc"])
826AC_MSG_RESULT($ac_cv_kthread)
827fi
828
Skip Montanarod8d39a02003-07-10 20:44:10 +0000829if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000830then
831# -pthread, if available, provides the right #defines
832# and linker options to make pthread_create available
833# Some compilers won't report that they do not support -pthread,
834# so we need to run a program to see whether it really made the
835# function available.
836AC_MSG_CHECKING(whether $CC accepts -pthread)
837AC_CACHE_VAL(ac_cv_thread,
838[ac_save_cc="$CC"
839CC="$CC -pthread"
840AC_TRY_RUN([
841#include <pthread.h>
842
843void* routine(void* p){return NULL;}
844
845int main(){
846 pthread_t p;
847 if(pthread_create(&p,NULL,routine,NULL)!=0)
848 return 1;
849 (void)pthread_detach(p);
850 return 0;
851}
852],
853 ac_cv_pthread=yes,
854 ac_cv_pthread=no,
855 ac_cv_pthread=no)
856CC="$ac_save_cc"])
857AC_MSG_RESULT($ac_cv_pthread)
858fi
859
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000860# If we have set a CC compiler flag for thread support then
861# check if it works for CXX, too.
862ac_cv_cxx_thread=no
863if test ! -z "$CXX"
864then
865AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
866ac_save_cxx="$CXX"
867
868if test "$ac_cv_kpthread" = "yes"
869then
870 CXX="$CXX -Kpthread"
871 ac_cv_cxx_thread=yes
872elif test "$ac_cv_kthread" = "yes"
873then
874 CXX="$CXX -Kthread"
875 ac_cv_cxx_thread=yes
876elif test "$ac_cv_pthread" = "yes"
877then
878 CXX="$CXX -pthread"
879 ac_cv_cxx_thread=yes
880fi
881
882if test $ac_cv_cxx_thread = yes
883then
884 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
885 $CXX -c conftest.$ac_ext 2>&5
886 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
887 && test -s conftest$ac_exeext && ./conftest$ac_exeext
888 then
889 ac_cv_cxx_thread=yes
890 else
891 ac_cv_cxx_thread=no
892 CXX="$ac_save_cxx"
893 fi
894 rm -fr conftest*
895else
896 CXX="$ac_save_cxx"
897fi
898fi
899AC_MSG_RESULT($ac_cv_cxx_thread)
900
Fred Drakece81d592000-07-09 14:39:29 +0000901dnl # check for ANSI or K&R ("traditional") preprocessor
902dnl AC_MSG_CHECKING(for C preprocessor type)
903dnl AC_TRY_COMPILE([
904dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
905dnl int foo;
906dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
907dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
908dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000909
Guido van Rossum627b2d71993-12-24 10:39:16 +0000910# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000911AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000912AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
913libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000914signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
915unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000916sys/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 +0000917sys/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 +0000918sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000919sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000920AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000921AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000922
923# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000924was_it_defined=no
925AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000926AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
927 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
928])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000929AC_MSG_RESULT($was_it_defined)
930
Neal Norwitz11690112002-07-30 01:08:28 +0000931# Check whether using makedev requires defining _OSF_SOURCE
932AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000933AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000934 [ makedev(0, 0) ],
935 ac_cv_has_makedev=yes,
936 ac_cv_has_makedev=no)
937if test "$ac_cv_has_makedev" = "no"; then
938 # we didn't link, try if _OSF_SOURCE will allow us to link
939 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000940#define _OSF_SOURCE 1
941#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000942 ],
943 [ makedev(0, 0) ],
944 ac_cv_has_makedev=yes,
945 ac_cv_has_makedev=no)
946 if test "$ac_cv_has_makedev" = "yes"; then
947 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
948 fi
949fi
950AC_MSG_RESULT($ac_cv_has_makedev)
951if test "$ac_cv_has_makedev" = "yes"; then
952 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
953fi
954
Martin v. Löwis399a6892002-10-04 10:22:02 +0000955# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
956# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
957# defined, but the compiler does not support pragma redefine_extname,
958# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
959# structures (such as rlimit64) without declaring them. As a
960# work-around, disable LFS on such configurations
961
962use_lfs=yes
963AC_MSG_CHECKING(Solaris LFS bug)
964AC_TRY_COMPILE([
965#define _LARGEFILE_SOURCE 1
966#define _FILE_OFFSET_BITS 64
967#include <sys/resource.h>
968],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
969AC_MSG_RESULT($sol_lfs_bug)
970if test "$sol_lfs_bug" = "yes"; then
971 use_lfs=no
972fi
973
974if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000975# Two defines needed to enable largefile support on various platforms
976# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000977AC_DEFINE(_LARGEFILE_SOURCE, 1,
978[This must be defined on some systems to enable large file support.])
979AC_DEFINE(_FILE_OFFSET_BITS, 64,
980[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000981fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000982
Guido van Rossum300fda71996-08-19 21:58:16 +0000983# Add some code to confdefs.h so that the test for off_t works on SCO
984cat >> confdefs.h <<\EOF
985#if defined(SCO_DS)
986#undef _OFF_T
987#endif
988EOF
989
Guido van Rossumef2255b2000-03-10 22:30:29 +0000990# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000991AC_TYPE_MODE_T
992AC_TYPE_OFF_T
993AC_TYPE_PID_T
994AC_TYPE_SIGNAL
995AC_TYPE_SIZE_T
996AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000997
Guido van Rossumef2255b2000-03-10 22:30:29 +0000998# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000999AC_CHECK_SIZEOF(int, 4)
1000AC_CHECK_SIZEOF(long, 4)
1001AC_CHECK_SIZEOF(void *, 4)
1002AC_CHECK_SIZEOF(char, 1)
1003AC_CHECK_SIZEOF(short, 2)
1004AC_CHECK_SIZEOF(float, 4)
1005AC_CHECK_SIZEOF(double, 8)
1006AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001007
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001008AC_MSG_CHECKING(for long long support)
1009have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001010AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1011 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1012 have_long_long=yes
1013])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001014AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001015if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001016AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001017fi
1018
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001019AC_MSG_CHECKING(for uintptr_t support)
1020have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001021AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1022 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1023 have_uintptr_t=yes
1024])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001025AC_MSG_RESULT($have_uintptr_t)
1026if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001027AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001028fi
1029
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001030# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1031AC_MSG_CHECKING(size of off_t)
1032AC_CACHE_VAL(ac_cv_sizeof_off_t,
1033[AC_TRY_RUN([#include <stdio.h>
1034#include <sys/types.h>
1035main()
1036{
1037 FILE *f=fopen("conftestval", "w");
1038 if (!f) exit(1);
1039 fprintf(f, "%d\n", sizeof(off_t));
1040 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001041}],
1042ac_cv_sizeof_off_t=`cat conftestval`,
1043ac_cv_sizeof_off_t=0,
1044ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001045])
1046AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001047AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1048[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001049
1050AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001051if test "$have_long_long" = yes -a \
1052 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1053 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001054 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1055 [Defined to enable large file support when an off_t is bigger than a long
1056 and long long is available and at least as big as an off_t. You may need
1057 to add some flags for configuration and compilation to enable this mode.
1058 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001059 AC_MSG_RESULT(yes)
1060else
1061 AC_MSG_RESULT(no)
1062fi
1063
Fred Drakea3f6e912000-06-29 20:44:47 +00001064# AC_CHECK_SIZEOF() doesn't include <time.h>.
1065AC_MSG_CHECKING(size of time_t)
1066AC_CACHE_VAL(ac_cv_sizeof_time_t,
1067[AC_TRY_RUN([#include <stdio.h>
1068#include <time.h>
1069main()
1070{
1071 FILE *f=fopen("conftestval", "w");
1072 if (!f) exit(1);
1073 fprintf(f, "%d\n", sizeof(time_t));
1074 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001075}],
1076ac_cv_sizeof_time_t=`cat conftestval`,
1077ac_cv_sizeof_time_t=0,
1078ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001079])
1080AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001081AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1082[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001083
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001084
Trent Mick635f6fb2000-08-23 21:33:05 +00001085# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001086ac_save_cc="$CC"
1087if test "$ac_cv_kpthread" = "yes"
1088then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001089elif test "$ac_cv_kthread" = "yes"
1090then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001091elif test "$ac_cv_pthread" = "yes"
1092then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001093fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001094AC_MSG_CHECKING(for pthread_t)
1095have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001096AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001097AC_MSG_RESULT($have_pthread_t)
1098if test "$have_pthread_t" = yes ; then
1099 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1100 AC_MSG_CHECKING(size of pthread_t)
1101 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1102 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001103#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001104 main()
1105 {
1106 FILE *f=fopen("conftestval", "w");
1107 if (!f) exit(1);
1108 fprintf(f, "%d\n", sizeof(pthread_t));
1109 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001110 }],
1111 ac_cv_sizeof_pthread_t=`cat conftestval`,
1112 ac_cv_sizeof_pthread_t=0,
1113 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001114 ])
1115 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001116 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1117 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001118fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001119CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001120
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001121AC_MSG_CHECKING(for --enable-toolbox-glue)
1122AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001123 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001124
1125if test -z "$enable_toolbox_glue"
1126then
1127 case $ac_sys_system/$ac_sys_release in
1128 Darwin/*)
1129 enable_toolbox_glue="yes";;
1130 *)
1131 enable_toolbox_glue="no";;
1132 esac
1133fi
1134case "$enable_toolbox_glue" in
1135yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001136 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001137 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001138 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001139 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1140 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001141 ;;
1142*)
1143 extra_frameworks=""
1144 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001145 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001146 ;;
1147esac
1148AC_MSG_RESULT($enable_toolbox_glue)
1149
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001150AC_SUBST(LIBTOOL_CRUFT)
1151case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001152 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001153 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001154 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001155 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansena3891ea2001-09-07 14:25:12 +00001156 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001157 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001158 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001159 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001160 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001161 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001162esac
1163
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001164AC_MSG_CHECKING(for --enable-framework)
1165if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001166then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001167 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001168 # -F. is needed to allow linking to the framework while
1169 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001170 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001171 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1172 [Define if you want to produce an OpenStep/Rhapsody framework
1173 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001174 AC_MSG_RESULT(yes)
1175else
1176 AC_MSG_RESULT(no)
1177fi
1178
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001179AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001180case $ac_sys_system/$ac_sys_release in
1181 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001182 AC_DEFINE(WITH_DYLD, 1,
1183 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1184 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1185 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001186 AC_MSG_RESULT(always on for Darwin)
1187 ;;
1188 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001189 AC_MSG_RESULT(no)
1190 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001191esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001192
Guido van Rossumac405f61994-09-12 10:56:06 +00001193# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001194AC_SUBST(SO)
1195AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001196AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001197AC_SUBST(CCSHARED)
1198AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001199# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001200# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001201AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001202if test -z "$SO"
1203then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001204 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001205 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001206 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001207 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001208 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001209else
1210 # this might also be a termcap variable, see #610332
1211 echo
1212 echo '====================================================================='
1213 echo '+ +'
1214 echo '+ WARNING: You have set SO in your environment. +'
1215 echo '+ Do you really mean to change the extension for shared libraries? +'
1216 echo '+ Continuing in 10 seconds to let you to ponder. +'
1217 echo '+ +'
1218 echo '====================================================================='
1219 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001220fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001221AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001222# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001223# -- "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 +00001224# (Shared libraries in this instance are shared modules to be loaded into
1225# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001226AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001227if test -z "$LDSHARED"
1228then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001229 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001230 AIX*)
1231 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001232 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001233 ;;
1234 BeOS*)
1235 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001236 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001237 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001238 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001239 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001240 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001241 SunOS/5*)
1242 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001243 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001244 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001245 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001246 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001247 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001248 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001249 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001250 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1251 if test "$enable_framework" ; then
1252 # Link against the framework. All externals should be defined.
1253 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1254 else
1255 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001256 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001257 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001258 Darwin/*)
1259 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1260 if test "$enable_framework" ; then
1261 # Link against the framework. All externals should be defined.
1262 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1263 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001264 # No framework, use the Python app as bundle-loader
1265 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001266 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001267 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001268 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001269 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001270 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001271 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001272 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001273 then
1274 LDSHARED="cc -shared ${LDFLAGS}"
1275 else
1276 LDSHARED="ld -Bshareable ${LDFLAGS}"
1277 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001278 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001279 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001280 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001281 then LDSHARED='$(CC) -shared'
1282 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001283 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001284 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001285 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001286 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001287 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001288 *) LDSHARED="ld";;
1289 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001290fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001291AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001292BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001293# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001294# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001295AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001296if test -z "$CCSHARED"
1297then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001298 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001299 SunOS*) if test "$GCC" = yes;
1300 then CCSHARED="-fPIC";
1301 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001302 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001303 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001304 else CCSHARED="+z";
1305 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001306 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001307 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001308 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001309 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001310 if test "$GCC" = "yes"
1311 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001312 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001313 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001314 SCO_SV*)
1315 if test "$GCC" = "yes"
1316 then CCSHARED="-fPIC"
1317 else CCSHARED="-Kpic -belf"
1318 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001319 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001320 IRIX*/6*) case $CC in
1321 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001322 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001323 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001324 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001325 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001326fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001327AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001328# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001329# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001330AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001331if test -z "$LINKFORSHARED"
1332then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001333 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001334 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001335 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001336 LINKFORSHARED="-Wl,-E -Wl,+s";;
1337# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001338 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001339 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001340 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001341 Darwin/*)
1342 # -u __dummy makes the linker aware of the objc runtime
1343 # in System.framework; otherwise, __objcInit (referenced in
1344 # crt1.o) gets erroneously defined as common, which breaks dynamic
1345 # loading of any modules which reference it in System.framework.
1346 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1347 # not used by the core itself but which needs to be in the core so
1348 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001349 # -prebind is no longer used, because it actually seems to give a
1350 # slowdown in stead of a speedup, maybe due to the large number of
1351 # dynamic loads Python does.
1352 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001353 if test "$enable_framework"
1354 then
1355 LINKFORSHARED="$LINKFORSHARED -framework Python"
1356 fi
1357 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001358 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001359 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001360 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001361 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001362 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1363 then
1364 LINKFORSHARED="-Wl,--export-dynamic"
1365 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001366 SunOS/5*) case $CC in
1367 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001368 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001369 then
1370 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001371 fi;;
1372 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001373 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001374fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001375AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001376
Neil Schemenauer61c51152001-01-26 16:18:16 +00001377AC_SUBST(CFLAGSFORSHARED)
1378AC_MSG_CHECKING(CFLAGSFORSHARED)
1379if test ! "$LIBRARY" = "$LDLIBRARY"
1380then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001381 case $ac_sys_system in
1382 CYGWIN*)
1383 # Cygwin needs CCSHARED when building extension DLLs
1384 # but not when building the interpreter DLL.
1385 CFLAGSFORSHARED='';;
1386 *)
1387 CFLAGSFORSHARED='$(CCSHARED)'
1388 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001389fi
1390AC_MSG_RESULT($CFLAGSFORSHARED)
1391
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001392# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1393# library (with --enable-shared).
1394# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001395# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1396# if it is not required, since it creates a dependency of the shared library
1397# to LIBS. This, in turn, means that applications linking the shared libpython
1398# don't need to link LIBS explicitly. The default should be only changed
1399# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001400AC_SUBST(SHLIBS)
1401AC_MSG_CHECKING(SHLIBS)
1402case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001403 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001404 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001405esac
1406AC_MSG_RESULT($SHLIBS)
1407
1408
Guido van Rossum627b2d71993-12-24 10:39:16 +00001409# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001410AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1411AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001412AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1413 # posix4 on Solaris 2.6
1414 # pthread (first!) on Linux
Martin v. Löwis19d17342003-06-14 21:03:05 +00001415# check if we need libintl for locale functions
1416AC_CHECK_LIB(intl, textdomain,
1417 AC_DEFINE(WITH_LIBINTL, 1,
1418 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001419
1420# checks for system dependent C++ extensions support
1421case "$ac_sys_system" in
1422 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1423 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1424 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001425 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1426 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1427 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001428 AC_MSG_RESULT(yes)],
1429 [AC_MSG_RESULT(no)]);;
1430 *) ;;
1431esac
1432
Guido van Rossum70c7f481998-03-26 18:44:10 +00001433# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001434# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001435# BeOS' sockets are stashed in libnet.
1436case "$ac_sys_system" in
1437IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001438*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001439AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001440AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001441;;
1442esac
1443case "$ac_sys_system" in
1444BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001445AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1446;;
1447esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001448
Guido van Rossumc5a39031996-07-31 17:35:03 +00001449AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001450AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001451 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1452[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001453AC_MSG_RESULT($withval)
1454LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001455],
1456[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001457
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001458# Determine if signalmodule should be used.
1459AC_SUBST(USE_SIGNAL_MODULE)
1460AC_SUBST(SIGNAL_OBJS)
1461AC_MSG_CHECKING(for --with-signal-module)
1462AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001463 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001464
1465if test -z "$with_signal_module"
1466then with_signal_module="yes"
1467fi
1468AC_MSG_RESULT($with_signal_module)
1469
1470if test "${with_signal_module}" = "yes"; then
1471 USE_SIGNAL_MODULE=""
1472 SIGNAL_OBJS=""
1473else
1474 USE_SIGNAL_MODULE="#"
1475 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1476fi
1477
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001478# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001479AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001480USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001481
Guido van Rossum54d93d41997-01-22 20:51:58 +00001482AC_MSG_CHECKING(for --with-dec-threads)
1483AC_SUBST(LDLAST)
1484AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001485 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1486[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001487AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001488LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001489if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001490 with_thread="$withval";
1491fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001492[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001493
Martin v. Löwis11437992002-04-12 09:54:03 +00001494# Templates for things AC_DEFINEd more than once.
1495# For a single AC_DEFINE, no template is needed.
1496AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1497AH_TEMPLATE(_REENTRANT,
1498 [Define to force use of thread-safe errno, h_errno, and other functions])
1499AH_TEMPLATE(WITH_THREAD,
1500 [Define if you want to compile in rudimentary thread support])
1501
Guido van Rossum54d93d41997-01-22 20:51:58 +00001502AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001503dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001504AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001505 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001506
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001507# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001508dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001509AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001510 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1511 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001512
1513if test -z "$with_threads"
1514then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001515fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001516AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001517
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001518AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001519if test "$with_threads" = "no"
1520then
1521 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001522elif test "$ac_cv_pthread_is_default" = yes
1523then
1524 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001525 # Defining _REENTRANT on system with POSIX threads should not hurt.
1526 AC_DEFINE(_REENTRANT)
1527 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001528 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001529elif test "$ac_cv_kpthread" = "yes"
1530then
1531 CC="$CC -Kpthread"
1532 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001533 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001534 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001535elif test "$ac_cv_kthread" = "yes"
1536then
1537 CC="$CC -Kthread"
1538 AC_DEFINE(WITH_THREAD)
1539 posix_threads=yes
1540 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001541elif test "$ac_cv_pthread" = "yes"
1542then
1543 CC="$CC -pthread"
1544 AC_DEFINE(WITH_THREAD)
1545 posix_threads=yes
1546 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001547else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001548 if test ! -z "$with_threads" -a -d "$with_threads"
1549 then LDFLAGS="$LDFLAGS -L$with_threads"
1550 fi
1551 if test ! -z "$withval" -a -d "$withval"
1552 then LDFLAGS="$LDFLAGS -L$withval"
1553 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001554
1555 # According to the POSIX spec, a pthreads implementation must
1556 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1557 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1558 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001559 [
1560#include <unistd.h>
1561#ifdef _POSIX_THREADS
1562yes
1563#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001564 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1565 AC_MSG_RESULT($unistd_defines_pthreads)
1566
Martin v. Löwis130fb172001-07-19 11:00:41 +00001567 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001568 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1569 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001570 AC_DEFINE(HURD_C_THREADS, 1,
1571 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001572 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001573 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001574 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1575 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001576 AC_DEFINE(MACH_C_THREADS, 1,
1577 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001578 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001579 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001580 AC_ARG_WITH([pth],
1581 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1582 [AC_MSG_RESULT($withval)
1583 AC_DEFINE([WITH_THREAD])
1584 AC_DEFINE([HAVE_PTH], 1,
1585 [Define if you have GNU PTH threads.])
1586 LIBS="-lpth $LIBS"
1587 THREADOBJ="Python/thread.o"],
1588 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001589
1590 # Just looking for pthread_create in libpthread is not enough:
1591 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1592 # So we really have to include pthread.h, and then link.
1593 _libs=$LIBS
1594 LIBS="$LIBS -lpthread"
1595 AC_MSG_CHECKING([for pthread_create in -lpthread])
1596 AC_TRY_LINK([#include <pthread.h>
1597
1598void * start_routine (void *arg) { exit (0); }], [
1599pthread_create (NULL, NULL, start_routine, NULL)], [
1600 AC_MSG_RESULT(yes)
1601 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001602 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001603 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001604 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001605 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001606 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001607 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001608 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1609 AC_DEFINE(ATHEOS_THREADS, 1,
1610 [Define this if you have AtheOS threads.])
1611 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001612 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001613 AC_DEFINE(BEOS_THREADS, 1,
1614 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001615 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001616 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001617 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001618 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001619 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001620 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001621 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001622 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001623 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001624 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001625 echo Systems with __d6_pthread_create are not supported anymore.
1626 echo See README
1627 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001628 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001629 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001630 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001631 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001632 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001633 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001634 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001635 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001636 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001637 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001638 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001639 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001640 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001641
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001642 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1643 LIBS="$LIBS -lmpc"
1644 THREADOBJ="Python/thread.o"
1645 USE_THREAD_MODULE=""])
1646
1647 if test "$posix_threads" != "yes"; then
1648 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1649 LIBS="$LIBS -lthread"
1650 THREADOBJ="Python/thread.o"
1651 USE_THREAD_MODULE=""])
1652 fi
1653
1654 if test "$USE_THREAD_MODULE" != "#"
1655 then
1656 # If the above checks didn't disable threads, (at least) OSF1
1657 # needs this '-threads' argument during linking.
1658 case $ac_sys_system in
1659 OSF1) LDLAST=-threads;;
1660 esac
1661 fi
1662fi
1663
1664if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001665 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001666 AC_DEFINE(_POSIX_THREADS, 1,
1667 [Define if you have POSIX threads,
1668 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001669 fi
1670
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001671 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1672 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001673 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1674 Defined for Solaris 2.6 bug in pthread header.)
1675 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001676 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001677 Define if the Posix semaphores do not work on your system)
1678 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001679 esac
1680
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001681 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1682 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1683 [AC_TRY_RUN([#include <pthread.h>
1684 void *foo(void *parm) {
1685 return NULL;
1686 }
1687 main() {
1688 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001689 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001690 if (pthread_attr_init(&attr)) exit(-1);
1691 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001692 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001693 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001694 }],
1695 ac_cv_pthread_system_supported=yes,
1696 ac_cv_pthread_system_supported=no,
1697 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001698 ])
1699 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1700 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001701 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001702 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001703 AC_CHECK_FUNCS(pthread_sigmask)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001704fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001705
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001706
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001707# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001708AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001709AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001710AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001711[ --enable-ipv6 Enable ipv6 (with ipv4) support
1712 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001713[ case "$enableval" in
1714 no)
1715 AC_MSG_RESULT(no)
1716 ipv6=no
1717 ;;
1718 *) AC_MSG_RESULT(yes)
1719 AC_DEFINE(ENABLE_IPV6)
1720 ipv6=yes
1721 ;;
1722 esac ],
1723
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001724[
1725dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001726 AC_TRY_RUN([ /* AF_INET6 available check */
1727#include <sys/types.h>
1728#include <sys/socket.h>
1729main()
1730{
1731 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1732 exit(1);
1733 else
1734 exit(0);
1735}
1736],
1737 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001738 ipv6=yes,
1739 AC_MSG_RESULT(no)
1740 ipv6=no,
1741 AC_MSG_RESULT(no)
1742 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001743)
1744
1745if test "$ipv6" = "yes"; then
1746 AC_MSG_CHECKING(if RFC2553 API is available)
1747 AC_TRY_COMPILE([#include <sys/types.h>
1748#include <netinet/in.h>],
1749 [struct sockaddr_in6 x;
1750x.sin6_scope_id;],
1751 AC_MSG_RESULT(yes)
1752 ipv6=yes,
1753 AC_MSG_RESULT(no, IPv6 disabled)
1754 ipv6=no)
1755fi
1756
1757if test "$ipv6" = "yes"; then
1758 AC_DEFINE(ENABLE_IPV6)
1759fi
1760])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001761
1762ipv6type=unknown
1763ipv6lib=none
1764ipv6trylibc=no
1765
1766if test "$ipv6" = "yes"; then
1767 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001768 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1769 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001770 case $i in
1771 inria)
1772 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001773 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001774#include <netinet/in.h>
1775#ifdef IPV6_INRIA_VERSION
1776yes
1777#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001778 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001779 ;;
1780 kame)
1781 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001782 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001783#include <netinet/in.h>
1784#ifdef __KAME__
1785yes
1786#endif],
1787 [ipv6type=$i;
1788 ipv6lib=inet6
1789 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001790 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001791 ;;
1792 linux-glibc)
1793 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001794 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001795#include <features.h>
1796#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1797yes
1798#endif],
1799 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001800 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001801 ;;
1802 linux-inet6)
1803 dnl http://www.v6.linux.or.jp/
1804 if test -d /usr/inet6; then
1805 ipv6type=$i
1806 ipv6lib=inet6
1807 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001808 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001809 fi
1810 ;;
1811 solaris)
1812 if test -f /etc/netconfig; then
1813 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1814 ipv6type=$i
1815 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001816 fi
1817 fi
1818 ;;
1819 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001820 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001821#include <sys/param.h>
1822#ifdef _TOSHIBA_INET6
1823yes
1824#endif],
1825 [ipv6type=$i;
1826 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001827 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001828 ;;
1829 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001830 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001831#include </usr/local/v6/include/sys/v6config.h>
1832#ifdef __V6D__
1833yes
1834#endif],
1835 [ipv6type=$i;
1836 ipv6lib=v6;
1837 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001838 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001839 ;;
1840 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001841 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001842#include <sys/param.h>
1843#ifdef _ZETA_MINAMI_INET6
1844yes
1845#endif],
1846 [ipv6type=$i;
1847 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001848 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001849 ;;
1850 esac
1851 if test "$ipv6type" != "unknown"; then
1852 break
1853 fi
1854 done
1855 AC_MSG_RESULT($ipv6type)
1856fi
1857
1858if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1859 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1860 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1861 echo "using lib$ipv6lib"
1862 else
1863 if test $ipv6trylibc = "yes"; then
1864 echo "using libc"
1865 else
1866 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1867 echo "You need to fetch lib$ipv6lib.a from appropriate"
1868 echo 'ipv6 kit and compile beforehand.'
1869 exit 1
1870 fi
1871 fi
1872fi
1873
Jack Jansen7b8c7542002-04-14 20:12:41 +00001874# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001875AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001876AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001877 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001878
1879if test -z "$with_universal_newlines"
1880then with_universal_newlines="yes"
1881fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001882if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001883then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001884 echo --without-universal-newlines is unsupported, see README
1885 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001886else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001887 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1888 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001889fi
1890AC_MSG_RESULT($with_universal_newlines)
1891
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001892# Check for --with-doc-strings
1893AC_MSG_CHECKING(for --with-doc-strings)
1894AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001895 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001896
1897if test -z "$with_doc_strings"
1898then with_doc_strings="yes"
1899fi
1900if test "$with_doc_strings" != "no"
1901then
1902 AC_DEFINE(WITH_DOC_STRINGS, 1,
1903 [Define if you want documentation strings in extension modules])
1904fi
1905AC_MSG_RESULT($with_doc_strings)
1906
Neil Schemenauera35c6882001-02-27 04:45:05 +00001907# Check for Python-specific malloc support
1908AC_MSG_CHECKING(for --with-pymalloc)
1909AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001910 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001911
1912if test -z "$with_pymalloc"
1913then with_pymalloc="yes"
1914fi
1915if test "$with_pymalloc" != "no"
1916then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001917 AC_DEFINE(WITH_PYMALLOC, 1,
1918 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001919fi
1920AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001921
Barry Warsawef82cd72000-06-30 16:21:01 +00001922# Check for --with-wctype-functions
1923AC_MSG_CHECKING(for --with-wctype-functions)
1924AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001925 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1926[
Barry Warsawef82cd72000-06-30 16:21:01 +00001927if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001928then
1929 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1930 [Define if you want wctype.h functions to be used instead of the
1931 one supplied by Python itself. (see Include/unicodectype.h).])
1932 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001933else AC_MSG_RESULT(no)
1934fi],
1935[AC_MSG_RESULT(no)])
1936
Guido van Rossum68242b51996-05-28 22:53:03 +00001937# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001938AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001939DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001940
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001941AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001942AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001943 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1944[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001945AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001946echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001947exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001948AC_DEFINE(WITH_SGI_DL, 1,
1949 [Define if you want to use SGI (IRIX 4) dynamic linking.
1950 This requires the "dl" library by Jack Jansen,
1951 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1952 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1953 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001954DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001955dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001956if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001957then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001958else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001959fi
1960DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001961LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001962
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001963AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964AC_ARG_WITH(dl-dld,
1965 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1966[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001967AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001968echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001969exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001970AC_DEFINE(WITH_DL_DLD, 1,
1971 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1972 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1973 Sequent Symmetry (Dynix), and Atari ST.
1974 This requires the 'dl-dld' library,
1975 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1976 as well as the 'GNU dld' library,
1977 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1978 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1979 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001980DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001981dldir=`echo "$withval" | sed 's/,.*//'`
1982dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001983if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001984then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001985else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001986fi
1987DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001988LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001989
Guido van Rossume97ee181999-12-20 21:27:22 +00001990# the dlopen() function means we might want to use dynload_shlib.o. some
1991# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001992AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001993
1994# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1995# loading of modules.
1996AC_SUBST(DYNLOADFILE)
1997AC_MSG_CHECKING(DYNLOADFILE)
1998if test -z "$DYNLOADFILE"
1999then
2000 case $ac_sys_system/$ac_sys_release in
2001 AIX*) DYNLOADFILE="dynload_aix.o";;
2002 BeOS*) DYNLOADFILE="dynload_beos.o";;
2003 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002004 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002005 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002006 *)
2007 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2008 # out any dynamic loading
2009 if test "$ac_cv_func_dlopen" = yes
2010 then DYNLOADFILE="dynload_shlib.o"
2011 else DYNLOADFILE="dynload_stub.o"
2012 fi
2013 ;;
2014 esac
2015fi
2016AC_MSG_RESULT($DYNLOADFILE)
2017if test "$DYNLOADFILE" != "dynload_stub.o"
2018then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002019 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2020 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002021fi
2022
Jack Jansenc49e5b72001-06-19 15:00:23 +00002023# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2024
2025AC_SUBST(MACHDEP_OBJS)
2026AC_MSG_CHECKING(MACHDEP_OBJS)
2027if test -z "$MACHDEP_OBJS"
2028then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002029 MACHDEP_OBJS=$extra_machdep_objs
2030else
2031 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002032fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002033AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002034
Guido van Rossum627b2d71993-12-24 10:39:16 +00002035# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00002036AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002037 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002038 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
2039 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002040 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002041 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002042 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002043 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002044 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002045 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002046 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002047 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002048
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002049# For some functions, having a definition is not sufficient, since
2050# we want to take their address.
2051AC_MSG_CHECKING(for chroot)
2052AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2053 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2054 AC_MSG_RESULT(yes),
2055 AC_MSG_RESULT(no)
2056)
2057AC_MSG_CHECKING(for link)
2058AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2059 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2060 AC_MSG_RESULT(yes),
2061 AC_MSG_RESULT(no)
2062)
2063AC_MSG_CHECKING(for symlink)
2064AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2065 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2066 AC_MSG_RESULT(yes),
2067 AC_MSG_RESULT(no)
2068)
2069
Martin v. Löwisd5843682002-11-21 20:41:28 +00002070# On some systems (eg. FreeBSD 5), we would find a definition of the
2071# functions ctermid_r, setgroups in the library, but no prototype
2072# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2073# address to avoid compiler warnings and potential miscompilations
2074# because of the missing prototypes.
2075
2076AC_MSG_CHECKING(for ctermid_r)
2077AC_TRY_COMPILE([
2078#include "confdefs.h"
2079#include <stdio.h>
2080], void* p = ctermid_r,
2081 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2082 AC_MSG_RESULT(yes),
2083 AC_MSG_RESULT(no)
2084)
2085
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002086AC_MSG_CHECKING(for flock)
2087AC_TRY_COMPILE([
2088#include "confdefs.h"
2089#include <sys/file.h>
2090], void* p = flock,
2091 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2092 AC_MSG_RESULT(yes),
2093 AC_MSG_RESULT(no)
2094)
2095
2096AC_MSG_CHECKING(for getpagesize)
2097AC_TRY_COMPILE([
2098#include "confdefs.h"
2099#include <unistd.h>
2100], void* p = getpagesize,
2101 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2102 AC_MSG_RESULT(yes),
2103 AC_MSG_RESULT(no)
2104)
2105
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002106dnl check for true
2107AC_CHECK_PROGS(TRUE, true, /bin/true)
2108
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002109dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2110dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002111AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002112 AC_CHECK_LIB(resolv, inet_aton)
2113)
2114
Martin v. Löwise9416172003-05-03 10:12:45 +00002115AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002116AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002117#include "confdefs.h"
2118#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002119], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002120 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2121 AC_MSG_RESULT(yes),
2122 AC_MSG_RESULT(no)
2123)
2124
2125AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002126AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002127#include "confdefs.h"
2128#include <sys/socket.h>
2129#include <netinet/in.h>
2130#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002131], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002132 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2133 AC_MSG_RESULT(yes),
2134 AC_MSG_RESULT(no)
2135)
2136
2137AC_MSG_CHECKING(for inet_pton)
2138AC_TRY_COMPILE([
2139#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002140#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002141#include <sys/socket.h>
2142#include <netinet/in.h>
2143#include <arpa/inet.h>
2144], void* p = inet_pton,
2145 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2146 AC_MSG_RESULT(yes),
2147 AC_MSG_RESULT(no)
2148)
2149
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002150# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002151AC_MSG_CHECKING(for setgroups)
2152AC_TRY_COMPILE([
2153#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002154#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002155#ifdef HAVE_GRP_H
2156#include <grp.h>
2157#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002158],
2159void* p = setgroups,
2160 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2161 AC_MSG_RESULT(yes),
2162 AC_MSG_RESULT(no)
2163)
2164
Fred Drake8cef4cf2000-06-28 16:40:38 +00002165# check for openpty and forkpty
2166
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002167AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2168AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002169
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002170# check for long file support functions
2171AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2172
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002173AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002174AC_CHECK_FUNCS(getpgrp,
2175 AC_TRY_COMPILE([#include <unistd.h>],
2176 [getpgrp(0);],
2177 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2178 [Define if getpgrp() must be called as getpgrp(0).])
2179 )
2180)
Jack Jansen150753c2003-03-29 22:07:47 +00002181AC_CHECK_FUNCS(setpgrp,
2182 AC_TRY_COMPILE([#include <unistd.h>],
2183 [setpgrp(0,0);],
2184 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2185 [Define if setpgrp() must be called as setpgrp(0, 0).])
2186 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002187)
2188AC_CHECK_FUNCS(gettimeofday,
2189 AC_TRY_COMPILE([#include <sys/time.h>],
2190 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2191 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2192 [Define if gettimeofday() does not have second (timezone) argument
2193 This is the case on Motorola V4 (R40V4.2)])
2194 )
2195)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002196
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002197AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002198AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002199#if defined(MAJOR_IN_MKDEV)
2200#include <sys/mkdev.h>
2201#elif defined(MAJOR_IN_SYSMACROS)
2202#include <sys/sysmacros.h>
2203#else
2204#include <sys/types.h>
2205#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002206],[
2207 makedev(major(0),minor(0));
2208],[
2209 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2210 [Define to 1 if you have the device macros.])
2211 AC_MSG_RESULT(yes)
2212],[
2213 AC_MSG_RESULT(no)
2214])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002215
2216# On OSF/1 V5.1, getaddrinfo is available, but a define
2217# for [no]getaddrinfo in netdb.h.
2218AC_MSG_CHECKING(for getaddrinfo)
2219AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002220#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002221#include <sys/socket.h>
2222#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002223#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002224],[
2225getaddrinfo(NULL, NULL, NULL, NULL);
2226], [
2227AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002228AC_MSG_CHECKING(getaddrinfo bug)
2229AC_TRY_RUN([
2230#include <sys/types.h>
2231#include <netdb.h>
2232#include <string.h>
2233#include <sys/socket.h>
2234#include <netinet/in.h>
2235
2236main()
2237{
2238 int passive, gaierr, inet4 = 0, inet6 = 0;
2239 struct addrinfo hints, *ai, *aitop;
2240 char straddr[INET6_ADDRSTRLEN], strport[16];
2241
2242 for (passive = 0; passive <= 1; passive++) {
2243 memset(&hints, 0, sizeof(hints));
2244 hints.ai_family = AF_UNSPEC;
2245 hints.ai_flags = passive ? AI_PASSIVE : 0;
2246 hints.ai_socktype = SOCK_STREAM;
2247 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2248 (void)gai_strerror(gaierr);
2249 goto bad;
2250 }
2251 for (ai = aitop; ai; ai = ai->ai_next) {
2252 if (ai->ai_addr == NULL ||
2253 ai->ai_addrlen == 0 ||
2254 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2255 straddr, sizeof(straddr), strport, sizeof(strport),
2256 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2257 goto bad;
2258 }
2259 switch (ai->ai_family) {
2260 case AF_INET:
2261 if (strcmp(strport, "54321") != 0) {
2262 goto bad;
2263 }
2264 if (passive) {
2265 if (strcmp(straddr, "0.0.0.0") != 0) {
2266 goto bad;
2267 }
2268 } else {
2269 if (strcmp(straddr, "127.0.0.1") != 0) {
2270 goto bad;
2271 }
2272 }
2273 inet4++;
2274 break;
2275 case AF_INET6:
2276 if (strcmp(strport, "54321") != 0) {
2277 goto bad;
2278 }
2279 if (passive) {
2280 if (strcmp(straddr, "::") != 0) {
2281 goto bad;
2282 }
2283 } else {
2284 if (strcmp(straddr, "::1") != 0) {
2285 goto bad;
2286 }
2287 }
2288 inet6++;
2289 break;
2290 case AF_UNSPEC:
2291 goto bad;
2292 break;
2293 default:
2294 /* another family support? */
2295 break;
2296 }
2297 }
2298 }
2299
2300 if (!(inet4 == 0 || inet4 == 2))
2301 goto bad;
2302 if (!(inet6 == 0 || inet6 == 2))
2303 goto bad;
2304
2305 if (aitop)
2306 freeaddrinfo(aitop);
2307 exit(0);
2308
2309 bad:
2310 if (aitop)
2311 freeaddrinfo(aitop);
2312 exit(1);
2313}
2314],
2315AC_MSG_RESULT(good)
2316buggygetaddrinfo=no,
2317AC_MSG_RESULT(buggy)
2318buggygetaddrinfo=yes,
2319AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002320buggygetaddrinfo=yes)], [
2321AC_MSG_RESULT(no)
2322buggygetaddrinfo=yes
2323])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002324
2325if test "$buggygetaddrinfo" = "yes"; then
2326 if test "$ipv6" = "yes"; then
2327 echo 'Fatal: You must get working getaddrinfo() function.'
2328 echo ' or you can specify "--disable-ipv6"'.
2329 exit 1
2330 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002331else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002332 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002333fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002334AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002335
Guido van Rossum627b2d71993-12-24 10:39:16 +00002336# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002337AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002338AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002339AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002340AC_CHECK_MEMBERS([struct stat.st_rdev])
2341AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002342AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002343
2344AC_MSG_CHECKING(for time.h that defines altzone)
2345AC_CACHE_VAL(ac_cv_header_time_altzone,
2346[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2347 ac_cv_header_time_altzone=yes,
2348 ac_cv_header_time_altzone=no)])
2349AC_MSG_RESULT($ac_cv_header_time_altzone)
2350if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002351 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002352fi
2353
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002354was_it_defined=no
2355AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002356AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002357#include <sys/types.h>
2358#include <sys/select.h>
2359#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002360], [;], [
2361 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2362 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2363 (which you can't on SCO ODT 3.0).])
2364 was_it_defined=yes
2365])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002366AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002367
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002368AC_MSG_CHECKING(for addrinfo)
2369AC_CACHE_VAL(ac_cv_struct_addrinfo,
2370AC_TRY_COMPILE([
2371# include <netdb.h>],
2372 [struct addrinfo a],
2373 ac_cv_struct_addrinfo=yes,
2374 ac_cv_struct_addrinfo=no))
2375AC_MSG_RESULT($ac_cv_struct_addrinfo)
2376if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002377 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002378fi
2379
2380AC_MSG_CHECKING(for sockaddr_storage)
2381AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2382AC_TRY_COMPILE([
2383# include <sys/types.h>
2384# include <sys/socket.h>],
2385 [struct sockaddr_storage s],
2386 ac_cv_struct_sockaddr_storage=yes,
2387 ac_cv_struct_sockaddr_storage=no))
2388AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2389if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002391fi
2392
Guido van Rossum627b2d71993-12-24 10:39:16 +00002393# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002394
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002395AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002396AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002397
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002398works=no
2399AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002400AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2401 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2402)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002403AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002404
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002405works=no
2406AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002407AC_TRY_COMPILE([], [signed char c;], works=yes,
2408 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2409)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002410AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002411
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002412have_prototypes=no
2413AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002414AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2415 AC_DEFINE(HAVE_PROTOTYPES, 1,
2416 [Define if your compiler supports function prototype])
2417 have_prototypes=yes
2418])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002419AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002420
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002421works=no
2422AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002423AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002424#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002425int foo(int x, ...) {
2426 va_list va;
2427 va_start(va, x);
2428 va_arg(va, int);
2429 va_arg(va, char *);
2430 va_arg(va, double);
2431 return 0;
2432}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002433], [return foo(10, "", 3.14);], [
2434 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2435 [Define if your compiler supports variable length function prototypes
2436 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2437 works=yes
2438])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002439AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002440
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002441if test "$have_prototypes" = yes; then
2442bad_prototypes=no
2443AC_MSG_CHECKING(for bad exec* prototypes)
2444AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002445 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2446 [Define if your <unistd.h> contains bad prototypes for exec*()
2447 (as it does on SGI IRIX 4.x)])
2448 bad_prototypes=yes
2449)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002450AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002451fi
2452
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002453# check if sockaddr has sa_len member
2454AC_MSG_CHECKING(if sockaddr has sa_len member)
2455AC_TRY_COMPILE([#include <sys/types.h>
2456#include <sys/socket.h>],
2457[struct sockaddr x;
2458x.sa_len = 0;],
2459 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002460 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002461 AC_MSG_RESULT(no))
2462
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002463va_list_is_array=no
2464AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002465AC_TRY_COMPILE([
2466#ifdef HAVE_STDARG_PROTOTYPES
2467#include <stdarg.h>
2468#else
2469#include <varargs.h>
2470#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002471], [va_list list1, list2; list1 = list2;], , [
2472 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2473 va_list_is_array=yes
2474])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002475AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002476
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002477# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002478AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2479 [Define this if you have some version of gethostbyname_r()])
2480
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002481AC_CHECK_FUNC(gethostbyname_r, [
2482 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2483 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2484 OLD_CFLAGS=$CFLAGS
2485 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2486 AC_TRY_COMPILE([
2487# include <netdb.h>
2488 ], [
2489 char *name;
2490 struct hostent *he, *res;
2491 char buffer[2048];
2492 int buflen = 2048;
2493 int h_errnop;
2494
2495 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2496 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002497 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002498 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2499 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002500 AC_MSG_RESULT(yes)
2501 ], [
2502 AC_MSG_RESULT(no)
2503 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2504 AC_TRY_COMPILE([
2505# include <netdb.h>
2506 ], [
2507 char *name;
2508 struct hostent *he;
2509 char buffer[2048];
2510 int buflen = 2048;
2511 int h_errnop;
2512
2513 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2514 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002515 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002516 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2517 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002518 AC_MSG_RESULT(yes)
2519 ], [
2520 AC_MSG_RESULT(no)
2521 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2522 AC_TRY_COMPILE([
2523# include <netdb.h>
2524 ], [
2525 char *name;
2526 struct hostent *he;
2527 struct hostent_data data;
2528
2529 (void) gethostbyname_r(name, he, &data);
2530 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002531 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002532 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2533 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002534 AC_MSG_RESULT(yes)
2535 ], [
2536 AC_MSG_RESULT(no)
2537 ])
2538 ])
2539 ])
2540 CFLAGS=$OLD_CFLAGS
2541], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002542 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002543])
2544AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2545AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2546AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002547AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002548AC_SUBST(HAVE_GETHOSTBYNAME)
2549
Guido van Rossum627b2d71993-12-24 10:39:16 +00002550# checks for system services
2551# (none yet)
2552
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002553# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002554AC_CHECK_FUNC(__fpu_control,
2555 [],
2556 [AC_CHECK_LIB(ieee, __fpu_control)
2557])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002558
Guido van Rossum93274221997-05-09 02:42:00 +00002559# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002560AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002561AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002562 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2563[
Guido van Rossum93274221997-05-09 02:42:00 +00002564if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002565then
2566 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2567 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2568 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002569else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002570fi],
2571[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002572
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002573# check for --with-libm=...
2574AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002575case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002576Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002577BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002578*) LIBM=-lm
2579esac
Guido van Rossum93274221997-05-09 02:42:00 +00002580AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002581AC_ARG_WITH(libm,
2582 AC_HELP_STRING(--with-libm=STRING, math library),
2583[
Guido van Rossum93274221997-05-09 02:42:00 +00002584if test "$withval" = no
2585then LIBM=
2586 AC_MSG_RESULT(force LIBM empty)
2587elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002588then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002589 AC_MSG_RESULT(set LIBM="$withval")
2590else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002591fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002592[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002593
2594# check for --with-libc=...
2595AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002596AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002597AC_ARG_WITH(libc,
2598 AC_HELP_STRING(--with-libc=STRING, C library),
2599[
Guido van Rossum93274221997-05-09 02:42:00 +00002600if test "$withval" = no
2601then LIBC=
2602 AC_MSG_RESULT(force LIBC empty)
2603elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002604then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002605 AC_MSG_RESULT(set LIBC="$withval")
2606else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002607fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002608[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002609
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002610# check for hypot() in math library
2611LIBS_SAVE=$LIBS
2612LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002613AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002614LIBS=$LIBS_SAVE
2615
Guido van Rossumef2255b2000-03-10 22:30:29 +00002616# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002617AC_CHECK_HEADER(wchar.h, [
2618 AC_DEFINE(HAVE_WCHAR_H, 1,
2619 [Define if the compiler provides a wchar.h header file.])
2620 wchar_h="yes"
2621],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002622wchar_h="no"
2623)
2624
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002625# determine wchar_t size
2626if test "$wchar_h" = yes
2627then
Guido van Rossum67b26592001-10-20 14:21:45 +00002628 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002629fi
2630
2631AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002632dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002633AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002634 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2635 [],
2636 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002637
2638if test $enable_unicode = yes
2639then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002640 # Without any arguments, Py_UNICODE defaults to two-byte mode
2641 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002642fi
2643
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002644AH_TEMPLATE(Py_UNICODE_SIZE,
2645 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002646case "$enable_unicode" in
2647ucs2) unicode_size="2"
2648 AC_DEFINE(Py_UNICODE_SIZE,2)
2649 ;;
2650ucs4) unicode_size="4"
2651 AC_DEFINE(Py_UNICODE_SIZE,4)
2652 ;;
2653esac
2654
Martin v. Löwis11437992002-04-12 09:54:03 +00002655AH_TEMPLATE(PY_UNICODE_TYPE,
2656 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002657
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002658AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002659if test "$enable_unicode" = "no"
2660then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002661 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002662 AC_MSG_RESULT(not used)
2663else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002664 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002665 AC_DEFINE(Py_USING_UNICODE, 1,
2666 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002667 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2668 then
2669 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002670 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2671 [Define if you have a useable wchar_t type defined in wchar.h; useable
2672 means wchar_t must be 16-bit unsigned type. (see
2673 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002674 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2675 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2676 then
2677 PY_UNICODE_TYPE="unsigned short"
2678 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2679 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2680 then
2681 PY_UNICODE_TYPE="unsigned long"
2682 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2683 else
2684 PY_UNICODE_TYPE="no type found"
2685 fi
2686 AC_MSG_RESULT($PY_UNICODE_TYPE)
2687fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002688
2689# check for endianness
2690AC_C_BIGENDIAN
2691
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002692# Check whether right shifting a negative integer extends the sign bit
2693# or fills with zeros (like the Cray J90, according to Tim Peters).
2694AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002695AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002696AC_TRY_RUN([
2697int main()
2698{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002699 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002700}
Guido van Rossum3065c942001-09-17 04:03:14 +00002701],
2702ac_cv_rshift_extends_sign=yes,
2703ac_cv_rshift_extends_sign=no,
2704ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002705AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2706if test "$ac_cv_rshift_extends_sign" = no
2707then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002708 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2709 [Define if i>>j for signed int i does not extend the sign bit
2710 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002711fi
2712
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002713# check for getc_unlocked and related locking functions
2714AC_MSG_CHECKING(for getc_unlocked() and friends)
2715AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2716AC_TRY_LINK([#include <stdio.h>],[
2717 FILE *f = fopen("/dev/null", "r");
2718 flockfile(f);
2719 getc_unlocked(f);
2720 funlockfile(f);
2721], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2722AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2723if test "$ac_cv_have_getc_unlocked" = yes
2724then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002725 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2726 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002727fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002728
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002729# check for readline 2.2
2730AC_TRY_CPP([#include <readline/readline.h>],
2731have_readline=yes, have_readline=no)
2732if test $have_readline = yes
2733then
2734 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2735 [readline/readline.h],
2736 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2737 [Define if you have readline 2.2]), )
2738fi
2739
Martin v. Löwis0daad592001-09-30 21:09:59 +00002740# check for readline 4.0
2741AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002742 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2743 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002744
Guido van Rossum353ae582001-07-10 16:45:32 +00002745# check for readline 4.2
2746AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002747 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2748 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002749
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002750AC_MSG_CHECKING(for broken nice())
2751AC_CACHE_VAL(ac_cv_broken_nice, [
2752AC_TRY_RUN([
2753int main()
2754{
2755 int val1 = nice(1);
2756 if (val1 != -1 && val1 == nice(2))
2757 exit(0);
2758 exit(1);
2759}
Guido van Rossum3065c942001-09-17 04:03:14 +00002760],
2761ac_cv_broken_nice=yes,
2762ac_cv_broken_nice=no,
2763ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002764AC_MSG_RESULT($ac_cv_broken_nice)
2765if test "$ac_cv_broken_nice" = yes
2766then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002767 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2768 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002769fi
2770
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002771# tzset(3) exists and works like we expect it to
2772AC_MSG_CHECKING(for working tzset())
2773AC_CACHE_VAL(ac_cv_working_tzset, [
2774AC_TRY_RUN([
2775#include <stdlib.h>
2776#include <time.h>
2777int main()
2778{
2779 int gmt_hour;
2780 int eastern_hour;
2781 time_t now;
2782 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002783 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002784 tzset();
2785 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002786 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002787 tzset();
2788 eastern_hour = localtime(&now)->tm_hour;
2789 if (eastern_hour == gmt_hour)
2790 exit(1);
2791 exit(0);
2792}
2793],
2794ac_cv_working_tzset=yes,
2795ac_cv_working_tzset=no,
2796ac_cv_working_tzset=no)])
2797AC_MSG_RESULT($ac_cv_working_tzset)
2798if test "$ac_cv_working_tzset" = yes
2799then
2800 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2801 [Define if tzset() actually switches the local timezone in a meaningful way.])
2802fi
2803
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002804# Look for subsecond timestamps in struct stat
2805AC_MSG_CHECKING(for tv_nsec in struct stat)
2806AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2807AC_TRY_COMPILE([#include <sys/stat.h>], [
2808struct stat st;
2809st.st_mtim.tv_nsec = 1;
2810],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002811ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002812ac_cv_stat_tv_nsec=no,
2813ac_cv_stat_tv_nsec=no))
2814AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2815if test "$ac_cv_stat_tv_nsec" = yes
2816then
2817 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2818 [Define if you have struct stat.st_mtim.tv_nsec])
2819fi
2820
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002821# On HP/UX 11.0, mvwdelch is a block with a return statement
2822AC_MSG_CHECKING(whether mvwdelch is an expression)
2823AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2824AC_TRY_COMPILE([#include <curses.h>], [
2825 int rtn;
2826 rtn = mvwdelch(0,0,0);
2827], ac_cv_mvwdelch_is_expression=yes,
2828 ac_cv_mvwdelch_is_expression=no,
2829 ac_cv_mvwdelch_is_expression=yes))
2830AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2831
2832if test "$ac_cv_mvwdelch_is_expression" = yes
2833then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002834 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2835 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002836fi
2837
2838AC_MSG_CHECKING(whether WINDOW has _flags)
2839AC_CACHE_VAL(ac_cv_window_has_flags,
2840AC_TRY_COMPILE([#include <curses.h>], [
2841 WINDOW *w;
2842 w->_flags = 0;
2843], ac_cv_window_has_flags=yes,
2844 ac_cv_window_has_flags=no,
2845 ac_cv_window_has_flags=no))
2846AC_MSG_RESULT($ac_cv_window_has_flags)
2847
2848
2849if test "$ac_cv_window_has_flags" = yes
2850then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002851 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2852 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002853fi
2854
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002855AC_MSG_CHECKING(for /dev/ptmx)
2856
2857if test -e /dev/ptmx
2858then
2859 AC_MSG_RESULT(yes)
2860 AC_DEFINE(HAVE_DEV_PTMX, 1,
2861 [Define if we have /dev/ptmx.])
2862else
2863 AC_MSG_RESULT(no)
2864fi
2865
Neal Norwitz865400f2003-03-21 01:42:58 +00002866AC_MSG_CHECKING(for /dev/ptc)
2867
2868if test -e /dev/ptc
2869then
2870 AC_MSG_RESULT(yes)
2871 AC_DEFINE(HAVE_DEV_PTC, 1,
2872 [Define if we have /dev/ptc.])
2873else
2874 AC_MSG_RESULT(no)
2875fi
2876
Martin v. Löwis01c04012002-11-11 14:58:44 +00002877AC_CHECK_TYPE(socklen_t,,
2878 AC_DEFINE(socklen_t,int,
2879 Define to `int' if <sys/socket.h> does not define.),[
2880#ifdef HAVE_SYS_TYPES_H
2881#include <sys/types.h>
2882#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002883#ifdef HAVE_SYS_SOCKET_H
2884#include <sys/socket.h>
2885#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002886])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002887
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002888AC_SUBST(THREADHEADERS)
2889
2890for h in `(cd $srcdir;echo Python/thread_*.h)`
2891do
2892 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2893done
2894
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002895AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002896SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002897AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002898for dir in $SRCDIRS; do
2899 if test ! -d $dir; then
2900 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002901 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002902done
2903AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002904
Guido van Rossum627b2d71993-12-24 10:39:16 +00002905# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002906AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2907AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002908
2909echo "creating Setup"
2910if test ! -f Modules/Setup
2911then
2912 cp $srcdir/Modules/Setup.dist Modules/Setup
2913fi
2914
2915echo "creating Setup.local"
2916if test ! -f Modules/Setup.local
2917then
2918 echo "# Edit this file for local setup changes" >Modules/Setup.local
2919fi
2920
2921echo "creating Makefile"
2922$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2923 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002924 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002925mv config.c Modules