blob: baad80f5cc7a72fa9caf7d69fc69cb0249c40b09 [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.
2AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00003AC_PREREQ(2.53)
Guido van Rossum6085e321993-12-26 18:24:40 +00004AC_INIT(Include/object.h)
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +00005AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +00006
Martin v. Löwis11437992002-04-12 09:54:03 +00007# This is for stuff that absolutely must end up in pyconfig.h.
8# Please use pyport.h instead, if possible.
9AH_BOTTOM([
10#ifdef __CYGWIN__
11#ifdef USE_DL_IMPORT
12#define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
13#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
14#else
15#define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
16#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
17#endif
18#endif
19
20/* Define the macros needed if on a UnixWare 7.x system. */
21#if defined(__USLC__) && defined(__SCO_VERSION__)
22#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
23#endif
24])
25
Guido van Rossum642b6781997-07-19 19:35:41 +000026# Set VERSION so we only need to edit in one place (i.e., here)
27AC_SUBST(VERSION)
Andrew M. Kuchling54a39412002-02-11 16:30:54 +000028VERSION=2.3
Guido van Rossum642b6781997-07-19 19:35:41 +000029
Martin v. Löwis1142de32002-03-29 16:28:31 +000030AC_SUBST(SOVERSION)
31SOVERSION=1.0
32
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000033# Arguments passed to configure.
34AC_SUBST(CONFIG_ARGS)
35CONFIG_ARGS="$ac_configure_args"
36
Guido van Rossum4b6b5791996-09-09 20:09:34 +000037
Jack Jansenb6e9cad2001-08-15 01:26:28 +000038AC_ARG_ENABLE(framework,
39[ --enable-framework[=INSTALLDIR] Build (MacOSX|Darwin) framework],[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000040 case $enableval in
41 yes)
42 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000043 esac
44 case $enableval in
45 no)
46 PYTHONFRAMEWORK=
47 PYTHONFRAMEWORKDIR=no-framework
48 PYTHONFRAMEWORKPREFIX=
49 PYTHONFRAMEWORKINSTALLDIR=
50 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000051 ;;
52 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000053 PYTHONFRAMEWORK=Python
54 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000055 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000056 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
57 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000058 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000059 ],[
60 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000061 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000062 PYTHONFRAMEWORKPREFIX=
63 PYTHONFRAMEWORKINSTALLDIR=
64 enable_framework=
65])
66AC_SUBST(PYTHONFRAMEWORK)
67AC_SUBST(PYTHONFRAMEWORKDIR)
68AC_SUBST(PYTHONFRAMEWORKPREFIX)
69AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000070
Jack Jansenb6e9cad2001-08-15 01:26:28 +000071##AC_ARG_WITH(dyld,
72##[ --with-dyld Use (OpenStep|Rhapsody) dynamic linker],,)
73##
Guido van Rossumb418f891996-07-30 18:06:02 +000074# Set name for machine-dependent library files
75AC_SUBST(MACHDEP)
76AC_MSG_CHECKING(MACHDEP)
77if test -z "$MACHDEP"
78then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000079 ac_sys_system=`uname -s`
Martin v. Löwis130fb172001-07-19 11:00:41 +000080 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +000081 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +000082 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +000083 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +000084 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +000085 ac_md_system=`echo $ac_sys_system |
86 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
87 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +000088 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +000089 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +000090
Guido van Rossumbcd91e01997-03-20 20:46:29 +000091 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +000092 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +000093 darwin*) MACHDEP="darwin";;
Guido van Rossumb97ef171997-09-28 05:44:03 +000094 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +000095 esac
96fi
Guido van Rossum91922671997-10-09 20:24:13 +000097
98#
99# SGI compilers allow the specification of the both the ABI and the
100# ISA on the command line. Depending on the values of these switches,
101# different and often incompatable code will be generated.
102#
103# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
104# thus supply support for various ABI/ISA combinations. The MACHDEP
105# variable is also adjusted.
106#
107AC_SUBST(SGI_ABI)
108if test ! -z "$SGI_ABI"
109then
110 CC="cc $SGI_ABI"
111 LDFLAGS="$SGI_ABI $LDFLAGS"
112 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
113fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000114AC_MSG_RESULT($MACHDEP)
115
Guido van Rossum627b2d71993-12-24 10:39:16 +0000116# checks for alternative programs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000117AC_MSG_CHECKING(for --without-gcc)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +0000118AC_ARG_WITH(gcc, [ --without-gcc never use gcc], [
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000119 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000120 no) CC=cc
121 without_gcc=yes;;
122 yes) CC=gcc
123 without_gcc=no;;
124 *) CC=$withval
125 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000126 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000127 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000128 AIX*) CC=cc_r
129 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000130 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000131 case $BE_HOST_CPU in
132 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000133 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000134 without_gcc=yes
Fred Drake5790be12000-10-09 17:06:13 +0000135 OPT="-O -D'DL_EXPORT(RTYPE)=__declspec(dllexport) RTYPE' -D'DL_IMPORT(RTYPE)=__declspec(dllexport) RTYPE' -export pragma"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000136 CCSHARED="-UDL_IMPORT -D'DL_IMPORT(RTYPE)=__declspec(dllimport) RTYPE'"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000137 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000138 ;;
139 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000140 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000141 without_gcc=no
Fred Drake5790be12000-10-09 17:06:13 +0000142 OPT=-O
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000143 ;;
144 *)
Fred Drake5790be12000-10-09 17:06:13 +0000145 AC_ERROR(Unknown BeOS platform \"$BE_HOST_CPU\")
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000146 ;;
147 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000148 AR="\$(srcdir)/Modules/ar_beos"
149 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000150 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000151 Monterey*)
152 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000153 without_gcc=;;
154 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000155 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000156AC_MSG_RESULT($without_gcc)
157
Guido van Rossum27552902001-01-23 01:52:26 +0000158AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000159AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000160MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000161AC_MSG_CHECKING(for --with-cxx=<compiler>)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +0000162AC_ARG_WITH(cxx, [ --with-cxx=<compiler> enable C++ support],[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000163 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000164 case $withval in
165 no) CXX=
166 with_cxx=no;;
167 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000168 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000169 with_cxx=$withval;;
170 esac], [
171 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000172 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000173])
174AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000175
Michael W. Hudson54241132001-12-07 15:38:26 +0000176if test "$with_cxx" = "yes"
177then
178 AC_ERROR(must supply a compiler when using --with-cxx)
179fi
180
Martin v. Löwis537970f2000-12-13 17:37:02 +0000181dnl The following fragment works similar to AC_PROG_CXX.
182dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000183dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000184dnl Finally, it does not test whether CXX is g++.
185
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000186dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
187ifdef([AC_PROG_CXX_WORKS],[],
188 [AC_DEFUN([AC_PROG_CXX_WORKS],
189 [AC_LANG_PUSH(C++)dnl
190 _AC_COMPILER_EXEEXT
191 AC_LANG_POP()
192 ]
193)])
194
Martin v. Löwis537970f2000-12-13 17:37:02 +0000195if test "$check_cxx" = "yes"
196then
197 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
198 if test "$CXX" = "notfound"
199 then
200 CXX=
201 else
202 AC_PROG_CXX_WORKS
203 fi
204fi
205
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000206# If the user switches compilers, we can't believe the cache
207if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
208then
209 AC_ERROR(cached CC is different -- throw away $cache_file
210(it is also a good idea to do 'make clean' before compiling))
211fi
212
Guido van Rossum627b2d71993-12-24 10:39:16 +0000213AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000214
215# checks for UNIX variants that set C preprocessor variables
216AC_AIX
217AC_MINIX
218
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000219AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000220AC_MSG_CHECKING(for --with-suffix)
221AC_ARG_WITH(suffix, [ --with-suffix=.exe set executable suffix],[
222 case $withval in
223 no) EXEEXT=;;
224 yes) EXEEXT=.exe;;
225 *) EXEEXT=$withval;;
226 esac])
227AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000228
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000229# Test whether we're running on a non-case-sensitive system, in which
230# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000231AC_SUBST(BUILDEXEEXT)
232AC_MSG_CHECKING(for case-insensitive build directory)
233if test -d "python"
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000234then
Jack Jansen1999ef42001-12-06 21:47:20 +0000235 AC_MSG_RESULT(yes)
236 BUILDEXEEXT=.exe
237else
238 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000239 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000240fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000241
Guido van Rossumdd997f71998-10-07 19:58:26 +0000242case $MACHDEP in
243bsdos*)
244 case $CC in
245 gcc) CC="$CC -D_HAVE_BSDI";;
246 esac;;
247esac
248
Guido van Rossum84561611997-08-21 00:08:11 +0000249case $ac_sys_system in
250hp*|HP*)
251 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000252 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000253 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000254Monterey*)
255 case $CC in
256 cc) CC="$CC -Wl,-Bexport";;
257 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000258SunOS*)
259 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000260 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000261 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000262esac
263
Martin v. Löwise8964d42001-03-06 12:09:07 +0000264
Neil Schemenauer61c51152001-01-26 16:18:16 +0000265AC_SUBST(LIBRARY)
266AC_MSG_CHECKING(LIBRARY)
267if test -z "$LIBRARY"
268then
269 LIBRARY='libpython$(VERSION).a'
270fi
271AC_MSG_RESULT($LIBRARY)
272
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000273# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000274# name of the library into which to insert object files). BLDLIBRARY is also
275# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
276# is blank as the main program is not linked directly against LDLIBRARY.
277# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
278# systems without shared libraries, LDLIBRARY is the same as LIBRARY
279# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
280# DLLLIBRARY is the shared (i.e., DLL) library.
281#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000282# RUNSHARED is used to run shared python without installed libraries
283#
284# INSTSONAME is the name of the shared library that will be use to install
285# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000286AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000287AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000288AC_SUBST(BLDLIBRARY)
289AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000290AC_SUBST(INSTSONAME)
291AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000292LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000293BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000294INSTSONMAE='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000295DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000296LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000297RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000298
Guido van Rossumfb842551997-08-06 23:42:07 +0000299# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000300# If CXX is set, and if it is needed to link a main function that was
301# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
302# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000303# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000304# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000305AC_SUBST(LINKCC)
306AC_MSG_CHECKING(LINKCC)
307if test -z "$LINKCC"
308then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000309 if test -z "$CXX"; then
310 LINKCC="\$(PURIFY) \$(CC)"
311 else
312 echo 'int main(){return 0;}' > conftest.$ac_ext
313 $CXX -c conftest.$ac_ext 2>&5
314 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
315 && test -s conftest$ac_exeext && ./conftest$ac_exeext
316 then
317 LINKCC="\$(PURIFY) \$(CC)"
318 else
319 LINKCC="\$(PURIFY) \$(CXX)"
320 fi
321 rm -fr conftest*
322 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000323 case $ac_sys_system in
324 AIX*)
Jeremy Hylton90d10062002-03-08 21:43:51 +0000325 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp \"\" \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000326 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000327 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000328 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000329 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000330 esac
331fi
332AC_MSG_RESULT($LINKCC)
333
Martin v. Löwis1142de32002-03-29 16:28:31 +0000334AC_MSG_CHECKING(for --enable-shared)
335AC_ARG_ENABLE(shared,
336[ --enable-shared disable/enable building shared python library])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000337
Martin v. Löwis1142de32002-03-29 16:28:31 +0000338if test -z "$enable_shared"
339then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000340 case $ac_sys_system in
341 CYGWIN*)
342 enable_shared="yes";;
343 *)
344 enable_shared="no";;
345 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000346fi
347AC_MSG_RESULT($enable_shared)
348
349
350AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000351
Guido van Rossumb8552162001-09-05 14:58:11 +0000352# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
353# library that we build, but we do not want to link against it (we
354# will find it with a -framework option). For this reason there is an
355# extra variable BLDLIBRARY against which Python and the extension
356# modules are linked, BLDLIBRARY. This is normally the same as
357# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000358if test "$enable_framework"
359then
360 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
361 LDLIBRARYDIR='$(PYTHONFRAMEWORKDIR)'
362 BLDLIBRARY=''
363else
364 BLDLIBRARY='$(LDLIBRARY)'
365fi
366
Martin v. Löwis1142de32002-03-29 16:28:31 +0000367# Other platforms follow
368if test $enable_shared = "yes"; then
369 case $ac_sys_system in
370 BeOS*)
371 LDLIBRARY='libpython$(VERSION).so'
372 ;;
373 CYGWIN*)
374 LDLIBRARY='libpython$(VERSION).dll.a'
375 DLLLIBRARY='libpython$(VERSION).dll'
376 ;;
377 SunOS*)
378 LDLIBRARY='libpython$(VERSION).so'
379 BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)'
380 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
381 ;;
382 Linux*)
383 LDLIBRARY='libpython$(VERSION).so'
384 BLDLIBRARY='-L. -lpython$(VERSION)'
385 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
386 INSTSONAME="$LDLIBRARY".$SOVERSION
387 ;;
388 hp*|HP*)
389 LDLIBRARY='libpython$(VERSION).sl'
390 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
391 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
392 ;;
393 OSF*)
394 LDLIBRARY='libpython$(VERSION).so'
395 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
396 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
397 ;;
398 esac
399 # DG/UX requires some fancy ld contortions to produce a .so from an .a
400 case $MACHDEP in
401 dguxR4)
402 LDLIBRARY='libpython$(VERSION).so'
403 OPT="$OPT -pic"
404 ;;
405 esac
406fi
407
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000408AC_MSG_RESULT($LDLIBRARY)
409
Guido van Rossum627b2d71993-12-24 10:39:16 +0000410AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000411AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000412AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000413
414case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000415bsdos*|hp*|HP*)
416 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000417 if test -z "$INSTALL"
418 then
419 INSTALL="${srcdir}/install-sh -c"
420 fi
421esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000422AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000423
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000424# Not every filesystem supports hard links
425AC_SUBST(LN)
426if test -z "$LN" ; then
427 case $ac_sys_system in
428 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000429 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000430 *) LN=ln;;
431 esac
432fi
433
Fred Drake9f715822001-07-11 06:27:00 +0000434# Check for --with-pydebug
435AC_MSG_CHECKING(for --with-pydebug)
436AC_ARG_WITH(pydebug,
437[ --with-pydebug build with Py_DEBUG defined], [
438if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000439then
440 AC_DEFINE(Py_DEBUG, 1,
441 [Define if you want to build an interpreter with many run-time checks.])
442 AC_MSG_RESULT(yes);
443 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000444else AC_MSG_RESULT(no); Py_DEBUG='false'
445fi],
446[AC_MSG_RESULT(no)])
447
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000448# Optimizer/debugger flags
Guido van Rossumb418f891996-07-30 18:06:02 +0000449AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000450if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000451then
Guido van Rossumb5875b61997-07-18 23:29:09 +0000452 case $GCC in
453 yes)
454 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000455 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000456 if test "$Py_DEBUG" = 'true' ; then
457 # Optimization messes up debuggers, so turn it off for
458 # debug builds.
459 OPT="-g -Wall -Wstrict-prototypes"
460 else
461 OPT="-g -O3 -Wall -Wstrict-prototypes"
462 fi;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000463 *)
Fred Drake9f715822001-07-11 06:27:00 +0000464 OPT="-O3 -Wall -Wstrict-prototypes";;
465 esac
466 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000467 *)
468 case $ac_sys_system in
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000469 OpenUNIX*|UnixWare*)
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000470 OPT="-O -K pentium,host,inline,loop_unroll,alloca ";;
471 *)
472 OPT="-O";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000473 esac
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000474 esac
Jack Jansenca06bc62001-08-03 15:32:23 +0000475 case $ac_sys_system in
476 Darwin*)
Jack Jansen524a0982002-03-12 15:25:52 +0000477 OPT="$OPT -Wno-long-double -no-cpp-precomp";;
Jack Jansenca06bc62001-08-03 15:32:23 +0000478 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000479fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000480
Fred Drakee1ceaa02001-12-04 20:55:47 +0000481if test "$Py_DEBUG" = 'true'; then
482 :
483else
484 OPT="-DNDEBUG $OPT"
485fi
486
Trent Mick635f6fb2000-08-23 21:33:05 +0000487# The current (beta) Monterey compiler dies with optimizations
488case $ac_sys_system in
489Monterey*) OPT="";;
490esac
491
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000492if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000493then
494 OPT="$OPT $ac_arch_flags"
495fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000496
Guido van Rossum91922671997-10-09 20:24:13 +0000497AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
498AC_CACHE_VAL(ac_cv_opt_olimit_ok,
499[ac_save_cc="$CC"
500CC="$CC -OPT:Olimit=0"
501AC_TRY_RUN([int main() { return 0; }],
502 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000503 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000504 ac_cv_opt_olimit_ok=no)
505CC="$ac_save_cc"])
506AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000507if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000508 case $ac_sys_system in
509 Darwin*) OPT="$OPT" ;;
510 *) OPT="$OPT -OPT:Olimit=0";;
511 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000512else
513 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
514 AC_CACHE_VAL(ac_cv_olimit_ok,
515 [ac_save_cc="$CC"
516 CC="$CC -Olimit 1500"
517 AC_TRY_RUN([int main() { return 0; }],
518 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000519 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000520 ac_cv_olimit_ok=no)
521 CC="$ac_save_cc"])
522 AC_MSG_RESULT($ac_cv_olimit_ok)
523 if test $ac_cv_olimit_ok = yes; then
524 OPT="$OPT -Olimit 1500"
525 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000526fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000527
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000528# On some compilers, pthreads are available without further options
529# (e.g. MacOS X). On some of these systems, the compiler will not
530# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
531# So we have to see first whether pthreads are available without
532# options before we can check whether -Kpthread improves anything.
533AC_MSG_CHECKING(whether pthreads are available without options)
534AC_CACHE_VAL(ac_cv_pthread_is_default,
535[AC_TRY_RUN([
536#include <pthread.h>
537
538void* routine(void* p){return NULL;}
539
540int main(){
541 pthread_t p;
542 if(pthread_create(&p,NULL,routine,NULL)!=0)
543 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000544 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000545 return 0;
546}
547],
548 ac_cv_pthread_is_default=yes,
549 ac_cv_pthread_is_default=no,
550 ac_cv_pthread_is_default=no)
551])
552AC_MSG_RESULT($ac_cv_pthread_is_default)
553
554
555if test $ac_cv_pthread_is_default = yes
556then
557 ac_cv_kpthread=no
558else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000559# -Kpthread, if available, provides the right #defines
560# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000561# Some compilers won't report that they do not support -Kpthread,
562# so we need to run a program to see whether it really made the
563# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000564AC_MSG_CHECKING(whether $CC accepts -Kpthread)
565AC_CACHE_VAL(ac_cv_kpthread,
566[ac_save_cc="$CC"
567CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000568AC_TRY_RUN([
569#include <pthread.h>
570
571void* routine(void* p){return NULL;}
572
573int main(){
574 pthread_t p;
575 if(pthread_create(&p,NULL,routine,NULL)!=0)
576 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000577 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000578 return 0;
579}
580],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000581 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000582 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000583 ac_cv_kpthread=no)
584CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000585AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000586fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000587
Fred Drakece81d592000-07-09 14:39:29 +0000588dnl # check for ANSI or K&R ("traditional") preprocessor
589dnl AC_MSG_CHECKING(for C preprocessor type)
590dnl AC_TRY_COMPILE([
591dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
592dnl int foo;
593dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
594dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
595dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000596
Guido van Rossum627b2d71993-12-24 10:39:16 +0000597# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000598AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000599AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
600libintl.h locale.h ncurses.h poll.h pthread.h \
Eric S. Raymond13603592001-01-16 15:01:26 +0000601signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h termios.h \
Neal Norwitz3d949422002-04-20 13:46:43 +0000602sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h db_185.h db.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000603sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwis69532332001-10-13 09:12:41 +0000604sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Martin v. Löwis1ba3fd52001-08-10 20:29:40 +0000605ndbm.h db1/ndbm.h gdbm/ndbm.h sys/resource.h netpacket/packet.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000606AC_HEADER_DIRENT
Guido van Rossum627b2d71993-12-24 10:39:16 +0000607
608# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000609was_it_defined=no
610AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000611AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
612 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
613])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000614AC_MSG_RESULT($was_it_defined)
615
Guido van Rossum810cc512001-09-09 23:51:39 +0000616# Two defines needed to enable largefile support on various platforms
617# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000618AC_DEFINE(_LARGEFILE_SOURCE, 1,
619[This must be defined on some systems to enable large file support.])
620AC_DEFINE(_FILE_OFFSET_BITS, 64,
621[This must be set to 64 on some systems to enable large file support.])
Guido van Rossum810cc512001-09-09 23:51:39 +0000622
Guido van Rossum300fda71996-08-19 21:58:16 +0000623# Add some code to confdefs.h so that the test for off_t works on SCO
624cat >> confdefs.h <<\EOF
625#if defined(SCO_DS)
626#undef _OFF_T
627#endif
628EOF
629
Guido van Rossumef2255b2000-03-10 22:30:29 +0000630# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000631AC_TYPE_MODE_T
632AC_TYPE_OFF_T
633AC_TYPE_PID_T
634AC_TYPE_SIGNAL
635AC_TYPE_SIZE_T
636AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000637
Guido van Rossumef2255b2000-03-10 22:30:29 +0000638# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +0000639AC_CHECK_SIZEOF(int, 4)
640AC_CHECK_SIZEOF(long, 4)
641AC_CHECK_SIZEOF(void *, 4)
642AC_CHECK_SIZEOF(char, 1)
643AC_CHECK_SIZEOF(short, 2)
644AC_CHECK_SIZEOF(float, 4)
645AC_CHECK_SIZEOF(double, 8)
646AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +0000647
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000648AC_MSG_CHECKING(for long long support)
649have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000650AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
651 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
652 have_long_long=yes
653])
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000654AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000655if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000656AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000657fi
658
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000659AC_MSG_CHECKING(for uintptr_t support)
660have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000661AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
662 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
663 have_uintptr_t=yes
664])
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000665AC_MSG_RESULT($have_uintptr_t)
666if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +0000667AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +0000668fi
669
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000670# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
671AC_MSG_CHECKING(size of off_t)
672AC_CACHE_VAL(ac_cv_sizeof_off_t,
673[AC_TRY_RUN([#include <stdio.h>
674#include <sys/types.h>
675main()
676{
677 FILE *f=fopen("conftestval", "w");
678 if (!f) exit(1);
679 fprintf(f, "%d\n", sizeof(off_t));
680 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000681}],
682ac_cv_sizeof_off_t=`cat conftestval`,
683ac_cv_sizeof_off_t=0,
684ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000685])
686AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000687AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
688[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000689
690AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +0000691if test "$have_long_long" = yes -a \
692 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
693 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000694 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
695 [Defined to enable large file support when an off_t is bigger than a long
696 and long long is available and at least as big as an off_t. You may need
697 to add some flags for configuration and compilation to enable this mode.
698 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000699 AC_MSG_RESULT(yes)
700else
701 AC_MSG_RESULT(no)
702fi
703
Fred Drakea3f6e912000-06-29 20:44:47 +0000704# AC_CHECK_SIZEOF() doesn't include <time.h>.
705AC_MSG_CHECKING(size of time_t)
706AC_CACHE_VAL(ac_cv_sizeof_time_t,
707[AC_TRY_RUN([#include <stdio.h>
708#include <time.h>
709main()
710{
711 FILE *f=fopen("conftestval", "w");
712 if (!f) exit(1);
713 fprintf(f, "%d\n", sizeof(time_t));
714 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000715}],
716ac_cv_sizeof_time_t=`cat conftestval`,
717ac_cv_sizeof_time_t=0,
718ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +0000719])
720AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000721AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
722[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +0000723
Guido van Rossum00f0f6e1999-01-06 18:52:29 +0000724
Trent Mick635f6fb2000-08-23 21:33:05 +0000725# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000726ac_save_cc="$CC"
727if test "$ac_cv_kpthread" = "yes"
728then CC="$CC -Kpthread"
729fi
Trent Mick635f6fb2000-08-23 21:33:05 +0000730AC_MSG_CHECKING(for pthread_t)
731have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +0000732AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +0000733AC_MSG_RESULT($have_pthread_t)
734if test "$have_pthread_t" = yes ; then
735 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
736 AC_MSG_CHECKING(size of pthread_t)
737 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
738 [AC_TRY_RUN([#include <stdio.h>
739 #include <pthread.h>
740 main()
741 {
742 FILE *f=fopen("conftestval", "w");
743 if (!f) exit(1);
744 fprintf(f, "%d\n", sizeof(pthread_t));
745 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +0000746 }],
747 ac_cv_sizeof_pthread_t=`cat conftestval`,
748 ac_cv_sizeof_pthread_t=0,
749 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +0000750 ])
751 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000752 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
753 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +0000754fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +0000755CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +0000756
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000757AC_MSG_CHECKING(for --enable-toolbox-glue)
758AC_ARG_ENABLE(toolbox-glue,
759[ --enable-toolbox-glue disable/enable MacOSX glue code for extensions])
760
761if test -z "$enable_toolbox_glue"
762then
763 case $ac_sys_system/$ac_sys_release in
764 Darwin/*)
765 enable_toolbox_glue="yes";;
766 *)
767 enable_toolbox_glue="no";;
768 esac
769fi
770case "$enable_toolbox_glue" in
771yes)
Jack Jansen666b1e72001-10-31 12:11:48 +0000772 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000773 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +0000774 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000775 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
776 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000777 ;;
778*)
779 extra_frameworks=""
780 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +0000781 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000782 ;;
783esac
784AC_MSG_RESULT($enable_toolbox_glue)
785
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000786AC_SUBST(LIBTOOL_CRUFT)
787case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +0000788 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +0000789 ns_undef_sym='_environ'
Jack Jansen418c3b12001-11-14 10:59:57 +0000790 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc -U $ns_undef_sym"
791 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansena3891ea2001-09-07 14:25:12 +0000792 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
793 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +0000794 Darwin/*)
795 ns_undef_sym='_environ'
Jack Jansen418c3b12001-11-14 10:59:57 +0000796 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc -flat_namespace -U $ns_undef_sym"
797 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000798 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Python'
799 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000800esac
801
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000802AC_MSG_CHECKING(for --enable-framework)
803if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000804then
Jack Jansenca06bc62001-08-03 15:32:23 +0000805 OPT="$OPT -fno-common -dynamic"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000806 # -U __environ is needed since bundles don't have access
807 # to crt0 when built but will always be linked against it
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000808 # -F. is needed to allow linking to the framework while
809 # in the build location.
810
Jack Jansena3891ea2001-09-07 14:25:12 +0000811 case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +0000812 Darwin/1.3*)LDFLAGS="$LDFLAGS -Wl,-F. -Wl,-U,$ns_undef_sym";;
813 Darwin/*)LDFLAGS="$LDFLAGS -Wl,-F. -Wl,-flat_namespace,-U,$ns_undef_sym";;
Jack Jansena3891ea2001-09-07 14:25:12 +0000814 esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000815 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
816 [Define if you want to produce an OpenStep/Rhapsody framework
817 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000818 AC_MSG_RESULT(yes)
819else
820 AC_MSG_RESULT(no)
821fi
822
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000823AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000824case $ac_sys_system/$ac_sys_release in
825 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000826 AC_DEFINE(WITH_DYLD, 1,
827 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
828 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
829 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000830 AC_MSG_RESULT(always on for Darwin)
831 ;;
832 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000833 AC_MSG_RESULT(no)
834 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000835esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000836
Guido van Rossumac405f61994-09-12 10:56:06 +0000837# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +0000838AC_SUBST(SO)
839AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000840AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000841AC_SUBST(CCSHARED)
842AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000843# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +0000844# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000845AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000846if test -z "$SO"
847then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000848 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000849 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000850 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000851 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000852 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000853fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000854AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +0000855# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +0000856# -- "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 +0000857# (Shared libraries in this instance are shared modules to be loaded into
858# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000859AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000860if test -z "$LDSHARED"
861then
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000862 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000863 AIX*)
864 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +0000865 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000866 ;;
867 BeOS*)
868 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +0000869 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000870 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +0000871 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +0000872 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +0000873 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +0000874 SunOS/5*)
875 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +0000876 then LDSHARED='$(CC) -shared'
Martin v. Löwis5b718fc2001-09-10 15:34:42 +0000877 else LDSHARED="$(CC) -G";
Greg Ward57c9a6632000-05-26 12:22:54 +0000878 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000879 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +0000880 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +0000881 DYNIX/ptx*) LDSHARED="ld -G";;
Jack Jansen418c3b12001-11-14 10:59:57 +0000882 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +0000883 LDSHARED='$(CC) $(LDFLAGS) -bundle'
884 if test "$enable_framework" ; then
885 # Link against the framework. All externals should be defined.
886 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
887 else
888 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +0000889 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +0000890 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000891 Darwin/*)
892 LDSHARED='$(CC) $(LDFLAGS) -bundle'
893 if test "$enable_framework" ; then
894 # Link against the framework. All externals should be defined.
895 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
896 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +0000897 # No framework, use the Python app as bundle-loader
898 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
899 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/$(PYTHON)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000900 fi ;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +0000901 Linux*|GNU*) LDSHARED="gcc -shared";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000902 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +0000903 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis36546db2001-09-05 14:24:43 +0000904 OpenBSD*|NetBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +0000905 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +0000906 then
907 LDSHARED="cc -shared ${LDFLAGS}"
908 else
909 LDSHARED="ld -Bshareable ${LDFLAGS}"
910 fi;;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000911 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +0000912 if test "$GCC" = "yes"
913 then LDSHARED="$(CC) -shared"
Martin v. Löwis130fb172001-07-19 11:00:41 +0000914 else LDSHARED="$(CC) -G"
Martin v. Löwisbec19582001-03-21 15:57:54 +0000915 fi;;
Guido van Rossum300fda71996-08-19 21:58:16 +0000916 SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000917 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000918 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +0000919 *) LDSHARED="ld";;
920 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000921fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000922AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000923BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +0000924# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000925# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000926AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000927if test -z "$CCSHARED"
928then
Guido van Rossum6100aaf1997-04-29 21:48:51 +0000929 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +0000930 SunOS*) if test "$GCC" = yes;
931 then CCSHARED="-fPIC";
932 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +0000933 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +0000934 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +0000935 else CCSHARED="+z";
936 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +0000937 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +0000938 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +0000939 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000940 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +0000941 if test "$GCC" = "yes"
942 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +0000943 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +0000944 fi;;
Guido van Rossum300fda71996-08-19 21:58:16 +0000945 SCO_SV*) CCSHARED="-KPIC -dy -Bdynamic";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000946 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +0000947 IRIX*/6*) case $CC in
948 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +0000949 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +0000950 esac;;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000951 CYGWIN*) CCSHARED="-DUSE_DL_IMPORT";;
Guido van Rossumac405f61994-09-12 10:56:06 +0000952 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000953fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000954AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000955# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +0000956# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000957AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +0000958if test -z "$LINKFORSHARED"
959then
Guido van Rossum6100aaf1997-04-29 21:48:51 +0000960 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000961 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +0000962 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000963 LINKFORSHARED="-Wl,-E -Wl,+s";;
964# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +0000965 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +0000966 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000967 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000968 Darwin/*)
969 # -u __dummy makes the linker aware of the objc runtime
970 # in System.framework; otherwise, __objcInit (referenced in
971 # crt1.o) gets erroneously defined as common, which breaks dynamic
972 # loading of any modules which reference it in System.framework.
973 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
974 # not used by the core itself but which needs to be in the core so
975 # that dynamically loaded extension modules have access to it.
Jack Jansen591cbed2001-08-15 13:55:15 +0000976 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000977 if test "$enable_framework"
978 then
979 LINKFORSHARED="$LINKFORSHARED -framework Python"
980 fi
981 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +0000982 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Guido van Rossum300fda71996-08-19 21:58:16 +0000983 SCO_SV*) LINKFORSHARED="-Bdynamic -dy -Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +0000984 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +0000985 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +0000986 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
987 then
988 LINKFORSHARED="-Wl,--export-dynamic"
989 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +0000990 SunOS/5*) case $CC in
991 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +0000992 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +0000993 then
994 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +0000995 fi;;
996 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +0000997 esac
Guido van Rossumac405f61994-09-12 10:56:06 +0000998fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000999AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001000
Neil Schemenauer61c51152001-01-26 16:18:16 +00001001AC_SUBST(CFLAGSFORSHARED)
1002AC_MSG_CHECKING(CFLAGSFORSHARED)
1003if test ! "$LIBRARY" = "$LDLIBRARY"
1004then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001005 case $ac_sys_system in
1006 CYGWIN*)
1007 # Cygwin needs CCSHARED when building extension DLLs
1008 # but not when building the interpreter DLL.
1009 CFLAGSFORSHARED='';;
1010 *)
1011 CFLAGSFORSHARED='$(CCSHARED)'
1012 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001013fi
1014AC_MSG_RESULT($CFLAGSFORSHARED)
1015
Guido van Rossum627b2d71993-12-24 10:39:16 +00001016# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001017AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1018AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis41933dd2002-03-21 15:10:58 +00001019AC_CHECK_LIB(rt, sem_init) # 'Real Time' functions on Solaris
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001020
1021# checks for system dependent C++ extensions support
1022case "$ac_sys_system" in
1023 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1024 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1025 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001026 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1027 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1028 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001029 AC_MSG_RESULT(yes)],
1030 [AC_MSG_RESULT(no)]);;
1031 *) ;;
1032esac
1033
Guido van Rossum70c7f481998-03-26 18:44:10 +00001034# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
1035# However on SGI IRIX, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001036# BeOS' sockets are stashed in libnet.
1037case "$ac_sys_system" in
1038IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001039*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001040AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001041AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001042;;
1043esac
1044case "$ac_sys_system" in
1045BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001046AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1047;;
1048esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001049
Guido van Rossumc5a39031996-07-31 17:35:03 +00001050AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001051AC_ARG_WITH(libs,
1052[ --with-libs='lib1 ...' link against additional libs], [
Guido van Rossumc5a39031996-07-31 17:35:03 +00001053AC_MSG_RESULT($withval)
1054LIBS="$withval $LIBS"
1055], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001056
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001057# Determine if signalmodule should be used.
1058AC_SUBST(USE_SIGNAL_MODULE)
1059AC_SUBST(SIGNAL_OBJS)
1060AC_MSG_CHECKING(for --with-signal-module)
1061AC_ARG_WITH(signal-module,
1062[ --with-signal-module disable/enable signal module])
1063
1064if test -z "$with_signal_module"
1065then with_signal_module="yes"
1066fi
1067AC_MSG_RESULT($with_signal_module)
1068
1069if test "${with_signal_module}" = "yes"; then
1070 USE_SIGNAL_MODULE=""
1071 SIGNAL_OBJS=""
1072else
1073 USE_SIGNAL_MODULE="#"
1074 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1075fi
1076
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001077# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001078AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001079USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001080
Guido van Rossum54d93d41997-01-22 20:51:58 +00001081AC_MSG_CHECKING(for --with-dec-threads)
1082AC_SUBST(LDLAST)
1083AC_ARG_WITH(dec-threads,
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001084[ --with-dec-threads use DEC Alpha/OSF1 thread-safe libraries], [
1085AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001086LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001087if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001088 with_thread="$withval";
1089fi],
1090AC_MSG_RESULT(no))
1091
Martin v. Löwis11437992002-04-12 09:54:03 +00001092# Templates for things AC_DEFINEd more than once.
1093# For a single AC_DEFINE, no template is needed.
1094AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1095AH_TEMPLATE(_REENTRANT,
1096 [Define to force use of thread-safe errno, h_errno, and other functions])
1097AH_TEMPLATE(WITH_THREAD,
1098 [Define if you want to compile in rudimentary thread support])
1099
Guido van Rossum54d93d41997-01-22 20:51:58 +00001100AC_MSG_CHECKING(for --with-threads)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001101AC_ARG_WITH(threads,
1102[ --with(out)-threads[=DIRECTORY] disable/enable thread support])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001103
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001104# --with-thread is deprecated, but check for it anyway
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001105AC_ARG_WITH(thread,
1106[ --with(out)-thread[=DIRECTORY] deprecated; use --with(out)-threads],[
1107with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001108
1109if test -z "$with_threads"
1110then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001111fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001112AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001113
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001114AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001115if test "$with_threads" = "no"
1116then
1117 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001118elif test "$ac_cv_pthread_is_default" = yes
1119then
1120 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001121 # Defining _REENTRANT on system with POSIX threads should not hurt.
1122 AC_DEFINE(_REENTRANT)
1123 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001124 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001125elif test "$ac_cv_kpthread" = "yes"
1126then
1127 CC="$CC -Kpthread"
1128 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001129 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001130 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001131else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001132 if test ! -z "$with_threads" -a -d "$with_threads"
1133 then LDFLAGS="$LDFLAGS -L$with_threads"
1134 fi
1135 if test ! -z "$withval" -a -d "$withval"
1136 then LDFLAGS="$LDFLAGS -L$withval"
1137 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001138
1139 # According to the POSIX spec, a pthreads implementation must
1140 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1141 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1142 AC_EGREP_CPP(yes,
1143 [#include <unistd.h>
1144 #ifdef _POSIX_THREADS
1145 yes
1146 #endif
1147 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1148 AC_MSG_RESULT($unistd_defines_pthreads)
1149
Martin v. Löwis130fb172001-07-19 11:00:41 +00001150 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001151 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1152 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001153 AC_DEFINE(HURD_C_THREADS, 1,
1154 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001155 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001156 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001157 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1158 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001159 AC_DEFINE(MACH_C_THREADS, 1,
1160 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001161 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001162 AC_MSG_CHECKING(for --with-pth)
1163 AC_ARG_WITH(pth,
1164 [ --with-pth use GNU pth threading libraries], [
1165 AC_MSG_RESULT($withval)
1166 AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001167 AC_DEFINE(HAVE_PTH, 1, [Define if you have GNU PTH threads.])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001168 LIBS="-lpth $LIBS"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001169 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001170 AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001171
1172 # Just looking for pthread_create in libpthread is not enough:
1173 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1174 # So we really have to include pthread.h, and then link.
1175 _libs=$LIBS
1176 LIBS="$LIBS -lpthread"
1177 AC_MSG_CHECKING([for pthread_create in -lpthread])
1178 AC_TRY_LINK([#include <pthread.h>
1179
1180void * start_routine (void *arg) { exit (0); }], [
1181pthread_create (NULL, NULL, start_routine, NULL)], [
1182 AC_MSG_RESULT(yes)
1183 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001184 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001185 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001186 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001187 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001188 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001189 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001190 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001191 AC_DEFINE(BEOS_THREADS, 1,
1192 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001193 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001194 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001195 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001196 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001197 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001198 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001199 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001200 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001201 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001202 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001203 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001204 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001205 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001206 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001207 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001208 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001209 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001210 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001211 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001212 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001213 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001214 USE_THREAD_MODULE="#"])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001215 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001216
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001217 if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001218 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001219 AC_DEFINE(_POSIX_THREADS, 1,
1220 [Define if you have POSIX threads,
1221 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001222 fi
1223
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001224 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1225 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1226 [AC_TRY_RUN([#include <pthread.h>
1227 void *foo(void *parm) {
1228 return NULL;
1229 }
1230 main() {
1231 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001232 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001233 if (pthread_attr_init(&attr)) exit(-1);
1234 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001235 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001236 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001237 }],
1238 ac_cv_pthread_system_supported=yes,
1239 ac_cv_pthread_system_supported=no,
1240 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001241 ])
1242 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1243 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001244 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001245 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001246 AC_CHECK_FUNCS(pthread_sigmask)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001247 fi
1248
Martin v. Löwis130fb172001-07-19 11:00:41 +00001249 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1250 LIBS="$LIBS -lmpc"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001251 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001252 USE_THREAD_MODULE=""])
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001253
1254 if test $posix_threads != "yes"; then
1255 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1256 LIBS="$LIBS -lthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001257 THREADOBJ="Python/thread.o"
Martin v. Löwis3d2b5492002-03-15 13:48:21 +00001258 USE_THREAD_MODULE=""])
1259 fi
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001260
Martin v. Löwis130fb172001-07-19 11:00:41 +00001261 if test "$USE_THREAD_MODULE" != "#"
1262 then
1263 # If the above checks didn't disable threads, (at least) OSF1
1264 # needs this '-threads' argument during linking.
1265 case $ac_sys_system in
1266 OSF1) LDLAST=-threads;;
1267 esac
Jeremy Hylton1a2ca862000-10-16 16:59:12 +00001268 fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001269fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001270
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001271# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001272AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001273AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001274AC_ARG_ENABLE(ipv6,
1275[ --enable-ipv6 Enable ipv6 (with ipv4) support
1276 --disable-ipv6 Disable ipv6 support],
1277[ case "$enableval" in
1278 no)
1279 AC_MSG_RESULT(no)
1280 ipv6=no
1281 ;;
1282 *) AC_MSG_RESULT(yes)
1283 AC_DEFINE(ENABLE_IPV6)
1284 ipv6=yes
1285 ;;
1286 esac ],
1287
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001288[
1289dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001290 AC_TRY_RUN([ /* AF_INET6 available check */
1291#include <sys/types.h>
1292#include <sys/socket.h>
1293main()
1294{
1295 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1296 exit(1);
1297 else
1298 exit(0);
1299}
1300],
1301 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001302 ipv6=yes,
1303 AC_MSG_RESULT(no)
1304 ipv6=no,
1305 AC_MSG_RESULT(no)
1306 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001307)
1308
1309if test "$ipv6" = "yes"; then
1310 AC_MSG_CHECKING(if RFC2553 API is available)
1311 AC_TRY_COMPILE([#include <sys/types.h>
1312#include <netinet/in.h>],
1313 [struct sockaddr_in6 x;
1314x.sin6_scope_id;],
1315 AC_MSG_RESULT(yes)
1316 ipv6=yes,
1317 AC_MSG_RESULT(no, IPv6 disabled)
1318 ipv6=no)
1319fi
1320
1321if test "$ipv6" = "yes"; then
1322 AC_DEFINE(ENABLE_IPV6)
1323fi
1324])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001325
1326ipv6type=unknown
1327ipv6lib=none
1328ipv6trylibc=no
1329
1330if test "$ipv6" = "yes"; then
1331 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001332 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1333 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001334 case $i in
1335 inria)
1336 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001337 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001338#include <netinet/in.h>
1339#ifdef IPV6_INRIA_VERSION
1340yes
1341#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001342 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001343 ;;
1344 kame)
1345 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001346 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001347#include <netinet/in.h>
1348#ifdef __KAME__
1349yes
1350#endif],
1351 [ipv6type=$i;
1352 ipv6lib=inet6
1353 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001354 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001355 ;;
1356 linux-glibc)
1357 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001358 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001359#include <features.h>
1360#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1361yes
1362#endif],
1363 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001364 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001365 ;;
1366 linux-inet6)
1367 dnl http://www.v6.linux.or.jp/
1368 if test -d /usr/inet6; then
1369 ipv6type=$i
1370 ipv6lib=inet6
1371 ipv6libdir=/usr/inet6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001372 OPT="-I/usr/inet6/include $OPT"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001373 fi
1374 ;;
1375 solaris)
1376 if test -f /etc/netconfig; then
1377 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1378 ipv6type=$i
1379 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001380 fi
1381 fi
1382 ;;
1383 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001384 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001385#include <sys/param.h>
1386#ifdef _TOSHIBA_INET6
1387yes
1388#endif],
1389 [ipv6type=$i;
1390 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001391 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001392 ;;
1393 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001394 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001395#include </usr/local/v6/include/sys/v6config.h>
1396#ifdef __V6D__
1397yes
1398#endif],
1399 [ipv6type=$i;
1400 ipv6lib=v6;
1401 ipv6libdir=/usr/local/v6/lib;
1402 OPT="-I/usr/local/v6/include $OPT"])
1403 ;;
1404 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001405 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001406#include <sys/param.h>
1407#ifdef _ZETA_MINAMI_INET6
1408yes
1409#endif],
1410 [ipv6type=$i;
1411 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001412 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001413 ;;
1414 esac
1415 if test "$ipv6type" != "unknown"; then
1416 break
1417 fi
1418 done
1419 AC_MSG_RESULT($ipv6type)
1420fi
1421
1422if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1423 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1424 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1425 echo "using lib$ipv6lib"
1426 else
1427 if test $ipv6trylibc = "yes"; then
1428 echo "using libc"
1429 else
1430 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1431 echo "You need to fetch lib$ipv6lib.a from appropriate"
1432 echo 'ipv6 kit and compile beforehand.'
1433 exit 1
1434 fi
1435 fi
1436fi
1437
Barry Warsawef82cd72000-06-30 16:21:01 +00001438# Check for GC support
Barry Warsawef82cd72000-06-30 16:21:01 +00001439AC_MSG_CHECKING(for --with-cycle-gc)
1440AC_ARG_WITH(cycle-gc,
1441[ --with(out)-cycle-gc disable/enable garbage collection])
1442
1443if test -z "$with_cycle_gc"
1444then with_cycle_gc="yes"
1445fi
Neil Schemenauer9c63e6d2001-08-29 23:44:38 +00001446if test "$with_cycle_gc" != "no"
Barry Warsawef82cd72000-06-30 16:21:01 +00001447then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001448 AC_DEFINE(WITH_CYCLE_GC, 1,
1449 [Define if you want to compile in cycle garbage collection.])
Barry Warsawef82cd72000-06-30 16:21:01 +00001450fi
1451AC_MSG_RESULT($with_cycle_gc)
1452
Jack Jansen7b8c7542002-04-14 20:12:41 +00001453# Check for universal newline support
1454AC_MSG_CHECKING(for --with-universal-newline)
1455AC_ARG_WITH(universal-newlines,
1456[ --with(out)-universal-newlines disable/enable foreign newlines])
1457
1458if test -z "$with_universal_newlines"
1459then with_universal_newlines="yes"
1460fi
1461if test "$with_universal_newlines" != "no"
1462then
Martin v. Löwise8aea582002-04-16 05:51:02 +00001463 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1464 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001465fi
1466AC_MSG_RESULT($with_universal_newlines)
1467
Neil Schemenauera35c6882001-02-27 04:45:05 +00001468# Check for Python-specific malloc support
1469AC_MSG_CHECKING(for --with-pymalloc)
1470AC_ARG_WITH(pymalloc,
Neil Schemenauer16c22972002-03-22 15:34:49 +00001471[ --with(out)-pymalloc disable/enable specialized mallocs])
1472
1473if test -z "$with_pymalloc"
1474then with_pymalloc="yes"
1475fi
1476if test "$with_pymalloc" != "no"
1477then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001478 AC_DEFINE(WITH_PYMALLOC, 1,
1479 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001480fi
1481AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001482
Barry Warsawef82cd72000-06-30 16:21:01 +00001483# Check for --with-wctype-functions
1484AC_MSG_CHECKING(for --with-wctype-functions)
1485AC_ARG_WITH(wctype-functions,
1486[ --with-wctype-functions use wctype.h functions], [
1487if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001488then
1489 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1490 [Define if you want wctype.h functions to be used instead of the
1491 one supplied by Python itself. (see Include/unicodectype.h).])
1492 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001493else AC_MSG_RESULT(no)
1494fi],
1495[AC_MSG_RESULT(no)])
1496
Guido van Rossum68242b51996-05-28 22:53:03 +00001497# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001498AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001499DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001500
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001501AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001502AC_ARG_WITH(sgi-dl,
1503[ --with-sgi-dl=DIRECTORY IRIX 4 dynamic linking], [
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001504AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001505AC_DEFINE(WITH_SGI_DL, 1,
1506 [Define if you want to use SGI (IRIX 4) dynamic linking.
1507 This requires the "dl" library by Jack Jansen,
1508 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1509 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1510 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001511DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001512dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001513if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001514then LDFLAGS="$LDFLAGS -L$dldir"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001515else AC_ERROR(proper usage is --with-sgi-dl=DIRECTORY)
1516fi
1517DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001518LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001519
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001520AC_MSG_CHECKING(for --with-dl-dld)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001521AC_ARG_WITH(dl-dld, [ --with-dl-dld=DL_DIR,DLD_DIR GNU dynamic linking], [
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001522AC_MSG_RESULT($withval)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001523AC_DEFINE(WITH_DL_DLD, 1,
1524 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1525 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1526 Sequent Symmetry (Dynix), and Atari ST.
1527 This requires the 'dl-dld' library,
1528 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1529 as well as the 'GNU dld' library,
1530 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1531 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1532 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001533DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001534dldir=`echo "$withval" | sed 's/,.*//'`
1535dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001536if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001537then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001538else AC_ERROR(proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY)
1539fi
1540DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001541LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001542
Guido van Rossume97ee181999-12-20 21:27:22 +00001543# the dlopen() function means we might want to use dynload_shlib.o. some
1544# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001545AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001546
1547# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1548# loading of modules.
1549AC_SUBST(DYNLOADFILE)
1550AC_MSG_CHECKING(DYNLOADFILE)
1551if test -z "$DYNLOADFILE"
1552then
1553 case $ac_sys_system/$ac_sys_release in
1554 AIX*) DYNLOADFILE="dynload_aix.o";;
1555 BeOS*) DYNLOADFILE="dynload_beos.o";;
1556 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001557 Darwin/*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001558 *)
1559 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1560 # out any dynamic loading
1561 if test "$ac_cv_func_dlopen" = yes
1562 then DYNLOADFILE="dynload_shlib.o"
1563 else DYNLOADFILE="dynload_stub.o"
1564 fi
1565 ;;
1566 esac
1567fi
1568AC_MSG_RESULT($DYNLOADFILE)
1569if test "$DYNLOADFILE" != "dynload_stub.o"
1570then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001571 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1572 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001573fi
1574
Jack Jansenc49e5b72001-06-19 15:00:23 +00001575# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1576
1577AC_SUBST(MACHDEP_OBJS)
1578AC_MSG_CHECKING(MACHDEP_OBJS)
1579if test -z "$MACHDEP_OBJS"
1580then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001581 MACHDEP_OBJS=$extra_machdep_objs
1582else
1583 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001584fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001585AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001586
Guido van Rossum627b2d71993-12-24 10:39:16 +00001587# checks for library functions
Martin v. Löwis244edc82001-10-04 22:44:26 +00001588AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \
Fred Drake6b3cc522002-04-15 19:20:27 +00001589 fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwisf95dd0a2001-08-15 17:14:33 +00001590 gai_strerror getgroups getlogin getpeername getpid getpwent getwd \
Martin v. Löwis06a83e92002-04-14 10:19:44 +00001591 hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \
Andrew M. Kuchling5821b772000-08-25 01:14:08 +00001592 nice pathconf pause plock poll pthread_init \
Fred Drake35a092f1999-12-13 16:23:35 +00001593 putenv readlink \
Martin v. Löwis61c5edf2001-10-18 04:06:00 +00001594 select setegid seteuid setgid setgroups \
Martin v. Löwis791bfda2001-07-24 06:33:08 +00001595 setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
Fred Drake35a092f1999-12-13 16:23:35 +00001596 sigaction siginterrupt sigrelse strftime strptime symlink sysconf \
Fred Drake89143df1999-12-09 22:03:25 +00001597 tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Guido van Rossumc524d952001-10-19 01:31:59 +00001598 truncate uname unsetenv waitpid _getpty getpriority)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001599
Fred Drake8cef4cf2000-06-28 16:40:38 +00001600# check for openpty and forkpty
1601
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001602AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
1603AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00001604
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001605# check for long file support functions
1606AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
1607
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00001608AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001609AC_CHECK_FUNCS(getpgrp,
1610 AC_TRY_COMPILE([#include <unistd.h>],
1611 [getpgrp(0);],
1612 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
1613 [Define if getpgrp() must be called as getpgrp(0).])
1614 )
1615)
1616AC_CHECK_FUNCS(setpgrp,
1617 AC_TRY_COMPILE([#include <unistd.h>],
1618 [setpgrp(0,0);],
1619 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
1620 [Define if setpgrp() must be called as setpgrp(0, 0).])
1621 )
1622)
1623AC_CHECK_FUNCS(gettimeofday,
1624 AC_TRY_COMPILE([#include <sys/time.h>],
1625 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
1626 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
1627 [Define if gettimeofday() does not have second (timezone) argument
1628 This is the case on Motorola V4 (R40V4.2)])
1629 )
1630)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001631
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001632
1633# On OSF/1 V5.1, getaddrinfo is available, but a define
1634# for [no]getaddrinfo in netdb.h.
1635AC_MSG_CHECKING(for getaddrinfo)
1636AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001637#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001638#include <sys/socket.h>
1639#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00001640#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001641],[
1642getaddrinfo(NULL, NULL, NULL, NULL);
1643], [
1644AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001645AC_MSG_CHECKING(getaddrinfo bug)
1646AC_TRY_RUN([
1647#include <sys/types.h>
1648#include <netdb.h>
1649#include <string.h>
1650#include <sys/socket.h>
1651#include <netinet/in.h>
1652
1653main()
1654{
1655 int passive, gaierr, inet4 = 0, inet6 = 0;
1656 struct addrinfo hints, *ai, *aitop;
1657 char straddr[INET6_ADDRSTRLEN], strport[16];
1658
1659 for (passive = 0; passive <= 1; passive++) {
1660 memset(&hints, 0, sizeof(hints));
1661 hints.ai_family = AF_UNSPEC;
1662 hints.ai_flags = passive ? AI_PASSIVE : 0;
1663 hints.ai_socktype = SOCK_STREAM;
1664 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
1665 (void)gai_strerror(gaierr);
1666 goto bad;
1667 }
1668 for (ai = aitop; ai; ai = ai->ai_next) {
1669 if (ai->ai_addr == NULL ||
1670 ai->ai_addrlen == 0 ||
1671 getnameinfo(ai->ai_addr, ai->ai_addrlen,
1672 straddr, sizeof(straddr), strport, sizeof(strport),
1673 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
1674 goto bad;
1675 }
1676 switch (ai->ai_family) {
1677 case AF_INET:
1678 if (strcmp(strport, "54321") != 0) {
1679 goto bad;
1680 }
1681 if (passive) {
1682 if (strcmp(straddr, "0.0.0.0") != 0) {
1683 goto bad;
1684 }
1685 } else {
1686 if (strcmp(straddr, "127.0.0.1") != 0) {
1687 goto bad;
1688 }
1689 }
1690 inet4++;
1691 break;
1692 case AF_INET6:
1693 if (strcmp(strport, "54321") != 0) {
1694 goto bad;
1695 }
1696 if (passive) {
1697 if (strcmp(straddr, "::") != 0) {
1698 goto bad;
1699 }
1700 } else {
1701 if (strcmp(straddr, "::1") != 0) {
1702 goto bad;
1703 }
1704 }
1705 inet6++;
1706 break;
1707 case AF_UNSPEC:
1708 goto bad;
1709 break;
1710 default:
1711 /* another family support? */
1712 break;
1713 }
1714 }
1715 }
1716
1717 if (!(inet4 == 0 || inet4 == 2))
1718 goto bad;
1719 if (!(inet6 == 0 || inet6 == 2))
1720 goto bad;
1721
1722 if (aitop)
1723 freeaddrinfo(aitop);
1724 exit(0);
1725
1726 bad:
1727 if (aitop)
1728 freeaddrinfo(aitop);
1729 exit(1);
1730}
1731],
1732AC_MSG_RESULT(good)
1733buggygetaddrinfo=no,
1734AC_MSG_RESULT(buggy)
1735buggygetaddrinfo=yes,
1736AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001737buggygetaddrinfo=yes)], [
1738AC_MSG_RESULT(no)
1739buggygetaddrinfo=yes
1740])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001741
1742if test "$buggygetaddrinfo" = "yes"; then
1743 if test "$ipv6" = "yes"; then
1744 echo 'Fatal: You must get working getaddrinfo() function.'
1745 echo ' or you can specify "--disable-ipv6"'.
1746 exit 1
1747 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00001748else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001749 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001750fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00001751AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001752
Guido van Rossum627b2d71993-12-24 10:39:16 +00001753# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001754AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00001755AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001756AC_STRUCT_TIMEZONE
Guido van Rossum98bf58f2001-10-18 20:34:25 +00001757AC_STRUCT_ST_RDEV
1758AC_STRUCT_ST_BLKSIZE
1759AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001760
1761AC_MSG_CHECKING(for time.h that defines altzone)
1762AC_CACHE_VAL(ac_cv_header_time_altzone,
1763[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
1764 ac_cv_header_time_altzone=yes,
1765 ac_cv_header_time_altzone=no)])
1766AC_MSG_RESULT($ac_cv_header_time_altzone)
1767if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001768 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001769fi
1770
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001771was_it_defined=no
1772AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001773AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001774#include <sys/types.h>
1775#include <sys/select.h>
1776#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001777], [;], [
1778 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
1779 [Define if you can safely include both <sys/select.h> and <sys/time.h>
1780 (which you can't on SCO ODT 3.0).])
1781 was_it_defined=yes
1782])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001783AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001784
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001785AC_MSG_CHECKING(for addrinfo)
1786AC_CACHE_VAL(ac_cv_struct_addrinfo,
1787AC_TRY_COMPILE([
1788# include <netdb.h>],
1789 [struct addrinfo a],
1790 ac_cv_struct_addrinfo=yes,
1791 ac_cv_struct_addrinfo=no))
1792AC_MSG_RESULT($ac_cv_struct_addrinfo)
1793if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001794 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001795fi
1796
1797AC_MSG_CHECKING(for sockaddr_storage)
1798AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
1799AC_TRY_COMPILE([
1800# include <sys/types.h>
1801# include <sys/socket.h>],
1802 [struct sockaddr_storage s],
1803 ac_cv_struct_sockaddr_storage=yes,
1804 ac_cv_struct_sockaddr_storage=no))
1805AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
1806if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001807 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001808fi
1809
Guido van Rossum627b2d71993-12-24 10:39:16 +00001810# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001811
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001812AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001813AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001814
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001815works=no
1816AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001817AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
1818 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
1819)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001820AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00001821
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001822works=no
1823AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001824AC_TRY_COMPILE([], [signed char c;], works=yes,
1825 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
1826)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001827AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001828
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001829have_prototypes=no
1830AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001831AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
1832 AC_DEFINE(HAVE_PROTOTYPES, 1,
1833 [Define if your compiler supports function prototype])
1834 have_prototypes=yes
1835])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001836AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001837
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001838works=no
1839AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001840AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001841#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00001842int foo(int x, ...) {
1843 va_list va;
1844 va_start(va, x);
1845 va_arg(va, int);
1846 va_arg(va, char *);
1847 va_arg(va, double);
1848 return 0;
1849}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001850], [return foo(10, "", 3.14);], [
1851 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
1852 [Define if your compiler supports variable length function prototypes
1853 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
1854 works=yes
1855])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001856AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001857
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001858if test "$have_prototypes" = yes; then
1859bad_prototypes=no
1860AC_MSG_CHECKING(for bad exec* prototypes)
1861AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001862 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
1863 [Define if your <unistd.h> contains bad prototypes for exec*()
1864 (as it does on SGI IRIX 4.x)])
1865 bad_prototypes=yes
1866)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001867AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001868fi
1869
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001870# check if sockaddr has sa_len member
1871AC_MSG_CHECKING(if sockaddr has sa_len member)
1872AC_TRY_COMPILE([#include <sys/types.h>
1873#include <sys/socket.h>],
1874[struct sockaddr x;
1875x.sa_len = 0;],
1876 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001877 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00001878 AC_MSG_RESULT(no))
1879
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001880AC_MSG_CHECKING(for bad static forward)
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +00001881AC_CACHE_VAL(ac_cv_bad_static_forward,
1882[AC_TRY_RUN([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001883struct s { int a; int b; };
1884static struct s foo;
Guido van Rossum5dee5e71994-11-10 23:06:54 +00001885int foobar() {
1886 static int random;
1887 random = (int) &foo;
1888 return random;
1889}
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001890static struct s foo = { 1, 2 };
Guido van Rossum5dee5e71994-11-10 23:06:54 +00001891main() {
1892 exit(!((int)&foo == foobar()));
Guido van Rossum3065c942001-09-17 04:03:14 +00001893}],
1894ac_cv_bad_static_forward=no,
1895ac_cv_bad_static_forward=yes,
1896ac_cv_bad_static_forward=no)])
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +00001897AC_MSG_RESULT($ac_cv_bad_static_forward)
1898if test "$ac_cv_bad_static_forward" = yes
1899then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001900 AC_DEFINE(BAD_STATIC_FORWARD, 1,
1901 [Define if your compiler botches static forward declarations
1902 (as it does on SCI ODT 3.0)])
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +00001903fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001904
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001905va_list_is_array=no
1906AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001907AC_TRY_COMPILE([
1908#ifdef HAVE_STDARG_PROTOTYPES
1909#include <stdarg.h>
1910#else
1911#include <varargs.h>
1912#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001913], [va_list list1, list2; list1 = list2;], , [
1914 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
1915 va_list_is_array=yes
1916])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001917AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001918
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001919# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00001920AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
1921 [Define this if you have some version of gethostbyname_r()])
1922
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001923AC_CHECK_FUNC(gethostbyname_r, [
1924 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1925 AC_MSG_CHECKING([gethostbyname_r with 6 args])
1926 OLD_CFLAGS=$CFLAGS
1927 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
1928 AC_TRY_COMPILE([
1929# include <netdb.h>
1930 ], [
1931 char *name;
1932 struct hostent *he, *res;
1933 char buffer[2048];
1934 int buflen = 2048;
1935 int h_errnop;
1936
1937 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
1938 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00001939 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001940 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
1941 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001942 AC_MSG_RESULT(yes)
1943 ], [
1944 AC_MSG_RESULT(no)
1945 AC_MSG_CHECKING([gethostbyname_r with 5 args])
1946 AC_TRY_COMPILE([
1947# include <netdb.h>
1948 ], [
1949 char *name;
1950 struct hostent *he;
1951 char buffer[2048];
1952 int buflen = 2048;
1953 int h_errnop;
1954
1955 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
1956 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00001957 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001958 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
1959 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001960 AC_MSG_RESULT(yes)
1961 ], [
1962 AC_MSG_RESULT(no)
1963 AC_MSG_CHECKING([gethostbyname_r with 3 args])
1964 AC_TRY_COMPILE([
1965# include <netdb.h>
1966 ], [
1967 char *name;
1968 struct hostent *he;
1969 struct hostent_data data;
1970
1971 (void) gethostbyname_r(name, he, &data);
1972 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00001973 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001974 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
1975 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001976 AC_MSG_RESULT(yes)
1977 ], [
1978 AC_MSG_RESULT(no)
1979 ])
1980 ])
1981 ])
1982 CFLAGS=$OLD_CFLAGS
1983], [
Thomas Wouters3a584202000-08-05 23:28:51 +00001984 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001985])
1986AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
1987AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
1988AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00001989AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00001990AC_SUBST(HAVE_GETHOSTBYNAME)
1991
Guido van Rossum627b2d71993-12-24 10:39:16 +00001992# checks for system services
1993# (none yet)
1994
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001995# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00001996AC_CHECK_FUNC(__fpu_control,
1997 [],
1998 [AC_CHECK_LIB(ieee, __fpu_control)
1999])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002000
Guido van Rossum93274221997-05-09 02:42:00 +00002001# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002002AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002003AC_ARG_WITH(fpectl,
2004[ --with-fpectl enable SIGFPE catching], [
Guido van Rossum93274221997-05-09 02:42:00 +00002005if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002006then
2007 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2008 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2009 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002010else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002011fi],
2012[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002013
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002014# check for --with-libm=...
2015AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002016case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002017Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002018BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002019*) LIBM=-lm
2020esac
Guido van Rossum93274221997-05-09 02:42:00 +00002021AC_MSG_CHECKING(for --with-libm=STRING)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002022AC_ARG_WITH(libm, [ --with-libm=STRING math library], [
Guido van Rossum93274221997-05-09 02:42:00 +00002023if test "$withval" = no
2024then LIBM=
2025 AC_MSG_RESULT(force LIBM empty)
2026elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002027then LIBM=$withval
Guido van Rossum93274221997-05-09 02:42:00 +00002028 AC_MSG_RESULT(set LIBM=\"$withval\")
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002029else AC_ERROR(proper usage is --with-libm=STRING)
Guido van Rossum93274221997-05-09 02:42:00 +00002030fi],
2031[AC_MSG_RESULT(default LIBM=\"$LIBM\")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002032
2033# check for --with-libc=...
2034AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002035AC_MSG_CHECKING(for --with-libc=STRING)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002036AC_ARG_WITH(libc, [ --with-libc=STRING C library], [
Guido van Rossum93274221997-05-09 02:42:00 +00002037if test "$withval" = no
2038then LIBC=
2039 AC_MSG_RESULT(force LIBC empty)
2040elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002041then LIBC=$withval
Guido van Rossum93274221997-05-09 02:42:00 +00002042 AC_MSG_RESULT(set LIBC=\"$withval\")
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002043else AC_ERROR(proper usage is --with-libc=STRING)
Guido van Rossum93274221997-05-09 02:42:00 +00002044fi],
2045[AC_MSG_RESULT(default LIBC=\"$LIBC\")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002046
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002047# check for hypot() in math library
2048LIBS_SAVE=$LIBS
2049LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002050AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002051LIBS=$LIBS_SAVE
2052
Guido van Rossumad713701997-07-10 22:42:38 +00002053# check whether malloc(0) returns NULL or not
Guido van Rossumad713701997-07-10 22:42:38 +00002054AC_MSG_CHECKING(what malloc(0) returns)
2055AC_CACHE_VAL(ac_cv_malloc_zero,
2056[AC_TRY_RUN([#include <stdio.h>
2057#ifdef HAVE_STDLIB
2058#include <stdlib.h>
2059#else
2060char *malloc(), *realloc();
2061int *free();
2062#endif
2063main() {
2064 char *p;
2065 p = malloc(0);
2066 if (p == NULL) exit(1);
2067 p = realloc(p, 0);
2068 if (p == NULL) exit(1);
2069 free(p);
2070 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002071}],
2072ac_cv_malloc_zero=nonnull,
2073ac_cv_malloc_zero=null,
2074ac_cv_malloc_zero=nonnull)]) # XXX arm cross-compile?
Guido van Rossumad713701997-07-10 22:42:38 +00002075AC_MSG_RESULT($ac_cv_malloc_zero)
2076if test "$ac_cv_malloc_zero" = null
2077then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002078 AC_DEFINE(MALLOC_ZERO_RETURNS_NULL, 1,
2079 [Define if malloc(0) returns a NULL pointer.])
Guido van Rossumad713701997-07-10 22:42:38 +00002080fi
2081
Guido van Rossumef2255b2000-03-10 22:30:29 +00002082# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002083AC_CHECK_HEADER(wchar.h, [
2084 AC_DEFINE(HAVE_WCHAR_H, 1,
2085 [Define if the compiler provides a wchar.h header file.])
2086 wchar_h="yes"
2087],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002088wchar_h="no"
2089)
2090
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002091# determine wchar_t size
2092if test "$wchar_h" = yes
2093then
Guido van Rossum67b26592001-10-20 14:21:45 +00002094 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002095fi
2096
2097AC_MSG_CHECKING(what type to use for unicode)
2098AC_ARG_ENABLE(unicode,
2099[ --enable-unicode[=ucs2,ucs4] Enable Unicode strings (default is yes)],,enable_unicode=yes)
2100
2101if test $enable_unicode = yes
2102then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002103 # Without any arguments, Py_UNICODE defaults to two-byte mode
2104 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002105fi
2106
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002107AH_TEMPLATE(Py_UNICODE_SIZE,
2108 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002109case "$enable_unicode" in
2110ucs2) unicode_size="2"
2111 AC_DEFINE(Py_UNICODE_SIZE,2)
2112 ;;
2113ucs4) unicode_size="4"
2114 AC_DEFINE(Py_UNICODE_SIZE,4)
2115 ;;
2116esac
2117
Martin v. Löwis11437992002-04-12 09:54:03 +00002118AH_TEMPLATE(PY_UNICODE_TYPE,
2119 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002120
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002121AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002122if test "$enable_unicode" = "no"
2123then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002124 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002125 AC_MSG_RESULT(not used)
2126else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002127 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002128 AC_DEFINE(Py_USING_UNICODE, 1,
2129 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002130 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2131 then
2132 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002133 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2134 [Define if you have a useable wchar_t type defined in wchar.h; useable
2135 means wchar_t must be 16-bit unsigned type. (see
2136 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002137 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2138 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2139 then
2140 PY_UNICODE_TYPE="unsigned short"
2141 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2142 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2143 then
2144 PY_UNICODE_TYPE="unsigned long"
2145 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2146 else
2147 PY_UNICODE_TYPE="no type found"
2148 fi
2149 AC_MSG_RESULT($PY_UNICODE_TYPE)
2150fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002151
2152# check for endianness
2153AC_C_BIGENDIAN
2154
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002155# Check whether right shifting a negative integer extends the sign bit
2156# or fills with zeros (like the Cray J90, according to Tim Peters).
2157AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002158AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002159AC_TRY_RUN([
2160int main()
2161{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002162 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002163}
Guido van Rossum3065c942001-09-17 04:03:14 +00002164],
2165ac_cv_rshift_extends_sign=yes,
2166ac_cv_rshift_extends_sign=no,
2167ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002168AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2169if test "$ac_cv_rshift_extends_sign" = no
2170then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002171 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2172 [Define if i>>j for signed int i does not extend the sign bit
2173 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002174fi
2175
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002176# check for getc_unlocked and related locking functions
2177AC_MSG_CHECKING(for getc_unlocked() and friends)
2178AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2179AC_TRY_LINK([#include <stdio.h>],[
2180 FILE *f = fopen("/dev/null", "r");
2181 flockfile(f);
2182 getc_unlocked(f);
2183 funlockfile(f);
2184], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2185AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2186if test "$ac_cv_have_getc_unlocked" = yes
2187then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002188 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2189 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002190fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002191
Martin v. Löwis0daad592001-09-30 21:09:59 +00002192# check for readline 4.0
2193AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002194 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2195 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002196
Guido van Rossum353ae582001-07-10 16:45:32 +00002197# check for readline 4.2
2198AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002199 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2200 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002201
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002202AC_MSG_CHECKING(for broken nice())
2203AC_CACHE_VAL(ac_cv_broken_nice, [
2204AC_TRY_RUN([
2205int main()
2206{
2207 int val1 = nice(1);
2208 if (val1 != -1 && val1 == nice(2))
2209 exit(0);
2210 exit(1);
2211}
Guido van Rossum3065c942001-09-17 04:03:14 +00002212],
2213ac_cv_broken_nice=yes,
2214ac_cv_broken_nice=no,
2215ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002216AC_MSG_RESULT($ac_cv_broken_nice)
2217if test "$ac_cv_broken_nice" = yes
2218then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002219 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2220 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002221fi
2222
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002223# On HP/UX 11.0, mvwdelch is a block with a return statement
2224AC_MSG_CHECKING(whether mvwdelch is an expression)
2225AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2226AC_TRY_COMPILE([#include <curses.h>], [
2227 int rtn;
2228 rtn = mvwdelch(0,0,0);
2229], ac_cv_mvwdelch_is_expression=yes,
2230 ac_cv_mvwdelch_is_expression=no,
2231 ac_cv_mvwdelch_is_expression=yes))
2232AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2233
2234if test "$ac_cv_mvwdelch_is_expression" = yes
2235then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002236 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2237 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002238fi
2239
2240AC_MSG_CHECKING(whether WINDOW has _flags)
2241AC_CACHE_VAL(ac_cv_window_has_flags,
2242AC_TRY_COMPILE([#include <curses.h>], [
2243 WINDOW *w;
2244 w->_flags = 0;
2245], ac_cv_window_has_flags=yes,
2246 ac_cv_window_has_flags=no,
2247 ac_cv_window_has_flags=no))
2248AC_MSG_RESULT($ac_cv_window_has_flags)
2249
2250
2251if test "$ac_cv_window_has_flags" = yes
2252then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002253 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2254 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002255fi
2256
Guido van Rossum95713eb2000-05-18 20:53:31 +00002257# THIS MUST BE LAST, IT CAN BREAK OTHER TESTS!
2258# Add sys/socket.h to confdefs.h
2259cat >> confdefs.h <<\EOF
2260#ifdef HAVE_SYS_SOCKET_H
2261#include <sys/socket.h>
2262#endif
2263EOF
2264AC_CHECK_TYPE(socklen_t, int)
2265
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002266#AC_MSG_CHECKING(for Modules/Setup)
2267#if test ! -f Modules/Setup ; then
2268# if test ! -d Modules ; then
2269# mkdir Modules
2270# fi
2271# cp "$srcdir/Modules/Setup.dist" Modules/Setup
2272# AC_MSG_RESULT(creating)
2273#else
2274# AC_MSG_RESULT(already exists)
2275#fi
2276
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002277AC_SUBST(THREADHEADERS)
2278
2279for h in `(cd $srcdir;echo Python/thread_*.h)`
2280do
2281 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2282done
2283
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002284AC_SUBST(SRCDIRS)
Neil Schemenaueracbf9ef2001-02-27 02:15:14 +00002285SRCDIRS="Parser Grammar Objects Python Modules"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002286AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002287for dir in $SRCDIRS; do
2288 if test ! -d $dir; then
2289 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002290 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002291done
2292AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002293
Guido van Rossum627b2d71993-12-24 10:39:16 +00002294# generate output files
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002295AC_OUTPUT(Makefile.pre Modules/Setup.config)
Neil Schemenauer61c51152001-01-26 16:18:16 +00002296
2297echo "creating Setup"
2298if test ! -f Modules/Setup
2299then
2300 cp $srcdir/Modules/Setup.dist Modules/Setup
2301fi
2302
2303echo "creating Setup.local"
2304if test ! -f Modules/Setup.local
2305then
2306 echo "# Edit this file for local setup changes" >Modules/Setup.local
2307fi
2308
2309echo "creating Makefile"
2310$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2311 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002312 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002313mv config.c Modules