blob: ed744eae943f73e38349aa7995c40eda0183bd3d [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
4m4_define(PYTHON_VERSION, 2.3)
5
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis11437992002-04-12 09:54:03 +000012# This is for stuff that absolutely must end up in pyconfig.h.
13# Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Guido van Rossum642b6781997-07-19 19:35:41 +000027AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000028VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000029
Martin v. Löwis1142de32002-03-29 16:28:31 +000030AC_SUBST(SOVERSION)
31SOVERSION=1.0
32
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000033# The later defininition of _XOPEN_SOURCE disables certain features
34# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
35AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
36
Martin v. Löwise981a4e2002-11-11 13:26:51 +000037define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000038
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000039# Arguments passed to configure.
40AC_SUBST(CONFIG_ARGS)
41CONFIG_ARGS="$ac_configure_args"
42
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000043dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000044AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000045 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
46[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000047 case $enableval in
48 yes)
49 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000050 esac
51 case $enableval in
52 no)
53 PYTHONFRAMEWORK=
54 PYTHONFRAMEWORKDIR=no-framework
55 PYTHONFRAMEWORKPREFIX=
56 PYTHONFRAMEWORKINSTALLDIR=
57 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000058 ;;
59 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000060 PYTHONFRAMEWORK=Python
61 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000062 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000063 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
64 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000065 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000066 ],[
67 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000068 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000069 PYTHONFRAMEWORKPREFIX=
70 PYTHONFRAMEWORKINSTALLDIR=
71 enable_framework=
72])
73AC_SUBST(PYTHONFRAMEWORK)
74AC_SUBST(PYTHONFRAMEWORKDIR)
75AC_SUBST(PYTHONFRAMEWORKPREFIX)
76AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000077
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000079## AC_HELP_STRING(--with-dyld,
80## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000081##
Guido van Rossumb418f891996-07-30 18:06:02 +000082# Set name for machine-dependent library files
83AC_SUBST(MACHDEP)
84AC_MSG_CHECKING(MACHDEP)
85if test -z "$MACHDEP"
86then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000087 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +000088 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
89 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000090 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +000091 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +000092 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +000093 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +000094 ac_md_system=`echo $ac_sys_system |
95 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
96 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +000097 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +000098 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +000099
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000100 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000101 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000102 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000103 atheos*) MACHDEP="atheos";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000104 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000105 esac
106fi
Guido van Rossum91922671997-10-09 20:24:13 +0000107
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000108# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
109# disable features if it is defined, without any means to access these
110# features as extensions. For these systems, we skip the definition of
111# _XOPEN_SOURCE. Before adding a system to the list to gain access to
112# some feature, make sure there is no alternative way to access this
113# feature. Also, when using wildcards, make sure you have verified the
114# need for not defining _XOPEN_SOURCE on all systems matching the
115# wildcard, and that the wildcard does not include future systems
116# (which may remove their limitations).
117dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
118case $ac_sys_system/$ac_sys_release in
119 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
120 # even though select is a POSIX function. Reported by J. Ribbens.
121 OpenBSD/2.* | OpenBSD/3.@<:@012@:>@)
122 define_xopen_source=no;;
123esac
124
125if test $define_xopen_source = yes
126then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000127 AC_DEFINE(_XOPEN_SOURCE, 600,
128 Define to the level of X/Open that your system supports)
129
130 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
131 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
132 # several APIs are not declared. Since this is also needed in some
133 # cases for HP-UX, we define it globally.
134
135 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
136 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
137
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000138fi
139
Guido van Rossum91922671997-10-09 20:24:13 +0000140#
141# SGI compilers allow the specification of the both the ABI and the
142# ISA on the command line. Depending on the values of these switches,
143# different and often incompatable code will be generated.
144#
145# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
146# thus supply support for various ABI/ISA combinations. The MACHDEP
147# variable is also adjusted.
148#
149AC_SUBST(SGI_ABI)
150if test ! -z "$SGI_ABI"
151then
152 CC="cc $SGI_ABI"
153 LDFLAGS="$SGI_ABI $LDFLAGS"
154 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
155fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000156AC_MSG_RESULT($MACHDEP)
157
Guido van Rossum627b2d71993-12-24 10:39:16 +0000158# checks for alternative programs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000159AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160AC_ARG_WITH(gcc,
161 AC_HELP_STRING(--without-gcc,never use gcc),
162[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000163 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000164 no) CC=cc
165 without_gcc=yes;;
166 yes) CC=gcc
167 without_gcc=no;;
168 *) CC=$withval
169 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000170 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000171 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000172 AIX*) CC=cc_r
173 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000174 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000175 case $BE_HOST_CPU in
176 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000177 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000178 without_gcc=yes
Mark Hammond8235ea12002-07-19 06:55:41 +0000179 OPT="-O -export pragma"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000180 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000181 ;;
182 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000183 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000184 without_gcc=no
Fred Drake5790be12000-10-09 17:06:13 +0000185 OPT=-O
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000186 ;;
187 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000188 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000189 ;;
190 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000191 AR="\$(srcdir)/Modules/ar_beos"
192 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000193 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000194 Monterey*)
195 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000196 without_gcc=;;
197 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000198 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000199AC_MSG_RESULT($without_gcc)
200
Guido van Rossum27552902001-01-23 01:52:26 +0000201AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000202AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000203MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000204AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000205AC_ARG_WITH(cxx,
206 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
207[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000208 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000209 case $withval in
210 no) CXX=
211 with_cxx=no;;
212 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000213 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000214 with_cxx=$withval;;
215 esac], [
216 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000217 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000218])
219AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000220
Michael W. Hudson54241132001-12-07 15:38:26 +0000221if test "$with_cxx" = "yes"
222then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000223 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000224fi
225
Martin v. Löwis537970f2000-12-13 17:37:02 +0000226dnl The following fragment works similar to AC_PROG_CXX.
227dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000228dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000229dnl Finally, it does not test whether CXX is g++.
230
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000231dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
232ifdef([AC_PROG_CXX_WORKS],[],
233 [AC_DEFUN([AC_PROG_CXX_WORKS],
234 [AC_LANG_PUSH(C++)dnl
235 _AC_COMPILER_EXEEXT
236 AC_LANG_POP()
237 ]
238)])
239
Martin v. Löwis537970f2000-12-13 17:37:02 +0000240if test "$check_cxx" = "yes"
241then
242 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
243 if test "$CXX" = "notfound"
244 then
245 CXX=
246 else
247 AC_PROG_CXX_WORKS
248 fi
249fi
250
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000251# If the user switches compilers, we can't believe the cache
252if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
253then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000254 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
255(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000256fi
257
Guido van Rossum627b2d71993-12-24 10:39:16 +0000258AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000259
260# checks for UNIX variants that set C preprocessor variables
261AC_AIX
262AC_MINIX
263
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000264AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000265AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000266AC_ARG_WITH(suffix,
267 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
268[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000269 case $withval in
270 no) EXEEXT=;;
271 yes) EXEEXT=.exe;;
272 *) EXEEXT=$withval;;
273 esac])
274AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000275
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000276# Test whether we're running on a non-case-sensitive system, in which
277# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000278AC_SUBST(BUILDEXEEXT)
279AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000280if test ! -d CaseSensitiveTestDir; then
281mkdir CaseSensitiveTestDir
282fi
283
284if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000285then
Jack Jansen1999ef42001-12-06 21:47:20 +0000286 AC_MSG_RESULT(yes)
287 BUILDEXEEXT=.exe
288else
289 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000290 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000291fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000292rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000293
Guido van Rossumdd997f71998-10-07 19:58:26 +0000294case $MACHDEP in
295bsdos*)
296 case $CC in
297 gcc) CC="$CC -D_HAVE_BSDI";;
298 esac;;
299esac
300
Guido van Rossum84561611997-08-21 00:08:11 +0000301case $ac_sys_system in
302hp*|HP*)
303 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000304 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000305 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000306Monterey*)
307 case $CC in
308 cc) CC="$CC -Wl,-Bexport";;
309 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000310SunOS*)
311 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000312 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000313 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000314esac
315
Martin v. Löwise8964d42001-03-06 12:09:07 +0000316
Neil Schemenauer61c51152001-01-26 16:18:16 +0000317AC_SUBST(LIBRARY)
318AC_MSG_CHECKING(LIBRARY)
319if test -z "$LIBRARY"
320then
321 LIBRARY='libpython$(VERSION).a'
322fi
323AC_MSG_RESULT($LIBRARY)
324
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000325# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000326# name of the library into which to insert object files). BLDLIBRARY is also
327# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
328# is blank as the main program is not linked directly against LDLIBRARY.
329# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
330# systems without shared libraries, LDLIBRARY is the same as LIBRARY
331# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
332# DLLLIBRARY is the shared (i.e., DLL) library.
333#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000334# RUNSHARED is used to run shared python without installed libraries
335#
336# INSTSONAME is the name of the shared library that will be use to install
337# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000338AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000339AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000340AC_SUBST(BLDLIBRARY)
341AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000342AC_SUBST(INSTSONAME)
343AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000344LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000345BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000346INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000347DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000348LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000349RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000350
Guido van Rossumfb842551997-08-06 23:42:07 +0000351# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000352# If CXX is set, and if it is needed to link a main function that was
353# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
354# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000355# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000356# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000357AC_SUBST(LINKCC)
358AC_MSG_CHECKING(LINKCC)
359if test -z "$LINKCC"
360then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000361 if test -z "$CXX"; then
362 LINKCC="\$(PURIFY) \$(CC)"
363 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000364 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000365 $CXX -c conftest.$ac_ext 2>&5
366 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
367 && test -s conftest$ac_exeext && ./conftest$ac_exeext
368 then
369 LINKCC="\$(PURIFY) \$(CC)"
370 else
371 LINKCC="\$(PURIFY) \$(CXX)"
372 fi
373 rm -fr conftest*
374 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000375 case $ac_sys_system in
376 AIX*)
Jeremy Hylton90d10062002-03-08 21:43:51 +0000377 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp \"\" \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000378 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000379 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000380 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000381 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000382 esac
383fi
384AC_MSG_RESULT($LINKCC)
385
Martin v. Löwis1142de32002-03-29 16:28:31 +0000386AC_MSG_CHECKING(for --enable-shared)
387AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000388 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000389
Martin v. Löwis1142de32002-03-29 16:28:31 +0000390if test -z "$enable_shared"
391then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000392 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000393 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000394 enable_shared="yes";;
395 *)
396 enable_shared="no";;
397 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000398fi
399AC_MSG_RESULT($enable_shared)
400
401
402AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000403
Guido van Rossumb8552162001-09-05 14:58:11 +0000404# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
405# library that we build, but we do not want to link against it (we
406# will find it with a -framework option). For this reason there is an
407# extra variable BLDLIBRARY against which Python and the extension
408# modules are linked, BLDLIBRARY. This is normally the same as
409# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000410if test "$enable_framework"
411then
412 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
413 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
414 BLDLIBRARY=''
415else
416 BLDLIBRARY='$(LDLIBRARY)'
417fi
418
Martin v. Löwis1142de32002-03-29 16:28:31 +0000419# Other platforms follow
420if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000421 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000422 case $ac_sys_system in
423 BeOS*)
424 LDLIBRARY='libpython$(VERSION).so'
425 ;;
426 CYGWIN*)
427 LDLIBRARY='libpython$(VERSION).dll.a'
428 DLLLIBRARY='libpython$(VERSION).dll'
429 ;;
430 SunOS*)
431 LDLIBRARY='libpython$(VERSION).so'
432 BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)'
433 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
434 ;;
Martin v. Löwis1bc894b2002-07-30 20:19:58 +0000435 Linux*|GNU*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000436 LDLIBRARY='libpython$(VERSION).so'
437 BLDLIBRARY='-L. -lpython$(VERSION)'
438 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
439 INSTSONAME="$LDLIBRARY".$SOVERSION
440 ;;
441 hp*|HP*)
442 LDLIBRARY='libpython$(VERSION).sl'
443 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
444 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
445 ;;
446 OSF*)
447 LDLIBRARY='libpython$(VERSION).so'
448 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
449 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
450 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000451 atheos*)
452 LDLIBRARY='libpython$(VERSION).so'
453 BLDLIBRARY='-L. -lpython$(VERSION)'
454 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
455 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000456 esac
457 # DG/UX requires some fancy ld contortions to produce a .so from an .a
458 case $MACHDEP in
459 dguxR4)
460 LDLIBRARY='libpython$(VERSION).so'
461 OPT="$OPT -pic"
462 ;;
463 esac
464fi
465
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000466AC_MSG_RESULT($LDLIBRARY)
467
Guido van Rossum627b2d71993-12-24 10:39:16 +0000468AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000469AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000470AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000471
472case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000473bsdos*|hp*|HP*)
474 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000475 if test -z "$INSTALL"
476 then
477 INSTALL="${srcdir}/install-sh -c"
478 fi
479esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000480AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000481
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000482# Not every filesystem supports hard links
483AC_SUBST(LN)
484if test -z "$LN" ; then
485 case $ac_sys_system in
486 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000487 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000488 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000489 *) LN=ln;;
490 esac
491fi
492
Fred Drake9f715822001-07-11 06:27:00 +0000493# Check for --with-pydebug
494AC_MSG_CHECKING(for --with-pydebug)
495AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000496 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
497[
Fred Drake9f715822001-07-11 06:27:00 +0000498if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000499then
500 AC_DEFINE(Py_DEBUG, 1,
501 [Define if you want to build an interpreter with many run-time checks.])
502 AC_MSG_RESULT(yes);
503 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000504else AC_MSG_RESULT(no); Py_DEBUG='false'
505fi],
506[AC_MSG_RESULT(no)])
507
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000508# Optimizer/debugger flags
Guido van Rossumb418f891996-07-30 18:06:02 +0000509AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000510if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000511then
Neal Norwitzd957f392002-09-25 21:26:19 +0000512 case $GCC in
Guido van Rossumb5875b61997-07-18 23:29:09 +0000513 yes)
514 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000515 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000516 if test "$Py_DEBUG" = 'true' ; then
517 # Optimization messes up debuggers, so turn it off for
518 # debug builds.
519 OPT="-g -Wall -Wstrict-prototypes"
520 else
521 OPT="-g -O3 -Wall -Wstrict-prototypes"
522 fi;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000523 *)
Fred Drake9f715822001-07-11 06:27:00 +0000524 OPT="-O3 -Wall -Wstrict-prototypes";;
525 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000526 case $ac_sys_system in
527 SCO_SV*) OPT="$OPT -m486 -DSCO5";;
528 esac
Fred Drake9f715822001-07-11 06:27:00 +0000529 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000530 *)
531 case $ac_sys_system in
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000532 OpenUNIX*|UnixWare*)
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000533 OPT="-O -K pentium,host,inline,loop_unroll,alloca ";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000534 SCO_SV*)
535 CFLAGS="$CFLAGS -belf"
536 OPT="-belf -O -Ki486 -DSCO5";;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000537 *)
538 OPT="-O";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000539 esac
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000540 esac
Jack Jansenca06bc62001-08-03 15:32:23 +0000541 case $ac_sys_system in
542 Darwin*)
Jack Jansen524a0982002-03-12 15:25:52 +0000543 OPT="$OPT -Wno-long-double -no-cpp-precomp";;
Jack Jansenca06bc62001-08-03 15:32:23 +0000544 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000545fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000546
Fred Drakee1ceaa02001-12-04 20:55:47 +0000547if test "$Py_DEBUG" = 'true'; then
548 :
549else
550 OPT="-DNDEBUG $OPT"
551fi
552
Trent Mick635f6fb2000-08-23 21:33:05 +0000553# The current (beta) Monterey compiler dies with optimizations
554case $ac_sys_system in
555Monterey*) OPT="";;
556esac
557
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000558if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000559then
560 OPT="$OPT $ac_arch_flags"
561fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000562
Guido van Rossum91922671997-10-09 20:24:13 +0000563AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
564AC_CACHE_VAL(ac_cv_opt_olimit_ok,
565[ac_save_cc="$CC"
566CC="$CC -OPT:Olimit=0"
567AC_TRY_RUN([int main() { return 0; }],
568 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000569 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000570 ac_cv_opt_olimit_ok=no)
571CC="$ac_save_cc"])
572AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000573if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000574 case $ac_sys_system in
575 Darwin*) OPT="$OPT" ;;
576 *) OPT="$OPT -OPT:Olimit=0";;
577 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000578else
579 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
580 AC_CACHE_VAL(ac_cv_olimit_ok,
581 [ac_save_cc="$CC"
582 CC="$CC -Olimit 1500"
583 AC_TRY_RUN([int main() { return 0; }],
584 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000585 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000586 ac_cv_olimit_ok=no)
587 CC="$ac_save_cc"])
588 AC_MSG_RESULT($ac_cv_olimit_ok)
589 if test $ac_cv_olimit_ok = yes; then
590 OPT="$OPT -Olimit 1500"
591 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000592fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000593
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000594# On some compilers, pthreads are available without further options
595# (e.g. MacOS X). On some of these systems, the compiler will not
596# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
597# So we have to see first whether pthreads are available without
598# options before we can check whether -Kpthread improves anything.
599AC_MSG_CHECKING(whether pthreads are available without options)
600AC_CACHE_VAL(ac_cv_pthread_is_default,
601[AC_TRY_RUN([
602#include <pthread.h>
603
604void* routine(void* p){return NULL;}
605
606int main(){
607 pthread_t p;
608 if(pthread_create(&p,NULL,routine,NULL)!=0)
609 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000610 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000611 return 0;
612}
613],
614 ac_cv_pthread_is_default=yes,
615 ac_cv_pthread_is_default=no,
616 ac_cv_pthread_is_default=no)
617])
618AC_MSG_RESULT($ac_cv_pthread_is_default)
619
620
621if test $ac_cv_pthread_is_default = yes
622then
623 ac_cv_kpthread=no
624else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000625# -Kpthread, if available, provides the right #defines
626# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000627# Some compilers won't report that they do not support -Kpthread,
628# so we need to run a program to see whether it really made the
629# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000630AC_MSG_CHECKING(whether $CC accepts -Kpthread)
631AC_CACHE_VAL(ac_cv_kpthread,
632[ac_save_cc="$CC"
633CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000634AC_TRY_RUN([
635#include <pthread.h>
636
637void* routine(void* p){return NULL;}
638
639int main(){
640 pthread_t p;
641 if(pthread_create(&p,NULL,routine,NULL)!=0)
642 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000643 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000644 return 0;
645}
646],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000647 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000648 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000649 ac_cv_kpthread=no)
650CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000651AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000652fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000653
Fred Drakece81d592000-07-09 14:39:29 +0000654dnl # check for ANSI or K&R ("traditional") preprocessor
655dnl AC_MSG_CHECKING(for C preprocessor type)
656dnl AC_TRY_COMPILE([
657dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
658dnl int foo;
659dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
660dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
661dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000662
Guido van Rossum627b2d71993-12-24 10:39:16 +0000663# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000664AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000665AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
666libintl.h locale.h ncurses.h poll.h pthread.h \
Eric S. Raymond13603592001-01-16 15:01:26 +0000667signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h termios.h \
Skip Montanaro57454e52002-06-14 20:30:31 +0000668sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000669sys/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 +0000670sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Skip Montanaro8345f712002-06-25 05:53:48 +0000671sys/resource.h netpacket/packet.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000672AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000673AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000674
675# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000676was_it_defined=no
677AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000678AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
679 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
680])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000681AC_MSG_RESULT($was_it_defined)
682
Neal Norwitz11690112002-07-30 01:08:28 +0000683# Check whether using makedev requires defining _OSF_SOURCE
684AC_MSG_CHECKING(for makedev)
685AC_TRY_LINK([ #include <sys/types.h> ],
686 [ makedev(0, 0) ],
687 ac_cv_has_makedev=yes,
688 ac_cv_has_makedev=no)
689if test "$ac_cv_has_makedev" = "no"; then
690 # we didn't link, try if _OSF_SOURCE will allow us to link
691 AC_TRY_LINK([
692 #define _OSF_SOURCE 1
693 #include <sys/types.h>
694 ],
695 [ makedev(0, 0) ],
696 ac_cv_has_makedev=yes,
697 ac_cv_has_makedev=no)
698 if test "$ac_cv_has_makedev" = "yes"; then
699 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
700 fi
701fi
702AC_MSG_RESULT($ac_cv_has_makedev)
703if test "$ac_cv_has_makedev" = "yes"; then
704 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
705fi
706
Martin v. Löwis399a6892002-10-04 10:22:02 +0000707# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
708# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
709# defined, but the compiler does not support pragma redefine_extname,
710# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
711# structures (such as rlimit64) without declaring them. As a
712# work-around, disable LFS on such configurations
713
714use_lfs=yes
715AC_MSG_CHECKING(Solaris LFS bug)
716AC_TRY_COMPILE([
717#define _LARGEFILE_SOURCE 1
718#define _FILE_OFFSET_BITS 64
719#include <sys/resource.h>
720],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
721AC_MSG_RESULT($sol_lfs_bug)
722if test "$sol_lfs_bug" = "yes"; then
723 use_lfs=no
724fi
725
726if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000727# Two defines needed to enable largefile support on various platforms
728# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000729AC_DEFINE(_LARGEFILE_SOURCE, 1,
730[This must be defined on some systems to enable large file support.])
731AC_DEFINE(_FILE_OFFSET_BITS, 64,
732[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000733fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000734
Guido van Rossum300fda71996-08-19 21:58:16 +0000735# Add some code to confdefs.h so that the test for off_t works on SCO
736cat >> confdefs.h <<\EOF
737#if defined(SCO_DS)
738#undef _OFF_T
739#endif
740EOF
741
Guido van Rossumef2255b2000-03-10 22:30:29 +0000742# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000743AC_TYPE_MODE_T
744AC_TYPE_OFF_T
745AC_TYPE_PID_T
746AC_TYPE_SIGNAL
747AC_TYPE_SIZE_T
748AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000749
Guido van Rossumef2255b2000-03-10 22:30:29 +0000750# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000751AC_CHECK_SIZEOF(int, 4)
752AC_CHECK_SIZEOF(long, 4)
753AC_CHECK_SIZEOF(void *, 4)
754AC_CHECK_SIZEOF(char, 1)
755AC_CHECK_SIZEOF(short, 2)
756AC_CHECK_SIZEOF(float, 4)
757AC_CHECK_SIZEOF(double, 8)
758AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000759
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000760AC_MSG_CHECKING(for long long support)
761have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000762AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
763 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
764 have_long_long=yes
765])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000766AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000767if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000768AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000769fi
770
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000771AC_MSG_CHECKING(for uintptr_t support)
772have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000773AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
774 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
775 have_uintptr_t=yes
776])
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000777AC_MSG_RESULT($have_uintptr_t)
778if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000779AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000780fi
781
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000782# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
783AC_MSG_CHECKING(size of off_t)
784AC_CACHE_VAL(ac_cv_sizeof_off_t,
785[AC_TRY_RUN([#include <stdio.h>
786#include <sys/types.h>
787main()
788{
789 FILE *f=fopen("conftestval", "w");
790 if (!f) exit(1);
791 fprintf(f, "%d\n", sizeof(off_t));
792 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000793}],
794ac_cv_sizeof_off_t=`cat conftestval`,
795ac_cv_sizeof_off_t=0,
796ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000797])
798AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000799AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
800[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000801
802AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000803if test "$have_long_long" = yes -a \
804 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
805 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000806 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
807 [Defined to enable large file support when an off_t is bigger than a long
808 and long long is available and at least as big as an off_t. You may need
809 to add some flags for configuration and compilation to enable this mode.
810 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000811 AC_MSG_RESULT(yes)
812else
813 AC_MSG_RESULT(no)
814fi
815
Fred Drakea3f6e912000-06-29 20:44:47 +0000816# AC_CHECK_SIZEOF() doesn't include <time.h>.
817AC_MSG_CHECKING(size of time_t)
818AC_CACHE_VAL(ac_cv_sizeof_time_t,
819[AC_TRY_RUN([#include <stdio.h>
820#include <time.h>
821main()
822{
823 FILE *f=fopen("conftestval", "w");
824 if (!f) exit(1);
825 fprintf(f, "%d\n", sizeof(time_t));
826 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000827}],
828ac_cv_sizeof_time_t=`cat conftestval`,
829ac_cv_sizeof_time_t=0,
830ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +0000831])
832AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000833AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
834[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +0000835
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000836
Trent Mick635f6fb2000-08-23 21:33:05 +0000837# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000838ac_save_cc="$CC"
839if test "$ac_cv_kpthread" = "yes"
840then CC="$CC -Kpthread"
841fi
Trent Mick635f6fb2000-08-23 21:33:05 +0000842AC_MSG_CHECKING(for pthread_t)
843have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +0000844AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +0000845AC_MSG_RESULT($have_pthread_t)
846if test "$have_pthread_t" = yes ; then
847 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
848 AC_MSG_CHECKING(size of pthread_t)
849 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
850 [AC_TRY_RUN([#include <stdio.h>
851 #include <pthread.h>
852 main()
853 {
854 FILE *f=fopen("conftestval", "w");
855 if (!f) exit(1);
856 fprintf(f, "%d\n", sizeof(pthread_t));
857 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000858 }],
859 ac_cv_sizeof_pthread_t=`cat conftestval`,
860 ac_cv_sizeof_pthread_t=0,
861 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +0000862 ])
863 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000864 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
865 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +0000866fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000867CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +0000868
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000869AC_MSG_CHECKING(for --enable-toolbox-glue)
870AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000871 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000872
873if test -z "$enable_toolbox_glue"
874then
875 case $ac_sys_system/$ac_sys_release in
876 Darwin/*)
877 enable_toolbox_glue="yes";;
878 *)
879 enable_toolbox_glue="no";;
880 esac
881fi
882case "$enable_toolbox_glue" in
883yes)
Jack Jansen666b1e72001-10-31 12:11:48 +0000884 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000885 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +0000886 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000887 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
888 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000889 ;;
890*)
891 extra_frameworks=""
892 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +0000893 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000894 ;;
895esac
896AC_MSG_RESULT($enable_toolbox_glue)
897
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000898AC_SUBST(LIBTOOL_CRUFT)
899case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +0000900 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +0000901 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +0000902 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +0000903 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
904 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +0000905 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +0000906 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +0000907 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000908 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
909 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000910esac
911
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000912AC_MSG_CHECKING(for --enable-framework)
913if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000914then
Jack Jansenca06bc62001-08-03 15:32:23 +0000915 OPT="$OPT -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000916 # -F. is needed to allow linking to the framework while
917 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +0000918 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000919 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
920 [Define if you want to produce an OpenStep/Rhapsody framework
921 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000922 AC_MSG_RESULT(yes)
923else
924 AC_MSG_RESULT(no)
925fi
926
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000927AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000928case $ac_sys_system/$ac_sys_release in
929 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000930 AC_DEFINE(WITH_DYLD, 1,
931 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
932 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
933 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000934 AC_MSG_RESULT(always on for Darwin)
935 ;;
936 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000937 AC_MSG_RESULT(no)
938 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000939esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000940
Guido van Rossumac405f61994-09-12 10:56:06 +0000941# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +0000942AC_SUBST(SO)
943AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000944AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000945AC_SUBST(CCSHARED)
946AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000947# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +0000948# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000949AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000950if test -z "$SO"
951then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000952 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000953 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000954 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000955 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000956 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000957fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000958AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000959# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +0000960# -- "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 +0000961# (Shared libraries in this instance are shared modules to be loaded into
962# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000963AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000964if test -z "$LDSHARED"
965then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000966 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000967 AIX*)
968 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +0000969 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000970 ;;
971 BeOS*)
972 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +0000973 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000974 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +0000975 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +0000976 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +0000977 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +0000978 SunOS/5*)
979 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +0000980 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +0000981 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +0000982 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000983 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +0000984 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +0000985 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +0000986 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +0000987 LDSHARED='$(CC) $(LDFLAGS) -bundle'
988 if test "$enable_framework" ; then
989 # Link against the framework. All externals should be defined.
990 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
991 else
992 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +0000993 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +0000994 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000995 Darwin/*)
996 LDSHARED='$(CC) $(LDFLAGS) -bundle'
997 if test "$enable_framework" ; then
998 # Link against the framework. All externals should be defined.
999 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1000 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001001 # No framework, use the Python app as bundle-loader
1002 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1003 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/$(PYTHON)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001004 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001005 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001006 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001007 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001008 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001009 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001010 then
1011 LDSHARED="cc -shared ${LDFLAGS}"
1012 else
1013 LDSHARED="ld -Bshareable ${LDFLAGS}"
1014 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001015 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001016 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001017 if test "$GCC" = "yes"
1018 then LDSHARED="$(CC) -shared"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001019 else LDSHARED="$(CC) -G"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001020 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001021 SCO_SV*) LDSHARED="$(CC) -Wl,-G,-Bexport";;
Trent Mick635f6fb2000-08-23 21:33:05 +00001022 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001023 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001024 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001025 *) LDSHARED="ld";;
1026 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001027fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001028AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001029BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001030# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001031# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001032AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001033if test -z "$CCSHARED"
1034then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001035 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001036 SunOS*) if test "$GCC" = yes;
1037 then CCSHARED="-fPIC";
1038 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001039 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001040 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001041 else CCSHARED="+z";
1042 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001043 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001044 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001045 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001046 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001047 if test "$GCC" = "yes"
1048 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001049 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001050 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001051 SCO_SV*)
1052 if test "$GCC" = "yes"
1053 then CCSHARED="-fPIC"
1054 else CCSHARED="-Kpic -belf"
1055 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001056 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001057 IRIX*/6*) case $CC in
1058 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001059 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001060 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001061 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001062 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001063fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001064AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001065# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001066# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001067AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001068if test -z "$LINKFORSHARED"
1069then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001070 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001071 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001072 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001073 LINKFORSHARED="-Wl,-E -Wl,+s";;
1074# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001075 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001076 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001077 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001078 Darwin/*)
1079 # -u __dummy makes the linker aware of the objc runtime
1080 # in System.framework; otherwise, __objcInit (referenced in
1081 # crt1.o) gets erroneously defined as common, which breaks dynamic
1082 # loading of any modules which reference it in System.framework.
1083 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1084 # not used by the core itself but which needs to be in the core so
1085 # that dynamically loaded extension modules have access to it.
Jack Jansen591cbed2001-08-15 13:55:15 +00001086 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001087 if test "$enable_framework"
1088 then
1089 LINKFORSHARED="$LINKFORSHARED -framework Python"
1090 fi
1091 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001092 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001093 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001094 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001095 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001096 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1097 then
1098 LINKFORSHARED="-Wl,--export-dynamic"
1099 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001100 SunOS/5*) case $CC in
1101 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001102 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001103 then
1104 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001105 fi;;
1106 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001107 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001108fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001109AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001110
Neil Schemenauer61c51152001-01-26 16:18:16 +00001111AC_SUBST(CFLAGSFORSHARED)
1112AC_MSG_CHECKING(CFLAGSFORSHARED)
1113if test ! "$LIBRARY" = "$LDLIBRARY"
1114then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001115 case $ac_sys_system in
1116 CYGWIN*)
1117 # Cygwin needs CCSHARED when building extension DLLs
1118 # but not when building the interpreter DLL.
1119 CFLAGSFORSHARED='';;
1120 *)
1121 CFLAGSFORSHARED='$(CCSHARED)'
1122 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001123fi
1124AC_MSG_RESULT($CFLAGSFORSHARED)
1125
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001126# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1127# library (with --enable-shared).
1128# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001129# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1130# if it is not required, since it creates a dependency of the shared library
1131# to LIBS. This, in turn, means that applications linking the shared libpython
1132# don't need to link LIBS explicitly. The default should be only changed
1133# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001134AC_SUBST(SHLIBS)
1135AC_MSG_CHECKING(SHLIBS)
1136case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001137 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001138 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001139esac
1140AC_MSG_RESULT($SHLIBS)
1141
1142
Guido van Rossum627b2d71993-12-24 10:39:16 +00001143# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001144AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1145AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis82c19a72002-10-06 11:48:09 +00001146AC_SEARCH_LIBS(sem_init, rt posix4) # 'Real Time' functions on Solaris,
1147 # posix4 on Solaris 2.6
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001148
1149# checks for system dependent C++ extensions support
1150case "$ac_sys_system" in
1151 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1152 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1153 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001154 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1155 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1156 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001157 AC_MSG_RESULT(yes)],
1158 [AC_MSG_RESULT(no)]);;
1159 *) ;;
1160esac
1161
Guido van Rossum70c7f481998-03-26 18:44:10 +00001162# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001163# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001164# BeOS' sockets are stashed in libnet.
1165case "$ac_sys_system" in
1166IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001167*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001168AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001169AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001170;;
1171esac
1172case "$ac_sys_system" in
1173BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001174AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1175;;
1176esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001177
Guido van Rossumc5a39031996-07-31 17:35:03 +00001178AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001179AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001180 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1181[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001182AC_MSG_RESULT($withval)
1183LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001184],
1185[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001186
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001187# Determine if signalmodule should be used.
1188AC_SUBST(USE_SIGNAL_MODULE)
1189AC_SUBST(SIGNAL_OBJS)
1190AC_MSG_CHECKING(for --with-signal-module)
1191AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001192 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001193
1194if test -z "$with_signal_module"
1195then with_signal_module="yes"
1196fi
1197AC_MSG_RESULT($with_signal_module)
1198
1199if test "${with_signal_module}" = "yes"; then
1200 USE_SIGNAL_MODULE=""
1201 SIGNAL_OBJS=""
1202else
1203 USE_SIGNAL_MODULE="#"
1204 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1205fi
1206
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001207# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001208AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001209USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001210
Guido van Rossum54d93d41997-01-22 20:51:58 +00001211AC_MSG_CHECKING(for --with-dec-threads)
1212AC_SUBST(LDLAST)
1213AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001214 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1215[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001216AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001217LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001218if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001219 with_thread="$withval";
1220fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001221[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001222
Martin v. Löwis11437992002-04-12 09:54:03 +00001223# Templates for things AC_DEFINEd more than once.
1224# For a single AC_DEFINE, no template is needed.
1225AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1226AH_TEMPLATE(_REENTRANT,
1227 [Define to force use of thread-safe errno, h_errno, and other functions])
1228AH_TEMPLATE(WITH_THREAD,
1229 [Define if you want to compile in rudimentary thread support])
1230
Guido van Rossum54d93d41997-01-22 20:51:58 +00001231AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001232dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001233AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001234 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001235
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001236# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001237dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001238AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001239 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1240 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001241
1242if test -z "$with_threads"
1243then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001244fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001245AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001246
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001247AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001248if test "$with_threads" = "no"
1249then
1250 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001251elif test "$ac_cv_pthread_is_default" = yes
1252then
1253 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001254 # Defining _REENTRANT on system with POSIX threads should not hurt.
1255 AC_DEFINE(_REENTRANT)
1256 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001257 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001258elif test "$ac_cv_kpthread" = "yes"
1259then
1260 CC="$CC -Kpthread"
1261 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001262 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001263 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001264else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001265 if test ! -z "$with_threads" -a -d "$with_threads"
1266 then LDFLAGS="$LDFLAGS -L$with_threads"
1267 fi
1268 if test ! -z "$withval" -a -d "$withval"
1269 then LDFLAGS="$LDFLAGS -L$withval"
1270 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001271
1272 # According to the POSIX spec, a pthreads implementation must
1273 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1274 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1275 AC_EGREP_CPP(yes,
1276 [#include <unistd.h>
1277 #ifdef _POSIX_THREADS
1278 yes
1279 #endif
1280 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1281 AC_MSG_RESULT($unistd_defines_pthreads)
1282
Martin v. Löwis130fb172001-07-19 11:00:41 +00001283 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001284 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1285 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001286 AC_DEFINE(HURD_C_THREADS, 1,
1287 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001288 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001289 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001290 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1291 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001292 AC_DEFINE(MACH_C_THREADS, 1,
1293 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001294 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001295 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001296 AC_ARG_WITH([pth],
1297 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1298 [AC_MSG_RESULT($withval)
1299 AC_DEFINE([WITH_THREAD])
1300 AC_DEFINE([HAVE_PTH], 1,
1301 [Define if you have GNU PTH threads.])
1302 LIBS="-lpth $LIBS"
1303 THREADOBJ="Python/thread.o"],
1304 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001305
1306 # Just looking for pthread_create in libpthread is not enough:
1307 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1308 # So we really have to include pthread.h, and then link.
1309 _libs=$LIBS
1310 LIBS="$LIBS -lpthread"
1311 AC_MSG_CHECKING([for pthread_create in -lpthread])
1312 AC_TRY_LINK([#include <pthread.h>
1313
1314void * start_routine (void *arg) { exit (0); }], [
1315pthread_create (NULL, NULL, start_routine, NULL)], [
1316 AC_MSG_RESULT(yes)
1317 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001318 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001319 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001320 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001321 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001322 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001323 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001324 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1325 AC_DEFINE(ATHEOS_THREADS, 1,
1326 [Define this if you have AtheOS threads.])
1327 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001328 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001329 AC_DEFINE(BEOS_THREADS, 1,
1330 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001331 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001332 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001333 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001334 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001335 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001336 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001337 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001338 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001339 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001340 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001341 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001342 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001343 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001344 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001345 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001346 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001347 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001348 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001349 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001350 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001351 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001352 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001353 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001354
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001355 if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001356 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001357 AC_DEFINE(_POSIX_THREADS, 1,
1358 [Define if you have POSIX threads,
1359 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001360 fi
1361
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001362 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1363 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1364 [AC_TRY_RUN([#include <pthread.h>
1365 void *foo(void *parm) {
1366 return NULL;
1367 }
1368 main() {
1369 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001370 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001371 if (pthread_attr_init(&attr)) exit(-1);
1372 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001373 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001374 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001375 }],
1376 ac_cv_pthread_system_supported=yes,
1377 ac_cv_pthread_system_supported=no,
1378 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001379 ])
1380 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1381 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001382 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001383 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001384 AC_CHECK_FUNCS(pthread_sigmask)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001385 fi
1386
Martin v. Löwis130fb172001-07-19 11:00:41 +00001387 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1388 LIBS="$LIBS -lmpc"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001389 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001390 USE_THREAD_MODULE=""])
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001391
Neal Norwitza978ab02002-11-02 16:58:05 +00001392 if test "$posix_threads" != "yes"; then
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001393 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1394 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001395 THREADOBJ="Python/thread.o"
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001396 USE_THREAD_MODULE=""])
1397 fi
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001398
Martin v. Löwis130fb172001-07-19 11:00:41 +00001399 if test "$USE_THREAD_MODULE" != "#"
1400 then
1401 # If the above checks didn't disable threads, (at least) OSF1
1402 # needs this '-threads' argument during linking.
1403 case $ac_sys_system in
1404 OSF1) LDLAST=-threads;;
1405 esac
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001406 fi
Martin v. Löwisa7a76d32002-10-04 07:21:24 +00001407
1408 if test "$posix_threads" = yes -a \
1409 "$ac_sys_system" = "SunOS" -a \
1410 "$ac_sys_release" = "5.6"; then
1411 AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1412 [Defined for Solaris 2.6 bug in pthread header.])
1413 fi
1414
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001415fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001416
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001417# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001418AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001419AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001420AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001421[ --enable-ipv6 Enable ipv6 (with ipv4) support
1422 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001423[ case "$enableval" in
1424 no)
1425 AC_MSG_RESULT(no)
1426 ipv6=no
1427 ;;
1428 *) AC_MSG_RESULT(yes)
1429 AC_DEFINE(ENABLE_IPV6)
1430 ipv6=yes
1431 ;;
1432 esac ],
1433
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001434[
1435dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001436 AC_TRY_RUN([ /* AF_INET6 available check */
1437#include <sys/types.h>
1438#include <sys/socket.h>
1439main()
1440{
1441 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1442 exit(1);
1443 else
1444 exit(0);
1445}
1446],
1447 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001448 ipv6=yes,
1449 AC_MSG_RESULT(no)
1450 ipv6=no,
1451 AC_MSG_RESULT(no)
1452 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001453)
1454
1455if test "$ipv6" = "yes"; then
1456 AC_MSG_CHECKING(if RFC2553 API is available)
1457 AC_TRY_COMPILE([#include <sys/types.h>
1458#include <netinet/in.h>],
1459 [struct sockaddr_in6 x;
1460x.sin6_scope_id;],
1461 AC_MSG_RESULT(yes)
1462 ipv6=yes,
1463 AC_MSG_RESULT(no, IPv6 disabled)
1464 ipv6=no)
1465fi
1466
1467if test "$ipv6" = "yes"; then
1468 AC_DEFINE(ENABLE_IPV6)
1469fi
1470])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001471
1472ipv6type=unknown
1473ipv6lib=none
1474ipv6trylibc=no
1475
1476if test "$ipv6" = "yes"; then
1477 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001478 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1479 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001480 case $i in
1481 inria)
1482 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001483 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001484#include <netinet/in.h>
1485#ifdef IPV6_INRIA_VERSION
1486yes
1487#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001488 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001489 ;;
1490 kame)
1491 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001492 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001493#include <netinet/in.h>
1494#ifdef __KAME__
1495yes
1496#endif],
1497 [ipv6type=$i;
1498 ipv6lib=inet6
1499 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001500 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001501 ;;
1502 linux-glibc)
1503 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001504 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001505#include <features.h>
1506#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1507yes
1508#endif],
1509 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001510 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001511 ;;
1512 linux-inet6)
1513 dnl http://www.v6.linux.or.jp/
1514 if test -d /usr/inet6; then
1515 ipv6type=$i
1516 ipv6lib=inet6
1517 ipv6libdir=/usr/inet6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001518 OPT="-I/usr/inet6/include $OPT"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001519 fi
1520 ;;
1521 solaris)
1522 if test -f /etc/netconfig; then
1523 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1524 ipv6type=$i
1525 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001526 fi
1527 fi
1528 ;;
1529 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001530 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001531#include <sys/param.h>
1532#ifdef _TOSHIBA_INET6
1533yes
1534#endif],
1535 [ipv6type=$i;
1536 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001537 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001538 ;;
1539 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001540 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001541#include </usr/local/v6/include/sys/v6config.h>
1542#ifdef __V6D__
1543yes
1544#endif],
1545 [ipv6type=$i;
1546 ipv6lib=v6;
1547 ipv6libdir=/usr/local/v6/lib;
1548 OPT="-I/usr/local/v6/include $OPT"])
1549 ;;
1550 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001551 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001552#include <sys/param.h>
1553#ifdef _ZETA_MINAMI_INET6
1554yes
1555#endif],
1556 [ipv6type=$i;
1557 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001558 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001559 ;;
1560 esac
1561 if test "$ipv6type" != "unknown"; then
1562 break
1563 fi
1564 done
1565 AC_MSG_RESULT($ipv6type)
1566fi
1567
1568if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1569 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1570 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1571 echo "using lib$ipv6lib"
1572 else
1573 if test $ipv6trylibc = "yes"; then
1574 echo "using libc"
1575 else
1576 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1577 echo "You need to fetch lib$ipv6lib.a from appropriate"
1578 echo 'ipv6 kit and compile beforehand.'
1579 exit 1
1580 fi
1581 fi
1582fi
1583
Jack Jansen7b8c7542002-04-14 20:12:41 +00001584# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001585AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001586AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001587 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001588
1589if test -z "$with_universal_newlines"
1590then with_universal_newlines="yes"
1591fi
1592if test "$with_universal_newlines" != "no"
1593then
Martin v. Löwise8aea582002-04-16 05:51:02 +00001594 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1595 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001596fi
1597AC_MSG_RESULT($with_universal_newlines)
1598
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001599# Check for --with-doc-strings
1600AC_MSG_CHECKING(for --with-doc-strings)
1601AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001602 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001603
1604if test -z "$with_doc_strings"
1605then with_doc_strings="yes"
1606fi
1607if test "$with_doc_strings" != "no"
1608then
1609 AC_DEFINE(WITH_DOC_STRINGS, 1,
1610 [Define if you want documentation strings in extension modules])
1611fi
1612AC_MSG_RESULT($with_doc_strings)
1613
Neil Schemenauera35c6882001-02-27 04:45:05 +00001614# Check for Python-specific malloc support
1615AC_MSG_CHECKING(for --with-pymalloc)
1616AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001617 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001618
1619if test -z "$with_pymalloc"
1620then with_pymalloc="yes"
1621fi
1622if test "$with_pymalloc" != "no"
1623then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001624 AC_DEFINE(WITH_PYMALLOC, 1,
1625 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001626fi
1627AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001628
Barry Warsawef82cd72000-06-30 16:21:01 +00001629# Check for --with-wctype-functions
1630AC_MSG_CHECKING(for --with-wctype-functions)
1631AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001632 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1633[
Barry Warsawef82cd72000-06-30 16:21:01 +00001634if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001635then
1636 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1637 [Define if you want wctype.h functions to be used instead of the
1638 one supplied by Python itself. (see Include/unicodectype.h).])
1639 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001640else AC_MSG_RESULT(no)
1641fi],
1642[AC_MSG_RESULT(no)])
1643
Guido van Rossum68242b51996-05-28 22:53:03 +00001644# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001645AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001646DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001647
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001648AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001649AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001650 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1651[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001652AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001653AC_DEFINE(WITH_SGI_DL, 1,
1654 [Define if you want to use SGI (IRIX 4) dynamic linking.
1655 This requires the "dl" library by Jack Jansen,
1656 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1657 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1658 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001659DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001660dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001661if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001662then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001663else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001664fi
1665DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001666LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001667
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001668AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001669AC_ARG_WITH(dl-dld,
1670 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1671[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001672AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001673AC_DEFINE(WITH_DL_DLD, 1,
1674 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1675 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1676 Sequent Symmetry (Dynix), and Atari ST.
1677 This requires the 'dl-dld' library,
1678 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1679 as well as the 'GNU dld' library,
1680 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1681 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1682 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001683DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001684dldir=`echo "$withval" | sed 's/,.*//'`
1685dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001686if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001687then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001688else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001689fi
1690DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001691LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001692
Guido van Rossume97ee181999-12-20 21:27:22 +00001693# the dlopen() function means we might want to use dynload_shlib.o. some
1694# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001695AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001696
1697# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1698# loading of modules.
1699AC_SUBST(DYNLOADFILE)
1700AC_MSG_CHECKING(DYNLOADFILE)
1701if test -z "$DYNLOADFILE"
1702then
1703 case $ac_sys_system/$ac_sys_release in
1704 AIX*) DYNLOADFILE="dynload_aix.o";;
1705 BeOS*) DYNLOADFILE="dynload_beos.o";;
1706 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001707 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001708 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001709 *)
1710 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1711 # out any dynamic loading
1712 if test "$ac_cv_func_dlopen" = yes
1713 then DYNLOADFILE="dynload_shlib.o"
1714 else DYNLOADFILE="dynload_stub.o"
1715 fi
1716 ;;
1717 esac
1718fi
1719AC_MSG_RESULT($DYNLOADFILE)
1720if test "$DYNLOADFILE" != "dynload_stub.o"
1721then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001722 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1723 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001724fi
1725
Jack Jansenc49e5b72001-06-19 15:00:23 +00001726# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1727
1728AC_SUBST(MACHDEP_OBJS)
1729AC_MSG_CHECKING(MACHDEP_OBJS)
1730if test -z "$MACHDEP_OBJS"
1731then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001732 MACHDEP_OBJS=$extra_machdep_objs
1733else
1734 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001735fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001736AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001737
Guido van Rossum627b2d71993-12-24 10:39:16 +00001738# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00001739AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Fred Drake6b3cc522002-04-15 19:20:27 +00001740 fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis606edc12002-06-13 21:09:11 +00001741 gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001742 hstrerror inet_pton kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00001743 mremap nice pathconf pause plock poll pthread_init \
Fred Drake35a092f1999-12-13 16:23:35 +00001744 putenv readlink \
Martin v. Löwisd5843682002-11-21 20:41:28 +00001745 select setegid seteuid setgid \
Martin v. Löwis791bfda2001-07-24 06:33:08 +00001746 setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001747 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00001748 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis6aa9fdb2002-09-10 09:16:13 +00001749 truncate uname unsetenv utimes waitpid _getpty getpriority)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001750
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00001751# For some functions, having a definition is not sufficient, since
1752# we want to take their address.
1753AC_MSG_CHECKING(for chroot)
1754AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
1755 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
1756 AC_MSG_RESULT(yes),
1757 AC_MSG_RESULT(no)
1758)
1759AC_MSG_CHECKING(for link)
1760AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
1761 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
1762 AC_MSG_RESULT(yes),
1763 AC_MSG_RESULT(no)
1764)
1765AC_MSG_CHECKING(for symlink)
1766AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
1767 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
1768 AC_MSG_RESULT(yes),
1769 AC_MSG_RESULT(no)
1770)
1771
Martin v. Löwisd5843682002-11-21 20:41:28 +00001772# On some systems (eg. FreeBSD 5), we would find a definition of the
1773# functions ctermid_r, setgroups in the library, but no prototype
1774# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
1775# address to avoid compiler warnings and potential miscompilations
1776# because of the missing prototypes.
1777
1778AC_MSG_CHECKING(for ctermid_r)
1779AC_TRY_COMPILE([
1780#include "confdefs.h"
1781#include <stdio.h>
1782], void* p = ctermid_r,
1783 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
1784 AC_MSG_RESULT(yes),
1785 AC_MSG_RESULT(no)
1786)
1787
1788AC_MSG_CHECKING(for setgroups)
1789AC_TRY_COMPILE([
1790#include "confdefs.h"
1791#include <unistd.h.h>
1792],
1793void* p = setgroups,
1794 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
1795 AC_MSG_RESULT(yes),
1796 AC_MSG_RESULT(no)
1797)
1798
Fred Drake8cef4cf2000-06-28 16:40:38 +00001799# check for openpty and forkpty
1800
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001801AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
1802AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00001803
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001804# check for long file support functions
1805AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
1806
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00001807AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001808AC_CHECK_FUNCS(getpgrp,
1809 AC_TRY_COMPILE([#include <unistd.h>],
1810 [getpgrp(0);],
1811 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
1812 [Define if getpgrp() must be called as getpgrp(0).])
1813 )
1814)
Jeremy Hyltonaf4c12f2002-07-18 20:25:46 +00001815AC_FUNC_SETPGRP(AC_DEFINE(SETPGRP_HAVE_ARG, 1,
1816 [Define if setpgrp() must be called as setpgrp(0, 0).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001817)
1818AC_CHECK_FUNCS(gettimeofday,
1819 AC_TRY_COMPILE([#include <sys/time.h>],
1820 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
1821 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
1822 [Define if gettimeofday() does not have second (timezone) argument
1823 This is the case on Motorola V4 (R40V4.2)])
1824 )
1825)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001826
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001827AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00001828AC_TRY_LINK([
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001829 #if defined(MAJOR_IN_MKDEV)
1830 #include <sys/mkdev.h>
1831 #elif defined(MAJOR_IN_SYSMACROS)
1832 #include <sys/sysmacros.h>
1833 #else
1834 #include <sys/types.h>
1835 #endif
1836],[
1837 makedev(major(0),minor(0));
1838],[
1839 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
1840 [Define to 1 if you have the device macros.])
1841 AC_MSG_RESULT(yes)
1842],[
1843 AC_MSG_RESULT(no)
1844])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001845
1846# On OSF/1 V5.1, getaddrinfo is available, but a define
1847# for [no]getaddrinfo in netdb.h.
1848AC_MSG_CHECKING(for getaddrinfo)
1849AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001850#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001851#include <sys/socket.h>
1852#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001853#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001854],[
1855getaddrinfo(NULL, NULL, NULL, NULL);
1856], [
1857AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001858AC_MSG_CHECKING(getaddrinfo bug)
1859AC_TRY_RUN([
1860#include <sys/types.h>
1861#include <netdb.h>
1862#include <string.h>
1863#include <sys/socket.h>
1864#include <netinet/in.h>
1865
1866main()
1867{
1868 int passive, gaierr, inet4 = 0, inet6 = 0;
1869 struct addrinfo hints, *ai, *aitop;
1870 char straddr[INET6_ADDRSTRLEN], strport[16];
1871
1872 for (passive = 0; passive <= 1; passive++) {
1873 memset(&hints, 0, sizeof(hints));
1874 hints.ai_family = AF_UNSPEC;
1875 hints.ai_flags = passive ? AI_PASSIVE : 0;
1876 hints.ai_socktype = SOCK_STREAM;
1877 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
1878 (void)gai_strerror(gaierr);
1879 goto bad;
1880 }
1881 for (ai = aitop; ai; ai = ai->ai_next) {
1882 if (ai->ai_addr == NULL ||
1883 ai->ai_addrlen == 0 ||
1884 getnameinfo(ai->ai_addr, ai->ai_addrlen,
1885 straddr, sizeof(straddr), strport, sizeof(strport),
1886 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
1887 goto bad;
1888 }
1889 switch (ai->ai_family) {
1890 case AF_INET:
1891 if (strcmp(strport, "54321") != 0) {
1892 goto bad;
1893 }
1894 if (passive) {
1895 if (strcmp(straddr, "0.0.0.0") != 0) {
1896 goto bad;
1897 }
1898 } else {
1899 if (strcmp(straddr, "127.0.0.1") != 0) {
1900 goto bad;
1901 }
1902 }
1903 inet4++;
1904 break;
1905 case AF_INET6:
1906 if (strcmp(strport, "54321") != 0) {
1907 goto bad;
1908 }
1909 if (passive) {
1910 if (strcmp(straddr, "::") != 0) {
1911 goto bad;
1912 }
1913 } else {
1914 if (strcmp(straddr, "::1") != 0) {
1915 goto bad;
1916 }
1917 }
1918 inet6++;
1919 break;
1920 case AF_UNSPEC:
1921 goto bad;
1922 break;
1923 default:
1924 /* another family support? */
1925 break;
1926 }
1927 }
1928 }
1929
1930 if (!(inet4 == 0 || inet4 == 2))
1931 goto bad;
1932 if (!(inet6 == 0 || inet6 == 2))
1933 goto bad;
1934
1935 if (aitop)
1936 freeaddrinfo(aitop);
1937 exit(0);
1938
1939 bad:
1940 if (aitop)
1941 freeaddrinfo(aitop);
1942 exit(1);
1943}
1944],
1945AC_MSG_RESULT(good)
1946buggygetaddrinfo=no,
1947AC_MSG_RESULT(buggy)
1948buggygetaddrinfo=yes,
1949AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001950buggygetaddrinfo=yes)], [
1951AC_MSG_RESULT(no)
1952buggygetaddrinfo=yes
1953])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001954
1955if test "$buggygetaddrinfo" = "yes"; then
1956 if test "$ipv6" = "yes"; then
1957 echo 'Fatal: You must get working getaddrinfo() function.'
1958 echo ' or you can specify "--disable-ipv6"'.
1959 exit 1
1960 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001961else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001962 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001963fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00001964AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001965
Guido van Rossum627b2d71993-12-24 10:39:16 +00001966# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001967AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00001968AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001969AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00001970AC_CHECK_MEMBERS([struct stat.st_rdev])
1971AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00001972AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001973
1974AC_MSG_CHECKING(for time.h that defines altzone)
1975AC_CACHE_VAL(ac_cv_header_time_altzone,
1976[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
1977 ac_cv_header_time_altzone=yes,
1978 ac_cv_header_time_altzone=no)])
1979AC_MSG_RESULT($ac_cv_header_time_altzone)
1980if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001981 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001982fi
1983
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001984was_it_defined=no
1985AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001986AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001987#include <sys/types.h>
1988#include <sys/select.h>
1989#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001990], [;], [
1991 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
1992 [Define if you can safely include both <sys/select.h> and <sys/time.h>
1993 (which you can't on SCO ODT 3.0).])
1994 was_it_defined=yes
1995])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001996AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001997
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001998AC_MSG_CHECKING(for addrinfo)
1999AC_CACHE_VAL(ac_cv_struct_addrinfo,
2000AC_TRY_COMPILE([
2001# include <netdb.h>],
2002 [struct addrinfo a],
2003 ac_cv_struct_addrinfo=yes,
2004 ac_cv_struct_addrinfo=no))
2005AC_MSG_RESULT($ac_cv_struct_addrinfo)
2006if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002007 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002008fi
2009
2010AC_MSG_CHECKING(for sockaddr_storage)
2011AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2012AC_TRY_COMPILE([
2013# include <sys/types.h>
2014# include <sys/socket.h>],
2015 [struct sockaddr_storage s],
2016 ac_cv_struct_sockaddr_storage=yes,
2017 ac_cv_struct_sockaddr_storage=no))
2018AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2019if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002020 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002021fi
2022
Guido van Rossum627b2d71993-12-24 10:39:16 +00002023# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002024
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002025AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002026AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002027
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002028works=no
2029AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002030AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2031 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2032)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002033AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002034
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002035works=no
2036AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002037AC_TRY_COMPILE([], [signed char c;], works=yes,
2038 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2039)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002040AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002041
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002042have_prototypes=no
2043AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002044AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2045 AC_DEFINE(HAVE_PROTOTYPES, 1,
2046 [Define if your compiler supports function prototype])
2047 have_prototypes=yes
2048])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002049AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002050
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002051works=no
2052AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002053AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002054#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002055int foo(int x, ...) {
2056 va_list va;
2057 va_start(va, x);
2058 va_arg(va, int);
2059 va_arg(va, char *);
2060 va_arg(va, double);
2061 return 0;
2062}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002063], [return foo(10, "", 3.14);], [
2064 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2065 [Define if your compiler supports variable length function prototypes
2066 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2067 works=yes
2068])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002069AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002070
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002071if test "$have_prototypes" = yes; then
2072bad_prototypes=no
2073AC_MSG_CHECKING(for bad exec* prototypes)
2074AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002075 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2076 [Define if your <unistd.h> contains bad prototypes for exec*()
2077 (as it does on SGI IRIX 4.x)])
2078 bad_prototypes=yes
2079)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002080AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002081fi
2082
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002083# check if sockaddr has sa_len member
2084AC_MSG_CHECKING(if sockaddr has sa_len member)
2085AC_TRY_COMPILE([#include <sys/types.h>
2086#include <sys/socket.h>],
2087[struct sockaddr x;
2088x.sa_len = 0;],
2089 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002090 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002091 AC_MSG_RESULT(no))
2092
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002093va_list_is_array=no
2094AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002095AC_TRY_COMPILE([
2096#ifdef HAVE_STDARG_PROTOTYPES
2097#include <stdarg.h>
2098#else
2099#include <varargs.h>
2100#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002101], [va_list list1, list2; list1 = list2;], , [
2102 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2103 va_list_is_array=yes
2104])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002105AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002106
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002107# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002108AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2109 [Define this if you have some version of gethostbyname_r()])
2110
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002111AC_CHECK_FUNC(gethostbyname_r, [
2112 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2113 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2114 OLD_CFLAGS=$CFLAGS
2115 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2116 AC_TRY_COMPILE([
2117# include <netdb.h>
2118 ], [
2119 char *name;
2120 struct hostent *he, *res;
2121 char buffer[2048];
2122 int buflen = 2048;
2123 int h_errnop;
2124
2125 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2126 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002127 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002128 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2129 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002130 AC_MSG_RESULT(yes)
2131 ], [
2132 AC_MSG_RESULT(no)
2133 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2134 AC_TRY_COMPILE([
2135# include <netdb.h>
2136 ], [
2137 char *name;
2138 struct hostent *he;
2139 char buffer[2048];
2140 int buflen = 2048;
2141 int h_errnop;
2142
2143 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2144 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002145 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002146 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2147 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002148 AC_MSG_RESULT(yes)
2149 ], [
2150 AC_MSG_RESULT(no)
2151 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2152 AC_TRY_COMPILE([
2153# include <netdb.h>
2154 ], [
2155 char *name;
2156 struct hostent *he;
2157 struct hostent_data data;
2158
2159 (void) gethostbyname_r(name, he, &data);
2160 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002161 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002162 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2163 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002164 AC_MSG_RESULT(yes)
2165 ], [
2166 AC_MSG_RESULT(no)
2167 ])
2168 ])
2169 ])
2170 CFLAGS=$OLD_CFLAGS
2171], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002172 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002173])
2174AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2175AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2176AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002177AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002178AC_SUBST(HAVE_GETHOSTBYNAME)
2179
Guido van Rossum627b2d71993-12-24 10:39:16 +00002180# checks for system services
2181# (none yet)
2182
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002183# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002184AC_CHECK_FUNC(__fpu_control,
2185 [],
2186 [AC_CHECK_LIB(ieee, __fpu_control)
2187])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002188
Guido van Rossum93274221997-05-09 02:42:00 +00002189# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002190AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002191AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002192 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2193[
Guido van Rossum93274221997-05-09 02:42:00 +00002194if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002195then
2196 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2197 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2198 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002199else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002200fi],
2201[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002202
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002203# check for --with-libm=...
2204AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002205case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002206Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002207BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002208*) LIBM=-lm
2209esac
Guido van Rossum93274221997-05-09 02:42:00 +00002210AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002211AC_ARG_WITH(libm,
2212 AC_HELP_STRING(--with-libm=STRING, math library),
2213[
Guido van Rossum93274221997-05-09 02:42:00 +00002214if test "$withval" = no
2215then LIBM=
2216 AC_MSG_RESULT(force LIBM empty)
2217elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002218then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002219 AC_MSG_RESULT(set LIBM="$withval")
2220else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002221fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002222[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002223
2224# check for --with-libc=...
2225AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002226AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002227AC_ARG_WITH(libc,
2228 AC_HELP_STRING(--with-libc=STRING, C library),
2229[
Guido van Rossum93274221997-05-09 02:42:00 +00002230if test "$withval" = no
2231then LIBC=
2232 AC_MSG_RESULT(force LIBC empty)
2233elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002234then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002235 AC_MSG_RESULT(set LIBC="$withval")
2236else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002237fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002238[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002239
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002240# check for hypot() in math library
2241LIBS_SAVE=$LIBS
2242LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002243AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002244LIBS=$LIBS_SAVE
2245
Guido van Rossumad713701997-07-10 22:42:38 +00002246# check whether malloc(0) returns NULL or not
Guido van Rossumad713701997-07-10 22:42:38 +00002247AC_MSG_CHECKING(what malloc(0) returns)
2248AC_CACHE_VAL(ac_cv_malloc_zero,
2249[AC_TRY_RUN([#include <stdio.h>
2250#ifdef HAVE_STDLIB
2251#include <stdlib.h>
2252#else
2253char *malloc(), *realloc();
2254int *free();
2255#endif
2256main() {
2257 char *p;
2258 p = malloc(0);
2259 if (p == NULL) exit(1);
2260 p = realloc(p, 0);
2261 if (p == NULL) exit(1);
2262 free(p);
2263 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002264}],
2265ac_cv_malloc_zero=nonnull,
2266ac_cv_malloc_zero=null,
2267ac_cv_malloc_zero=nonnull)]) # XXX arm cross-compile?
Guido van Rossumad713701997-07-10 22:42:38 +00002268AC_MSG_RESULT($ac_cv_malloc_zero)
2269if test "$ac_cv_malloc_zero" = null
2270then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002271 AC_DEFINE(MALLOC_ZERO_RETURNS_NULL, 1,
2272 [Define if malloc(0) returns a NULL pointer.])
Guido van Rossumad713701997-07-10 22:42:38 +00002273fi
2274
Guido van Rossumef2255b2000-03-10 22:30:29 +00002275# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002276AC_CHECK_HEADER(wchar.h, [
2277 AC_DEFINE(HAVE_WCHAR_H, 1,
2278 [Define if the compiler provides a wchar.h header file.])
2279 wchar_h="yes"
2280],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002281wchar_h="no"
2282)
2283
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002284# determine wchar_t size
2285if test "$wchar_h" = yes
2286then
Guido van Rossum67b26592001-10-20 14:21:45 +00002287 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002288fi
2289
2290AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002291dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002292AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002293 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2294 [],
2295 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002296
2297if test $enable_unicode = yes
2298then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002299 # Without any arguments, Py_UNICODE defaults to two-byte mode
2300 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002301fi
2302
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002303AH_TEMPLATE(Py_UNICODE_SIZE,
2304 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002305case "$enable_unicode" in
2306ucs2) unicode_size="2"
2307 AC_DEFINE(Py_UNICODE_SIZE,2)
2308 ;;
2309ucs4) unicode_size="4"
2310 AC_DEFINE(Py_UNICODE_SIZE,4)
2311 ;;
2312esac
2313
Martin v. Löwis11437992002-04-12 09:54:03 +00002314AH_TEMPLATE(PY_UNICODE_TYPE,
2315 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002316
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002317AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002318if test "$enable_unicode" = "no"
2319then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002320 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002321 AC_MSG_RESULT(not used)
2322else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002323 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002324 AC_DEFINE(Py_USING_UNICODE, 1,
2325 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002326 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2327 then
2328 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002329 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2330 [Define if you have a useable wchar_t type defined in wchar.h; useable
2331 means wchar_t must be 16-bit unsigned type. (see
2332 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002333 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2334 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2335 then
2336 PY_UNICODE_TYPE="unsigned short"
2337 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2338 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2339 then
2340 PY_UNICODE_TYPE="unsigned long"
2341 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2342 else
2343 PY_UNICODE_TYPE="no type found"
2344 fi
2345 AC_MSG_RESULT($PY_UNICODE_TYPE)
2346fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002347
2348# check for endianness
2349AC_C_BIGENDIAN
2350
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002351# Check whether right shifting a negative integer extends the sign bit
2352# or fills with zeros (like the Cray J90, according to Tim Peters).
2353AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002354AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002355AC_TRY_RUN([
2356int main()
2357{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002358 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002359}
Guido van Rossum3065c942001-09-17 04:03:14 +00002360],
2361ac_cv_rshift_extends_sign=yes,
2362ac_cv_rshift_extends_sign=no,
2363ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002364AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2365if test "$ac_cv_rshift_extends_sign" = no
2366then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002367 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2368 [Define if i>>j for signed int i does not extend the sign bit
2369 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002370fi
2371
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002372# check for getc_unlocked and related locking functions
2373AC_MSG_CHECKING(for getc_unlocked() and friends)
2374AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2375AC_TRY_LINK([#include <stdio.h>],[
2376 FILE *f = fopen("/dev/null", "r");
2377 flockfile(f);
2378 getc_unlocked(f);
2379 funlockfile(f);
2380], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2381AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2382if test "$ac_cv_have_getc_unlocked" = yes
2383then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002384 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2385 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002386fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002387
Martin v. Löwis0daad592001-09-30 21:09:59 +00002388# check for readline 4.0
2389AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002390 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2391 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002392
Guido van Rossum353ae582001-07-10 16:45:32 +00002393# check for readline 4.2
2394AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002395 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2396 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002397
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002398AC_MSG_CHECKING(for broken nice())
2399AC_CACHE_VAL(ac_cv_broken_nice, [
2400AC_TRY_RUN([
2401int main()
2402{
2403 int val1 = nice(1);
2404 if (val1 != -1 && val1 == nice(2))
2405 exit(0);
2406 exit(1);
2407}
Guido van Rossum3065c942001-09-17 04:03:14 +00002408],
2409ac_cv_broken_nice=yes,
2410ac_cv_broken_nice=no,
2411ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002412AC_MSG_RESULT($ac_cv_broken_nice)
2413if test "$ac_cv_broken_nice" = yes
2414then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002415 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2416 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002417fi
2418
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002419# Look for subsecond timestamps in struct stat
2420AC_MSG_CHECKING(for tv_nsec in struct stat)
2421AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2422AC_TRY_COMPILE([#include <sys/stat.h>], [
2423struct stat st;
2424st.st_mtim.tv_nsec = 1;
2425],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002426ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002427ac_cv_stat_tv_nsec=no,
2428ac_cv_stat_tv_nsec=no))
2429AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2430if test "$ac_cv_stat_tv_nsec" = yes
2431then
2432 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2433 [Define if you have struct stat.st_mtim.tv_nsec])
2434fi
2435
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002436# On HP/UX 11.0, mvwdelch is a block with a return statement
2437AC_MSG_CHECKING(whether mvwdelch is an expression)
2438AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2439AC_TRY_COMPILE([#include <curses.h>], [
2440 int rtn;
2441 rtn = mvwdelch(0,0,0);
2442], ac_cv_mvwdelch_is_expression=yes,
2443 ac_cv_mvwdelch_is_expression=no,
2444 ac_cv_mvwdelch_is_expression=yes))
2445AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2446
2447if test "$ac_cv_mvwdelch_is_expression" = yes
2448then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002449 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2450 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002451fi
2452
2453AC_MSG_CHECKING(whether WINDOW has _flags)
2454AC_CACHE_VAL(ac_cv_window_has_flags,
2455AC_TRY_COMPILE([#include <curses.h>], [
2456 WINDOW *w;
2457 w->_flags = 0;
2458], ac_cv_window_has_flags=yes,
2459 ac_cv_window_has_flags=no,
2460 ac_cv_window_has_flags=no))
2461AC_MSG_RESULT($ac_cv_window_has_flags)
2462
2463
2464if test "$ac_cv_window_has_flags" = yes
2465then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002466 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2467 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002468fi
2469
Martin v. Löwis01c04012002-11-11 14:58:44 +00002470AC_CHECK_TYPE(socklen_t,,
2471 AC_DEFINE(socklen_t,int,
2472 Define to `int' if <sys/socket.h> does not define.),[
2473#ifdef HAVE_SYS_TYPES_H
2474#include <sys/types.h>
2475#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002476#ifdef HAVE_SYS_SOCKET_H
2477#include <sys/socket.h>
2478#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002479])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002480
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002481AC_SUBST(THREADHEADERS)
2482
2483for h in `(cd $srcdir;echo Python/thread_*.h)`
2484do
2485 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2486done
2487
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002488AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002489SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002490AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002491for dir in $SRCDIRS; do
2492 if test ! -d $dir; then
2493 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002494 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002495done
2496AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002497
Guido van Rossum627b2d71993-12-24 10:39:16 +00002498# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002499AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2500AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002501
2502echo "creating Setup"
2503if test ! -f Modules/Setup
2504then
2505 cp $srcdir/Modules/Setup.dist Modules/Setup
2506fi
2507
2508echo "creating Setup.local"
2509if test ! -f Modules/Setup.local
2510then
2511 echo "# Edit this file for local setup changes" >Modules/Setup.local
2512fi
2513
2514echo "creating Makefile"
2515$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2516 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002517 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002518mv config.c Modules