blob: cd03c1d7736a27dda7fdc828f88350db48de1d1c [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.
14AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000015/* Define the macros needed if on a UnixWare 7.x system. */
16#if defined(__USLC__) && defined(__SCO_VERSION__)
17#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
18#endif
19])
20
Guido van Rossum642b6781997-07-19 19:35:41 +000021AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000022VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000023
Martin v. Löwis1142de32002-03-29 16:28:31 +000024AC_SUBST(SOVERSION)
25SOVERSION=1.0
26
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000027# The later defininition of _XOPEN_SOURCE disables certain features
28# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
29AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
30
31# The definition of _GNU_SOURCE potentially causes a change of the value
32# of _XOPEN_SOURCE. So define it only conditionally.
33AH_VERBATIM([_XOPEN_SOURCE],
34[/* Define on UNIX to activate XPG/5 features. */
35#ifndef _XOPEN_SOURCE
36# define _XOPEN_SOURCE 500
37#endif])
38AC_DEFINE(_XOPEN_SOURCE, 500)
39
Martin v. Löwise4826582002-10-26 13:33:00 +000040# On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires definition
41# of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else several APIs
42# are not declared. Since this is also needed in some cases for HP-UX,
43# we define it globally.
44AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
45AC_DEFINE(_POSIX_C_SOURCE, 199506L, Define to activate features from IEEE Stds 1003.{123}-1995)
46
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000047# Arguments passed to configure.
48AC_SUBST(CONFIG_ARGS)
49CONFIG_ARGS="$ac_configure_args"
50
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000051dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000052AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000053 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
54[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000055 case $enableval in
56 yes)
57 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000058 esac
59 case $enableval in
60 no)
61 PYTHONFRAMEWORK=
62 PYTHONFRAMEWORKDIR=no-framework
63 PYTHONFRAMEWORKPREFIX=
64 PYTHONFRAMEWORKINSTALLDIR=
65 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000066 ;;
67 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000068 PYTHONFRAMEWORK=Python
69 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000070 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000071 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
72 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000073 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 ],[
75 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000076 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000077 PYTHONFRAMEWORKPREFIX=
78 PYTHONFRAMEWORKINSTALLDIR=
79 enable_framework=
80])
81AC_SUBST(PYTHONFRAMEWORK)
82AC_SUBST(PYTHONFRAMEWORKDIR)
83AC_SUBST(PYTHONFRAMEWORKPREFIX)
84AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000085
Jack Jansenb6e9cad2001-08-15 01:26:28 +000086##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000087## AC_HELP_STRING(--with-dyld,
88## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000089##
Guido van Rossumb418f891996-07-30 18:06:02 +000090# Set name for machine-dependent library files
91AC_SUBST(MACHDEP)
92AC_MSG_CHECKING(MACHDEP)
93if test -z "$MACHDEP"
94then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000095 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +000096 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
97 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000098 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +000099 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000100 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000101 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000102 ac_md_system=`echo $ac_sys_system |
103 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
104 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000105 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000106 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000107
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000108 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000109 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000110 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000111 atheos*) MACHDEP="atheos";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000112 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000113 esac
114fi
Guido van Rossum91922671997-10-09 20:24:13 +0000115
116#
117# SGI compilers allow the specification of the both the ABI and the
118# ISA on the command line. Depending on the values of these switches,
119# different and often incompatable code will be generated.
120#
121# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
122# thus supply support for various ABI/ISA combinations. The MACHDEP
123# variable is also adjusted.
124#
125AC_SUBST(SGI_ABI)
126if test ! -z "$SGI_ABI"
127then
128 CC="cc $SGI_ABI"
129 LDFLAGS="$SGI_ABI $LDFLAGS"
130 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
131fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000132AC_MSG_RESULT($MACHDEP)
133
Guido van Rossum627b2d71993-12-24 10:39:16 +0000134# checks for alternative programs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000135AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000136AC_ARG_WITH(gcc,
137 AC_HELP_STRING(--without-gcc,never use gcc),
138[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000139 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000140 no) CC=cc
141 without_gcc=yes;;
142 yes) CC=gcc
143 without_gcc=no;;
144 *) CC=$withval
145 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000146 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000147 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000148 AIX*) CC=cc_r
149 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000150 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000151 case $BE_HOST_CPU in
152 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000153 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000154 without_gcc=yes
Mark Hammond8235ea12002-07-19 06:55:41 +0000155 OPT="-O -export pragma"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000156 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000157 ;;
158 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000159 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000160 without_gcc=no
Fred Drake5790be12000-10-09 17:06:13 +0000161 OPT=-O
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000162 ;;
163 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000164 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000165 ;;
166 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000167 AR="\$(srcdir)/Modules/ar_beos"
168 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000169 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000170 Monterey*)
171 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000172 without_gcc=;;
173 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000174 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000175AC_MSG_RESULT($without_gcc)
176
Guido van Rossum27552902001-01-23 01:52:26 +0000177AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000178AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000179MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000180AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000181AC_ARG_WITH(cxx,
182 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
183[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000184 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000185 case $withval in
186 no) CXX=
187 with_cxx=no;;
188 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000189 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000190 with_cxx=$withval;;
191 esac], [
192 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000193 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000194])
195AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000196
Michael W. Hudson54241132001-12-07 15:38:26 +0000197if test "$with_cxx" = "yes"
198then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000199 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000200fi
201
Martin v. Löwis537970f2000-12-13 17:37:02 +0000202dnl The following fragment works similar to AC_PROG_CXX.
203dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000204dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000205dnl Finally, it does not test whether CXX is g++.
206
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000207dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
208ifdef([AC_PROG_CXX_WORKS],[],
209 [AC_DEFUN([AC_PROG_CXX_WORKS],
210 [AC_LANG_PUSH(C++)dnl
211 _AC_COMPILER_EXEEXT
212 AC_LANG_POP()
213 ]
214)])
215
Martin v. Löwis537970f2000-12-13 17:37:02 +0000216if test "$check_cxx" = "yes"
217then
218 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
219 if test "$CXX" = "notfound"
220 then
221 CXX=
222 else
223 AC_PROG_CXX_WORKS
224 fi
225fi
226
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000227# If the user switches compilers, we can't believe the cache
228if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
229then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000230 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
231(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000232fi
233
Guido van Rossum627b2d71993-12-24 10:39:16 +0000234AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000235
236# checks for UNIX variants that set C preprocessor variables
237AC_AIX
238AC_MINIX
239
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000240AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000241AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000242AC_ARG_WITH(suffix,
243 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
244[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000245 case $withval in
246 no) EXEEXT=;;
247 yes) EXEEXT=.exe;;
248 *) EXEEXT=$withval;;
249 esac])
250AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000251
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000252# Test whether we're running on a non-case-sensitive system, in which
253# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000254AC_SUBST(BUILDEXEEXT)
255AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000256if test ! -d CaseSensitiveTestDir; then
257mkdir CaseSensitiveTestDir
258fi
259
260if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000261then
Jack Jansen1999ef42001-12-06 21:47:20 +0000262 AC_MSG_RESULT(yes)
263 BUILDEXEEXT=.exe
264else
265 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000266 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000267fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000268rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000269
Guido van Rossumdd997f71998-10-07 19:58:26 +0000270case $MACHDEP in
271bsdos*)
272 case $CC in
273 gcc) CC="$CC -D_HAVE_BSDI";;
274 esac;;
275esac
276
Guido van Rossum84561611997-08-21 00:08:11 +0000277case $ac_sys_system in
278hp*|HP*)
279 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000280 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000281 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000282Monterey*)
283 case $CC in
284 cc) CC="$CC -Wl,-Bexport";;
285 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000286SunOS*)
287 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000288 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000289 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000290esac
291
Martin v. Löwise8964d42001-03-06 12:09:07 +0000292
Neil Schemenauer61c51152001-01-26 16:18:16 +0000293AC_SUBST(LIBRARY)
294AC_MSG_CHECKING(LIBRARY)
295if test -z "$LIBRARY"
296then
297 LIBRARY='libpython$(VERSION).a'
298fi
299AC_MSG_RESULT($LIBRARY)
300
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000301# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000302# name of the library into which to insert object files). BLDLIBRARY is also
303# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
304# is blank as the main program is not linked directly against LDLIBRARY.
305# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
306# systems without shared libraries, LDLIBRARY is the same as LIBRARY
307# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
308# DLLLIBRARY is the shared (i.e., DLL) library.
309#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000310# RUNSHARED is used to run shared python without installed libraries
311#
312# INSTSONAME is the name of the shared library that will be use to install
313# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000314AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000315AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000316AC_SUBST(BLDLIBRARY)
317AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000318AC_SUBST(INSTSONAME)
319AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000320LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000321BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000322INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000323DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000324LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000325RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000326
Guido van Rossumfb842551997-08-06 23:42:07 +0000327# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000328# If CXX is set, and if it is needed to link a main function that was
329# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
330# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000331# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000332# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000333AC_SUBST(LINKCC)
334AC_MSG_CHECKING(LINKCC)
335if test -z "$LINKCC"
336then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000337 if test -z "$CXX"; then
338 LINKCC="\$(PURIFY) \$(CC)"
339 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000340 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000341 $CXX -c conftest.$ac_ext 2>&5
342 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
343 && test -s conftest$ac_exeext && ./conftest$ac_exeext
344 then
345 LINKCC="\$(PURIFY) \$(CC)"
346 else
347 LINKCC="\$(PURIFY) \$(CXX)"
348 fi
349 rm -fr conftest*
350 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000351 case $ac_sys_system in
352 AIX*)
Jeremy Hylton90d10062002-03-08 21:43:51 +0000353 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp \"\" \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000354 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000355 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000356 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000357 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000358 esac
359fi
360AC_MSG_RESULT($LINKCC)
361
Martin v. Löwis1142de32002-03-29 16:28:31 +0000362AC_MSG_CHECKING(for --enable-shared)
363AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000364 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000365
Martin v. Löwis1142de32002-03-29 16:28:31 +0000366if test -z "$enable_shared"
367then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000368 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000369 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000370 enable_shared="yes";;
371 *)
372 enable_shared="no";;
373 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000374fi
375AC_MSG_RESULT($enable_shared)
376
377
378AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000379
Guido van Rossumb8552162001-09-05 14:58:11 +0000380# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
381# library that we build, but we do not want to link against it (we
382# will find it with a -framework option). For this reason there is an
383# extra variable BLDLIBRARY against which Python and the extension
384# modules are linked, BLDLIBRARY. This is normally the same as
385# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000386if test "$enable_framework"
387then
388 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
389 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
390 BLDLIBRARY=''
391else
392 BLDLIBRARY='$(LDLIBRARY)'
393fi
394
Martin v. Löwis1142de32002-03-29 16:28:31 +0000395# Other platforms follow
396if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000397 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000398 case $ac_sys_system in
399 BeOS*)
400 LDLIBRARY='libpython$(VERSION).so'
401 ;;
402 CYGWIN*)
403 LDLIBRARY='libpython$(VERSION).dll.a'
404 DLLLIBRARY='libpython$(VERSION).dll'
405 ;;
406 SunOS*)
407 LDLIBRARY='libpython$(VERSION).so'
408 BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)'
409 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
410 ;;
Martin v. Löwis1bc894b2002-07-30 20:19:58 +0000411 Linux*|GNU*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000412 LDLIBRARY='libpython$(VERSION).so'
413 BLDLIBRARY='-L. -lpython$(VERSION)'
414 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
415 INSTSONAME="$LDLIBRARY".$SOVERSION
416 ;;
417 hp*|HP*)
418 LDLIBRARY='libpython$(VERSION).sl'
419 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
420 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
421 ;;
422 OSF*)
423 LDLIBRARY='libpython$(VERSION).so'
424 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
425 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
426 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000427 atheos*)
428 LDLIBRARY='libpython$(VERSION).so'
429 BLDLIBRARY='-L. -lpython$(VERSION)'
430 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
431 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000432 esac
433 # DG/UX requires some fancy ld contortions to produce a .so from an .a
434 case $MACHDEP in
435 dguxR4)
436 LDLIBRARY='libpython$(VERSION).so'
437 OPT="$OPT -pic"
438 ;;
439 esac
440fi
441
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000442AC_MSG_RESULT($LDLIBRARY)
443
Guido van Rossum627b2d71993-12-24 10:39:16 +0000444AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000445AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000446AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000447
448case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000449bsdos*|hp*|HP*)
450 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000451 if test -z "$INSTALL"
452 then
453 INSTALL="${srcdir}/install-sh -c"
454 fi
455esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000456AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000457
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000458# Not every filesystem supports hard links
459AC_SUBST(LN)
460if test -z "$LN" ; then
461 case $ac_sys_system in
462 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000463 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000464 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000465 *) LN=ln;;
466 esac
467fi
468
Fred Drake9f715822001-07-11 06:27:00 +0000469# Check for --with-pydebug
470AC_MSG_CHECKING(for --with-pydebug)
471AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000472 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
473[
Fred Drake9f715822001-07-11 06:27:00 +0000474if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000475then
476 AC_DEFINE(Py_DEBUG, 1,
477 [Define if you want to build an interpreter with many run-time checks.])
478 AC_MSG_RESULT(yes);
479 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000480else AC_MSG_RESULT(no); Py_DEBUG='false'
481fi],
482[AC_MSG_RESULT(no)])
483
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000484# Optimizer/debugger flags
Guido van Rossumb418f891996-07-30 18:06:02 +0000485AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000486if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000487then
Neal Norwitzd957f392002-09-25 21:26:19 +0000488 case $GCC in
Guido van Rossumb5875b61997-07-18 23:29:09 +0000489 yes)
490 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000491 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000492 if test "$Py_DEBUG" = 'true' ; then
493 # Optimization messes up debuggers, so turn it off for
494 # debug builds.
495 OPT="-g -Wall -Wstrict-prototypes"
496 else
497 OPT="-g -O3 -Wall -Wstrict-prototypes"
498 fi;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000499 *)
Fred Drake9f715822001-07-11 06:27:00 +0000500 OPT="-O3 -Wall -Wstrict-prototypes";;
501 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000502 case $ac_sys_system in
503 SCO_SV*) OPT="$OPT -m486 -DSCO5";;
504 esac
Fred Drake9f715822001-07-11 06:27:00 +0000505 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000506 *)
507 case $ac_sys_system in
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000508 OpenUNIX*|UnixWare*)
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000509 OPT="-O -K pentium,host,inline,loop_unroll,alloca ";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000510 SCO_SV*)
511 CFLAGS="$CFLAGS -belf"
512 OPT="-belf -O -Ki486 -DSCO5";;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000513 *)
514 OPT="-O";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000515 esac
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000516 esac
Jack Jansenca06bc62001-08-03 15:32:23 +0000517 case $ac_sys_system in
518 Darwin*)
Jack Jansen524a0982002-03-12 15:25:52 +0000519 OPT="$OPT -Wno-long-double -no-cpp-precomp";;
Jack Jansenca06bc62001-08-03 15:32:23 +0000520 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000521fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000522
Fred Drakee1ceaa02001-12-04 20:55:47 +0000523if test "$Py_DEBUG" = 'true'; then
524 :
525else
526 OPT="-DNDEBUG $OPT"
527fi
528
Trent Mick635f6fb2000-08-23 21:33:05 +0000529# The current (beta) Monterey compiler dies with optimizations
530case $ac_sys_system in
531Monterey*) OPT="";;
532esac
533
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000534if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000535then
536 OPT="$OPT $ac_arch_flags"
537fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000538
Guido van Rossum91922671997-10-09 20:24:13 +0000539AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
540AC_CACHE_VAL(ac_cv_opt_olimit_ok,
541[ac_save_cc="$CC"
542CC="$CC -OPT:Olimit=0"
543AC_TRY_RUN([int main() { return 0; }],
544 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000545 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000546 ac_cv_opt_olimit_ok=no)
547CC="$ac_save_cc"])
548AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000549if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000550 case $ac_sys_system in
551 Darwin*) OPT="$OPT" ;;
552 *) OPT="$OPT -OPT:Olimit=0";;
553 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000554else
555 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
556 AC_CACHE_VAL(ac_cv_olimit_ok,
557 [ac_save_cc="$CC"
558 CC="$CC -Olimit 1500"
559 AC_TRY_RUN([int main() { return 0; }],
560 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000561 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000562 ac_cv_olimit_ok=no)
563 CC="$ac_save_cc"])
564 AC_MSG_RESULT($ac_cv_olimit_ok)
565 if test $ac_cv_olimit_ok = yes; then
566 OPT="$OPT -Olimit 1500"
567 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000568fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000569
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000570# On some compilers, pthreads are available without further options
571# (e.g. MacOS X). On some of these systems, the compiler will not
572# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
573# So we have to see first whether pthreads are available without
574# options before we can check whether -Kpthread improves anything.
575AC_MSG_CHECKING(whether pthreads are available without options)
576AC_CACHE_VAL(ac_cv_pthread_is_default,
577[AC_TRY_RUN([
578#include <pthread.h>
579
580void* routine(void* p){return NULL;}
581
582int main(){
583 pthread_t p;
584 if(pthread_create(&p,NULL,routine,NULL)!=0)
585 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000586 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000587 return 0;
588}
589],
590 ac_cv_pthread_is_default=yes,
591 ac_cv_pthread_is_default=no,
592 ac_cv_pthread_is_default=no)
593])
594AC_MSG_RESULT($ac_cv_pthread_is_default)
595
596
597if test $ac_cv_pthread_is_default = yes
598then
599 ac_cv_kpthread=no
600else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000601# -Kpthread, if available, provides the right #defines
602# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000603# Some compilers won't report that they do not support -Kpthread,
604# so we need to run a program to see whether it really made the
605# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000606AC_MSG_CHECKING(whether $CC accepts -Kpthread)
607AC_CACHE_VAL(ac_cv_kpthread,
608[ac_save_cc="$CC"
609CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000610AC_TRY_RUN([
611#include <pthread.h>
612
613void* routine(void* p){return NULL;}
614
615int main(){
616 pthread_t p;
617 if(pthread_create(&p,NULL,routine,NULL)!=0)
618 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000619 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000620 return 0;
621}
622],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000623 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000624 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000625 ac_cv_kpthread=no)
626CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000627AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000628fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000629
Fred Drakece81d592000-07-09 14:39:29 +0000630dnl # check for ANSI or K&R ("traditional") preprocessor
631dnl AC_MSG_CHECKING(for C preprocessor type)
632dnl AC_TRY_COMPILE([
633dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
634dnl int foo;
635dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
636dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
637dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000638
Guido van Rossum627b2d71993-12-24 10:39:16 +0000639# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000640AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000641AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
642libintl.h locale.h ncurses.h poll.h pthread.h \
Eric S. Raymond13603592001-01-16 15:01:26 +0000643signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h termios.h \
Skip Montanaro57454e52002-06-14 20:30:31 +0000644sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000645sys/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 +0000646sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Skip Montanaro8345f712002-06-25 05:53:48 +0000647sys/resource.h netpacket/packet.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000648AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000649AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000650
651# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000652was_it_defined=no
653AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000654AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
655 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
656])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000657AC_MSG_RESULT($was_it_defined)
658
Neal Norwitz11690112002-07-30 01:08:28 +0000659# Check whether using makedev requires defining _OSF_SOURCE
660AC_MSG_CHECKING(for makedev)
661AC_TRY_LINK([ #include <sys/types.h> ],
662 [ makedev(0, 0) ],
663 ac_cv_has_makedev=yes,
664 ac_cv_has_makedev=no)
665if test "$ac_cv_has_makedev" = "no"; then
666 # we didn't link, try if _OSF_SOURCE will allow us to link
667 AC_TRY_LINK([
668 #define _OSF_SOURCE 1
669 #include <sys/types.h>
670 ],
671 [ makedev(0, 0) ],
672 ac_cv_has_makedev=yes,
673 ac_cv_has_makedev=no)
674 if test "$ac_cv_has_makedev" = "yes"; then
675 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
676 fi
677fi
678AC_MSG_RESULT($ac_cv_has_makedev)
679if test "$ac_cv_has_makedev" = "yes"; then
680 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
681fi
682
Martin v. Löwis399a6892002-10-04 10:22:02 +0000683# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
684# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
685# defined, but the compiler does not support pragma redefine_extname,
686# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
687# structures (such as rlimit64) without declaring them. As a
688# work-around, disable LFS on such configurations
689
690use_lfs=yes
691AC_MSG_CHECKING(Solaris LFS bug)
692AC_TRY_COMPILE([
693#define _LARGEFILE_SOURCE 1
694#define _FILE_OFFSET_BITS 64
695#include <sys/resource.h>
696],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
697AC_MSG_RESULT($sol_lfs_bug)
698if test "$sol_lfs_bug" = "yes"; then
699 use_lfs=no
700fi
701
702if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000703# Two defines needed to enable largefile support on various platforms
704# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000705AC_DEFINE(_LARGEFILE_SOURCE, 1,
706[This must be defined on some systems to enable large file support.])
707AC_DEFINE(_FILE_OFFSET_BITS, 64,
708[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000709fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000710
Guido van Rossum300fda71996-08-19 21:58:16 +0000711# Add some code to confdefs.h so that the test for off_t works on SCO
712cat >> confdefs.h <<\EOF
713#if defined(SCO_DS)
714#undef _OFF_T
715#endif
716EOF
717
Guido van Rossumef2255b2000-03-10 22:30:29 +0000718# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000719AC_TYPE_MODE_T
720AC_TYPE_OFF_T
721AC_TYPE_PID_T
722AC_TYPE_SIGNAL
723AC_TYPE_SIZE_T
724AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000725
Guido van Rossumef2255b2000-03-10 22:30:29 +0000726# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000727AC_CHECK_SIZEOF(int, 4)
728AC_CHECK_SIZEOF(long, 4)
729AC_CHECK_SIZEOF(void *, 4)
730AC_CHECK_SIZEOF(char, 1)
731AC_CHECK_SIZEOF(short, 2)
732AC_CHECK_SIZEOF(float, 4)
733AC_CHECK_SIZEOF(double, 8)
734AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000735
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000736AC_MSG_CHECKING(for long long support)
737have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000738AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
739 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
740 have_long_long=yes
741])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000742AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000743if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000744AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000745fi
746
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000747AC_MSG_CHECKING(for uintptr_t support)
748have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000749AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
750 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
751 have_uintptr_t=yes
752])
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000753AC_MSG_RESULT($have_uintptr_t)
754if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000755AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000756fi
757
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000758# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
759AC_MSG_CHECKING(size of off_t)
760AC_CACHE_VAL(ac_cv_sizeof_off_t,
761[AC_TRY_RUN([#include <stdio.h>
762#include <sys/types.h>
763main()
764{
765 FILE *f=fopen("conftestval", "w");
766 if (!f) exit(1);
767 fprintf(f, "%d\n", sizeof(off_t));
768 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000769}],
770ac_cv_sizeof_off_t=`cat conftestval`,
771ac_cv_sizeof_off_t=0,
772ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000773])
774AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000775AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
776[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000777
778AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000779if test "$have_long_long" = yes -a \
780 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
781 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000782 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
783 [Defined to enable large file support when an off_t is bigger than a long
784 and long long is available and at least as big as an off_t. You may need
785 to add some flags for configuration and compilation to enable this mode.
786 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000787 AC_MSG_RESULT(yes)
788else
789 AC_MSG_RESULT(no)
790fi
791
Fred Drakea3f6e912000-06-29 20:44:47 +0000792# AC_CHECK_SIZEOF() doesn't include <time.h>.
793AC_MSG_CHECKING(size of time_t)
794AC_CACHE_VAL(ac_cv_sizeof_time_t,
795[AC_TRY_RUN([#include <stdio.h>
796#include <time.h>
797main()
798{
799 FILE *f=fopen("conftestval", "w");
800 if (!f) exit(1);
801 fprintf(f, "%d\n", sizeof(time_t));
802 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000803}],
804ac_cv_sizeof_time_t=`cat conftestval`,
805ac_cv_sizeof_time_t=0,
806ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +0000807])
808AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000809AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
810[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +0000811
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000812
Trent Mick635f6fb2000-08-23 21:33:05 +0000813# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000814ac_save_cc="$CC"
815if test "$ac_cv_kpthread" = "yes"
816then CC="$CC -Kpthread"
817fi
Trent Mick635f6fb2000-08-23 21:33:05 +0000818AC_MSG_CHECKING(for pthread_t)
819have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +0000820AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +0000821AC_MSG_RESULT($have_pthread_t)
822if test "$have_pthread_t" = yes ; then
823 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
824 AC_MSG_CHECKING(size of pthread_t)
825 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
826 [AC_TRY_RUN([#include <stdio.h>
827 #include <pthread.h>
828 main()
829 {
830 FILE *f=fopen("conftestval", "w");
831 if (!f) exit(1);
832 fprintf(f, "%d\n", sizeof(pthread_t));
833 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000834 }],
835 ac_cv_sizeof_pthread_t=`cat conftestval`,
836 ac_cv_sizeof_pthread_t=0,
837 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +0000838 ])
839 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000840 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
841 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +0000842fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000843CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +0000844
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000845AC_MSG_CHECKING(for --enable-toolbox-glue)
846AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000847 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000848
849if test -z "$enable_toolbox_glue"
850then
851 case $ac_sys_system/$ac_sys_release in
852 Darwin/*)
853 enable_toolbox_glue="yes";;
854 *)
855 enable_toolbox_glue="no";;
856 esac
857fi
858case "$enable_toolbox_glue" in
859yes)
Jack Jansen666b1e72001-10-31 12:11:48 +0000860 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000861 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +0000862 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000863 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
864 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000865 ;;
866*)
867 extra_frameworks=""
868 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +0000869 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000870 ;;
871esac
872AC_MSG_RESULT($enable_toolbox_glue)
873
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000874AC_SUBST(LIBTOOL_CRUFT)
875case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +0000876 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +0000877 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +0000878 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +0000879 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
880 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +0000881 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +0000882 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +0000883 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000884 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
885 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000886esac
887
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000888AC_MSG_CHECKING(for --enable-framework)
889if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000890then
Jack Jansenca06bc62001-08-03 15:32:23 +0000891 OPT="$OPT -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000892 # -F. is needed to allow linking to the framework while
893 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +0000894 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000895 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
896 [Define if you want to produce an OpenStep/Rhapsody framework
897 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000898 AC_MSG_RESULT(yes)
899else
900 AC_MSG_RESULT(no)
901fi
902
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000903AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000904case $ac_sys_system/$ac_sys_release in
905 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000906 AC_DEFINE(WITH_DYLD, 1,
907 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
908 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
909 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000910 AC_MSG_RESULT(always on for Darwin)
911 ;;
912 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000913 AC_MSG_RESULT(no)
914 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000915esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000916
Guido van Rossumac405f61994-09-12 10:56:06 +0000917# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +0000918AC_SUBST(SO)
919AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000920AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000921AC_SUBST(CCSHARED)
922AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000923# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +0000924# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000925AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000926if test -z "$SO"
927then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000928 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000929 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000930 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000931 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000932 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000933fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000934AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000935# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +0000936# -- "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 +0000937# (Shared libraries in this instance are shared modules to be loaded into
938# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000939AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000940if test -z "$LDSHARED"
941then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000942 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000943 AIX*)
944 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +0000945 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000946 ;;
947 BeOS*)
948 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +0000949 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000950 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +0000951 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +0000952 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +0000953 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +0000954 SunOS/5*)
955 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +0000956 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +0000957 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +0000958 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000959 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +0000960 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +0000961 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +0000962 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +0000963 LDSHARED='$(CC) $(LDFLAGS) -bundle'
964 if test "$enable_framework" ; then
965 # Link against the framework. All externals should be defined.
966 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
967 else
968 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +0000969 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +0000970 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000971 Darwin/*)
972 LDSHARED='$(CC) $(LDFLAGS) -bundle'
973 if test "$enable_framework" ; then
974 # Link against the framework. All externals should be defined.
975 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
976 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +0000977 # No framework, use the Python app as bundle-loader
978 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
979 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/$(PYTHON)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000980 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +0000981 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000982 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +0000983 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +0000984 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +0000985 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +0000986 then
987 LDSHARED="cc -shared ${LDFLAGS}"
988 else
989 LDSHARED="ld -Bshareable ${LDFLAGS}"
990 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +0000991 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000992 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +0000993 if test "$GCC" = "yes"
994 then LDSHARED="$(CC) -shared"
Martin v. Löwis130fb172001-07-19 11:00:41 +0000995 else LDSHARED="$(CC) -G"
Martin v. Löwisbec19582001-03-21 15:57:54 +0000996 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000997 SCO_SV*) LDSHARED="$(CC) -Wl,-G,-Bexport";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000998 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000999 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001000 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001001 *) LDSHARED="ld";;
1002 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001003fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001004AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001005BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001006# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001007# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001008AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001009if test -z "$CCSHARED"
1010then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001011 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001012 SunOS*) if test "$GCC" = yes;
1013 then CCSHARED="-fPIC";
1014 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001015 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001016 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001017 else CCSHARED="+z";
1018 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001019 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001020 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001021 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001022 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001023 if test "$GCC" = "yes"
1024 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001025 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001026 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001027 SCO_SV*)
1028 if test "$GCC" = "yes"
1029 then CCSHARED="-fPIC"
1030 else CCSHARED="-Kpic -belf"
1031 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001032 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001033 IRIX*/6*) case $CC in
1034 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001035 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001036 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001037 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001038 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001039fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001040AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001041# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001042# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001043AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001044if test -z "$LINKFORSHARED"
1045then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001046 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001047 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001048 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001049 LINKFORSHARED="-Wl,-E -Wl,+s";;
1050# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001051 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001052 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001053 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001054 Darwin/*)
1055 # -u __dummy makes the linker aware of the objc runtime
1056 # in System.framework; otherwise, __objcInit (referenced in
1057 # crt1.o) gets erroneously defined as common, which breaks dynamic
1058 # loading of any modules which reference it in System.framework.
1059 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1060 # not used by the core itself but which needs to be in the core so
1061 # that dynamically loaded extension modules have access to it.
Jack Jansen591cbed2001-08-15 13:55:15 +00001062 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001063 if test "$enable_framework"
1064 then
1065 LINKFORSHARED="$LINKFORSHARED -framework Python"
1066 fi
1067 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001068 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001069 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001070 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001071 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001072 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1073 then
1074 LINKFORSHARED="-Wl,--export-dynamic"
1075 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001076 SunOS/5*) case $CC in
1077 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001078 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001079 then
1080 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001081 fi;;
1082 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001083 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001084fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001085AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001086
Neil Schemenauer61c51152001-01-26 16:18:16 +00001087AC_SUBST(CFLAGSFORSHARED)
1088AC_MSG_CHECKING(CFLAGSFORSHARED)
1089if test ! "$LIBRARY" = "$LDLIBRARY"
1090then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001091 case $ac_sys_system in
1092 CYGWIN*)
1093 # Cygwin needs CCSHARED when building extension DLLs
1094 # but not when building the interpreter DLL.
1095 CFLAGSFORSHARED='';;
1096 *)
1097 CFLAGSFORSHARED='$(CCSHARED)'
1098 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001099fi
1100AC_MSG_RESULT($CFLAGSFORSHARED)
1101
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001102# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1103# library (with --enable-shared).
1104# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001105# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1106# if it is not required, since it creates a dependency of the shared library
1107# to LIBS. This, in turn, means that applications linking the shared libpython
1108# don't need to link LIBS explicitly. The default should be only changed
1109# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001110AC_SUBST(SHLIBS)
1111AC_MSG_CHECKING(SHLIBS)
1112case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001113 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001114 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001115esac
1116AC_MSG_RESULT($SHLIBS)
1117
1118
Guido van Rossum627b2d71993-12-24 10:39:16 +00001119# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001120AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1121AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis82c19a72002-10-06 11:48:09 +00001122AC_SEARCH_LIBS(sem_init, rt posix4) # 'Real Time' functions on Solaris,
1123 # posix4 on Solaris 2.6
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001124
1125# checks for system dependent C++ extensions support
1126case "$ac_sys_system" in
1127 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1128 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1129 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001130 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1131 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1132 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001133 AC_MSG_RESULT(yes)],
1134 [AC_MSG_RESULT(no)]);;
1135 *) ;;
1136esac
1137
Guido van Rossum70c7f481998-03-26 18:44:10 +00001138# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
1139# However on SGI IRIX, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001140# BeOS' sockets are stashed in libnet.
1141case "$ac_sys_system" in
1142IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001143*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001144AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001145AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001146;;
1147esac
1148case "$ac_sys_system" in
1149BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001150AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1151;;
1152esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001153
Guido van Rossumc5a39031996-07-31 17:35:03 +00001154AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001155AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001156 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1157[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001158AC_MSG_RESULT($withval)
1159LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001160],
1161[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001162
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001163# Determine if signalmodule should be used.
1164AC_SUBST(USE_SIGNAL_MODULE)
1165AC_SUBST(SIGNAL_OBJS)
1166AC_MSG_CHECKING(for --with-signal-module)
1167AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001168 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001169
1170if test -z "$with_signal_module"
1171then with_signal_module="yes"
1172fi
1173AC_MSG_RESULT($with_signal_module)
1174
1175if test "${with_signal_module}" = "yes"; then
1176 USE_SIGNAL_MODULE=""
1177 SIGNAL_OBJS=""
1178else
1179 USE_SIGNAL_MODULE="#"
1180 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1181fi
1182
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001183# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001184AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001185USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001186
Guido van Rossum54d93d41997-01-22 20:51:58 +00001187AC_MSG_CHECKING(for --with-dec-threads)
1188AC_SUBST(LDLAST)
1189AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001190 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1191[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001192AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001193LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001194if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001195 with_thread="$withval";
1196fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001197[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001198
Martin v. Löwis11437992002-04-12 09:54:03 +00001199# Templates for things AC_DEFINEd more than once.
1200# For a single AC_DEFINE, no template is needed.
1201AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1202AH_TEMPLATE(_REENTRANT,
1203 [Define to force use of thread-safe errno, h_errno, and other functions])
1204AH_TEMPLATE(WITH_THREAD,
1205 [Define if you want to compile in rudimentary thread support])
1206
Guido van Rossum54d93d41997-01-22 20:51:58 +00001207AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001208dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001209AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001210 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001211
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001212# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001213dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001214AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001215 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1216 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001217
1218if test -z "$with_threads"
1219then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001220fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001221AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001222
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001223AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001224if test "$with_threads" = "no"
1225then
1226 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001227elif test "$ac_cv_pthread_is_default" = yes
1228then
1229 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001230 # Defining _REENTRANT on system with POSIX threads should not hurt.
1231 AC_DEFINE(_REENTRANT)
1232 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001233 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001234elif test "$ac_cv_kpthread" = "yes"
1235then
1236 CC="$CC -Kpthread"
1237 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001238 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001239 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001240else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001241 if test ! -z "$with_threads" -a -d "$with_threads"
1242 then LDFLAGS="$LDFLAGS -L$with_threads"
1243 fi
1244 if test ! -z "$withval" -a -d "$withval"
1245 then LDFLAGS="$LDFLAGS -L$withval"
1246 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001247
1248 # According to the POSIX spec, a pthreads implementation must
1249 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1250 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1251 AC_EGREP_CPP(yes,
1252 [#include <unistd.h>
1253 #ifdef _POSIX_THREADS
1254 yes
1255 #endif
1256 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1257 AC_MSG_RESULT($unistd_defines_pthreads)
1258
Martin v. Löwis130fb172001-07-19 11:00:41 +00001259 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001260 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1261 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001262 AC_DEFINE(HURD_C_THREADS, 1,
1263 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001264 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001265 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001266 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1267 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001268 AC_DEFINE(MACH_C_THREADS, 1,
1269 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001270 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001271 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001272 AC_ARG_WITH([pth],
1273 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1274 [AC_MSG_RESULT($withval)
1275 AC_DEFINE([WITH_THREAD])
1276 AC_DEFINE([HAVE_PTH], 1,
1277 [Define if you have GNU PTH threads.])
1278 LIBS="-lpth $LIBS"
1279 THREADOBJ="Python/thread.o"],
1280 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001281
1282 # Just looking for pthread_create in libpthread is not enough:
1283 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1284 # So we really have to include pthread.h, and then link.
1285 _libs=$LIBS
1286 LIBS="$LIBS -lpthread"
1287 AC_MSG_CHECKING([for pthread_create in -lpthread])
1288 AC_TRY_LINK([#include <pthread.h>
1289
1290void * start_routine (void *arg) { exit (0); }], [
1291pthread_create (NULL, NULL, start_routine, NULL)], [
1292 AC_MSG_RESULT(yes)
1293 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001294 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001295 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001296 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001297 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001298 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001299 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001300 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1301 AC_DEFINE(ATHEOS_THREADS, 1,
1302 [Define this if you have AtheOS threads.])
1303 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001304 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001305 AC_DEFINE(BEOS_THREADS, 1,
1306 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001307 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001308 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001309 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001310 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001311 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001312 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001313 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001314 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001315 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001316 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001317 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001318 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001319 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001320 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001321 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001322 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001323 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001324 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001325 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001326 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001327 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001328 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001329 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001330
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001331 if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001332 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001333 AC_DEFINE(_POSIX_THREADS, 1,
1334 [Define if you have POSIX threads,
1335 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001336 fi
1337
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001338 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1339 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1340 [AC_TRY_RUN([#include <pthread.h>
1341 void *foo(void *parm) {
1342 return NULL;
1343 }
1344 main() {
1345 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001346 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001347 if (pthread_attr_init(&attr)) exit(-1);
1348 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001349 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001350 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001351 }],
1352 ac_cv_pthread_system_supported=yes,
1353 ac_cv_pthread_system_supported=no,
1354 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001355 ])
1356 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1357 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001358 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001359 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001360 AC_CHECK_FUNCS(pthread_sigmask)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001361 fi
1362
Martin v. Löwis130fb172001-07-19 11:00:41 +00001363 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1364 LIBS="$LIBS -lmpc"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001365 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001366 USE_THREAD_MODULE=""])
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001367
Neal Norwitza978ab02002-11-02 16:58:05 +00001368 if test "$posix_threads" != "yes"; then
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001369 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1370 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001371 THREADOBJ="Python/thread.o"
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001372 USE_THREAD_MODULE=""])
1373 fi
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001374
Martin v. Löwis130fb172001-07-19 11:00:41 +00001375 if test "$USE_THREAD_MODULE" != "#"
1376 then
1377 # If the above checks didn't disable threads, (at least) OSF1
1378 # needs this '-threads' argument during linking.
1379 case $ac_sys_system in
1380 OSF1) LDLAST=-threads;;
1381 esac
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001382 fi
Martin v. Löwisa7a76d32002-10-04 07:21:24 +00001383
1384 if test "$posix_threads" = yes -a \
1385 "$ac_sys_system" = "SunOS" -a \
1386 "$ac_sys_release" = "5.6"; then
1387 AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1388 [Defined for Solaris 2.6 bug in pthread header.])
1389 fi
1390
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001391fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001392
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001393# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001394AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001395AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001396AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001397[ --enable-ipv6 Enable ipv6 (with ipv4) support
1398 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001399[ case "$enableval" in
1400 no)
1401 AC_MSG_RESULT(no)
1402 ipv6=no
1403 ;;
1404 *) AC_MSG_RESULT(yes)
1405 AC_DEFINE(ENABLE_IPV6)
1406 ipv6=yes
1407 ;;
1408 esac ],
1409
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001410[
1411dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001412 AC_TRY_RUN([ /* AF_INET6 available check */
1413#include <sys/types.h>
1414#include <sys/socket.h>
1415main()
1416{
1417 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1418 exit(1);
1419 else
1420 exit(0);
1421}
1422],
1423 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001424 ipv6=yes,
1425 AC_MSG_RESULT(no)
1426 ipv6=no,
1427 AC_MSG_RESULT(no)
1428 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001429)
1430
1431if test "$ipv6" = "yes"; then
1432 AC_MSG_CHECKING(if RFC2553 API is available)
1433 AC_TRY_COMPILE([#include <sys/types.h>
1434#include <netinet/in.h>],
1435 [struct sockaddr_in6 x;
1436x.sin6_scope_id;],
1437 AC_MSG_RESULT(yes)
1438 ipv6=yes,
1439 AC_MSG_RESULT(no, IPv6 disabled)
1440 ipv6=no)
1441fi
1442
1443if test "$ipv6" = "yes"; then
1444 AC_DEFINE(ENABLE_IPV6)
1445fi
1446])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001447
1448ipv6type=unknown
1449ipv6lib=none
1450ipv6trylibc=no
1451
1452if test "$ipv6" = "yes"; then
1453 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001454 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1455 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001456 case $i in
1457 inria)
1458 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001459 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001460#include <netinet/in.h>
1461#ifdef IPV6_INRIA_VERSION
1462yes
1463#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001464 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001465 ;;
1466 kame)
1467 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001468 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001469#include <netinet/in.h>
1470#ifdef __KAME__
1471yes
1472#endif],
1473 [ipv6type=$i;
1474 ipv6lib=inet6
1475 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001476 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001477 ;;
1478 linux-glibc)
1479 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001480 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001481#include <features.h>
1482#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1483yes
1484#endif],
1485 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001486 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001487 ;;
1488 linux-inet6)
1489 dnl http://www.v6.linux.or.jp/
1490 if test -d /usr/inet6; then
1491 ipv6type=$i
1492 ipv6lib=inet6
1493 ipv6libdir=/usr/inet6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001494 OPT="-I/usr/inet6/include $OPT"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001495 fi
1496 ;;
1497 solaris)
1498 if test -f /etc/netconfig; then
1499 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1500 ipv6type=$i
1501 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001502 fi
1503 fi
1504 ;;
1505 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001506 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001507#include <sys/param.h>
1508#ifdef _TOSHIBA_INET6
1509yes
1510#endif],
1511 [ipv6type=$i;
1512 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001513 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001514 ;;
1515 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001516 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001517#include </usr/local/v6/include/sys/v6config.h>
1518#ifdef __V6D__
1519yes
1520#endif],
1521 [ipv6type=$i;
1522 ipv6lib=v6;
1523 ipv6libdir=/usr/local/v6/lib;
1524 OPT="-I/usr/local/v6/include $OPT"])
1525 ;;
1526 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001527 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001528#include <sys/param.h>
1529#ifdef _ZETA_MINAMI_INET6
1530yes
1531#endif],
1532 [ipv6type=$i;
1533 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001534 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001535 ;;
1536 esac
1537 if test "$ipv6type" != "unknown"; then
1538 break
1539 fi
1540 done
1541 AC_MSG_RESULT($ipv6type)
1542fi
1543
1544if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1545 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1546 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1547 echo "using lib$ipv6lib"
1548 else
1549 if test $ipv6trylibc = "yes"; then
1550 echo "using libc"
1551 else
1552 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1553 echo "You need to fetch lib$ipv6lib.a from appropriate"
1554 echo 'ipv6 kit and compile beforehand.'
1555 exit 1
1556 fi
1557 fi
1558fi
1559
Jack Jansen7b8c7542002-04-14 20:12:41 +00001560# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001561AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001562AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001563 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001564
1565if test -z "$with_universal_newlines"
1566then with_universal_newlines="yes"
1567fi
1568if test "$with_universal_newlines" != "no"
1569then
Martin v. Löwise8aea582002-04-16 05:51:02 +00001570 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1571 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001572fi
1573AC_MSG_RESULT($with_universal_newlines)
1574
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001575# Check for --with-doc-strings
1576AC_MSG_CHECKING(for --with-doc-strings)
1577AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001578 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001579
1580if test -z "$with_doc_strings"
1581then with_doc_strings="yes"
1582fi
1583if test "$with_doc_strings" != "no"
1584then
1585 AC_DEFINE(WITH_DOC_STRINGS, 1,
1586 [Define if you want documentation strings in extension modules])
1587fi
1588AC_MSG_RESULT($with_doc_strings)
1589
Neil Schemenauera35c6882001-02-27 04:45:05 +00001590# Check for Python-specific malloc support
1591AC_MSG_CHECKING(for --with-pymalloc)
1592AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001593 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001594
1595if test -z "$with_pymalloc"
1596then with_pymalloc="yes"
1597fi
1598if test "$with_pymalloc" != "no"
1599then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001600 AC_DEFINE(WITH_PYMALLOC, 1,
1601 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001602fi
1603AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001604
Barry Warsawef82cd72000-06-30 16:21:01 +00001605# Check for --with-wctype-functions
1606AC_MSG_CHECKING(for --with-wctype-functions)
1607AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001608 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1609[
Barry Warsawef82cd72000-06-30 16:21:01 +00001610if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001611then
1612 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1613 [Define if you want wctype.h functions to be used instead of the
1614 one supplied by Python itself. (see Include/unicodectype.h).])
1615 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001616else AC_MSG_RESULT(no)
1617fi],
1618[AC_MSG_RESULT(no)])
1619
Guido van Rossum68242b51996-05-28 22:53:03 +00001620# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001621AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001622DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001623
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001624AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001625AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001626 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1627[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001628AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001629AC_DEFINE(WITH_SGI_DL, 1,
1630 [Define if you want to use SGI (IRIX 4) dynamic linking.
1631 This requires the "dl" library by Jack Jansen,
1632 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1633 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1634 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001635DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001636dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001637if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001638then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001639else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001640fi
1641DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001642LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001643
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001644AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001645AC_ARG_WITH(dl-dld,
1646 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1647[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001648AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001649AC_DEFINE(WITH_DL_DLD, 1,
1650 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1651 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1652 Sequent Symmetry (Dynix), and Atari ST.
1653 This requires the 'dl-dld' library,
1654 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1655 as well as the 'GNU dld' library,
1656 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1657 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1658 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001659DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001660dldir=`echo "$withval" | sed 's/,.*//'`
1661dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001662if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001663then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001664else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001665fi
1666DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001667LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001668
Guido van Rossume97ee181999-12-20 21:27:22 +00001669# the dlopen() function means we might want to use dynload_shlib.o. some
1670# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001671AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001672
1673# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1674# loading of modules.
1675AC_SUBST(DYNLOADFILE)
1676AC_MSG_CHECKING(DYNLOADFILE)
1677if test -z "$DYNLOADFILE"
1678then
1679 case $ac_sys_system/$ac_sys_release in
1680 AIX*) DYNLOADFILE="dynload_aix.o";;
1681 BeOS*) DYNLOADFILE="dynload_beos.o";;
1682 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001683 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001684 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001685 *)
1686 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1687 # out any dynamic loading
1688 if test "$ac_cv_func_dlopen" = yes
1689 then DYNLOADFILE="dynload_shlib.o"
1690 else DYNLOADFILE="dynload_stub.o"
1691 fi
1692 ;;
1693 esac
1694fi
1695AC_MSG_RESULT($DYNLOADFILE)
1696if test "$DYNLOADFILE" != "dynload_stub.o"
1697then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001698 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1699 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001700fi
1701
Jack Jansenc49e5b72001-06-19 15:00:23 +00001702# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1703
1704AC_SUBST(MACHDEP_OBJS)
1705AC_MSG_CHECKING(MACHDEP_OBJS)
1706if test -z "$MACHDEP_OBJS"
1707then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001708 MACHDEP_OBJS=$extra_machdep_objs
1709else
1710 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001711fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001712AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001713
Guido van Rossum627b2d71993-12-24 10:39:16 +00001714# checks for library functions
Martin v. Löwis244edc82001-10-04 22:44:26 +00001715AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \
Fred Drake6b3cc522002-04-15 19:20:27 +00001716 fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis606edc12002-06-13 21:09:11 +00001717 gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00001718 hstrerror inet_pton kill killpg lchown link lstat mkfifo mknod mktime \
1719 mremap nice pathconf pause plock poll pthread_init \
Fred Drake35a092f1999-12-13 16:23:35 +00001720 putenv readlink \
Martin v. Löwis61c5edf2001-10-18 04:06:00 +00001721 select setegid seteuid setgid setgroups \
Martin v. Löwis791bfda2001-07-24 06:33:08 +00001722 setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
Michael W. Hudson065c1a22002-06-06 13:03:44 +00001723 sigaction siginterrupt sigrelse strftime strptime symlink \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00001724 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis6aa9fdb2002-09-10 09:16:13 +00001725 truncate uname unsetenv utimes waitpid _getpty getpriority)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001726
Fred Drake8cef4cf2000-06-28 16:40:38 +00001727# check for openpty and forkpty
1728
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001729AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
1730AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00001731
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001732# check for long file support functions
1733AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
1734
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00001735AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001736AC_CHECK_FUNCS(getpgrp,
1737 AC_TRY_COMPILE([#include <unistd.h>],
1738 [getpgrp(0);],
1739 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
1740 [Define if getpgrp() must be called as getpgrp(0).])
1741 )
1742)
Jeremy Hyltonaf4c12f2002-07-18 20:25:46 +00001743AC_FUNC_SETPGRP(AC_DEFINE(SETPGRP_HAVE_ARG, 1,
1744 [Define if setpgrp() must be called as setpgrp(0, 0).])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001745)
1746AC_CHECK_FUNCS(gettimeofday,
1747 AC_TRY_COMPILE([#include <sys/time.h>],
1748 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
1749 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
1750 [Define if gettimeofday() does not have second (timezone) argument
1751 This is the case on Motorola V4 (R40V4.2)])
1752 )
1753)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001754
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001755AC_MSG_CHECKING(for major, minor, and makedev)
1756AC_TRY_COMPILE([
1757 #if defined(MAJOR_IN_MKDEV)
1758 #include <sys/mkdev.h>
1759 #elif defined(MAJOR_IN_SYSMACROS)
1760 #include <sys/sysmacros.h>
1761 #else
1762 #include <sys/types.h>
1763 #endif
1764],[
1765 makedev(major(0),minor(0));
1766],[
1767 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
1768 [Define to 1 if you have the device macros.])
1769 AC_MSG_RESULT(yes)
1770],[
1771 AC_MSG_RESULT(no)
1772])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001773
1774# On OSF/1 V5.1, getaddrinfo is available, but a define
1775# for [no]getaddrinfo in netdb.h.
1776AC_MSG_CHECKING(for getaddrinfo)
1777AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001778#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001779#include <sys/socket.h>
1780#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001781#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001782],[
1783getaddrinfo(NULL, NULL, NULL, NULL);
1784], [
1785AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001786AC_MSG_CHECKING(getaddrinfo bug)
1787AC_TRY_RUN([
1788#include <sys/types.h>
1789#include <netdb.h>
1790#include <string.h>
1791#include <sys/socket.h>
1792#include <netinet/in.h>
1793
1794main()
1795{
1796 int passive, gaierr, inet4 = 0, inet6 = 0;
1797 struct addrinfo hints, *ai, *aitop;
1798 char straddr[INET6_ADDRSTRLEN], strport[16];
1799
1800 for (passive = 0; passive <= 1; passive++) {
1801 memset(&hints, 0, sizeof(hints));
1802 hints.ai_family = AF_UNSPEC;
1803 hints.ai_flags = passive ? AI_PASSIVE : 0;
1804 hints.ai_socktype = SOCK_STREAM;
1805 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
1806 (void)gai_strerror(gaierr);
1807 goto bad;
1808 }
1809 for (ai = aitop; ai; ai = ai->ai_next) {
1810 if (ai->ai_addr == NULL ||
1811 ai->ai_addrlen == 0 ||
1812 getnameinfo(ai->ai_addr, ai->ai_addrlen,
1813 straddr, sizeof(straddr), strport, sizeof(strport),
1814 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
1815 goto bad;
1816 }
1817 switch (ai->ai_family) {
1818 case AF_INET:
1819 if (strcmp(strport, "54321") != 0) {
1820 goto bad;
1821 }
1822 if (passive) {
1823 if (strcmp(straddr, "0.0.0.0") != 0) {
1824 goto bad;
1825 }
1826 } else {
1827 if (strcmp(straddr, "127.0.0.1") != 0) {
1828 goto bad;
1829 }
1830 }
1831 inet4++;
1832 break;
1833 case AF_INET6:
1834 if (strcmp(strport, "54321") != 0) {
1835 goto bad;
1836 }
1837 if (passive) {
1838 if (strcmp(straddr, "::") != 0) {
1839 goto bad;
1840 }
1841 } else {
1842 if (strcmp(straddr, "::1") != 0) {
1843 goto bad;
1844 }
1845 }
1846 inet6++;
1847 break;
1848 case AF_UNSPEC:
1849 goto bad;
1850 break;
1851 default:
1852 /* another family support? */
1853 break;
1854 }
1855 }
1856 }
1857
1858 if (!(inet4 == 0 || inet4 == 2))
1859 goto bad;
1860 if (!(inet6 == 0 || inet6 == 2))
1861 goto bad;
1862
1863 if (aitop)
1864 freeaddrinfo(aitop);
1865 exit(0);
1866
1867 bad:
1868 if (aitop)
1869 freeaddrinfo(aitop);
1870 exit(1);
1871}
1872],
1873AC_MSG_RESULT(good)
1874buggygetaddrinfo=no,
1875AC_MSG_RESULT(buggy)
1876buggygetaddrinfo=yes,
1877AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001878buggygetaddrinfo=yes)], [
1879AC_MSG_RESULT(no)
1880buggygetaddrinfo=yes
1881])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001882
1883if test "$buggygetaddrinfo" = "yes"; then
1884 if test "$ipv6" = "yes"; then
1885 echo 'Fatal: You must get working getaddrinfo() function.'
1886 echo ' or you can specify "--disable-ipv6"'.
1887 exit 1
1888 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001889else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001890 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001891fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00001892AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001893
Guido van Rossum627b2d71993-12-24 10:39:16 +00001894# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001895AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00001896AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001897AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00001898AC_CHECK_MEMBERS([struct stat.st_rdev])
1899AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00001900AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001901
1902AC_MSG_CHECKING(for time.h that defines altzone)
1903AC_CACHE_VAL(ac_cv_header_time_altzone,
1904[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
1905 ac_cv_header_time_altzone=yes,
1906 ac_cv_header_time_altzone=no)])
1907AC_MSG_RESULT($ac_cv_header_time_altzone)
1908if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001909 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001910fi
1911
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001912was_it_defined=no
1913AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001914AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001915#include <sys/types.h>
1916#include <sys/select.h>
1917#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001918], [;], [
1919 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
1920 [Define if you can safely include both <sys/select.h> and <sys/time.h>
1921 (which you can't on SCO ODT 3.0).])
1922 was_it_defined=yes
1923])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001924AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001925
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001926AC_MSG_CHECKING(for addrinfo)
1927AC_CACHE_VAL(ac_cv_struct_addrinfo,
1928AC_TRY_COMPILE([
1929# include <netdb.h>],
1930 [struct addrinfo a],
1931 ac_cv_struct_addrinfo=yes,
1932 ac_cv_struct_addrinfo=no))
1933AC_MSG_RESULT($ac_cv_struct_addrinfo)
1934if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001935 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001936fi
1937
1938AC_MSG_CHECKING(for sockaddr_storage)
1939AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
1940AC_TRY_COMPILE([
1941# include <sys/types.h>
1942# include <sys/socket.h>],
1943 [struct sockaddr_storage s],
1944 ac_cv_struct_sockaddr_storage=yes,
1945 ac_cv_struct_sockaddr_storage=no))
1946AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
1947if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001948 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001949fi
1950
Guido van Rossum627b2d71993-12-24 10:39:16 +00001951# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001952
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001953AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001954AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001955
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001956works=no
1957AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001958AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
1959 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
1960)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001961AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00001962
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001963works=no
1964AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001965AC_TRY_COMPILE([], [signed char c;], works=yes,
1966 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
1967)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001968AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001969
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001970have_prototypes=no
1971AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001972AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
1973 AC_DEFINE(HAVE_PROTOTYPES, 1,
1974 [Define if your compiler supports function prototype])
1975 have_prototypes=yes
1976])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001977AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001978
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001979works=no
1980AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001981AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001982#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00001983int foo(int x, ...) {
1984 va_list va;
1985 va_start(va, x);
1986 va_arg(va, int);
1987 va_arg(va, char *);
1988 va_arg(va, double);
1989 return 0;
1990}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001991], [return foo(10, "", 3.14);], [
1992 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
1993 [Define if your compiler supports variable length function prototypes
1994 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
1995 works=yes
1996])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001997AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001998
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001999if test "$have_prototypes" = yes; then
2000bad_prototypes=no
2001AC_MSG_CHECKING(for bad exec* prototypes)
2002AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002003 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2004 [Define if your <unistd.h> contains bad prototypes for exec*()
2005 (as it does on SGI IRIX 4.x)])
2006 bad_prototypes=yes
2007)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002008AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002009fi
2010
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002011# check if sockaddr has sa_len member
2012AC_MSG_CHECKING(if sockaddr has sa_len member)
2013AC_TRY_COMPILE([#include <sys/types.h>
2014#include <sys/socket.h>],
2015[struct sockaddr x;
2016x.sa_len = 0;],
2017 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002018 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002019 AC_MSG_RESULT(no))
2020
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002021va_list_is_array=no
2022AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002023AC_TRY_COMPILE([
2024#ifdef HAVE_STDARG_PROTOTYPES
2025#include <stdarg.h>
2026#else
2027#include <varargs.h>
2028#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002029], [va_list list1, list2; list1 = list2;], , [
2030 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2031 va_list_is_array=yes
2032])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002033AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002034
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002035# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002036AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2037 [Define this if you have some version of gethostbyname_r()])
2038
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002039AC_CHECK_FUNC(gethostbyname_r, [
2040 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2041 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2042 OLD_CFLAGS=$CFLAGS
2043 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2044 AC_TRY_COMPILE([
2045# include <netdb.h>
2046 ], [
2047 char *name;
2048 struct hostent *he, *res;
2049 char buffer[2048];
2050 int buflen = 2048;
2051 int h_errnop;
2052
2053 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2054 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002055 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002056 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2057 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002058 AC_MSG_RESULT(yes)
2059 ], [
2060 AC_MSG_RESULT(no)
2061 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2062 AC_TRY_COMPILE([
2063# include <netdb.h>
2064 ], [
2065 char *name;
2066 struct hostent *he;
2067 char buffer[2048];
2068 int buflen = 2048;
2069 int h_errnop;
2070
2071 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2072 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002073 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002074 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2075 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002076 AC_MSG_RESULT(yes)
2077 ], [
2078 AC_MSG_RESULT(no)
2079 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2080 AC_TRY_COMPILE([
2081# include <netdb.h>
2082 ], [
2083 char *name;
2084 struct hostent *he;
2085 struct hostent_data data;
2086
2087 (void) gethostbyname_r(name, he, &data);
2088 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002089 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002090 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2091 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002092 AC_MSG_RESULT(yes)
2093 ], [
2094 AC_MSG_RESULT(no)
2095 ])
2096 ])
2097 ])
2098 CFLAGS=$OLD_CFLAGS
2099], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002100 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002101])
2102AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2103AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2104AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002105AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002106AC_SUBST(HAVE_GETHOSTBYNAME)
2107
Guido van Rossum627b2d71993-12-24 10:39:16 +00002108# checks for system services
2109# (none yet)
2110
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002111# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002112AC_CHECK_FUNC(__fpu_control,
2113 [],
2114 [AC_CHECK_LIB(ieee, __fpu_control)
2115])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002116
Guido van Rossum93274221997-05-09 02:42:00 +00002117# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002118AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002119AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002120 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2121[
Guido van Rossum93274221997-05-09 02:42:00 +00002122if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002123then
2124 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2125 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2126 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002127else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002128fi],
2129[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002130
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002131# check for --with-libm=...
2132AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002133case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002134Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002135BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002136*) LIBM=-lm
2137esac
Guido van Rossum93274221997-05-09 02:42:00 +00002138AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002139AC_ARG_WITH(libm,
2140 AC_HELP_STRING(--with-libm=STRING, math library),
2141[
Guido van Rossum93274221997-05-09 02:42:00 +00002142if test "$withval" = no
2143then LIBM=
2144 AC_MSG_RESULT(force LIBM empty)
2145elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002146then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002147 AC_MSG_RESULT(set LIBM="$withval")
2148else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002149fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002150[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002151
2152# check for --with-libc=...
2153AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002154AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002155AC_ARG_WITH(libc,
2156 AC_HELP_STRING(--with-libc=STRING, C library),
2157[
Guido van Rossum93274221997-05-09 02:42:00 +00002158if test "$withval" = no
2159then LIBC=
2160 AC_MSG_RESULT(force LIBC empty)
2161elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002162then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002163 AC_MSG_RESULT(set LIBC="$withval")
2164else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002165fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002166[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002167
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002168# check for hypot() in math library
2169LIBS_SAVE=$LIBS
2170LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002171AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002172LIBS=$LIBS_SAVE
2173
Guido van Rossumad713701997-07-10 22:42:38 +00002174# check whether malloc(0) returns NULL or not
Guido van Rossumad713701997-07-10 22:42:38 +00002175AC_MSG_CHECKING(what malloc(0) returns)
2176AC_CACHE_VAL(ac_cv_malloc_zero,
2177[AC_TRY_RUN([#include <stdio.h>
2178#ifdef HAVE_STDLIB
2179#include <stdlib.h>
2180#else
2181char *malloc(), *realloc();
2182int *free();
2183#endif
2184main() {
2185 char *p;
2186 p = malloc(0);
2187 if (p == NULL) exit(1);
2188 p = realloc(p, 0);
2189 if (p == NULL) exit(1);
2190 free(p);
2191 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002192}],
2193ac_cv_malloc_zero=nonnull,
2194ac_cv_malloc_zero=null,
2195ac_cv_malloc_zero=nonnull)]) # XXX arm cross-compile?
Guido van Rossumad713701997-07-10 22:42:38 +00002196AC_MSG_RESULT($ac_cv_malloc_zero)
2197if test "$ac_cv_malloc_zero" = null
2198then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002199 AC_DEFINE(MALLOC_ZERO_RETURNS_NULL, 1,
2200 [Define if malloc(0) returns a NULL pointer.])
Guido van Rossumad713701997-07-10 22:42:38 +00002201fi
2202
Guido van Rossumef2255b2000-03-10 22:30:29 +00002203# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002204AC_CHECK_HEADER(wchar.h, [
2205 AC_DEFINE(HAVE_WCHAR_H, 1,
2206 [Define if the compiler provides a wchar.h header file.])
2207 wchar_h="yes"
2208],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002209wchar_h="no"
2210)
2211
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002212# determine wchar_t size
2213if test "$wchar_h" = yes
2214then
Guido van Rossum67b26592001-10-20 14:21:45 +00002215 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002216fi
2217
2218AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002219dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002220AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002221 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2222 [],
2223 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002224
2225if test $enable_unicode = yes
2226then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002227 # Without any arguments, Py_UNICODE defaults to two-byte mode
2228 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002229fi
2230
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002231AH_TEMPLATE(Py_UNICODE_SIZE,
2232 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002233case "$enable_unicode" in
2234ucs2) unicode_size="2"
2235 AC_DEFINE(Py_UNICODE_SIZE,2)
2236 ;;
2237ucs4) unicode_size="4"
2238 AC_DEFINE(Py_UNICODE_SIZE,4)
2239 ;;
2240esac
2241
Martin v. Löwis11437992002-04-12 09:54:03 +00002242AH_TEMPLATE(PY_UNICODE_TYPE,
2243 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002244
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002245AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002246if test "$enable_unicode" = "no"
2247then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002248 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002249 AC_MSG_RESULT(not used)
2250else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002251 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002252 AC_DEFINE(Py_USING_UNICODE, 1,
2253 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002254 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2255 then
2256 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002257 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2258 [Define if you have a useable wchar_t type defined in wchar.h; useable
2259 means wchar_t must be 16-bit unsigned type. (see
2260 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002261 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2262 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2263 then
2264 PY_UNICODE_TYPE="unsigned short"
2265 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2266 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2267 then
2268 PY_UNICODE_TYPE="unsigned long"
2269 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2270 else
2271 PY_UNICODE_TYPE="no type found"
2272 fi
2273 AC_MSG_RESULT($PY_UNICODE_TYPE)
2274fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002275
2276# check for endianness
2277AC_C_BIGENDIAN
2278
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002279# Check whether right shifting a negative integer extends the sign bit
2280# or fills with zeros (like the Cray J90, according to Tim Peters).
2281AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002282AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002283AC_TRY_RUN([
2284int main()
2285{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002286 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002287}
Guido van Rossum3065c942001-09-17 04:03:14 +00002288],
2289ac_cv_rshift_extends_sign=yes,
2290ac_cv_rshift_extends_sign=no,
2291ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002292AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2293if test "$ac_cv_rshift_extends_sign" = no
2294then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002295 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2296 [Define if i>>j for signed int i does not extend the sign bit
2297 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002298fi
2299
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002300# check for getc_unlocked and related locking functions
2301AC_MSG_CHECKING(for getc_unlocked() and friends)
2302AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2303AC_TRY_LINK([#include <stdio.h>],[
2304 FILE *f = fopen("/dev/null", "r");
2305 flockfile(f);
2306 getc_unlocked(f);
2307 funlockfile(f);
2308], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2309AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2310if test "$ac_cv_have_getc_unlocked" = yes
2311then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002312 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2313 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002314fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002315
Martin v. Löwis0daad592001-09-30 21:09:59 +00002316# check for readline 4.0
2317AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002318 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2319 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002320
Guido van Rossum353ae582001-07-10 16:45:32 +00002321# check for readline 4.2
2322AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002323 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2324 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002325
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002326AC_MSG_CHECKING(for broken nice())
2327AC_CACHE_VAL(ac_cv_broken_nice, [
2328AC_TRY_RUN([
2329int main()
2330{
2331 int val1 = nice(1);
2332 if (val1 != -1 && val1 == nice(2))
2333 exit(0);
2334 exit(1);
2335}
Guido van Rossum3065c942001-09-17 04:03:14 +00002336],
2337ac_cv_broken_nice=yes,
2338ac_cv_broken_nice=no,
2339ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002340AC_MSG_RESULT($ac_cv_broken_nice)
2341if test "$ac_cv_broken_nice" = yes
2342then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002343 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2344 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002345fi
2346
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002347# Look for subsecond timestamps in struct stat
2348AC_MSG_CHECKING(for tv_nsec in struct stat)
2349AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2350AC_TRY_COMPILE([#include <sys/stat.h>], [
2351struct stat st;
2352st.st_mtim.tv_nsec = 1;
2353],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002354ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002355ac_cv_stat_tv_nsec=no,
2356ac_cv_stat_tv_nsec=no))
2357AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2358if test "$ac_cv_stat_tv_nsec" = yes
2359then
2360 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2361 [Define if you have struct stat.st_mtim.tv_nsec])
2362fi
2363
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002364# On HP/UX 11.0, mvwdelch is a block with a return statement
2365AC_MSG_CHECKING(whether mvwdelch is an expression)
2366AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2367AC_TRY_COMPILE([#include <curses.h>], [
2368 int rtn;
2369 rtn = mvwdelch(0,0,0);
2370], ac_cv_mvwdelch_is_expression=yes,
2371 ac_cv_mvwdelch_is_expression=no,
2372 ac_cv_mvwdelch_is_expression=yes))
2373AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2374
2375if test "$ac_cv_mvwdelch_is_expression" = yes
2376then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002377 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2378 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002379fi
2380
2381AC_MSG_CHECKING(whether WINDOW has _flags)
2382AC_CACHE_VAL(ac_cv_window_has_flags,
2383AC_TRY_COMPILE([#include <curses.h>], [
2384 WINDOW *w;
2385 w->_flags = 0;
2386], ac_cv_window_has_flags=yes,
2387 ac_cv_window_has_flags=no,
2388 ac_cv_window_has_flags=no))
2389AC_MSG_RESULT($ac_cv_window_has_flags)
2390
2391
2392if test "$ac_cv_window_has_flags" = yes
2393then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002394 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2395 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002396fi
2397
Guido van Rossum95713eb2000-05-18 20:53:31 +00002398# THIS MUST BE LAST, IT CAN BREAK OTHER TESTS!
2399# Add sys/socket.h to confdefs.h
2400cat >> confdefs.h <<\EOF
2401#ifdef HAVE_SYS_SOCKET_H
2402#include <sys/socket.h>
2403#endif
2404EOF
2405AC_CHECK_TYPE(socklen_t, int)
2406
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002407#AC_MSG_CHECKING(for Modules/Setup)
2408#if test ! -f Modules/Setup ; then
2409# if test ! -d Modules ; then
2410# mkdir Modules
2411# fi
2412# cp "$srcdir/Modules/Setup.dist" Modules/Setup
2413# AC_MSG_RESULT(creating)
2414#else
2415# AC_MSG_RESULT(already exists)
2416#fi
2417
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002418AC_SUBST(THREADHEADERS)
2419
2420for h in `(cd $srcdir;echo Python/thread_*.h)`
2421do
2422 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2423done
2424
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002425AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002426SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002427AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002428for dir in $SRCDIRS; do
2429 if test ! -d $dir; then
2430 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002431 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002432done
2433AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002434
Guido van Rossum627b2d71993-12-24 10:39:16 +00002435# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002436AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2437AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002438
2439echo "creating Setup"
2440if test ! -f Modules/Setup
2441then
2442 cp $srcdir/Modules/Setup.dist Modules/Setup
2443fi
2444
2445echo "creating Setup.local"
2446if test ! -f Modules/Setup.local
2447then
2448 echo "# Edit this file for local setup changes" >Modules/Setup.local
2449fi
2450
2451echo "creating Makefile"
2452$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2453 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002454 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002455mv config.c Modules