blob: 6f99ae9fd024e1c05989457c3c8345f95908d54e [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Fred Drake9bd44622003-07-30 17:39:48 +00004m4_define(PYTHON_VERSION, 2.4)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000063dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000064AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000065 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
66[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000067 case $enableval in
68 yes)
69 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000070 esac
71 case $enableval in
72 no)
73 PYTHONFRAMEWORK=
74 PYTHONFRAMEWORKDIR=no-framework
75 PYTHONFRAMEWORKPREFIX=
76 PYTHONFRAMEWORKINSTALLDIR=
77 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 ;;
79 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000080 PYTHONFRAMEWORK=Python
81 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000083 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
84 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000086 ],[
87 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000088 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000089 PYTHONFRAMEWORKPREFIX=
90 PYTHONFRAMEWORKINSTALLDIR=
91 enable_framework=
92])
93AC_SUBST(PYTHONFRAMEWORK)
94AC_SUBST(PYTHONFRAMEWORKDIR)
95AC_SUBST(PYTHONFRAMEWORKPREFIX)
96AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000097
Jack Jansenb6e9cad2001-08-15 01:26:28 +000098##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000099## AC_HELP_STRING(--with-dyld,
100## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000101##
Guido van Rossumb418f891996-07-30 18:06:02 +0000102# Set name for machine-dependent library files
103AC_SUBST(MACHDEP)
104AC_MSG_CHECKING(MACHDEP)
105if test -z "$MACHDEP"
106then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000107 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000108 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
109 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000111 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000112 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000113 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000114 ac_md_system=`echo $ac_sys_system |
115 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
116 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000117 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000118 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000119
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000120 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000121 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000122 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000123 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000124 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000125 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000126 esac
127fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000128
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000129# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
130# disable features if it is defined, without any means to access these
131# features as extensions. For these systems, we skip the definition of
132# _XOPEN_SOURCE. Before adding a system to the list to gain access to
133# some feature, make sure there is no alternative way to access this
134# feature. Also, when using wildcards, make sure you have verified the
135# need for not defining _XOPEN_SOURCE on all systems matching the
136# wildcard, and that the wildcard does not include future systems
137# (which may remove their limitations).
138dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
139case $ac_sys_system/$ac_sys_release in
140 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
141 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000142 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
143 OpenBSD/2.* | OpenBSD/3.@<:@01234@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000144 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000145 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
146 # of union __?sigval. Reported by Stuart Bishop.
147 SunOS/5.6)
148 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
150 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000151 # Reconfirmed for 7.1.4 by Martin v. Loewis.
152 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000153 define_xopen_source=no;;
154 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000155 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000156 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000157 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000158 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
159 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
160 # this is fixed in 10.3, which identifies itself as Darwin/7.*
161 # This should hopefully be fixed in FreeBSD 4.9
162 FreeBSD/4.8* | Darwin/6* )
163 define_xopen_source=no;;
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000164 # On AIX 4, mbstate_t is defined only when _XOPEN_SOURCE == 500 but used in
165 # wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined or
166 # has another value. By not (re)defining it, the defaults come in place.
167 AIX/4)
168 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000169esac
170
171if test $define_xopen_source = yes
172then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000173 AC_DEFINE(_XOPEN_SOURCE, 600,
174 Define to the level of X/Open that your system supports)
175
176 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
177 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
178 # several APIs are not declared. Since this is also needed in some
179 # cases for HP-UX, we define it globally.
180
181 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
182 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
183
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000184fi
185
Guido van Rossum91922671997-10-09 20:24:13 +0000186#
187# SGI compilers allow the specification of the both the ABI and the
188# ISA on the command line. Depending on the values of these switches,
189# different and often incompatable code will be generated.
190#
191# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
192# thus supply support for various ABI/ISA combinations. The MACHDEP
193# variable is also adjusted.
194#
195AC_SUBST(SGI_ABI)
196if test ! -z "$SGI_ABI"
197then
198 CC="cc $SGI_ABI"
199 LDFLAGS="$SGI_ABI $LDFLAGS"
200 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
201fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000202AC_MSG_RESULT($MACHDEP)
203
Jack Jansen83f898c2002-12-30 22:23:40 +0000204# And add extra plat-mac for darwin
205AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000206AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000207AC_MSG_CHECKING(EXTRAPLATDIR)
208if test -z "$EXTRAPLATDIR"
209then
210 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000211 darwin)
212 EXTRAPLATDIR="\$(PLATMACDIRS)"
213 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
214 ;;
215 *)
216 EXTRAPLATDIR=""
217 EXTRAMACHDEPPATH=""
218 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000219 esac
220fi
221AC_MSG_RESULT($EXTRAPLATDIR)
222
Jack Jansen6b08a402004-06-03 12:41:45 +0000223# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
224# it may influence the way we can build extensions, so distutils
225# needs to check it
226AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
227CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
228
Guido van Rossum627b2d71993-12-24 10:39:16 +0000229# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000230
231# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
232# for debug/optimization stuff. BASECFLAGS is for flags that are required
233# just to get things to compile and link. Users are free to override OPT
234# when running configure or make. The build should not break if they do.
235# BASECFLAGS should generally not be messed with, however.
236
237# XXX shouldn't some/most/all of this code be merged with the stuff later
238# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000239AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000240AC_ARG_WITH(gcc,
241 AC_HELP_STRING(--without-gcc,never use gcc),
242[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000243 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000244 no) CC=cc
245 without_gcc=yes;;
246 yes) CC=gcc
247 without_gcc=no;;
248 *) CC=$withval
249 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000250 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000251 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000252 AIX*) CC=cc_r
253 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000254 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000255 case $BE_HOST_CPU in
256 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000257 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000258 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000259 BASECFLAGS="$BASECFLAGS -export pragma"
260 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000261 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000262 ;;
263 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000264 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000265 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000266 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000267 ;;
268 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000269 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000270 ;;
271 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000272 AR="\$(srcdir)/Modules/ar_beos"
273 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000274 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000275 Monterey*)
276 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000277 without_gcc=;;
278 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000279 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000280AC_MSG_RESULT($without_gcc)
281
Guido van Rossum27552902001-01-23 01:52:26 +0000282AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000283AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000284MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000285AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000286AC_ARG_WITH(cxx,
287 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
288[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000289 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000290 case $withval in
291 no) CXX=
292 with_cxx=no;;
293 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000294 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000295 with_cxx=$withval;;
296 esac], [
297 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000298 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000299])
300AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000301
Michael W. Hudson54241132001-12-07 15:38:26 +0000302if test "$with_cxx" = "yes"
303then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000304 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000305fi
306
Martin v. Löwis537970f2000-12-13 17:37:02 +0000307dnl The following fragment works similar to AC_PROG_CXX.
308dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000309dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000310dnl Finally, it does not test whether CXX is g++.
311
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000312dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
313ifdef([AC_PROG_CXX_WORKS],[],
314 [AC_DEFUN([AC_PROG_CXX_WORKS],
315 [AC_LANG_PUSH(C++)dnl
316 _AC_COMPILER_EXEEXT
317 AC_LANG_POP()
318 ]
319)])
320
Martin v. Löwis537970f2000-12-13 17:37:02 +0000321if test "$check_cxx" = "yes"
322then
323 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
324 if test "$CXX" = "notfound"
325 then
326 CXX=
327 else
328 AC_PROG_CXX_WORKS
329 fi
330fi
331
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000332# If the user switches compilers, we can't believe the cache
333if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
334then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000335 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
336(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000337fi
338
Guido van Rossum627b2d71993-12-24 10:39:16 +0000339AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000340
341# checks for UNIX variants that set C preprocessor variables
342AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000343
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000344# Check for unsupported systems
345case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000346Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000347 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
348 echo See README for details.
349 exit 1;;
350esac
351
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000352AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000353AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000354AC_ARG_WITH(suffix,
355 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
356[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000357 case $withval in
358 no) EXEEXT=;;
359 yes) EXEEXT=.exe;;
360 *) EXEEXT=$withval;;
361 esac])
362AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000363
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000364# Test whether we're running on a non-case-sensitive system, in which
365# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000366AC_SUBST(BUILDEXEEXT)
367AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000368if test ! -d CaseSensitiveTestDir; then
369mkdir CaseSensitiveTestDir
370fi
371
372if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000373then
Jack Jansen1999ef42001-12-06 21:47:20 +0000374 AC_MSG_RESULT(yes)
375 BUILDEXEEXT=.exe
376else
377 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000378 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000379fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000380rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000381
Guido van Rossumdd997f71998-10-07 19:58:26 +0000382case $MACHDEP in
383bsdos*)
384 case $CC in
385 gcc) CC="$CC -D_HAVE_BSDI";;
386 esac;;
387esac
388
Guido van Rossum84561611997-08-21 00:08:11 +0000389case $ac_sys_system in
390hp*|HP*)
391 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000392 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000393 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000394Monterey*)
395 case $CC in
396 cc) CC="$CC -Wl,-Bexport";;
397 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000398SunOS*)
399 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000400 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000401 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000402esac
403
Martin v. Löwise8964d42001-03-06 12:09:07 +0000404
Neil Schemenauer61c51152001-01-26 16:18:16 +0000405AC_SUBST(LIBRARY)
406AC_MSG_CHECKING(LIBRARY)
407if test -z "$LIBRARY"
408then
409 LIBRARY='libpython$(VERSION).a'
410fi
411AC_MSG_RESULT($LIBRARY)
412
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000413# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000414# name of the library into which to insert object files). BLDLIBRARY is also
415# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
416# is blank as the main program is not linked directly against LDLIBRARY.
417# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
418# systems without shared libraries, LDLIBRARY is the same as LIBRARY
419# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
420# DLLLIBRARY is the shared (i.e., DLL) library.
421#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000422# RUNSHARED is used to run shared python without installed libraries
423#
424# INSTSONAME is the name of the shared library that will be use to install
425# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000426AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000427AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000428AC_SUBST(BLDLIBRARY)
429AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000430AC_SUBST(INSTSONAME)
431AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000432LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000433BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000434INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000435DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000436LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000437RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000438
Guido van Rossumfb842551997-08-06 23:42:07 +0000439# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000440# If CXX is set, and if it is needed to link a main function that was
441# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
442# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000443# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000444# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000445AC_SUBST(LINKCC)
446AC_MSG_CHECKING(LINKCC)
447if test -z "$LINKCC"
448then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000449 if test -z "$CXX"; then
450 LINKCC="\$(PURIFY) \$(CC)"
451 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000452 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000453 $CXX -c conftest.$ac_ext 2>&5
454 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
455 && test -s conftest$ac_exeext && ./conftest$ac_exeext
456 then
457 LINKCC="\$(PURIFY) \$(CC)"
458 else
459 LINKCC="\$(PURIFY) \$(CXX)"
460 fi
461 rm -fr conftest*
462 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000463 case $ac_sys_system in
464 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000465 exp_extra="\"\""
466 if test $ac_sys_release -ge 5 -o \
467 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
468 exp_extra="."
469 fi
470 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000471 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000472 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000473 esac
474fi
475AC_MSG_RESULT($LINKCC)
476
Martin v. Löwis1142de32002-03-29 16:28:31 +0000477AC_MSG_CHECKING(for --enable-shared)
478AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000479 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000480
Martin v. Löwis1142de32002-03-29 16:28:31 +0000481if test -z "$enable_shared"
482then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000483 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000484 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000485 enable_shared="yes";;
486 *)
487 enable_shared="no";;
488 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000489fi
490AC_MSG_RESULT($enable_shared)
491
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000492AC_MSG_CHECKING(for --enable-profiling)
493AC_ARG_ENABLE(profiling,
494 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
495[ac_save_cc="$CC"
496 CC="$CC -pg"
497 AC_TRY_RUN([int main() { return 0; }],
498 ac_enable_profiling="yes",
499 ac_enable_profiling="no",
500 ac_enable_profiling="no")
501 CC="$ac_save_cc"])
502AC_MSG_RESULT($ac_enable_profiling)
503
504case "$ac_enable_profiling" in
505 "yes")
506 BASECFLAGS="-pg $BASECFLAGS"
507 LDFLAGS="-pg $LDFLAGS"
508 ;;
509esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000510
511AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000512
Guido van Rossumb8552162001-09-05 14:58:11 +0000513# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
514# library that we build, but we do not want to link against it (we
515# will find it with a -framework option). For this reason there is an
516# extra variable BLDLIBRARY against which Python and the extension
517# modules are linked, BLDLIBRARY. This is normally the same as
518# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000519if test "$enable_framework"
520then
521 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000522 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000523 BLDLIBRARY=''
524else
525 BLDLIBRARY='$(LDLIBRARY)'
526fi
527
Martin v. Löwis1142de32002-03-29 16:28:31 +0000528# Other platforms follow
529if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000530 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000531 case $ac_sys_system in
532 BeOS*)
533 LDLIBRARY='libpython$(VERSION).so'
534 ;;
535 CYGWIN*)
536 LDLIBRARY='libpython$(VERSION).dll.a'
537 DLLLIBRARY='libpython$(VERSION).dll'
538 ;;
539 SunOS*)
540 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000541 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000542 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000543 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000544 ;;
Martin v. Löwis96ce8052003-05-31 07:58:45 +0000545 Linux*|GNU*|NetBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546 LDLIBRARY='libpython$(VERSION).so'
547 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000548 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000549 INSTSONAME="$LDLIBRARY".$SOVERSION
550 ;;
551 hp*|HP*)
552 LDLIBRARY='libpython$(VERSION).sl'
553 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000554 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000555 ;;
556 OSF*)
557 LDLIBRARY='libpython$(VERSION).so'
558 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000559 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000560 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000561 atheos*)
562 LDLIBRARY='libpython$(VERSION).so'
563 BLDLIBRARY='-L. -lpython$(VERSION)'
564 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
565 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000566 esac
Jason Tishler30765592003-09-04 11:04:06 +0000567else # shared is disabled
568 case $ac_sys_system in
569 CYGWIN*)
570 BLDLIBRARY='$(LIBRARY)'
571 LDLIBRARY='libpython$(VERSION).dll.a'
572 ;;
573 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000574fi
575
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000576AC_MSG_RESULT($LDLIBRARY)
577
Guido van Rossum627b2d71993-12-24 10:39:16 +0000578AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000579AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000580AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000581
582case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000583bsdos*|hp*|HP*)
584 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000585 if test -z "$INSTALL"
586 then
587 INSTALL="${srcdir}/install-sh -c"
588 fi
589esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000590AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000591
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000592# Not every filesystem supports hard links
593AC_SUBST(LN)
594if test -z "$LN" ; then
595 case $ac_sys_system in
596 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000597 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000598 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000599 *) LN=ln;;
600 esac
601fi
602
Fred Drake9f715822001-07-11 06:27:00 +0000603# Check for --with-pydebug
604AC_MSG_CHECKING(for --with-pydebug)
605AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000606 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
607[
Fred Drake9f715822001-07-11 06:27:00 +0000608if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000609then
610 AC_DEFINE(Py_DEBUG, 1,
611 [Define if you want to build an interpreter with many run-time checks.])
612 AC_MSG_RESULT(yes);
613 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000614else AC_MSG_RESULT(no); Py_DEBUG='false'
615fi],
616[AC_MSG_RESULT(no)])
617
Skip Montanarodecc6a42003-01-01 20:07:49 +0000618# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
619# merged with this chunk of code?
620
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000621# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000622# ------------------------
623# (The following bit of code is complicated enough - please keep things
624# indented properly. Just pretend you're editing Python code. ;-)
625
626# There are two parallel sets of case statements below, one that checks to
627# see if OPT was set and one that does BASECFLAGS setting based upon
628# compiler and platform. BASECFLAGS tweaks need to be made even if the
629# user set OPT.
630
631# tweak OPT based on compiler and platform, only if the user didn't set
632# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000633AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000634if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000635then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000636 case $GCC in
637 yes)
638 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000639 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000640 if test "$Py_DEBUG" = 'true' ; then
641 # Optimization messes up debuggers, so turn it off for
642 # debug builds.
643 OPT="-g -Wall -Wstrict-prototypes"
644 else
645 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000646 fi
647 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000648 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000649 OPT="-O3 -Wall -Wstrict-prototypes"
650 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000651 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000652 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000653 SCO_SV*) OPT="$OPT -m486 -DSCO5"
654 ;;
655 esac
Fred Drake9f715822001-07-11 06:27:00 +0000656 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000657
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000658 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000659 OPT="-O"
660 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000661 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000662
663 # The current (beta) Monterey compiler dies with optimizations
664 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000665 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000666 Monterey*)
667 OPT=""
668 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000669 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000670
Guido van Rossum4e8af441994-08-19 15:33:54 +0000671fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000672
Skip Montanarodecc6a42003-01-01 20:07:49 +0000673AC_SUBST(BASECFLAGS)
674# tweak BASECFLAGS based on compiler and platform
675case $GCC in
676yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000677 # Python violates C99 rules, by casting between incompatible
678 # pointer types. GCC may generate bad code as a result of that,
679 # so use -fno-strict-aliasing if supported.
680 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
681 ac_save_cc="$CC"
682 CC="$CC -fno-strict-aliasing"
683 AC_TRY_RUN([int main() { return 0; }],
684 ac_cv_no_strict_aliasing_ok=yes,
685 ac_cv_no_strict_aliasing_ok=no,
686 ac_cv_no_strict_aliasing_ok=no)
687 CC="$ac_save_cc"
688 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
689 if test $ac_cv_no_strict_aliasing_ok = yes
690 then
691 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
692 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000693 case $ac_sys_system in
694 SCO_SV*)
695 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
696 ;;
697 # is there any other compiler on Darwin besides gcc?
698 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000699 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000700 ;;
701 esac
702 ;;
703
704*)
705 case $ac_sys_system in
706 OpenUNIX*|UnixWare*)
707 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
708 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000709 OSF*)
710 BASECFLAGS="$BASECFLAGS -ieee -std"
711 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000712 SCO_SV*)
713 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
714 ;;
715 esac
716 ;;
717esac
718
Fred Drakee1ceaa02001-12-04 20:55:47 +0000719if test "$Py_DEBUG" = 'true'; then
720 :
721else
722 OPT="-DNDEBUG $OPT"
723fi
724
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000725if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000726then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000728fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000729
Guido van Rossum91922671997-10-09 20:24:13 +0000730AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
731AC_CACHE_VAL(ac_cv_opt_olimit_ok,
732[ac_save_cc="$CC"
733CC="$CC -OPT:Olimit=0"
734AC_TRY_RUN([int main() { return 0; }],
735 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000736 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000737 ac_cv_opt_olimit_ok=no)
738CC="$ac_save_cc"])
739AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000740if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000741 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000742 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
743 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
744 # environment?
745 Darwin*)
746 ;;
747 *)
748 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
749 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000750 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000751else
752 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
753 AC_CACHE_VAL(ac_cv_olimit_ok,
754 [ac_save_cc="$CC"
755 CC="$CC -Olimit 1500"
756 AC_TRY_RUN([int main() { return 0; }],
757 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000758 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000759 ac_cv_olimit_ok=no)
760 CC="$ac_save_cc"])
761 AC_MSG_RESULT($ac_cv_olimit_ok)
762 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000763 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000764 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000765fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000766
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000767# On some compilers, pthreads are available without further options
768# (e.g. MacOS X). On some of these systems, the compiler will not
769# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
770# So we have to see first whether pthreads are available without
771# options before we can check whether -Kpthread improves anything.
772AC_MSG_CHECKING(whether pthreads are available without options)
773AC_CACHE_VAL(ac_cv_pthread_is_default,
774[AC_TRY_RUN([
775#include <pthread.h>
776
777void* routine(void* p){return NULL;}
778
779int main(){
780 pthread_t p;
781 if(pthread_create(&p,NULL,routine,NULL)!=0)
782 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000783 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000784 return 0;
785}
786],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000787[
788 ac_cv_pthread_is_default=yes
789 ac_cv_kthread=no
790 ac_cv_pthread=no
791],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000792 ac_cv_pthread_is_default=no,
793 ac_cv_pthread_is_default=no)
794])
795AC_MSG_RESULT($ac_cv_pthread_is_default)
796
797
798if test $ac_cv_pthread_is_default = yes
799then
800 ac_cv_kpthread=no
801else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000802# -Kpthread, if available, provides the right #defines
803# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000804# Some compilers won't report that they do not support -Kpthread,
805# so we need to run a program to see whether it really made the
806# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000807AC_MSG_CHECKING(whether $CC accepts -Kpthread)
808AC_CACHE_VAL(ac_cv_kpthread,
809[ac_save_cc="$CC"
810CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000811AC_TRY_RUN([
812#include <pthread.h>
813
814void* routine(void* p){return NULL;}
815
816int main(){
817 pthread_t p;
818 if(pthread_create(&p,NULL,routine,NULL)!=0)
819 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000820 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000821 return 0;
822}
823],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000824 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000825 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000826 ac_cv_kpthread=no)
827CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000828AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000829fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000830
Skip Montanarod8d39a02003-07-10 20:44:10 +0000831if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000832then
833# -Kthread, if available, provides the right #defines
834# and linker options to make pthread_create available
835# Some compilers won't report that they do not support -Kthread,
836# so we need to run a program to see whether it really made the
837# function available.
838AC_MSG_CHECKING(whether $CC accepts -Kthread)
839AC_CACHE_VAL(ac_cv_kthread,
840[ac_save_cc="$CC"
841CC="$CC -Kthread"
842AC_TRY_RUN([
843#include <pthread.h>
844
845void* routine(void* p){return NULL;}
846
847int main(){
848 pthread_t p;
849 if(pthread_create(&p,NULL,routine,NULL)!=0)
850 return 1;
851 (void)pthread_detach(p);
852 return 0;
853}
854],
855 ac_cv_kthread=yes,
856 ac_cv_kthread=no,
857 ac_cv_kthread=no)
858CC="$ac_save_cc"])
859AC_MSG_RESULT($ac_cv_kthread)
860fi
861
Skip Montanarod8d39a02003-07-10 20:44:10 +0000862if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000863then
864# -pthread, if available, provides the right #defines
865# and linker options to make pthread_create available
866# Some compilers won't report that they do not support -pthread,
867# so we need to run a program to see whether it really made the
868# function available.
869AC_MSG_CHECKING(whether $CC accepts -pthread)
870AC_CACHE_VAL(ac_cv_thread,
871[ac_save_cc="$CC"
872CC="$CC -pthread"
873AC_TRY_RUN([
874#include <pthread.h>
875
876void* routine(void* p){return NULL;}
877
878int main(){
879 pthread_t p;
880 if(pthread_create(&p,NULL,routine,NULL)!=0)
881 return 1;
882 (void)pthread_detach(p);
883 return 0;
884}
885],
886 ac_cv_pthread=yes,
887 ac_cv_pthread=no,
888 ac_cv_pthread=no)
889CC="$ac_save_cc"])
890AC_MSG_RESULT($ac_cv_pthread)
891fi
892
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000893# If we have set a CC compiler flag for thread support then
894# check if it works for CXX, too.
895ac_cv_cxx_thread=no
896if test ! -z "$CXX"
897then
898AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
899ac_save_cxx="$CXX"
900
901if test "$ac_cv_kpthread" = "yes"
902then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000903 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000904 ac_cv_cxx_thread=yes
905elif test "$ac_cv_kthread" = "yes"
906then
907 CXX="$CXX -Kthread"
908 ac_cv_cxx_thread=yes
909elif test "$ac_cv_pthread" = "yes"
910then
911 CXX="$CXX -pthread"
912 ac_cv_cxx_thread=yes
913fi
914
915if test $ac_cv_cxx_thread = yes
916then
917 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
918 $CXX -c conftest.$ac_ext 2>&5
919 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
920 && test -s conftest$ac_exeext && ./conftest$ac_exeext
921 then
922 ac_cv_cxx_thread=yes
923 else
924 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000925 fi
926 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000927fi
928fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000929CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000930AC_MSG_RESULT($ac_cv_cxx_thread)
931
Fred Drakece81d592000-07-09 14:39:29 +0000932dnl # check for ANSI or K&R ("traditional") preprocessor
933dnl AC_MSG_CHECKING(for C preprocessor type)
934dnl AC_TRY_COMPILE([
935dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
936dnl int foo;
937dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
938dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
939dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000940
Guido van Rossum627b2d71993-12-24 10:39:16 +0000941# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000942AC_HEADER_STDC
Skip Montanaro7befb992004-02-10 16:50:21 +0000943AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h langinfo.h \
944libintl.h ncurses.h poll.h pthread.h \
945stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000946unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000947sys/audioio.h sys/bsdtty.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000948sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisa5f09072002-10-11 05:37:59 +0000949sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000950sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
951bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000952AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000953AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000954
955# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000956was_it_defined=no
957AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000958AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
959 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
960])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000961AC_MSG_RESULT($was_it_defined)
962
Neal Norwitz11690112002-07-30 01:08:28 +0000963# Check whether using makedev requires defining _OSF_SOURCE
964AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000965AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000966 [ makedev(0, 0) ],
967 ac_cv_has_makedev=yes,
968 ac_cv_has_makedev=no)
969if test "$ac_cv_has_makedev" = "no"; then
970 # we didn't link, try if _OSF_SOURCE will allow us to link
971 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000972#define _OSF_SOURCE 1
973#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000974 ],
975 [ makedev(0, 0) ],
976 ac_cv_has_makedev=yes,
977 ac_cv_has_makedev=no)
978 if test "$ac_cv_has_makedev" = "yes"; then
979 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
980 fi
981fi
982AC_MSG_RESULT($ac_cv_has_makedev)
983if test "$ac_cv_has_makedev" = "yes"; then
984 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
985fi
986
Martin v. Löwis399a6892002-10-04 10:22:02 +0000987# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
988# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
989# defined, but the compiler does not support pragma redefine_extname,
990# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
991# structures (such as rlimit64) without declaring them. As a
992# work-around, disable LFS on such configurations
993
994use_lfs=yes
995AC_MSG_CHECKING(Solaris LFS bug)
996AC_TRY_COMPILE([
997#define _LARGEFILE_SOURCE 1
998#define _FILE_OFFSET_BITS 64
999#include <sys/resource.h>
1000],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1001AC_MSG_RESULT($sol_lfs_bug)
1002if test "$sol_lfs_bug" = "yes"; then
1003 use_lfs=no
1004fi
1005
1006if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001007# Two defines needed to enable largefile support on various platforms
1008# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001009AC_DEFINE(_LARGEFILE_SOURCE, 1,
1010[This must be defined on some systems to enable large file support.])
1011AC_DEFINE(_FILE_OFFSET_BITS, 64,
1012[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001013fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001014
Guido van Rossum300fda71996-08-19 21:58:16 +00001015# Add some code to confdefs.h so that the test for off_t works on SCO
1016cat >> confdefs.h <<\EOF
1017#if defined(SCO_DS)
1018#undef _OFF_T
1019#endif
1020EOF
1021
Guido van Rossumef2255b2000-03-10 22:30:29 +00001022# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001023AC_TYPE_MODE_T
1024AC_TYPE_OFF_T
1025AC_TYPE_PID_T
1026AC_TYPE_SIGNAL
1027AC_TYPE_SIZE_T
1028AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001029
Guido van Rossumef2255b2000-03-10 22:30:29 +00001030# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001031# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001032AC_CHECK_SIZEOF(int, 4)
1033AC_CHECK_SIZEOF(long, 4)
1034AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001035AC_CHECK_SIZEOF(short, 2)
1036AC_CHECK_SIZEOF(float, 4)
1037AC_CHECK_SIZEOF(double, 8)
1038AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001039
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001040AC_MSG_CHECKING(for long long support)
1041have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001042AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1043 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1044 have_long_long=yes
1045])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001046AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001047if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001048AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001049fi
1050
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001051AC_MSG_CHECKING(for uintptr_t support)
1052have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001053AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1054 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1055 have_uintptr_t=yes
1056])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001057AC_MSG_RESULT($have_uintptr_t)
1058if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001059AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001060fi
1061
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001062# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1063AC_MSG_CHECKING(size of off_t)
1064AC_CACHE_VAL(ac_cv_sizeof_off_t,
1065[AC_TRY_RUN([#include <stdio.h>
1066#include <sys/types.h>
1067main()
1068{
1069 FILE *f=fopen("conftestval", "w");
1070 if (!f) exit(1);
1071 fprintf(f, "%d\n", sizeof(off_t));
1072 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001073}],
1074ac_cv_sizeof_off_t=`cat conftestval`,
1075ac_cv_sizeof_off_t=0,
1076ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001077])
1078AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001079AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1080[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001081
1082AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001083if test "$have_long_long" = yes -a \
1084 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1085 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001086 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1087 [Defined to enable large file support when an off_t is bigger than a long
1088 and long long is available and at least as big as an off_t. You may need
1089 to add some flags for configuration and compilation to enable this mode.
1090 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001091 AC_MSG_RESULT(yes)
1092else
1093 AC_MSG_RESULT(no)
1094fi
1095
Fred Drakea3f6e912000-06-29 20:44:47 +00001096# AC_CHECK_SIZEOF() doesn't include <time.h>.
1097AC_MSG_CHECKING(size of time_t)
1098AC_CACHE_VAL(ac_cv_sizeof_time_t,
1099[AC_TRY_RUN([#include <stdio.h>
1100#include <time.h>
1101main()
1102{
1103 FILE *f=fopen("conftestval", "w");
1104 if (!f) exit(1);
1105 fprintf(f, "%d\n", sizeof(time_t));
1106 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001107}],
1108ac_cv_sizeof_time_t=`cat conftestval`,
1109ac_cv_sizeof_time_t=0,
1110ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001111])
1112AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001113AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1114[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001115
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001116
Trent Mick635f6fb2000-08-23 21:33:05 +00001117# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001118ac_save_cc="$CC"
1119if test "$ac_cv_kpthread" = "yes"
1120then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001121elif test "$ac_cv_kthread" = "yes"
1122then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001123elif test "$ac_cv_pthread" = "yes"
1124then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001125fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001126AC_MSG_CHECKING(for pthread_t)
1127have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001128AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001129AC_MSG_RESULT($have_pthread_t)
1130if test "$have_pthread_t" = yes ; then
1131 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1132 AC_MSG_CHECKING(size of pthread_t)
1133 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1134 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001135#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001136 main()
1137 {
1138 FILE *f=fopen("conftestval", "w");
1139 if (!f) exit(1);
1140 fprintf(f, "%d\n", sizeof(pthread_t));
1141 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001142 }],
1143 ac_cv_sizeof_pthread_t=`cat conftestval`,
1144 ac_cv_sizeof_pthread_t=0,
1145 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001146 ])
1147 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001148 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1149 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001150fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001151CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001152
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001153AC_MSG_CHECKING(for --enable-toolbox-glue)
1154AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001155 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001156
1157if test -z "$enable_toolbox_glue"
1158then
1159 case $ac_sys_system/$ac_sys_release in
1160 Darwin/*)
1161 enable_toolbox_glue="yes";;
1162 *)
1163 enable_toolbox_glue="no";;
1164 esac
1165fi
1166case "$enable_toolbox_glue" in
1167yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001168 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001169 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001170 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001171 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1172 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001173 ;;
1174*)
1175 extra_frameworks=""
1176 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001177 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001178 ;;
1179esac
1180AC_MSG_RESULT($enable_toolbox_glue)
1181
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001182AC_SUBST(LIBTOOL_CRUFT)
1183case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001184 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001185 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001186 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb36687a2004-07-16 08:43:47 +00001187 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001188 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001189 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001190 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001191 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansenb36687a2004-07-16 08:43:47 +00001192 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001193 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001194esac
1195
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001196AC_MSG_CHECKING(for --enable-framework)
1197if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001198then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001199 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001200 # -F. is needed to allow linking to the framework while
1201 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001202 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1203 [Define if you want to produce an OpenStep/Rhapsody framework
1204 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001205 AC_MSG_RESULT(yes)
1206else
1207 AC_MSG_RESULT(no)
1208fi
1209
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001210AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001211case $ac_sys_system/$ac_sys_release in
1212 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001213 AC_DEFINE(WITH_DYLD, 1,
1214 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1215 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1216 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001217 AC_MSG_RESULT(always on for Darwin)
1218 ;;
1219 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001220 AC_MSG_RESULT(no)
1221 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001222esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001223
Guido van Rossumac405f61994-09-12 10:56:06 +00001224# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001225AC_SUBST(SO)
1226AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001227AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001228AC_SUBST(CCSHARED)
1229AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001230# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001231# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001232AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001233if test -z "$SO"
1234then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001235 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001236 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001237 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001238 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001239 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001240else
1241 # this might also be a termcap variable, see #610332
1242 echo
1243 echo '====================================================================='
1244 echo '+ +'
1245 echo '+ WARNING: You have set SO in your environment. +'
1246 echo '+ Do you really mean to change the extension for shared libraries? +'
1247 echo '+ Continuing in 10 seconds to let you to ponder. +'
1248 echo '+ +'
1249 echo '====================================================================='
1250 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001251fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001252AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001253# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001254# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001255# (Shared libraries in this instance are shared modules to be loaded into
1256# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001257AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001258if test -z "$LDSHARED"
1259then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001260 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001261 AIX*)
1262 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001263 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001264 ;;
1265 BeOS*)
1266 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001267 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001268 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001269 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001270 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001271 SunOS/5*)
1272 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001273 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001274 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001275 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001276 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001277 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001278 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001279 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1280 if test "$enable_framework" ; then
1281 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001282 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1283 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001284 else
1285 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001286 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001287 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001288 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001289 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1290 if test "$enable_framework" ; then
1291 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001292 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1293 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001294 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001295 # No framework, use the Python app as bundle-loader
1296 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001297 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001298 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001299 Darwin/*)
1300 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1301 # This allows an extension to be used in any Python
1302 if test ${MACOSX_DEPLOYMENT_TARGET-10.1} '>' 10.2
1303 then
1304 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1305 BLDSHARED="$LDSHARED"
1306 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET
1307 else
1308 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1309 if test "$enable_framework" ; then
1310 # Link against the framework. All externals should be defined.
1311 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1312 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
1313 else
1314 # No framework, use the Python app as bundle-loader
1315 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1316 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1317 fi
1318 fi
1319 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001320 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001321 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001322 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001323 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001324 then
1325 LDSHARED="cc -shared ${LDFLAGS}"
1326 else
1327 LDSHARED="ld -Bshareable ${LDFLAGS}"
1328 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001329 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001330 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001331 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001332 then LDSHARED='$(CC) -shared'
1333 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001334 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001335 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001336 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001337 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001338 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001339 *) LDSHARED="ld";;
1340 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001341fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001342AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001343BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001344# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001345# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001346AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001347if test -z "$CCSHARED"
1348then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001349 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001350 SunOS*) if test "$GCC" = yes;
1351 then CCSHARED="-fPIC";
1352 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001353 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001354 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001355 else CCSHARED="+z";
1356 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001357 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001358 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001359 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001360 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001361 if test "$GCC" = "yes"
1362 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001363 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001364 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001365 SCO_SV*)
1366 if test "$GCC" = "yes"
1367 then CCSHARED="-fPIC"
1368 else CCSHARED="-Kpic -belf"
1369 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001370 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001371 IRIX*/6*) case $CC in
1372 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001373 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001374 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001375 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001376 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001377fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001378AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001379# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001380# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001381AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001382if test -z "$LINKFORSHARED"
1383then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001384 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001385 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001386 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001387 LINKFORSHARED="-Wl,-E -Wl,+s";;
1388# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001389 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001390 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001392 Darwin/*)
1393 # -u __dummy makes the linker aware of the objc runtime
1394 # in System.framework; otherwise, __objcInit (referenced in
1395 # crt1.o) gets erroneously defined as common, which breaks dynamic
1396 # loading of any modules which reference it in System.framework.
1397 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1398 # not used by the core itself but which needs to be in the core so
1399 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001400 # -prebind is no longer used, because it actually seems to give a
1401 # slowdown in stead of a speedup, maybe due to the large number of
1402 # dynamic loads Python does.
1403 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001404 if test "$enable_framework"
1405 then
Jack Jansenb36687a2004-07-16 08:43:47 +00001406 LINKFORSHARED="$LINKFORSHARED -Wl,-F. -framework "'$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001407 fi
1408 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001409 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001410 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001411 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001412 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001413 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1414 then
1415 LINKFORSHARED="-Wl,--export-dynamic"
1416 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001417 SunOS/5*) case $CC in
1418 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001419 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001420 then
1421 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001422 fi;;
1423 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001424 CYGWIN*)
1425 if test $enable_shared = "no"
1426 then
1427 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1428 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001429 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001430fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001431AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001432
Neil Schemenauer61c51152001-01-26 16:18:16 +00001433AC_SUBST(CFLAGSFORSHARED)
1434AC_MSG_CHECKING(CFLAGSFORSHARED)
1435if test ! "$LIBRARY" = "$LDLIBRARY"
1436then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001437 case $ac_sys_system in
1438 CYGWIN*)
1439 # Cygwin needs CCSHARED when building extension DLLs
1440 # but not when building the interpreter DLL.
1441 CFLAGSFORSHARED='';;
1442 *)
1443 CFLAGSFORSHARED='$(CCSHARED)'
1444 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001445fi
1446AC_MSG_RESULT($CFLAGSFORSHARED)
1447
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001448# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1449# library (with --enable-shared).
1450# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001451# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1452# if it is not required, since it creates a dependency of the shared library
1453# to LIBS. This, in turn, means that applications linking the shared libpython
1454# don't need to link LIBS explicitly. The default should be only changed
1455# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001456AC_SUBST(SHLIBS)
1457AC_MSG_CHECKING(SHLIBS)
1458case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001459 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001460 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001461esac
1462AC_MSG_RESULT($SHLIBS)
1463
1464
Guido van Rossum627b2d71993-12-24 10:39:16 +00001465# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001466AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1467AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001468
1469# only check for sem_ini if thread support is requested
1470if test "$with_threads" = "yes" -o -z "$with_threads"; then
1471 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1472 # posix4 on Solaris 2.6
1473 # pthread (first!) on Linux
1474fi
1475
Martin v. Löwis19d17342003-06-14 21:03:05 +00001476# check if we need libintl for locale functions
1477AC_CHECK_LIB(intl, textdomain,
1478 AC_DEFINE(WITH_LIBINTL, 1,
1479 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001480
1481# checks for system dependent C++ extensions support
1482case "$ac_sys_system" in
1483 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1484 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1485 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001486 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1487 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1488 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001489 AC_MSG_RESULT(yes)],
1490 [AC_MSG_RESULT(no)]);;
1491 *) ;;
1492esac
1493
Guido van Rossum70c7f481998-03-26 18:44:10 +00001494# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001495# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001496AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001497AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001498
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001499case "$ac_sys_system" in
1500BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001501AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1502;;
1503esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001504
Guido van Rossumc5a39031996-07-31 17:35:03 +00001505AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001506AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001507 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1508[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001509AC_MSG_RESULT($withval)
1510LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001511],
1512[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001513
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001514# Determine if signalmodule should be used.
1515AC_SUBST(USE_SIGNAL_MODULE)
1516AC_SUBST(SIGNAL_OBJS)
1517AC_MSG_CHECKING(for --with-signal-module)
1518AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001519 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001520
1521if test -z "$with_signal_module"
1522then with_signal_module="yes"
1523fi
1524AC_MSG_RESULT($with_signal_module)
1525
1526if test "${with_signal_module}" = "yes"; then
1527 USE_SIGNAL_MODULE=""
1528 SIGNAL_OBJS=""
1529else
1530 USE_SIGNAL_MODULE="#"
1531 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1532fi
1533
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001534# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001535AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001536USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001537
Guido van Rossum54d93d41997-01-22 20:51:58 +00001538AC_MSG_CHECKING(for --with-dec-threads)
1539AC_SUBST(LDLAST)
1540AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001541 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1542[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001543AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001544LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001545if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001546 with_thread="$withval";
1547fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001548[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001549
Martin v. Löwis11437992002-04-12 09:54:03 +00001550# Templates for things AC_DEFINEd more than once.
1551# For a single AC_DEFINE, no template is needed.
1552AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1553AH_TEMPLATE(_REENTRANT,
1554 [Define to force use of thread-safe errno, h_errno, and other functions])
1555AH_TEMPLATE(WITH_THREAD,
1556 [Define if you want to compile in rudimentary thread support])
1557
Guido van Rossum54d93d41997-01-22 20:51:58 +00001558AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001559dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001560AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001561 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001562
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001563# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001564dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001565AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001566 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1567 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001568
1569if test -z "$with_threads"
1570then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001571fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001572AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001573
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001574AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001575if test "$with_threads" = "no"
1576then
1577 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001578elif test "$ac_cv_pthread_is_default" = yes
1579then
1580 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001581 # Defining _REENTRANT on system with POSIX threads should not hurt.
1582 AC_DEFINE(_REENTRANT)
1583 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001584 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001585elif test "$ac_cv_kpthread" = "yes"
1586then
1587 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001588 if test "$ac_cv_cxx_thread" = "yes"; then
1589 CXX="$CXX -Kpthread"
1590 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001591 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001592 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001593 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001594elif test "$ac_cv_kthread" = "yes"
1595then
1596 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001597 if test "$ac_cv_cxx_thread" = "yes"; then
1598 CXX="$CXX -Kthread"
1599 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001600 AC_DEFINE(WITH_THREAD)
1601 posix_threads=yes
1602 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001603elif test "$ac_cv_pthread" = "yes"
1604then
1605 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001606 if test "$ac_cv_cxx_thread" = "yes"; then
1607 CXX="$CXX -pthread"
1608 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001609 AC_DEFINE(WITH_THREAD)
1610 posix_threads=yes
1611 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001612else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001613 if test ! -z "$with_threads" -a -d "$with_threads"
1614 then LDFLAGS="$LDFLAGS -L$with_threads"
1615 fi
1616 if test ! -z "$withval" -a -d "$withval"
1617 then LDFLAGS="$LDFLAGS -L$withval"
1618 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001619
1620 # According to the POSIX spec, a pthreads implementation must
1621 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1622 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1623 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001624 [
1625#include <unistd.h>
1626#ifdef _POSIX_THREADS
1627yes
1628#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001629 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1630 AC_MSG_RESULT($unistd_defines_pthreads)
1631
Martin v. Löwis130fb172001-07-19 11:00:41 +00001632 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001633 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1634 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001635 AC_DEFINE(HURD_C_THREADS, 1,
1636 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001637 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001638 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001639 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1640 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001641 AC_DEFINE(MACH_C_THREADS, 1,
1642 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001643 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001644 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001645 AC_ARG_WITH([pth],
1646 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1647 [AC_MSG_RESULT($withval)
1648 AC_DEFINE([WITH_THREAD])
1649 AC_DEFINE([HAVE_PTH], 1,
1650 [Define if you have GNU PTH threads.])
1651 LIBS="-lpth $LIBS"
1652 THREADOBJ="Python/thread.o"],
1653 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001654
1655 # Just looking for pthread_create in libpthread is not enough:
1656 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1657 # So we really have to include pthread.h, and then link.
1658 _libs=$LIBS
1659 LIBS="$LIBS -lpthread"
1660 AC_MSG_CHECKING([for pthread_create in -lpthread])
1661 AC_TRY_LINK([#include <pthread.h>
1662
1663void * start_routine (void *arg) { exit (0); }], [
1664pthread_create (NULL, NULL, start_routine, NULL)], [
1665 AC_MSG_RESULT(yes)
1666 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001667 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001668 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001669 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001670 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001671 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001672 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001673 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1674 AC_DEFINE(ATHEOS_THREADS, 1,
1675 [Define this if you have AtheOS threads.])
1676 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001677 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001678 AC_DEFINE(BEOS_THREADS, 1,
1679 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001680 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001681 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001682 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001683 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001684 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001685 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001686 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001687 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001688 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001689 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001690 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001691 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001692 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001693 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001694 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001695 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001696 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001697 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001698 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001699
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001700 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1701 LIBS="$LIBS -lmpc"
1702 THREADOBJ="Python/thread.o"
1703 USE_THREAD_MODULE=""])
1704
1705 if test "$posix_threads" != "yes"; then
1706 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1707 LIBS="$LIBS -lthread"
1708 THREADOBJ="Python/thread.o"
1709 USE_THREAD_MODULE=""])
1710 fi
1711
1712 if test "$USE_THREAD_MODULE" != "#"
1713 then
1714 # If the above checks didn't disable threads, (at least) OSF1
1715 # needs this '-threads' argument during linking.
1716 case $ac_sys_system in
1717 OSF1) LDLAST=-threads;;
1718 esac
1719 fi
1720fi
1721
1722if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001723 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001724 AC_DEFINE(_POSIX_THREADS, 1,
1725 [Define if you have POSIX threads,
1726 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001727 fi
1728
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001729 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1730 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001731 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1732 Defined for Solaris 2.6 bug in pthread header.)
1733 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001734 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001735 Define if the Posix semaphores do not work on your system)
1736 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001737 esac
1738
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001739 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1740 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1741 [AC_TRY_RUN([#include <pthread.h>
1742 void *foo(void *parm) {
1743 return NULL;
1744 }
1745 main() {
1746 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001747 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001748 if (pthread_attr_init(&attr)) exit(-1);
1749 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001750 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001751 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001752 }],
1753 ac_cv_pthread_system_supported=yes,
1754 ac_cv_pthread_system_supported=no,
1755 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001756 ])
1757 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1758 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001759 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001760 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001761 AC_CHECK_FUNCS(pthread_sigmask,
1762 [case $ac_sys_system in
1763 CYGWIN*)
1764 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1765 [Define if pthread_sigmask() does not work on your system.])
1766 ;;
1767 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001768fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001769
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001770
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001771# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001772AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001773AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001774AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001775[ --enable-ipv6 Enable ipv6 (with ipv4) support
1776 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001777[ case "$enableval" in
1778 no)
1779 AC_MSG_RESULT(no)
1780 ipv6=no
1781 ;;
1782 *) AC_MSG_RESULT(yes)
1783 AC_DEFINE(ENABLE_IPV6)
1784 ipv6=yes
1785 ;;
1786 esac ],
1787
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001788[
1789dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001790 AC_TRY_RUN([ /* AF_INET6 available check */
1791#include <sys/types.h>
1792#include <sys/socket.h>
1793main()
1794{
1795 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1796 exit(1);
1797 else
1798 exit(0);
1799}
1800],
1801 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001802 ipv6=yes,
1803 AC_MSG_RESULT(no)
1804 ipv6=no,
1805 AC_MSG_RESULT(no)
1806 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001807)
1808
1809if test "$ipv6" = "yes"; then
1810 AC_MSG_CHECKING(if RFC2553 API is available)
1811 AC_TRY_COMPILE([#include <sys/types.h>
1812#include <netinet/in.h>],
1813 [struct sockaddr_in6 x;
1814x.sin6_scope_id;],
1815 AC_MSG_RESULT(yes)
1816 ipv6=yes,
1817 AC_MSG_RESULT(no, IPv6 disabled)
1818 ipv6=no)
1819fi
1820
1821if test "$ipv6" = "yes"; then
1822 AC_DEFINE(ENABLE_IPV6)
1823fi
1824])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001825
1826ipv6type=unknown
1827ipv6lib=none
1828ipv6trylibc=no
1829
1830if test "$ipv6" = "yes"; then
1831 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001832 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1833 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001834 case $i in
1835 inria)
1836 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001837 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001838#include <netinet/in.h>
1839#ifdef IPV6_INRIA_VERSION
1840yes
1841#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001842 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001843 ;;
1844 kame)
1845 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001846 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001847#include <netinet/in.h>
1848#ifdef __KAME__
1849yes
1850#endif],
1851 [ipv6type=$i;
1852 ipv6lib=inet6
1853 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001854 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001855 ;;
1856 linux-glibc)
1857 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001858 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001859#include <features.h>
1860#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1861yes
1862#endif],
1863 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001864 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001865 ;;
1866 linux-inet6)
1867 dnl http://www.v6.linux.or.jp/
1868 if test -d /usr/inet6; then
1869 ipv6type=$i
1870 ipv6lib=inet6
1871 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001872 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001873 fi
1874 ;;
1875 solaris)
1876 if test -f /etc/netconfig; then
1877 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1878 ipv6type=$i
1879 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001880 fi
1881 fi
1882 ;;
1883 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001884 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001885#include <sys/param.h>
1886#ifdef _TOSHIBA_INET6
1887yes
1888#endif],
1889 [ipv6type=$i;
1890 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001891 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001892 ;;
1893 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001894 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001895#include </usr/local/v6/include/sys/v6config.h>
1896#ifdef __V6D__
1897yes
1898#endif],
1899 [ipv6type=$i;
1900 ipv6lib=v6;
1901 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001902 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001903 ;;
1904 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001905 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001906#include <sys/param.h>
1907#ifdef _ZETA_MINAMI_INET6
1908yes
1909#endif],
1910 [ipv6type=$i;
1911 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001912 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001913 ;;
1914 esac
1915 if test "$ipv6type" != "unknown"; then
1916 break
1917 fi
1918 done
1919 AC_MSG_RESULT($ipv6type)
1920fi
1921
1922if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1923 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1924 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1925 echo "using lib$ipv6lib"
1926 else
1927 if test $ipv6trylibc = "yes"; then
1928 echo "using libc"
1929 else
1930 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1931 echo "You need to fetch lib$ipv6lib.a from appropriate"
1932 echo 'ipv6 kit and compile beforehand.'
1933 exit 1
1934 fi
1935 fi
1936fi
1937
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001938# Check for --with-doc-strings
1939AC_MSG_CHECKING(for --with-doc-strings)
1940AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001941 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001942
1943if test -z "$with_doc_strings"
1944then with_doc_strings="yes"
1945fi
1946if test "$with_doc_strings" != "no"
1947then
1948 AC_DEFINE(WITH_DOC_STRINGS, 1,
1949 [Define if you want documentation strings in extension modules])
1950fi
1951AC_MSG_RESULT($with_doc_strings)
1952
Neil Schemenauera35c6882001-02-27 04:45:05 +00001953# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00001954AC_MSG_CHECKING(for --with-tsc)
1955AC_ARG_WITH(tsc,
1956[ --with(out)-tsc enable/disable timestamp counter profile], [
1957if test "$withval" != no
1958then
1959 AC_DEFINE(WITH_TSC, 1,
1960 [Define to profile with the Pentium timestamp counter])
1961 AC_MSG_RESULT(yes)
1962else AC_MSG_RESULT(no)
1963fi],
1964[AC_MSG_RESULT(no)])
1965
1966# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00001967AC_MSG_CHECKING(for --with-pymalloc)
1968AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001969 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001970
1971if test -z "$with_pymalloc"
1972then with_pymalloc="yes"
1973fi
1974if test "$with_pymalloc" != "no"
1975then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001976 AC_DEFINE(WITH_PYMALLOC, 1,
1977 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001978fi
1979AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001980
Barry Warsawef82cd72000-06-30 16:21:01 +00001981# Check for --with-wctype-functions
1982AC_MSG_CHECKING(for --with-wctype-functions)
1983AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001984 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1985[
Barry Warsawef82cd72000-06-30 16:21:01 +00001986if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001987then
1988 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1989 [Define if you want wctype.h functions to be used instead of the
1990 one supplied by Python itself. (see Include/unicodectype.h).])
1991 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001992else AC_MSG_RESULT(no)
1993fi],
1994[AC_MSG_RESULT(no)])
1995
Guido van Rossum68242b51996-05-28 22:53:03 +00001996# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001997AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001998DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001999
Guido van Rossume97ee181999-12-20 21:27:22 +00002000# the dlopen() function means we might want to use dynload_shlib.o. some
2001# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002002AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002003
2004# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2005# loading of modules.
2006AC_SUBST(DYNLOADFILE)
2007AC_MSG_CHECKING(DYNLOADFILE)
2008if test -z "$DYNLOADFILE"
2009then
2010 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002011 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2012 if test "$ac_cv_func_dlopen" = yes
2013 then DYNLOADFILE="dynload_shlib.o"
2014 else DYNLOADFILE="dynload_aix.o"
2015 fi
2016 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002017 BeOS*) DYNLOADFILE="dynload_beos.o";;
2018 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002019 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002020 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002021 *)
2022 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2023 # out any dynamic loading
2024 if test "$ac_cv_func_dlopen" = yes
2025 then DYNLOADFILE="dynload_shlib.o"
2026 else DYNLOADFILE="dynload_stub.o"
2027 fi
2028 ;;
2029 esac
2030fi
2031AC_MSG_RESULT($DYNLOADFILE)
2032if test "$DYNLOADFILE" != "dynload_stub.o"
2033then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002034 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2035 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002036fi
2037
Jack Jansenc49e5b72001-06-19 15:00:23 +00002038# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2039
2040AC_SUBST(MACHDEP_OBJS)
2041AC_MSG_CHECKING(MACHDEP_OBJS)
2042if test -z "$MACHDEP_OBJS"
2043then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002044 MACHDEP_OBJS=$extra_machdep_objs
2045else
2046 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002047fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002048AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002049
Guido van Rossum627b2d71993-12-24 10:39:16 +00002050# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002051AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2052 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002053 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis49ee14d2003-11-10 06:35:36 +00002054 getpriority getpwent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002055 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002056 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002057 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002058 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002059 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002060 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002061 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002062 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002063
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002064# For some functions, having a definition is not sufficient, since
2065# we want to take their address.
2066AC_MSG_CHECKING(for chroot)
2067AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2068 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2069 AC_MSG_RESULT(yes),
2070 AC_MSG_RESULT(no)
2071)
2072AC_MSG_CHECKING(for link)
2073AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2074 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2075 AC_MSG_RESULT(yes),
2076 AC_MSG_RESULT(no)
2077)
2078AC_MSG_CHECKING(for symlink)
2079AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2080 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2081 AC_MSG_RESULT(yes),
2082 AC_MSG_RESULT(no)
2083)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002084AC_MSG_CHECKING(for fchdir)
2085AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2086 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2087 AC_MSG_RESULT(yes),
2088 AC_MSG_RESULT(no)
2089)
2090AC_MSG_CHECKING(for fsync)
2091AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002092 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002093 AC_MSG_RESULT(yes),
2094 AC_MSG_RESULT(no)
2095)
2096AC_MSG_CHECKING(for fdatasync)
2097AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2098 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2099 AC_MSG_RESULT(yes),
2100 AC_MSG_RESULT(no)
2101)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002102
Martin v. Löwisd5843682002-11-21 20:41:28 +00002103# On some systems (eg. FreeBSD 5), we would find a definition of the
2104# functions ctermid_r, setgroups in the library, but no prototype
2105# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2106# address to avoid compiler warnings and potential miscompilations
2107# because of the missing prototypes.
2108
2109AC_MSG_CHECKING(for ctermid_r)
2110AC_TRY_COMPILE([
2111#include "confdefs.h"
2112#include <stdio.h>
2113], void* p = ctermid_r,
2114 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2115 AC_MSG_RESULT(yes),
2116 AC_MSG_RESULT(no)
2117)
2118
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002119AC_MSG_CHECKING(for flock)
2120AC_TRY_COMPILE([
2121#include "confdefs.h"
2122#include <sys/file.h>
2123], void* p = flock,
2124 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2125 AC_MSG_RESULT(yes),
2126 AC_MSG_RESULT(no)
2127)
2128
2129AC_MSG_CHECKING(for getpagesize)
2130AC_TRY_COMPILE([
2131#include "confdefs.h"
2132#include <unistd.h>
2133], void* p = getpagesize,
2134 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2135 AC_MSG_RESULT(yes),
2136 AC_MSG_RESULT(no)
2137)
2138
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002139dnl check for true
2140AC_CHECK_PROGS(TRUE, true, /bin/true)
2141
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002142dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2143dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002144AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002145 AC_CHECK_LIB(resolv, inet_aton)
2146)
2147
Martin v. Löwise9416172003-05-03 10:12:45 +00002148AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002149AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002150#include "confdefs.h"
2151#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002152], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002153 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2154 AC_MSG_RESULT(yes),
2155 AC_MSG_RESULT(no)
2156)
2157
2158AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002159AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002160#include "confdefs.h"
2161#include <sys/socket.h>
2162#include <netinet/in.h>
2163#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002164], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002165 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2166 AC_MSG_RESULT(yes),
2167 AC_MSG_RESULT(no)
2168)
2169
2170AC_MSG_CHECKING(for inet_pton)
2171AC_TRY_COMPILE([
2172#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002173#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002174#include <sys/socket.h>
2175#include <netinet/in.h>
2176#include <arpa/inet.h>
2177], void* p = inet_pton,
2178 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2179 AC_MSG_RESULT(yes),
2180 AC_MSG_RESULT(no)
2181)
2182
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002183# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002184AC_MSG_CHECKING(for setgroups)
2185AC_TRY_COMPILE([
2186#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002187#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002188#ifdef HAVE_GRP_H
2189#include <grp.h>
2190#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002191],
2192void* p = setgroups,
2193 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2194 AC_MSG_RESULT(yes),
2195 AC_MSG_RESULT(no)
2196)
2197
Fred Drake8cef4cf2000-06-28 16:40:38 +00002198# check for openpty and forkpty
2199
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002200AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2201AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002202
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002203# check for long file support functions
2204AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2205
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002206AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002207AC_CHECK_FUNCS(getpgrp,
2208 AC_TRY_COMPILE([#include <unistd.h>],
2209 [getpgrp(0);],
2210 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2211 [Define if getpgrp() must be called as getpgrp(0).])
2212 )
2213)
Jack Jansen150753c2003-03-29 22:07:47 +00002214AC_CHECK_FUNCS(setpgrp,
2215 AC_TRY_COMPILE([#include <unistd.h>],
2216 [setpgrp(0,0);],
2217 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2218 [Define if setpgrp() must be called as setpgrp(0, 0).])
2219 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002220)
2221AC_CHECK_FUNCS(gettimeofday,
2222 AC_TRY_COMPILE([#include <sys/time.h>],
2223 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2224 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2225 [Define if gettimeofday() does not have second (timezone) argument
2226 This is the case on Motorola V4 (R40V4.2)])
2227 )
2228)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002229
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002230AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002231AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002232#if defined(MAJOR_IN_MKDEV)
2233#include <sys/mkdev.h>
2234#elif defined(MAJOR_IN_SYSMACROS)
2235#include <sys/sysmacros.h>
2236#else
2237#include <sys/types.h>
2238#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002239],[
2240 makedev(major(0),minor(0));
2241],[
2242 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2243 [Define to 1 if you have the device macros.])
2244 AC_MSG_RESULT(yes)
2245],[
2246 AC_MSG_RESULT(no)
2247])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002248
2249# On OSF/1 V5.1, getaddrinfo is available, but a define
2250# for [no]getaddrinfo in netdb.h.
2251AC_MSG_CHECKING(for getaddrinfo)
2252AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002253#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002254#include <sys/socket.h>
2255#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002256#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002257],[
2258getaddrinfo(NULL, NULL, NULL, NULL);
2259], [
2260AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002261AC_MSG_CHECKING(getaddrinfo bug)
2262AC_TRY_RUN([
2263#include <sys/types.h>
2264#include <netdb.h>
2265#include <string.h>
2266#include <sys/socket.h>
2267#include <netinet/in.h>
2268
2269main()
2270{
2271 int passive, gaierr, inet4 = 0, inet6 = 0;
2272 struct addrinfo hints, *ai, *aitop;
2273 char straddr[INET6_ADDRSTRLEN], strport[16];
2274
2275 for (passive = 0; passive <= 1; passive++) {
2276 memset(&hints, 0, sizeof(hints));
2277 hints.ai_family = AF_UNSPEC;
2278 hints.ai_flags = passive ? AI_PASSIVE : 0;
2279 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002280 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002281 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2282 (void)gai_strerror(gaierr);
2283 goto bad;
2284 }
2285 for (ai = aitop; ai; ai = ai->ai_next) {
2286 if (ai->ai_addr == NULL ||
2287 ai->ai_addrlen == 0 ||
2288 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2289 straddr, sizeof(straddr), strport, sizeof(strport),
2290 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2291 goto bad;
2292 }
2293 switch (ai->ai_family) {
2294 case AF_INET:
2295 if (strcmp(strport, "54321") != 0) {
2296 goto bad;
2297 }
2298 if (passive) {
2299 if (strcmp(straddr, "0.0.0.0") != 0) {
2300 goto bad;
2301 }
2302 } else {
2303 if (strcmp(straddr, "127.0.0.1") != 0) {
2304 goto bad;
2305 }
2306 }
2307 inet4++;
2308 break;
2309 case AF_INET6:
2310 if (strcmp(strport, "54321") != 0) {
2311 goto bad;
2312 }
2313 if (passive) {
2314 if (strcmp(straddr, "::") != 0) {
2315 goto bad;
2316 }
2317 } else {
2318 if (strcmp(straddr, "::1") != 0) {
2319 goto bad;
2320 }
2321 }
2322 inet6++;
2323 break;
2324 case AF_UNSPEC:
2325 goto bad;
2326 break;
2327 default:
2328 /* another family support? */
2329 break;
2330 }
2331 }
2332 }
2333
2334 if (!(inet4 == 0 || inet4 == 2))
2335 goto bad;
2336 if (!(inet6 == 0 || inet6 == 2))
2337 goto bad;
2338
2339 if (aitop)
2340 freeaddrinfo(aitop);
2341 exit(0);
2342
2343 bad:
2344 if (aitop)
2345 freeaddrinfo(aitop);
2346 exit(1);
2347}
2348],
2349AC_MSG_RESULT(good)
2350buggygetaddrinfo=no,
2351AC_MSG_RESULT(buggy)
2352buggygetaddrinfo=yes,
2353AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002354buggygetaddrinfo=yes)], [
2355AC_MSG_RESULT(no)
2356buggygetaddrinfo=yes
2357])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002358
2359if test "$buggygetaddrinfo" = "yes"; then
2360 if test "$ipv6" = "yes"; then
2361 echo 'Fatal: You must get working getaddrinfo() function.'
2362 echo ' or you can specify "--disable-ipv6"'.
2363 exit 1
2364 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002365else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002366 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002367fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002368AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002369
Guido van Rossum627b2d71993-12-24 10:39:16 +00002370# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002371AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002372AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002373AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002374AC_CHECK_MEMBERS([struct stat.st_rdev])
2375AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002376AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002377
2378AC_MSG_CHECKING(for time.h that defines altzone)
2379AC_CACHE_VAL(ac_cv_header_time_altzone,
2380[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2381 ac_cv_header_time_altzone=yes,
2382 ac_cv_header_time_altzone=no)])
2383AC_MSG_RESULT($ac_cv_header_time_altzone)
2384if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002385 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002386fi
2387
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002388was_it_defined=no
2389AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002390AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002391#include <sys/types.h>
2392#include <sys/select.h>
2393#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002394], [;], [
2395 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2396 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2397 (which you can't on SCO ODT 3.0).])
2398 was_it_defined=yes
2399])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002400AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002401
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002402AC_MSG_CHECKING(for addrinfo)
2403AC_CACHE_VAL(ac_cv_struct_addrinfo,
2404AC_TRY_COMPILE([
2405# include <netdb.h>],
2406 [struct addrinfo a],
2407 ac_cv_struct_addrinfo=yes,
2408 ac_cv_struct_addrinfo=no))
2409AC_MSG_RESULT($ac_cv_struct_addrinfo)
2410if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002411 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002412fi
2413
2414AC_MSG_CHECKING(for sockaddr_storage)
2415AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2416AC_TRY_COMPILE([
2417# include <sys/types.h>
2418# include <sys/socket.h>],
2419 [struct sockaddr_storage s],
2420 ac_cv_struct_sockaddr_storage=yes,
2421 ac_cv_struct_sockaddr_storage=no))
2422AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2423if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002424 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002425fi
2426
Guido van Rossum627b2d71993-12-24 10:39:16 +00002427# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002428
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002429AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002430AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002431
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002432works=no
2433AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002434AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2435 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2436)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002437AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002438
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002439works=no
2440AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002441AC_TRY_COMPILE([], [signed char c;], works=yes,
2442 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2443)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002444AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002445
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002446have_prototypes=no
2447AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002448AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2449 AC_DEFINE(HAVE_PROTOTYPES, 1,
2450 [Define if your compiler supports function prototype])
2451 have_prototypes=yes
2452])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002453AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002454
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002455works=no
2456AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002457AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002458#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002459int foo(int x, ...) {
2460 va_list va;
2461 va_start(va, x);
2462 va_arg(va, int);
2463 va_arg(va, char *);
2464 va_arg(va, double);
2465 return 0;
2466}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002467], [return foo(10, "", 3.14);], [
2468 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2469 [Define if your compiler supports variable length function prototypes
2470 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2471 works=yes
2472])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002473AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002474
Dave Cole331708b2004-08-09 04:51:41 +00002475# check for socketpair
2476AC_MSG_CHECKING(for socketpair)
2477AC_TRY_COMPILE([
2478#include <sys/types.h>
2479#include <sys/socket.h>
2480], void *x=socketpair,
2481 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2482 AC_MSG_RESULT(yes),
2483 AC_MSG_RESULT(no)
2484)
2485
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002486# check if sockaddr has sa_len member
2487AC_MSG_CHECKING(if sockaddr has sa_len member)
2488AC_TRY_COMPILE([#include <sys/types.h>
2489#include <sys/socket.h>],
2490[struct sockaddr x;
2491x.sa_len = 0;],
2492 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002493 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002494 AC_MSG_RESULT(no))
2495
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002496va_list_is_array=no
2497AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002498AC_TRY_COMPILE([
2499#ifdef HAVE_STDARG_PROTOTYPES
2500#include <stdarg.h>
2501#else
2502#include <varargs.h>
2503#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002504], [va_list list1, list2; list1 = list2;], , [
2505 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2506 va_list_is_array=yes
2507])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002508AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002509
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002510# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002511AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2512 [Define this if you have some version of gethostbyname_r()])
2513
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002514AC_CHECK_FUNC(gethostbyname_r, [
2515 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2516 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2517 OLD_CFLAGS=$CFLAGS
2518 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2519 AC_TRY_COMPILE([
2520# include <netdb.h>
2521 ], [
2522 char *name;
2523 struct hostent *he, *res;
2524 char buffer[2048];
2525 int buflen = 2048;
2526 int h_errnop;
2527
2528 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2529 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002530 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002531 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2532 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002533 AC_MSG_RESULT(yes)
2534 ], [
2535 AC_MSG_RESULT(no)
2536 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2537 AC_TRY_COMPILE([
2538# include <netdb.h>
2539 ], [
2540 char *name;
2541 struct hostent *he;
2542 char buffer[2048];
2543 int buflen = 2048;
2544 int h_errnop;
2545
2546 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2547 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002548 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002549 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2550 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002551 AC_MSG_RESULT(yes)
2552 ], [
2553 AC_MSG_RESULT(no)
2554 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2555 AC_TRY_COMPILE([
2556# include <netdb.h>
2557 ], [
2558 char *name;
2559 struct hostent *he;
2560 struct hostent_data data;
2561
2562 (void) gethostbyname_r(name, he, &data);
2563 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002564 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002565 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2566 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002567 AC_MSG_RESULT(yes)
2568 ], [
2569 AC_MSG_RESULT(no)
2570 ])
2571 ])
2572 ])
2573 CFLAGS=$OLD_CFLAGS
2574], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002575 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002576])
2577AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2578AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2579AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002580AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002581AC_SUBST(HAVE_GETHOSTBYNAME)
2582
Guido van Rossum627b2d71993-12-24 10:39:16 +00002583# checks for system services
2584# (none yet)
2585
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002586# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002587AC_CHECK_FUNC(__fpu_control,
2588 [],
2589 [AC_CHECK_LIB(ieee, __fpu_control)
2590])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002591
Guido van Rossum93274221997-05-09 02:42:00 +00002592# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002593AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002594AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002595 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2596[
Guido van Rossum93274221997-05-09 02:42:00 +00002597if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002598then
2599 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2600 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2601 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002602else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002603fi],
2604[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002605
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002606# check for --with-libm=...
2607AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002608case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002609Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002610BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002611*) LIBM=-lm
2612esac
Guido van Rossum93274221997-05-09 02:42:00 +00002613AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002614AC_ARG_WITH(libm,
2615 AC_HELP_STRING(--with-libm=STRING, math library),
2616[
Guido van Rossum93274221997-05-09 02:42:00 +00002617if test "$withval" = no
2618then LIBM=
2619 AC_MSG_RESULT(force LIBM empty)
2620elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002621then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002622 AC_MSG_RESULT(set LIBM="$withval")
2623else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002624fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002625[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002626
2627# check for --with-libc=...
2628AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002629AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002630AC_ARG_WITH(libc,
2631 AC_HELP_STRING(--with-libc=STRING, C library),
2632[
Guido van Rossum93274221997-05-09 02:42:00 +00002633if test "$withval" = no
2634then LIBC=
2635 AC_MSG_RESULT(force LIBC empty)
2636elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002637then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002638 AC_MSG_RESULT(set LIBC="$withval")
2639else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002640fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002641[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002642
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002643# check for hypot() in math library
2644LIBS_SAVE=$LIBS
2645LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002646AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002647LIBS=$LIBS_SAVE
2648
Guido van Rossumef2255b2000-03-10 22:30:29 +00002649# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002650AC_CHECK_HEADER(wchar.h, [
2651 AC_DEFINE(HAVE_WCHAR_H, 1,
2652 [Define if the compiler provides a wchar.h header file.])
2653 wchar_h="yes"
2654],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002655wchar_h="no"
2656)
2657
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002658# determine wchar_t size
2659if test "$wchar_h" = yes
2660then
Guido van Rossum67b26592001-10-20 14:21:45 +00002661 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002662fi
2663
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002664AC_MSG_CHECKING(for UCS-4 tcl)
2665have_ucs4_tcl=no
2666AC_TRY_COMPILE([
2667#include <tcl.h>
2668#if TCL_UTF_MAX != 6
2669# error "NOT UCS4_TCL"
2670#endif], [], [
2671 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2672 have_ucs4_tcl=yes
2673])
2674AC_MSG_RESULT($have_ucs4_tcl)
2675
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002676# check whether wchar_t is signed or not
2677if test "$wchar_h" = yes
2678then
2679 # check whether wchar_t is signed or not
2680 AC_MSG_CHECKING(whether wchar_t is signed)
2681 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2682 AC_TRY_RUN([
2683 #include <wchar.h>
2684 int main()
2685 {
2686 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2687 }
2688 ],
2689 ac_cv_wchar_t_signed=yes,
2690 ac_cv_wchar_t_signed=no,
2691 ac_cv_wchar_t_signed=yes)])
2692 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2693fi
2694
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002695AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002696dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002697AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002698 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2699 [],
2700 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002701
2702if test $enable_unicode = yes
2703then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002704 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002705 case "$have_ucs4_tcl" in
2706 yes) enable_unicode="ucs4"
2707 ;;
2708 *) enable_unicode="ucs2"
2709 ;;
2710 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002711fi
2712
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002713AH_TEMPLATE(Py_UNICODE_SIZE,
2714 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002715case "$enable_unicode" in
2716ucs2) unicode_size="2"
2717 AC_DEFINE(Py_UNICODE_SIZE,2)
2718 ;;
2719ucs4) unicode_size="4"
2720 AC_DEFINE(Py_UNICODE_SIZE,4)
2721 ;;
2722esac
2723
Martin v. Löwis11437992002-04-12 09:54:03 +00002724AH_TEMPLATE(PY_UNICODE_TYPE,
2725 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002726
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002727AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002728if test "$enable_unicode" = "no"
2729then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002730 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002731 AC_MSG_RESULT(not used)
2732else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002733 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002734 AC_DEFINE(Py_USING_UNICODE, 1,
2735 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002736
2737 # wchar_t is only usable if it maps to an unsigned type
2738 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
2739 -a "$ac_cv_wchar_t_signed" == "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002740 then
2741 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002742 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2743 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002744 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002745 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002746 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2747 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2748 then
2749 PY_UNICODE_TYPE="unsigned short"
2750 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2751 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2752 then
2753 PY_UNICODE_TYPE="unsigned long"
2754 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2755 else
2756 PY_UNICODE_TYPE="no type found"
2757 fi
2758 AC_MSG_RESULT($PY_UNICODE_TYPE)
2759fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002760
2761# check for endianness
2762AC_C_BIGENDIAN
2763
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002764# Check whether right shifting a negative integer extends the sign bit
2765# or fills with zeros (like the Cray J90, according to Tim Peters).
2766AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002767AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002768AC_TRY_RUN([
2769int main()
2770{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002771 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002772}
Guido van Rossum3065c942001-09-17 04:03:14 +00002773],
2774ac_cv_rshift_extends_sign=yes,
2775ac_cv_rshift_extends_sign=no,
2776ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002777AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2778if test "$ac_cv_rshift_extends_sign" = no
2779then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002780 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2781 [Define if i>>j for signed int i does not extend the sign bit
2782 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002783fi
2784
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002785# check for getc_unlocked and related locking functions
2786AC_MSG_CHECKING(for getc_unlocked() and friends)
2787AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2788AC_TRY_LINK([#include <stdio.h>],[
2789 FILE *f = fopen("/dev/null", "r");
2790 flockfile(f);
2791 getc_unlocked(f);
2792 funlockfile(f);
2793], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2794AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2795if test "$ac_cv_have_getc_unlocked" = yes
2796then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002797 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2798 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002799fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002800
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002801# check for readline 2.1
2802AC_CHECK_LIB(readline, rl_callback_handler_install,
2803 AC_DEFINE(HAVE_RL_CALLBACK, 1,
2804 [Define if you have readline 2.1]), , -ltermcap)
2805
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002806# check for readline 2.2
2807AC_TRY_CPP([#include <readline/readline.h>],
2808have_readline=yes, have_readline=no)
2809if test $have_readline = yes
2810then
2811 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2812 [readline/readline.h],
2813 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2814 [Define if you have readline 2.2]), )
2815fi
2816
Martin v. Löwis0daad592001-09-30 21:09:59 +00002817# check for readline 4.0
2818AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002819 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2820 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002821
Guido van Rossum353ae582001-07-10 16:45:32 +00002822# check for readline 4.2
2823AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002824 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2825 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002826
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002827# also in readline 4.2
2828AC_TRY_CPP([#include <readline/readline.h>],
2829have_readline=yes, have_readline=no)
2830if test $have_readline = yes
2831then
2832 AC_EGREP_HEADER([extern int rl_catch_signals;],
2833 [readline/readline.h],
2834 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2835 [Define if you can turn off readline's signal handling.]), )
2836fi
2837
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002838AC_MSG_CHECKING(for broken nice())
2839AC_CACHE_VAL(ac_cv_broken_nice, [
2840AC_TRY_RUN([
2841int main()
2842{
2843 int val1 = nice(1);
2844 if (val1 != -1 && val1 == nice(2))
2845 exit(0);
2846 exit(1);
2847}
Guido van Rossum3065c942001-09-17 04:03:14 +00002848],
2849ac_cv_broken_nice=yes,
2850ac_cv_broken_nice=no,
2851ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002852AC_MSG_RESULT($ac_cv_broken_nice)
2853if test "$ac_cv_broken_nice" = yes
2854then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002855 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2856 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002857fi
2858
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002859AC_MSG_CHECKING(for broken poll())
2860AC_TRY_RUN([
2861#include <poll.h>
2862
2863int main (void)
2864 {
2865 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2866
2867 close (42);
2868
2869 int poll_test = poll (&poll_struct, 1, 0);
2870
2871 if (poll_test < 0)
2872 {
2873 exit(0);
2874 }
2875 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2876 {
2877 exit(0);
2878 }
2879 else
2880 {
2881 exit(1);
2882 }
2883 }
2884],
2885ac_cv_broken_poll=yes,
2886ac_cv_broken_poll=no,
2887ac_cv_broken_poll=no)
2888AC_MSG_RESULT($ac_cv_broken_poll)
2889if test "$ac_cv_broken_poll" = yes
2890then
2891 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2892 [Define if poll() sets errno on invalid file descriptors.])
2893fi
2894
2895
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002896# tzset(3) exists and works like we expect it to
2897AC_MSG_CHECKING(for working tzset())
2898AC_CACHE_VAL(ac_cv_working_tzset, [
2899AC_TRY_RUN([
2900#include <stdlib.h>
2901#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002902#include <string.h>
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002903int main()
2904{
Brett Cannon18367812003-09-19 00:59:16 +00002905 /* Note that we need to ensure that not only does tzset(3)
2906 do 'something' with localtime, but it works as documented
2907 in the library reference and as expected by the test suite.
2908
2909 Red Hat 6.2 doesn't understand the southern hemisphere
2910 after New Year's Day; it thinks swaps on that day.
2911 */
2912
2913 time_t groundhogday = 1044144000; /* GMT-based; well, it's a colony */
2914 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2915
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002916 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002917 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002918 if (localtime(&groundhogday)->tm_hour != 0)
2919 exit(1);
2920
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002921 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002922 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002923 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002924 exit(1);
Brett Cannon18367812003-09-19 00:59:16 +00002925
2926 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
2927 tzset();
2928 if (localtime(&groundhogday)->tm_hour != 11)
2929 exit(1);
2930 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
2931 exit(1);
2932 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
2933 exit(1);
2934
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002935 exit(0);
2936}
2937],
2938ac_cv_working_tzset=yes,
2939ac_cv_working_tzset=no,
2940ac_cv_working_tzset=no)])
2941AC_MSG_RESULT($ac_cv_working_tzset)
2942if test "$ac_cv_working_tzset" = yes
2943then
2944 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2945 [Define if tzset() actually switches the local timezone in a meaningful way.])
2946fi
2947
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002948# Look for subsecond timestamps in struct stat
2949AC_MSG_CHECKING(for tv_nsec in struct stat)
2950AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2951AC_TRY_COMPILE([#include <sys/stat.h>], [
2952struct stat st;
2953st.st_mtim.tv_nsec = 1;
2954],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002955ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002956ac_cv_stat_tv_nsec=no,
2957ac_cv_stat_tv_nsec=no))
2958AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2959if test "$ac_cv_stat_tv_nsec" = yes
2960then
2961 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2962 [Define if you have struct stat.st_mtim.tv_nsec])
2963fi
2964
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002965# On HP/UX 11.0, mvwdelch is a block with a return statement
2966AC_MSG_CHECKING(whether mvwdelch is an expression)
2967AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2968AC_TRY_COMPILE([#include <curses.h>], [
2969 int rtn;
2970 rtn = mvwdelch(0,0,0);
2971], ac_cv_mvwdelch_is_expression=yes,
2972 ac_cv_mvwdelch_is_expression=no,
2973 ac_cv_mvwdelch_is_expression=yes))
2974AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2975
2976if test "$ac_cv_mvwdelch_is_expression" = yes
2977then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002978 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2979 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002980fi
2981
2982AC_MSG_CHECKING(whether WINDOW has _flags)
2983AC_CACHE_VAL(ac_cv_window_has_flags,
2984AC_TRY_COMPILE([#include <curses.h>], [
2985 WINDOW *w;
2986 w->_flags = 0;
2987], ac_cv_window_has_flags=yes,
2988 ac_cv_window_has_flags=no,
2989 ac_cv_window_has_flags=no))
2990AC_MSG_RESULT($ac_cv_window_has_flags)
2991
2992
2993if test "$ac_cv_window_has_flags" = yes
2994then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002995 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2996 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002997fi
2998
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002999AC_MSG_CHECKING(for /dev/ptmx)
3000
3001if test -e /dev/ptmx
3002then
3003 AC_MSG_RESULT(yes)
3004 AC_DEFINE(HAVE_DEV_PTMX, 1,
3005 [Define if we have /dev/ptmx.])
3006else
3007 AC_MSG_RESULT(no)
3008fi
3009
Neal Norwitz865400f2003-03-21 01:42:58 +00003010AC_MSG_CHECKING(for /dev/ptc)
3011
3012if test -e /dev/ptc
3013then
3014 AC_MSG_RESULT(yes)
3015 AC_DEFINE(HAVE_DEV_PTC, 1,
3016 [Define if we have /dev/ptc.])
3017else
3018 AC_MSG_RESULT(no)
3019fi
3020
Martin v. Löwis01c04012002-11-11 14:58:44 +00003021AC_CHECK_TYPE(socklen_t,,
3022 AC_DEFINE(socklen_t,int,
3023 Define to `int' if <sys/socket.h> does not define.),[
3024#ifdef HAVE_SYS_TYPES_H
3025#include <sys/types.h>
3026#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003027#ifdef HAVE_SYS_SOCKET_H
3028#include <sys/socket.h>
3029#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003030])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003031
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003032AC_SUBST(THREADHEADERS)
3033
3034for h in `(cd $srcdir;echo Python/thread_*.h)`
3035do
3036 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3037done
3038
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003039AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00003040SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003041AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003042for dir in $SRCDIRS; do
3043 if test ! -d $dir; then
3044 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003045 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003046done
3047AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003048
Guido van Rossum627b2d71993-12-24 10:39:16 +00003049# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003050AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3051AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003052
3053echo "creating Setup"
3054if test ! -f Modules/Setup
3055then
3056 cp $srcdir/Modules/Setup.dist Modules/Setup
3057fi
3058
3059echo "creating Setup.local"
3060if test ! -f Modules/Setup.local
3061then
3062 echo "# Edit this file for local setup changes" >Modules/Setup.local
3063fi
3064
3065echo "creating Makefile"
3066$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3067 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003068 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003069mv config.c Modules